---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: releasemanifests.lifecycle.suse.com
spec:
  group: lifecycle.suse.com
  names:
    kind: ReleaseManifest
    listKind: ReleaseManifestList
    plural: releasemanifests
    singular: releasemanifest
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ReleaseManifest is the Schema for the releasemanifests API
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ReleaseManifestSpec defines the desired state of ReleaseManifest
              properties:
                components:
                  properties:
                    kubernetes:
                      properties:
                        k3s:
                          properties:
                            coreComponents:
                              items:
                                properties:
                                  containers:
                                    items:
                                      properties:
                                        image:
                                          type: string
                                        name:
                                          type: string
                                      required:
                                        - image
                                        - name
                                      type: object
                                    type: array
                                  name:
                                    type: string
                                  type:
                                    enum:
                                      - HelmChart
                                      - Deployment
                                    type: string
                                  version:
                                    type: string
                                required:
                                  - name
                                  - type
                                type: object
                              type: array
                            version:
                              type: string
                          required:
                            - version
                          type: object
                        rke2:
                          properties:
                            coreComponents:
                              items:
                                properties:
                                  containers:
                                    items:
                                      properties:
                                        image:
                                          type: string
                                        name:
                                          type: string
                                      required:
                                        - image
                                        - name
                                      type: object
                                    type: array
                                  name:
                                    type: string
                                  type:
                                    enum:
                                      - HelmChart
                                      - Deployment
                                    type: string
                                  version:
                                    type: string
                                required:
                                  - name
                                  - type
                                type: object
                              type: array
                            version:
                              type: string
                          required:
                            - version
                          type: object
                      required:
                        - k3s
                        - rke2
                      type: object
                    operatingSystem:
                      properties:
                        cpeScheme:
                          type: string
                        prettyName:
                          type: string
                        supportedArchs:
                          items:
                            enum:
                              - x86_64
                              - aarch64
                            type: string
                          minItems: 1
                          type: array
                        version:
                          type: string
                        zypperID:
                          type: string
                      required:
                        - cpeScheme
                        - prettyName
                        - supportedArchs
                        - version
                        - zypperID
                      type: object
                    workloads:
                      properties:
                        helm:
                          items:
                            properties:
                              addonCharts:
                                x-kubernetes-preserve-unknown-fields: true
                              chart:
                                type: string
                              dependencyCharts:
                                x-kubernetes-preserve-unknown-fields: true
                              prettyName:
                                type: string
                              releaseName:
                                type: string
                              repository:
                                type: string
                              values:
                                x-kubernetes-preserve-unknown-fields: true
                              version:
                                type: string
                            required:
                              - chart
                              - prettyName
                              - releaseName
                              - version
                            type: object
                          type: array
                      required:
                        - helm
                      type: object
                  required:
                    - kubernetes
                    - operatingSystem
                    - workloads
                  type: object
                releaseVersion:
                  type: string
              required:
                - releaseVersion
              type: object
            status:
              description: ReleaseManifestStatus defines the observed state of ReleaseManifest
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
