Skip to content

Add an option to update backend for already existing TypeInstance #636

@mszostok

Description

@mszostok

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions