-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
💡 [Feature] Provide component service version #441
Comments
If we do this we need to have some concept of what a version means for a specific component or service first. Some things to consider: What is the value of the version here? The version of the docker image? What if we make changes to the default configuration for a service in this repo that doesn't require a change to the docker container? What if we start using a different image for a given service? |
I would leave it up to the specific component to define what version applies. In many cases, the docker container's tag/version would be directly the version of the service, but it does not strictly need to be the case. The idea came from recent discussions with participants of the OGC OSPD effort. There needs to be some kind of "service and versioning listing" details where information about the specific versions of services and platform employed can be obtained. I naturally thought about our |
fix #38) + add service version property (relates to bird-house/birdhouse-deploy#441)
Another thing we should think about. We don't actually have anything that indicates a unique name for a give service. We have the "name" field but that could be any value. For example, let's say that a node wants to deploy two versions of finch, an older one and a newer one. They can call one old-finch and one new-finch. The service definition doesn't have anything that makes it clear that these two services are the same, just with different versions. We could introduce an "id" field which could be used with the "version" field to uniquely identify which service we're referring to and which version, no matter what the name is. So for the example above we'd have something like:
|
I'm not sure if I see the use case. If the 2 versions are deployed at the same time, they should have a different URI for their |
My point is that we're adding a version number without having a clear definition of what it is a version of. Maybe this is a more clarifying example:
Without the "id", we don't know that the service is some version of "finch", the "name" can be anything. Another option is to use the "version" key to specify both the id and version (similar to a docker tag):
|
Ok. I get what you meant now. I'm not sure I like In a way, even "finch" here could point to relatively anything. One needs to have the context of birdhouse to guess what it refers to, and even then, is it https://github.com/bird-house/finch or one of its forks? Maybe the best would be to have explicit references as follows. The "id" would be the literal docker reference. {
"links": [
{
"rel": "service-meta",
"href": "registry.hub.docker.com/birdhouse/finch:version-0.12.0",
"type": "application/vnd.oci.image.index.v1+json"
},
{
"rel": "service-desc",
"href": "https://github.com/bird-house/finch",
"type": "text/html"
}
]
} |
Ok that makes sense. Would we then require the Also would |
I think I think the |
## Overview Add node services URI and fields. ## Changes **Non-breaking changes** - Node Services: Add definitions and variables for every service represented by the [DACCS-Climate/Marble-node-registry](https://github.com/DACCS-Climate/Marble-node-registry). - Add `version` field using the corresponding `<SERVICE>_VERSION` variables. - Add `types` field restricted by specific values instead of previous `keywords` expected to be extendable. - Add `<SERVICE>_IMAGE_URI` variables to provide `rel: service-meta` link for every service. **Breaking changes** - n/a ## Related Issue / Discussion - Resolves #441 - Depends on DACCS-Climate/Marble-node-registry#40 to enforce validation
Description
All components that provide a service definition to be reported in
/services
of the platform should provide aversion
field when available.This way, the
/services
endpoint would provide a centralized view of available/deployed service versions.The current schema definition (https://github.com/DACCS-Climate/Marble-node-registry/blob/7fc410a0fa545c11540805db0adf2d7ad576fbf6/node_registry.schema.json#L83) does not disallow adding
version
, but it could add it explicitly using the same definition (https://github.com/DACCS-Climate/Marble-node-registry/blob/7fc410a0fa545c11540805db0adf2d7ad576fbf6/node_registry.schema.json#L145) as used by the nodes.The text was updated successfully, but these errors were encountered: