Summary
This release add support and requirement for service namespaces and service revision tags. This allows services to be versioned and provides a more familiar format for service IDs that's, for example, similar to Docker image names (e.g. `octue/example-service:latest`). Full validation of service IDs comes as part of this.
The new `octue deploy create-push-subscription` has also been added as requested by users and will be accompanied by a GitHub action in another repository.
<!--- SKIP AUTOGENERATED NOTES --->
Contents ([529](https://github.com/octue/octue-sdk-python/pull/529))
**IMPORTANT:** There are 4 breaking changes.
New features
- 💥 **BREAKING CHANGE:** Add support for and require revision tags for services
- 💥 **BREAKING CHANGE:** Validate service IDs before creating or questioning services
- Add ability to set service namespace, name, and revision tag by environment variable
- Add `octue deploy create-push-subscription` CLI command
Enhancements
- 💥 **BREAKING CHANGE:** Require services to have a namespace and replace use of `organisation` with `namespace` in service configurations
- 💥 **BREAKING CHANGE:** Remove `namespace` parameter from `Topic` and `Subscription` and apply `octue.services` Pub/Sub namespace to all topic/subscription paths
- Remove application of `octue.services` Pub/Sub namespace from `Service`
- Use a `coolname` revision tag to allow a service revision with a non-unique SRUID to start as a unique service revision when using the `octue start` CLI command
- Set the `Service.id` attribute to the user-friendly SRUID instead of the Pub/Sub-friendly SRUID
- Return SRUID from `DataflowDeployer.deploy`
Fixes
- Handle inability to find/load version compatibility data file
- Use latest Apache Beam base image in Dataflow `Dockerfile`
- Fix some log and error messages
Operations
- Speed up and simplify `release` workflow
- Use new Octue GitHub actions in workflows
- Improve installation process in main `Dockerfile`
- Use latest commit message checker
Dependencies
- Update Dataflow `setup.py` file
Refactoring
- Rename `OCTUE_NAMESPACE` to `OCTUE_SERVICES_NAMESPACE`
- Remove cool-naming of services when instantiated without `id` and simplify the `name` argument
---
Upgrade instructions
<details>
<summary>💥 <b>Add support for and require revision tags for services</b></summary>
The `ServiceConfiguration.service_id` attribute and the `SERVICE_ID` environment variable have been removed.
- **`ServiceConfiguration`:** Use `octue.cloud.service_id.create_service_id` to create IDs from `ServiceConfiguration.namespace` and `ServiceConfiguration.name`
- **`SERVICE_ID` environment variable:** Use the new `OCTUE_SERVICE_NAMESPACE`, `OCTUE_SERVICE_NAME`, and `OCTUE_SERVICE_REVISION_TAG` environment variables.
</details>
<details>
<summary>💥 <b>Validate service IDs before creating or questioning services</b></summary>
Update your services' namespaces, names, and revision tags to follow the requirements set out in the `Creating services` doc.
</details>
<details>
<summary>💥 <b>Require services to have a namespace and replace use of organisation with namespace in service configurations</b></summary>
Provide the `namespace` key in the service configuration (the `octue.yaml` file). If you were using the `organisation` key before, the `namespace` key now replaces it. Examples of a `namespace` are your organisation's name or your GitHub username.
</details>
<details>
<summary>💥 <b>Remove namespace parameter from Topic and Subscription and apply octue.services Pub/Sub namespace to all topic/subscription paths</b></summary>
The `octue.services` namespace is now mandatory and applied automatically in topic and subscription paths. Please stop providing the `namespace` argument if you were providing it before.
</details>
<!--- END AUTOGENERATED NOTES --->