These 85 commits are when the Protocol Buffers files have changed:
Commit: | c2a4b60 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Rename the `command` field to `program` in the CommandLayer.
The documentation is generated from this commit.
Commit: | 464976c | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Rename program layers to command layers.
Commit: | df946a9 | |
---|---|---|
Author: | Neal Fachan |
Introduce new LayerSpec::Program and related types. Make sure we can parse them correctly. There is no template variable expansion for program layers.
Commit: | 6bdfe9f | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Change broker to use new github config values.
Commit: | 8728f3a | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Nix the MixedClusterCommunicationStrategy type. Now, the client will either go all-TCP or all-GitHub.
Commit: | 335f28a | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Send ClusterCommunicationStrategy with client's start rpc.
Commit: | 338cbd5 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove state_dir from client. As I was updating the documentation, I realized that we no longer use the state_dir in the client. It's now only used in the test runner to store the database of test runs.
Commit: | f41014d | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Change Restart to Stop. This is now called implicitly when the Client is dropped. The idea behind doing this in the drop method is that we want to be able to immediately start another Client and know that the old one cleaned up.
Commit: | 8eb2b90 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Change how the client protocol specifies root-overlay. The base JobSpec has a single field called root_overlay. This can be one of None, Tmp, or Local. The latter contains two fields to indicate what directory the overlayfs should use. Before this change, the RootOverlay type, which is what the root_overlay field is, was propagated all the way up to the client's ContainerSpec. The problem was that this didn't really make much sense from the point of view of how clients wanted to specify this field. From a client's point of view, they really just want to have an `enable_writable_file_system` flag. The Local value is really a more hidden thing that will hopefully, eventually, go away or at least be specified differently. To that end, this patch changes the client's JobSpec to have a separate field called capture_file_system_changes. This is on the JobSpec, not on the ContainerSpec. The idea is that this will only be used by maelstrom-pytest to generate the container used to run tests in. When command layers are working, this will go away completely. This patch also changes the root_overlay field on the client's ContainerSpec to be an enable_writable_file_system bool field. This is how the clients actually think about things, so it matches well.
Commit: | d662328 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Make network and root_overlay optional in ContainerSpec, CollapsedJobSpec, and TestMetadataContainer. We want to be able to distinguish between values that aren't set and values that are set to the default value so that we can stack containers properly.
Commit: | 0f99e28 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Rename ImageSpec to ImageRef.
Commit: | 1c4c147 | |
---|---|---|
Author: | Remi Bernotavicius |
protobuf: Make ArtifactTransferStrategy have correct variant naming
Commit: | 045c338 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Rename ArtifactUploadStrategy to ArtifactTransferStrategy I want to re-use this type in the worker
Commit: | 82c31d5 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Rename some enum variants and a "message" field in items.proto.
Commit: | 200facd | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add container parents to containers.
Commit: | 12a18c1 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Use ImageSpec inside of ContainerParent::Image. This simplifies things.
Commit: | 8810d47 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Use an EnumSet of ImageUse in ContainerParent::Image and ImageSpec instead of three bools.
Commit: | a2f833f | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Replace ImageSpec with ContainerParent. This plumbs through a change where every container can have a parent that is either another container or an image.
Commit: | cbf7727 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove ContainerRef and instead always embed a ContainerSpec in a JobSpec. This is the first step of some changes. We're going to introduce a `parent` field to the ContainerSpec that will replace the `image` field. This will be either an image, a named container, or nothing.
Commit: | e8c9089 | |
---|---|---|
Author: | Remi Bernotavicius |
Hook up github artifact upload in client-process to new start argument
Commit: | 272915c | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Remove clear_cached_layers RPC We are using "restart" instead
Commit: | 47366a5 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add restart RPC to client-process and use in test-runner
Commit: | 711a6e4 | |
---|---|---|
Author: | Remi Bernotavicius |
Add a "clear_layer_cache" call the client can use It calls it when restarting in watch mode
Commit: | bbe6831 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add new priority field to JobSpec.
Commit: | 62307f9 | |
---|---|---|
Author: | Remi Bernotavicius |
Remove JobStateCounts from IntrospectResponse
Commit: | 148917b | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Stream JobStatus back from run_job in client
Commit: | b8f59e9 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Rename cjid to client_job_id in JobCompletedStatus
Commit: | 10c9e67 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add protobuf types for the job status stuff
Commit: | a633336 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Rename Layer to LayerSpec to match JobSpec and ContainerSpec
Commit: | 63e018a | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Change JobSpec to be able to accept a named container
Commit: | 5b1ba6a | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add add_container client RPC (unimplemented)
Commit: | 16176c1 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Remove some now unused protobuf things
Commit: | 4386663 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Name our protobuf enums variants correctly They follow C style name scoping rules, and are usually shouty-snake-case prost also is expecting this kind of naming
Commit: | 6b203dd | |
---|---|---|
Author: | Remi Bernotavicius |
Forward client-process log messages to client via RPC
Commit: | 2cef3b6 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Split out ContainerSpec from JobSpec
Commit: | cedd58d | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Remove add_layer client API Instead just pass what was being accepted in add_layer directly in the JobSpec. I don't try to parallelize the layer creation at all
Commit: | 7f7f6c4 | |
---|---|---|
Author: | Remi Bernotavicius |
Add `enum_type` feature proto-buf conversion macros This is only for enums containing fields and aids in wrapping them up in structs
Commit: | 84d5d11 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add SharedLibraryDependencies layer type It just returns an error if used right now
Commit: | 4edcc30 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Make working_directory, user, and group optional in the JobSpec. Fixes #348.
Commit: | c6cc135 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove old, deprecated devices stuff. Devices are now specified as mounts. Fixes #321.
Commit: | 0c540a2 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add --accept-invalid-remote-container-tls-certs configuration option This will let us connect to a service using a self-signed certificate which is useful for locally-run registries
Commit: | d0aef22 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Set the pty window size properly.
Commit: | 979c5df | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Move image tag parsing to inside maelstrom-container This removes the tag field from the various ImageSpecs, instead the image name will just include the tag and in a future change any of the other information. Doing this parsing inside maelstrom-container is very convenient since now the various front-ends to the client don't have to worry about parsing valid image names. This means that some validation is now happening later rather than earlier, but I think the convenience of it outweighs this concern. You have to try pretty hard to create an invalid image name.
Commit: | f16acf9 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove ptmx device type. It turns out that bind mounting this into a container doesn't really work. It seems like what you're supposed to do for Linux containers is to use the ptmx in /dev/pts. Our maelstrom-test.toml now has an example of this.
Commit: | 10e16aa | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add allocate_tty field to JobSpecs. Currently this is an Option<AbstractUnixDomainAddress>, where AbstractUnixDomainAddress is an array of 6 bytes. I chose this 6-byte array because that's what we'll get back from the autobind feature of the linux kernel for abstract unix domain sockets.
Commit: | 50d9ff2 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Do all mounts using the multi-step, new linux mount API.
Commit: | 78d30d4 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add a JobRootOverlay. This replaces the enable_writeable_file_system field in the JobSpec. However, at this point, both clients continue to parse the enable_writable_file_system flag and convert it to a JobRootOverlay.
Commit: | 06e5360 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove overlay mount type. We're instead just going to provide overlay mounts for the root directory.
Commit: | addeddd | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add a new Overlay mount type. More to come.
Commit: | 511bce0 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add `devices` mount type. This will replace the `devices` field of the `JobSpec`.
Commit: | f4a1628 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add support for /dev/ptmx.
Commit: | ef08354 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Reorder some cases for JobMounts.
Commit: | eafe593 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add support for devpts and mqueue file system types.
Commit: | 3248613 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Re-order the JobSpec fields to be a little more logical.
Commit: | e596ac7 | |
---|---|---|
Author: | Remi Bernotavicius |
Add /dev/shm device to maelstrom
Commit: | 103e372 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Replace bind mount flags with "read_only" boolean field.
Commit: | aecc3e5 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove "recursive" flag for bind mounts. There is no point having this flag. We basically always force it to be set now. Here's the comment from the code: We always pass recursive here because non-recursive bind mounts don't make a lot of sense in this context. The reason is that, when a new mount namespace is created in Linux, all pre-existing mounts become locked. These locked mounts can't be unmounted or have their mount flags adjusted. In this context, we're always in a new mount namespace, hence all mounts on the system are locked. When you try to call open_tree without AT_RECURSIVE on a tree that has mounts under it, you get an error. The reason is that allowing the binding of this subtree would have the effect of revealing what was underneath those locked mounts -- in effect, unmounting them. If we allowed the user to specify the recursive flag, it would just mean that their mount would fail if there happened to be any mount at that point or lower in the tree. That's probably not what they want.
Commit: | 39a975a | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Replace BindMount::access with BindMount::flags. Flags are optional.
Commit: | 8aa37c3 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Add in new JobMount::Bind variant. This will panic in the executor if it is ever encountered. We'll add in actual support in the next few patches.
Commit: | 67d159c | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Change how JobMount is represented to prepare for adding in a new variant. This changes the representation, but keeps the TOML and JSON parsing the same. It does change the protobuf representation.
Commit: | 84ae264 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Change enable_loopback in maelstrom_client_base::spec::JobSpec to a new JobNetwork enum. This enum has three variant: disabled, enabled, and local. The local variant indicates that the job has to be run on the local runner, and it will be run in the enclosing network namespace.
Commit: | 3de5669 | |
---|---|---|
Author: | Remi Bernotavicius |
Remove the get_container_image client RPC
Commit: | 6cb82a9 | |
---|---|---|
Author: | Remi Bernotavicius |
Add estimated_duration field to client JobSpec
Commit: | 063a329 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Change proto-buf JobSpec to support upcoming image changes The way the environment is evaluated is going to change so that evaluation happens on the other side of the RPC. The structures have been changed to support that, but it doesn't evaluate anything yet. Similarly the image field is ignored right now.
Commit: | 6b8a5bc | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Change start field numbering to sequential We aren't worrying about backward compatibility here yet
Commit: | fd5aa0f | |
---|---|---|
Author: | Remi Bernotavicius |
Remove add_artifact RPC, it is unused
Commit: | 8f7c9af | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add introspect client RPC to replace two existing ones
Commit: | de0e3fd | |
---|---|---|
Author: | Remi Bernotavicius |
Rename AddJob RPC to RunJob This makes more sense since the RPC returns when the job finishes.
Commit: | 1c03819 | |
---|---|---|
Author: | Remi Bernotavicius |
Remove wait_for_outstanding_jobs RPC This RPC is error-prone because it is easy to think it will wait for all your job RPCs to have completed, but it isn't able to do that. Furthermore, if you have threads waiting for jobs to complete, this call can't possibly wait for those to finish. It is better to encourage some kind of client-side synchronization instead.
Commit: | 9289a8d | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Plumb container_image_depot_dir out to clients.
Commit: | 43b768f | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Plumb in new StateDir.
Commit: | 1a9a53e | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Time tests being run and keep in JobEffects see #81
Commit: | 1fabb7d | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Pass the container_image_depot_cache_dir into the client process. We very quickly become root in our own namespace in the client process, so we can't use xdg to get the result when we need it. In theory, we could get the value before we go into our own namespace, but it seems cleaner to just have the start message contain in.
Commit: | dbe3833 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Plumb the local worker config parmeters into the protobuf.
Commit: | fe2e3a8 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove unused ProcessBrokerMsgSingleThreadedRequest.
Commit: | b7e0320 | |
---|---|---|
Author: | Neal Fachan |
Get first cut of standalone working. If you don't provide a broker to cargo-maelstrom or maelstrom-run, you'll enter standalone mode.
Commit: | 18614fd | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove streaming response for GetContainerImage RPC. We'll add in something like GetArtifactUploadProgress later.
Commit: | 99e4097 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Convert ClientDriver into client_main.
Commit: | 23141f4 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Remove integration tests and the RPC messages they depend on. We're going to re-do these tests in a different way.
Commit: | 3305719 | |
---|---|---|
Author: | Neal Fachan | |
Committer: | Neal Fachan |
Rename proto::JobOutcomeCompleted to JobCompleted.
Commit: | 5f4dca0 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add fuse device to make new fuse tests pass on maelstrom
Commit: | f1ceee1 | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Add follow_symlinks flag to PrefixOptions
Commit: | 4119a8c | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
cargo-maelstrom: progress bars for artifact upload
Commit: | e50003a | |
---|---|---|
Author: | Remi Bernotavicius |
Restore the progress bar for downloading containers
Commit: | 088a45a | |
---|---|---|
Author: | Remi Bernotavicius | |
Committer: | Remi Bernotavicius |
Replace client RPCs with tonic This breaks progress bar stuff with container images again I also accidentally added in updates to the cargo-maelstrom progress indicator messages