Releases: wasmCloud/wadm
v0.16.0
What's Changed
- chore(deps): update control interface to v2.0.0 by @vados-cosmonic in #431
- chore(deps): bump regex from 1.10.6 to 1.11.0 by @dependabot in #436
- chore(deps): bump testcontainers from 0.22.0 to 0.23.1 by @dependabot in #434
- chore(deps): bump async-trait from 0.1.82 to 0.1.83 by @dependabot in #435
- chore(deps): update to ctrl iface 2.1.0 by @vados-cosmonic in #437
- release: Bump wadm client and types by @joonas in #438
- chore(deps): update for control-interface 2.2.0 by @vados-cosmonic in #439
- release(wadm): v0.16.0 by @brooksmtownsend in #440
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- chore(schema): change name and description on json schema by @lachieh in #395
- chore(deps): bump clap from 4.5.15 to 4.5.16 by @dependabot in #399
- chore(deps): bump serde_json from 1.0.125 to 1.0.127 by @dependabot in #397
- chore(deps): bump serde from 1.0.208 to 1.0.209 by @dependabot in #398
- fix(wadm): ensure custom traits are not spread or link traits by @brooksmtownsend in #396
- fix(server): deprecate and replace model.list operation with model.get by @ahmedtadde in #400
- chore(deps): bump tokio from 1.39.3 to 1.40.0 by @dependabot in #403
- chore(deps): bump actions/setup-python from 5.1.1 to 5.2.0 by @dependabot in #407
- chore(deps): bump indexmap from 2.4.0 to 2.5.0 by @dependabot in #406
- chore(deps): bump testcontainers from 0.21.1 to 0.22.0 by @dependabot in #404
- chore(deps): bump async-trait from 0.1.81 to 0.1.82 by @dependabot in #405
- chore(chart): Bump wadm chart to default to 0.14.0 by @joonas in #402
- chore(deps): bump serde_json from 1.0.127 to 1.0.128 by @dependabot in #410
- chore(deps): bump anyhow from 1.0.86 to 1.0.87 by @dependabot in #413
- chore(deps): bump serde from 1.0.209 to 1.0.210 by @dependabot in #412
- chore(deps): bump clap from 4.5.16 to 4.5.17 by @dependabot in #411
- fix(types): Fixes validation for wasi:keyvalue by @thomastaylor312 in #415
- feat(wadm)!: support configuring max stream bytes by @brooksmtownsend in #418
- chore: Revise the default NATS Server address logic by @joonas in #420
- chore: Rework release pipeline by @joonas in #421
- chore: Use normal cargo build on windows by @joonas in #422
- chore: Fix up release workflow by @joonas in #423
- chore(deps): bump bytes from 1.7.1 to 1.7.2 by @dependabot in #424
- chore(deps): bump thiserror from 1.0.63 to 1.0.64 by @dependabot in #426
- chore(deps): bump clap from 4.5.17 to 4.5.18 by @dependabot in #427
- chore(deps): bump nkeys from 0.4.3 to 0.4.4 by @dependabot in #425
- chore(deps): bump anyhow from 1.0.87 to 1.0.89 by @dependabot in #416
- fix(handler): backwards compat list by @brooksmtownsend in #428
- release: bump crates for release by @brooksmtownsend in #429
- feat: Add wolfi image by @joonas in #430
New Contributors
Full Changelog: v0.14.0...v0.15.0
v0.14.0
This release of wadm includes a whole suite of quality of life improvements, fixes, and new features.
Features
- The wadm client API now returns the name and the version from deploying a model, which previously was difficult to infer if you didn't know the version but wanted to deploy the latest version of an application
- wadm's host cleanup interval has been reduced to 70 seconds, requiring only two missed heartbeats instead of four. This will cut down the time to remove a host that no longer exists. If you're running wadm in a highly distributed scenario where you expect for hosts to have intermittent network connections, you may want to re-adjust this value to 120 seconds to keep the previous functionality.
- The BackoffWrapper for scalers now has the ability to correlate failure events to particular scalers, reporting failed events as failed scaler statuses. This also comes with a 5 second backoff for now, which is enough to prevent hot-loops for reconciliation. Most users will find this via
wash app status
, which has been revamped in wash 0.31.0
Fixes and improvements
- Link scalers will now create links when a component is the source or target of a link when that component starts, previously we only did this when the component was the source
- All WIT bindings / helpers are updated
What's Changed
- feat(client)!: return name and version from deploy model by @brooksmtownsend in #368
- fix(wit): update bindings to types 0.2.0 by @brooksmtownsend in #363
- feat(wadm)!: set cleanup interval to 60s by @brooksmtownsend in #364
- fix(wadm): attach lattice/multitenant to consumer metadata by @brooksmtownsend in #359
- fix(scalers): remove scalers upon notification by @brooksmtownsend in #375
- fix(wadm): update reaper to allow for latency by @brooksmtownsend in #377
- feat(scaler): report status per scaler by @brooksmtownsend in #362
- fix(server): use backwards compatible undeployed by @brooksmtownsend in #380
- fix(scalers): put link for component as target by @brooksmtownsend in #378
- fix(charts): align replicas value by @ricochet in #382
- feat(*)!: surface application errors in status by @brooksmtownsend in #379
- release: v0.14.0 by @brooksmtownsend in #394
Full Changelog: v0.13.1...v0.14.0
v0.13.1
What's Changed
- fix: react to configuration events by @brooksmtownsend in #361
- chore: update README to be more direct by @brooksmtownsend in #366
- chore: Replace wash up with testcontainers by @joonas in #367
- chore: cleanup repository tests, files, README by @brooksmtownsend in #365
- chore(deps): bump serde_json from 1.0.121 to 1.0.122 by @dependabot in #372
- chore(deps): bump base64 from 0.21.7 to 0.22.1 by @dependabot in #373
- chore(deps): bump bytes from 1.6.1 to 1.7.1 by @dependabot in #370
- chore(deps): bump indexmap from 2.2.6 to 2.3.0 by @dependabot in #371
- chore: Migrate more tests over to using testcontainers for setup by @joonas in #369
- chore(deps): bump clap from 4.5.11 to 4.5.13 by @dependabot in #374
- fix(#345): use cached links when req fails by @brooksmtownsend in #360
Full Changelog: v0.13.0...v0.13.1
v0.13.0
What's Changed
The wadm manifest has a new block, policies
, and a new streamlined syntax for link traits with the addition of secrets. Both of these changes are backwards compatible.
Secrets
Secret configuration can now be defined for components, providers, and links. For components and providers, the secrets:
block is now available in the component properties:
section, alongside config. The secret should be named however the component or provider refers to it in code, the policy
field should point to an appropriate policy that configures the secrets backend, and then the key
, field
, and version
properties should indicate how to reference the secret in the backend itself.
components:
- name: http-component
type: component
properties:
image: ghcr.io/wasmcloud/test-fetch-with-token:0.1.0-fake
secrets:
# wasmCloud will fetch this secret from the vault backend
- name: some-api-token
properties:
policy: vault
key: secrets/test/value
field: api-token
version: 1
Policies
With the addition of secrets in wasmCloud, secrets backends often require more information in order to authenticate a component. In the case of Vault for example, the secrets backend requires knowledge of the role name and mount path. If you're using secrets, ensure you define an appropriate policy for the backend, and then refer to that policy by name
spec:
policies:
- name: vault
type: policy.secret.wasmcloud.dev/v1alpha1
properties:
backend: 'vault'
role_name: 'demo-role'
mount_path: 'jwt'
Links
The link trait definition now deprecates the source_config
, target_config
, and target: <name>
properties in favor of a new streamlined syntax:
- type: link
properties:
namespace: wasi
package: keyvalue
interfaces: [atomics, store]
source:
config:
- name: redis-url
properties:
url: 127.0.0.1:6379
target:
name: kvredis
secrets:
- name: redis_password
properties:
policy: nats-kv
key: redis_password
The link source and target blocks now have config:
and secrets:
nested properties for defining config and secrets, respectively. To simplify the blocks, the target: name: <name>
field is now nested in order to organize all target information in one place. This change is backwards compatible and wadm will automatically update an application manifest with the source_config
or target_config
blocks before storage. Put another way, you can use the following script to update any application manifests:
wash app put wadm.yaml
wash app get <app-name> > wadm-updated.yaml
Features
- Add support for secrets in manifests - Breaking change: introduces the ability to manage secrets directly within the manifests. (#307)
- Retry state updates - Added a feature to automatically retry state updates to improve reliability. (#315)
- Add policy configuration block - Introduces a new block for configuring policies. (#306)
- Added WIT bindings for OAM types and subscription method - Enables OAM type support and a new subscription method. (#301)
Bug Fixes
- Correctly emit a validation error if a backend key in a policy is missing - Ensures that a missing backend key in a policy results in a validation error. (#344)
- Copy backend key to top level in a generated config value - Fixes an issue where the backend key was not correctly copied. (#343)
- Write out policy data in a secret config correctly - Corrects the way policy data is written out in secret configurations. (#339)
- Use instances in all examples - Updates all examples to utilize instances. (#314)
Enhancements
- Enable upgrades integration test - Added integration tests for upgrade scenarios. (#312)
- Add dependabot configuration - Added Dependabot for automatic dependency updates. (#319)
- Update CODEOWNERS with team - Updated the CODEOWNERS file to reflect the current team. (#349)
- Use application verbiage instead of model - Updated terminology from "model" to "application" throughout the project. (#342)
- Updating wadm links - Updated documentation links for
wadm
. (#338) - Bump appVersion in the helm chart - Updated the Helm chart appVersion to the latest. (#351)
Chores
- Prepare 0.13 release - General preparation and housekeeping for the 0.13 release. (#348)
CI/CD
- Use GITHUB_TOKEN to release - Updated release process to utilize GITHUB_TOKEN. (#318)
- Update upload/download to v4 - Updated CI workflows to use version 4 of the upload/download actions. (#331)
New Contributors
- @ricochet made their first contribution in #314
- @LUK3ARK made their first contribution in #301
- @dependabot made their first contribution in #323
- @lxfontes made their first contribution in #338
Full Changelog: v0.12.2...v0.13.0
v0.13.0-beta.2
What's Changed
- feat(server)!: ensure claimed ID is uniquely deployed by @brooksmtownsend in #298
- feat(*): support field on secret property by @brooksmtownsend in #357
- chore(deps): bump clap from 4.5.9 to 4.5.11 by @dependabot in #355
Full Changelog: v0.13.0-beta.1...v0.13.0-beta.2
v0.13.0-beta.1
What's Changed
The wadm manifest has a new block, policies
, and a new streamlined syntax for link traits with the addition of secrets. Both of these changes are backwards compatible.
Secrets
Secret configuration can now be defined for components, providers, and links. For components and providers, the secrets:
block is now available in the component properties:
section, alongside config. The secret should be named however the component or provider refers to it in code, the policy
field should point to an appropriate policy that configures the secrets backend, and then the key
, field
, and version
properties should indicate how to reference the secret in the backend itself.
components:
- name: http-component
type: component
properties:
image: ghcr.io/wasmcloud/test-fetch-with-token:0.1.0-fake
secrets:
# wasmCloud will fetch this secret from the vault backend
- name: some-api-token
properties:
policy: vault
key: secrets/test/value
field: api-token
version: 1
Policies
With the addition of secrets in wasmCloud, secrets backends often require more information in order to authenticate a component. In the case of Vault for example, the secrets backend requires knowledge of the role name and mount path. If you're using secrets, ensure you define an appropriate policy for the backend, and then refer to that policy by name
spec:
policies:
- name: vault
type: policy.secret.wasmcloud.dev/v1alpha1
properties:
backend: 'vault'
role_name: 'demo-role'
mount_path: 'jwt'
Links
The link trait definition now deprecates the source_config
, target_config
, and target: <name>
properties in favor of a new streamlined syntax:
- type: link
properties:
namespace: wasi
package: keyvalue
interfaces: [atomics, store]
source:
config:
- name: redis-url
properties:
url: 127.0.0.1:6379
target:
name: kvredis
secrets:
- name: redis_password
properties:
policy: nats-kv
key: redis_password
The link source and target blocks now have config:
and secrets:
nested properties for defining config and secrets, respectively. To simplify the blocks, the target: name: <name>
field is now nested in order to organize all target information in one place. This change is backwards compatible and wadm will automatically update an application manifest with the source_config
or target_config
blocks before storage. Put another way, you can use the following script to update any application manifests:
wash app put wadm.yaml
wash app get <app-name> > wadm-updated.yaml
Features
- Add support for secrets in manifests - Breaking change: introduces the ability to manage secrets directly within the manifests. (#307)
- Retry state updates - Added a feature to automatically retry state updates to improve reliability. (#315)
- Add policy configuration block - Introduces a new block for configuring policies. (#306)
- Added WIT bindings for OAM types and subscription method - Enables OAM type support and a new subscription method. (#301)
Bug Fixes
- Correctly emit a validation error if a backend key in a policy is missing - Ensures that a missing backend key in a policy results in a validation error. (#344)
- Copy backend key to top level in a generated config value - Fixes an issue where the backend key was not correctly copied. (#343)
- Write out policy data in a secret config correctly - Corrects the way policy data is written out in secret configurations. (#339)
- Use instances in all examples - Updates all examples to utilize instances. (#314)
Enhancements
- Enable upgrades integration test - Added integration tests for upgrade scenarios. (#312)
- Add dependabot configuration - Added Dependabot for automatic dependency updates. (#319)
- Update CODEOWNERS with team - Updated the CODEOWNERS file to reflect the current team. (#349)
- Use application verbiage instead of model - Updated terminology from "model" to "application" throughout the project. (#342)
- Updating wadm links - Updated documentation links for
wadm
. (#338) - Bump appVersion in the helm chart - Updated the Helm chart appVersion to the latest. (#351)
Chores
- Prepare 0.13 release - General preparation and housekeeping for the 0.13 release. (#348)
CI/CD
- Use GITHUB_TOKEN to release - Updated release process to utilize GITHUB_TOKEN. (#318)
- Update upload/download to v4 - Updated CI workflows to use version 4 of the upload/download actions. (#331)
New Contributors
- @ricochet made their first contribution in #314
- @LUK3ARK made their first contribution in #301
- @dependabot made their first contribution in #323
- @lxfontes made their first contribution in #338
Full Changelog: v0.12.2...v0.13.0-beta.1
v0.12.2
What's Changed
- fix(validation): allow multiple links to the same target by @vados-cosmonic in #303
- chore(deps): remove once_cell by @vados-cosmonic in #304
- chore(wadm): update to v0.12.2 by @brooksmtownsend in #308
- fix(wadm): Set PutModelResponse current_version based on the StoredManifests current_version by @joonas in #309
- test(integration): enable consumer integration tests by @brooksmtownsend in #311
- chore(wadm): Bump wadm crate to 0.12.2 by @joonas in #313
- feat(wadm)!: Switch wadm events to limits-based stream and create a new sourcing stream for EventConsumer by @joonas in #310
Full Changelog: v0.12.1...v0.12.2
v0.12.1
What's Changed
- feat(reuseProviders): Allow capability providers to be reused across components by @ritesh089 in #297
- fix(client): app list topic by @brooksmtownsend in #300
- chore: bump to v0.12.1 for release by @brooksmtownsend in #299
- fix(client): correct delete topic by @brooksmtownsend in #302
- fix(wadm): support empty delete payload by @brooksmtownsend in #305
New Contributors
- @ritesh089 made their first contribution in #297
Full Changelog: v0.12.0...v0.12.1
v0.12.0
What's Changed
- Add support for mounting Kubernetes Secret for nats.creds file by @joonas in #272
- Fix rendering WADM_NATS_CREDS_FILE when creds secret is provided by @joonas in #273
- chore: fix clippy lints by @vados-cosmonic in #275
- feat(*)!: Makes version optional by @thomastaylor312 in #281
- ci(release): use native macos arm64 runner by @brooksmtownsend in #283
- chore: bump to v0.11.2 by @brooksmtownsend in #286
- docs(readme): Update manifest example and language for 1.0 by @ericgregory in #284
- feat(validation): add manifest validation by @vados-cosmonic in #274
- feat(*)!: Breaks wadm into separate crates and creates a new wadm-client by @thomastaylor312 in #287
- chore(wadm): bump to v0.12.0 for release by @brooksmtownsend in #289
- fix(*): Removed unneeded readme keys and update paths by @thomastaylor312 in #290
- fix(*): Bumps wadm crate version by @thomastaylor312 in #291
- fix(wadm): Adds oam schema to wadm crate by @thomastaylor312 in #292
Breaking changes
This version contains a breaking change to the wadm API as well as one big, but backwards compatible change. We inverted the behavior of the delete model API to always delete all versions by default. In practice, it turned out that few users wanted to only delete a specific version. Now the API takes a body that looks like:
{
"version": "1.0"
}
The version field is optional. If it is not set, all versions of a model will be deleted, but if it is set, it will only delete the specific model version given
Additionally, we have now made the version
field in a manifest entirely optional. Versioning sounded like a good idea, but caused more headache than it was worth, especially for local development. You can still specify a version and it still must be unique, but by default, wadm will generate a ULID for the version of the model. This means you can get the original insertion order of models by sorting on the version. Old manifests will still continue to function properly if they have the version
field set.
New crates
This release also marks the launch of a few new crates for wadm. Before, everything was part of the wadm
crate and there was no specific client library. Now, we have separated out wadm types into the wadm-types
crate so they can be used separately without the full dependency tree of wadm as well as in places like wasm components. We also have a new Rust client (wadm-client
) available so people don't need to roll their own NATS requests anymore
New Contributors
- @ericgregory made their first contribution in #284
Full Changelog: v0.11.2...v0.12.0