docs icon indicating copy to clipboard operation
docs copied to clipboard

Updating XRD default values does not affect claims

Open daniel-palmer-gu opened this issue 4 months ago • 3 comments

What happened?

Updating default values in an XRD does not update claims that use default values

How can we reproduce it?

Create a simple XRD like:

apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
  name: xexamples.example.com
spec:
  group: example.com
  names:
    kind: XExample
    plural: xexamples
  claimNames:
    kind: Example
    plural: examples
  versions:
    - name: v1alpha1
      served: true
      referenceable: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                values:
                  x-kubernetes-preserve-unknown-fields: true
                  description: An example default value
                  type: string
                  default: "default value"

Create Claim that uses the default value:

apiVersion: example.com/v1alpha1
kind: Example
metadata:
  name: example-test
  namespace: default
spec: {}

Resulting Claim in cluster looks like:

apiVersion: example.com/v1alpha1
kind: Example
metadata: <removed for brevity>
spec:
  compositeDeletePolicy: Background
  compositionUpdatePolicy: Automatic
  resourceRef:
    apiVersion: example.com/v1alpha1
    kind: XExample
    name: example-test-9p6k8
  values: default value
status: <removed for brevity>

Update default value in XRD like so:

apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
  name: xexamples.example.com
spec:
  group: example.com
  names:
    kind: XExample
    plural: xexamples
  claimNames:
    kind: Example
    plural: examples
  versions:
    - name: v1alpha1
      served: true
      referenceable: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                values:
                  x-kubernetes-preserve-unknown-fields: true
                  description: An example default value
                  type: string
                  default: "new default value"

Expected results:

  • Claim is updated with new default value

Actual results:

  • Claim has old default value

What environment did it happen in?

Crossplane version: v1.15.0 Kubernetes version: v1.26.13

daniel-palmer-gu avatar Feb 29 '24 21:02 daniel-palmer-gu