Commit Graph

107 Commits

Author SHA1 Message Date
Derek McGowan
d28126f05d
Handle kernel related ci failure
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-07-28 13:45:51 -07:00
Derek McGowan
a7c44f0038
Add snapshot test cases for former issues
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-07-28 13:37:38 -07:00
Stephen Day
1679727648 Merge pull request #1230 from dmcgowan/snapshot-client-testsuite
snapshot: run test suite for metadata and client implementations
2017-07-27 15:49:17 -07:00
Michael Crosby
a0a5cc7787 Add user namespace support to client
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-07-27 11:06:20 -04:00
Derek McGowan
6012f5047d Update storage kind test
Testing proto and snapshot kinds are equivalent when cast to each other.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-07-25 13:59:16 -07:00
Derek McGowan
da5c72c335 Run snapshot test suite for metadata and client
The snapshot test suite is designed to run against the snapshotter
interface, run the test suite for metadata and client implementations
of the snapshotter interface.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-07-25 10:47:45 -07:00
Stephen J Day
863784f991
snapshot: replace "readonly" with View snapshot type
What started out as a simple PR to remove the "Readonly" column became an
adventure to add a proper type for a "View" snapshot. The short story here is
that we now get the following output:

```
$ sudo ctr snapshot ls
ID 									 PARENT 								 KIND
sha256:08c2295a7fa5c220b0f60c994362d290429ad92f6e0235509db91582809442f3 								  	 Committed
testing4								 sha256:08c2295a7fa5c220b0f60c994362d290429ad92f6e0235509db91582809442f3 Active
```

In pursuing this output, it was found that the idea of having "readonly" as an
attribute on all snapshots was redundant. For committed, they are always
readonly, as they are not accessible without an active snapshot. For active
snapshots that were views, we'd have to check the type before interpreting
"readonly". With this PR, this is baked fully into the kind of snapshot. When
`Snapshotter.View` is  called, the kind of snapshot is `KindView`, and the
storage system reflects this end to end.

Unfortunately, this will break existing users. There is no migration, so they
will have to wipe `/var/lib/containerd` and recreate everything. However, this
is deemed worthwhile at this point, as we won't have to judge validity of the
"Readonly" field when new snapshot types are added.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-07-24 16:58:01 -07:00
Andrew Pennebaker
1d2a079f08
update to github.com/sirupsen/logrus v1.0.0
Signed-off-by: Andrew Pennebaker <apennebaker@datapipe.com>
2017-07-21 15:39:14 -07:00
Phil Estes
834cafc2d6 Merge pull request #1206 from AkihiroSuda/improve-btrfs-error
btrfs: improve an error string
2017-07-19 09:56:58 -04:00
fate-grand-order
d3d1987fe0 correct some misspellings to make Go Report more happy
Signed-off-by: Helen <chenjg@harmonycloud.cn>
2017-07-19 17:31:14 +08:00
Akihiro Suda
e76357cb57 btrfs: improve an error string
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-07-19 04:09:42 +00:00
Derek McGowan
97bb760c2a
Create btrfs directory if it does not exist
We may want to create this as a subvolume if the parent is btrfs
or support mounting on load in the future.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-07-12 11:30:39 -07:00
Akihiro Suda
60e1557b21 checkSnapshotterBasic: fix umount
The "nextnext" snapshot is being removed at the end of the function.
So umount is needed before removing the snapshot.

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-07-11 08:05:21 +00:00
Derek McGowan
4ba4f3a1d5
Add namespaced snapshotter implementation
The namespaced snapshotter wraps an existing snapshotter and
enforces namespace.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-06-29 16:16:26 -07:00
Derek McGowan
7ddf411ea8
Revert "snapshot/storage: namespace snapshot drivers"
This reverts commit b1a70aa335.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-06-29 15:32:07 -07:00
Stephen J Day
a4fadc596b
errdefs: centralize error handling
Now that we have most of the services required for use with containerd,
it was found that common patterns were used throughout services. By
defining a central `errdefs` package, we ensure that services will map
errors to and from grpc consistently and cleanly. One can decorate an
error with as much context as necessary, using `pkg/errors` and still
have the error mapped correctly via grpc.

We make a few sacrifices. At this point, the common errors we use across
the repository all map directly to grpc error codes. While this seems
positively crazy, it actually works out quite well. The error conditions
that were specific weren't super necessary and the ones that were
necessary now simply have better context information. We lose the
ability to add new codes, but this constraint may not be a bad thing.

Effectively, as long as one uses the errors defined in `errdefs`, the
error class will be mapped correctly across the grpc boundary and
everything will be good. If you don't use those definitions, the error
maps to "unknown" and the error message is preserved.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-06-29 15:00:47 -07:00
Michael Crosby
99160a7ac0 Merge pull request #854 from AkihiroSuda/lookup-mountinfo
mountinfo: add Lookup for ease of implementing snapshotters
2017-06-22 20:14:39 -07:00
Michael Crosby
94e7f8e943 Setup plugin ids and dependencies
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-06-14 16:17:20 -07:00
Stephen J Day
b1a70aa335
snapshot/storage: namespace snapshot drivers
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-06-08 12:29:26 -07:00
Akihiro Suda
0ab2227377 mount: add mount.Lookup for ease of implementing snapshotters
`func Lookup(dir string) (Info, error)` returns the mount
info that corresponds to the dir

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-06-06 09:27:53 +00:00
Derek McGowan
dfce91854e
Update travis to run make build
Ensure all packages can be built, even those not yet imported by binaries.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-05-31 13:35:03 -07:00
Michael Crosby
d7af92e00c Move Mount into mount pkg
This moves both the Mount type and mountinfo into a single mount
package.

This also opens up the root of the repo to hold the containerd client
implementation.

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-05-22 16:41:12 -07:00
Stephen J Day
cb68150a2f
protos: remove need for customname on ID fields
Credit to Aaron Lehmann for the implementation from SwarmKit.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-18 18:50:59 -07:00
Michael Crosby
3695ba77bb Merge pull request #849 from dmcgowan/snapshot-service
Add snapshot and diff service
2017-05-16 10:35:12 -07:00
Derek McGowan
098ff94b24
Add snapshot and diff service
Remove rootfs service in place of snapshot service. Adds
diff service for extracting and creating diffs. Diff
creation is not yet implemented. This service allows
pulling or creating images without needing root access to
mount. Additionally in the future this will allow containerd
to ensure extractions happen safely in a chroot if needed.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-05-15 16:50:16 -07:00
Stephen J Day
320dd70935
fs: remove fsutils package
No need to have a util package under a package... er, package.

We should move most of this functionality to continuity.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-15 16:33:58 -07:00
Derek McGowan
7027e8862a
overlay: call rollback on commit error
Rollback was not being called when the function was called with
a key which does not exist. This failure to call rollback kept
the database open and caused all new requests to block.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-05-11 15:55:47 -07:00
Stephen J Day
193abed96e
content: unify provider and ingester
The split between provider and ingester was a long standing division
reflecting the client-side use cases. For the most part, we were
differentiating these for the algorithms that operate them, but it made
instantation and use of the types challenging. On the server-side, this
distinction is generally less important. This change unifies these types
and in the process we get a few benefits.

The first is that we now completely access the content store over GRPC.
This was the initial intent and we have now satisfied this goal
completely. There are a few issues around listing content and getting
status, but we resolve these with simple streaming and regexp filters.
More can probably be done to polish this but the result is clean.

Several other content-oriented methods were polished in the process of
unification. We have now properly seperated out the `Abort` method to
cancel ongoing or stalled ingest processes. We have also replaced the
`Active` method with a single status method.

The transition went extremely smoothly. Once the clients were updated to
use the new methods, every thing worked as expected on the first
compile.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-10 17:05:53 -07:00
Phil Estes
a1173ce712 Merge pull request #815 from AkihiroSuda/dtype
overlay: abort if backing fs lacks support for d_type
2017-05-10 14:24:00 -05:00
Stephen Day
d553fab079 Merge pull request #822 from AkihiroSuda/fix-vet
fix `make vet` failures, and enable `make vet` on CI
2017-05-10 11:42:24 -07:00
Michael Crosby
07fda4b73a Merge pull request #813 from AkihiroSuda/btrfs-zero-config
btrfs: auto-detect device
2017-05-10 09:53:18 -07:00
Akihiro Suda
8cd218237b mountinfo: refactored
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-10 05:10:22 +00:00
Akihiro Suda
837205005f fix make vet failures, and enable make vet on CI
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-10 04:36:41 +00:00
Akihiro Suda
825c2ce3cc overlay: abort if backing fs lacks support for d_type
Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-08 06:54:31 +00:00
Phil Estes
91410874e7
Add pause/unpause implementation
This adds pause and unpause to containerd's execution service and the
same commands to the `ctr` client.

Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com>
2017-05-06 16:05:37 -04:00
Akihiro Suda
d5707d3ac7 btrfs: auto-detect device
No longer need to set `plugins.snapshot-btrfs.device` manually

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
2017-05-06 17:29:37 +00:00
Stephen J Day
1eb515c038
vendor: move to use containerd/btrfs
Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-05-03 18:53:57 -07:00
Michael Crosby
317aeea0fd Merge pull request #731 from stevvooe/snapshot-usage
snapshot: add Usage method to Snapshotter
2017-04-28 14:36:34 -07:00
Stephen J Day
66c504d1bb
snapshot: add Usage method to Snapshotter
To allow the querying of usage for snapshots, we define a new method on
the snapshotter to query the resources in use by a single snapshot.
Conversely, it can be said that if the snapshot was deleted, the
reported amount of usage would be recovered.

There are few problems with this model in the implementation of btrfs
that need to be worked out. In btrfs, it is hard to resolve the amount
of data usage with the use of quotas but these may report valuables that
are incompatible with the model.

Signed-off-by: Stephen J Day <stephen.day@docker.com>
2017-04-26 17:13:52 -07:00
Vincent Batts
7d018f2306
snapshot: the examples need context
the api for these functions have since added `context.Context`

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2017-04-25 12:18:03 -04:00
Kenfe-Mickael Laventure
c5843b7615 Initial windows runtime work
Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2017-04-07 09:20:44 -07:00
Phil Estes
e5c8c5634a Merge pull request #696 from crosbymichael/exec
execution: add exec for additional processes
2017-04-06 13:53:46 -04:00
Derek McGowan
63f01733b0
Update snapshot mkdir to check for directory exist
When starting up a snapshot driver on subsequent runs, the
mkdir call will return an exist error, this can be safely
ignored.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-05 17:04:44 -07:00
Derek McGowan
8a73673b5b
Update naive driver to use storage package
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-05 15:35:34 -07:00
Michael Crosby
7715ddcefa Add exec APIs
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
2017-04-05 11:51:56 -07:00
Qiang Huang
a0dda70b2d Use MkdirAll when create snapshots directory
Otherwise we'll get:
```
mkdir /var/lib/containerd/snapshot/overlay/snapshots: file exists
```
when we already have snapshots there.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2017-04-05 00:52:46 -04:00
Qiang Huang
6132bec05a Add Kill API for shim service
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2017-04-05 08:26:35 +08:00
Derek McGowan
1c2f5fe203
Update documentation to storage package
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-04 14:58:30 -07:00
Derek McGowan
9ffbfccdaf
Refactor overlay and btrfs to pass lint
Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-04 14:58:24 -07:00
Derek McGowan
b319ba7c5a
Move boltdb implementation to storage package
Removes storage interface and replaces with storage functions.

Signed-off-by: Derek McGowan <derek@mcgstyle.net>
2017-04-04 14:58:18 -07:00