capact
capact copied to clipboard
Add an option to update backend for already existing TypeInstance
Description
Make the backend.id mutable. Currently, it's saved on the root of the TypeInstance (same as typeRef) and cannot be changed via GraphQL mutation. This should be change from immutable to become mutable.
We don't need to change mutation GraphQL syntax:
mutation CreateTypeInstances {
createTypeInstances(
in: {
typeInstances: [
{
alias: "helm-release"
typeRef: { path: "cap.type.helm.chart.release", revision: "0.1.0" }
value: {
key: "test" # same as it was
}
backend: {
id: "123" # it's like that already.
context: { # new property of type `Any!`
name: "release-name",
namespace: "release-namespace",
}
}
}
]
}
) {
id
alias
}
}
but we need to change how it is handled by Local Hub and save it under TypeInstanceRevision.
Acceptance Criteria
- Update Local Hub mutation to save backend under TypeInstanceRevision.
- Change query syntax:
query GetTypeInstance($typeInstanceID: ID!) { typeInstance(id: $typeInstanceID) { id typeRef { path revision } backend { # remove this backend entry id abstract } lockedBy latestResourceVersion { resourceVersion createdBy metadata { attributes { path revision } } spec { value } backend { # id <- new fields # abstract <- new fields context { # new property of type `Any!` name namespace } } } } } - Update related documentation and examples.
- Add integration test coverage that backend can be changed.
Related issues
See epic #604 for reason and use cases.
If implemented we need to ensure that delegated storage backends will work properly, see discussion in: https://github.com/capactio/capact/pull/644#discussion_r814720864