Using wadm

Using wadm typically involves using the wash command line tool. However, you can also use wash’s supporting library in your Rust application or, if you continue to the next section, you’ll see the API reference if you want to interact with wadm directly over a NATS connection.

The following is an overview of the high level functionality exposed by wadm. To see the corresponding commands in the wash CLI, issue the following command:

wash app --help

List Applications

This will retrieve a list of all applications that wadm knows about. Application specifications (also referred to in our documentation and code as “models”) are stored without regard to lattice.

wash app list

Get Specification

This lets you retrieve the model for a specific application version. You can retrieve both the original text (e.g. YAML) that you submitted and the vetted and normalized model in JSON format.

wash app get --name petclinic --version 0.0.1

Version History

Retrieves the chronological version history of a given application

wash app history --name petclinic

Put Specification

Performs an idempotent put operation for an application specification version. Each time you put a model spec YAML to the server, it will either produce a new version or be ignored. Versions are immutable and as such cannot be overwritten. If you wish to change anything about your spec, it needs to be done in a new version.

wash app put ./petclinic.yaml

Delete Specification

Deletes a specific version of an application specification. You can optionally delete all versions of a specification, but make sure you’re aware of the consequences when you do this.

wash app delete --name petclinic --version 0.0.1

Deploy Version

Application specification versions are deployed to a given lattice. When a specification is deployed, wadm will start monitoring the state of the relevant lattice. Once it is satisfied it has enough information, it will begin its control loop, where it constantly compares the desired state of an application with the actual state and issues the appropriate low-level imperative commands to reconcile the two.

wash app deploy --name petclinic --version 0.0.1

Undeploy Version

Undeploying an application spec tells wadm to stop monitoring that deployment. For now, wadm does not support destructive undeploys, so all resources originally provisioned for an application will remain after that application is undeployed. In the near future, wadm will support destructive undeploys which can optionally remove previously provisioned resources.

wash app undeploy --name petclinic