
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.2.4
  name: workloaddefinitions.core.oam.dev
spec:
  group: core.oam.dev
  names:
    categories:
    - oam
    kind: WorkloadDefinition
    listKind: WorkloadDefinitionList
    plural: workloaddefinitions
    shortNames:
    - workload
    singular: workloaddefinition
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.definitionRef.name
      name: DEFINITION-NAME
      type: string
    name: v1alpha2
    schema:
      openAPIV3Schema:
        description: A WorkloadDefinition registers a kind of Kubernetes custom resource as a valid OAM workload kind by referencing its CustomResourceDefinition. The CRD is used to validate the schema of the workload when it is embedded in an OAM Component.
        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: A WorkloadDefinitionSpec defines the desired state of a WorkloadDefinition.
            properties:
              childResourceKinds:
                description: ChildResourceKinds are the list of GVK of the child resources this workload generates
                items:
                  description: A ChildResourceKind defines a child Kubernetes resource kind with a selector
                  properties:
                    apiVersion:
                      description: APIVersion of the child resource
                      type: string
                    kind:
                      description: Kind of the child resource
                      type: string
                    selector:
                      additionalProperties:
                        type: string
                      description: Selector to select the child resources that the workload wants to expose to traits
                      type: object
                  required:
                  - apiVersion
                  - kind
                  type: object
                type: array
              definitionRef:
                description: Reference to the CustomResourceDefinition that defines this workload kind.
                properties:
                  name:
                    description: Name of the referenced CustomResourceDefinition.
                    type: string
                  version:
                    description: Version indicate which version should be used if CRD has multiple versions by default it will use the first one if not specified
                    type: string
                required:
                - name
                type: object
              extension:
                description: Extension is used for extension needs by OAM platform builders
                type: object
                x-kubernetes-preserve-unknown-fields: true
              podSpecPath:
                description: PodSpecPath indicates where/if this workload has K8s podSpec field if one workload has podSpec, trait can do lot's of assumption such as port, env, volume fields.
                type: string
              revisionLabel:
                description: RevisionLabel indicates which label for underlying resources(e.g. pods) of this workload can be used by trait to create resource selectors(e.g. label selector for pods).
                type: string
              schematic:
                description: Schematic defines the data format and template of the encapsulation of the workload
                properties:
                  cue:
                    description: CUE defines the encapsulation in CUE format
                    properties:
                      template:
                        description: Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field. Template is a required field if CUE is defined in Capability Definition.
                        type: string
                    required:
                    - template
                    type: object
                  helm:
                    description: A Helm represents resources used by a Helm module
                    properties:
                      release:
                        description: Release records a Helm release used by a Helm module workload.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      repository:
                        description: HelmRelease records a Helm repository used by a Helm module workload.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    required:
                    - release
                    - repository
                    type: object
                  kube:
                    description: Kube defines the encapsulation in raw Kubernetes resource format
                    properties:
                      parameters:
                        description: Parameters defines configurable parameters
                        items:
                          description: A KubeParameter defines a configurable parameter of a component.
                          properties:
                            description:
                              description: Description of this parameter.
                              type: string
                            fieldPaths:
                              description: "FieldPaths specifies an array of fields within this workload that will be overwritten by the value of this parameter. \tAll fields must be of the same type. Fields are specified as JSON field paths without a leading dot, for example 'spec.replicas'."
                              items:
                                type: string
                              type: array
                            name:
                              description: Name of this parameter
                              type: string
                            required:
                              default: false
                              description: Required specifies whether or not a value for this parameter must be supplied when authoring an Application.
                              type: boolean
                            type:
                              description: 'ValueType indicates the type of the parameter value, and only supports basic data types: string, number, boolean.'
                              enum:
                              - string
                              - number
                              - boolean
                              type: string
                          required:
                          - fieldPaths
                          - name
                          - type
                          type: object
                        type: array
                      template:
                        description: Template defines the raw Kubernetes resource
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    required:
                    - template
                    type: object
                type: object
              status:
                description: Status defines the custom health policy and status message for workload
                properties:
                  customStatus:
                    description: CustomStatus defines the custom status message that could display to user
                    type: string
                  healthPolicy:
                    description: HealthPolicy defines the health check policy for the abstraction
                    type: string
                type: object
            required:
            - definitionRef
            type: object
          status:
            description: WorkloadDefinitionStatus is the status of WorkloadDefinition
            properties:
              conditions:
                description: Conditions of the resource.
                items:
                  description: A Condition that may apply to a resource.
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the last time this condition transitioned from one status to another.
                      format: date-time
                      type: string
                    message:
                      description: A Message containing details about this condition's last transition from one status to another, if any.
                      type: string
                    reason:
                      description: A Reason for this condition's last transition from one status to another.
                      type: string
                    status:
                      description: Status of this condition; is it currently True, False, or Unknown?
                      type: string
                    type:
                      description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
                      type: string
                  required:
                  - lastTransitionTime
                  - reason
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: false
    subresources: {}
  - additionalPrinterColumns:
    - jsonPath: .spec.definitionRef.name
      name: DEFINITION-NAME
      type: string
    - jsonPath: .metadata.annotations.definition\.oam\.dev/description
      name: DESCRIPTION
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: A WorkloadDefinition registers a kind of Kubernetes custom resource as a valid OAM workload kind by referencing its CustomResourceDefinition. The CRD is used to validate the schema of the workload when it is embedded in an OAM Component.
        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: A WorkloadDefinitionSpec defines the desired state of a WorkloadDefinition.
            properties:
              childResourceKinds:
                description: ChildResourceKinds are the list of GVK of the child resources this workload generates
                items:
                  description: A ChildResourceKind defines a child Kubernetes resource kind with a selector
                  properties:
                    apiVersion:
                      description: APIVersion of the child resource
                      type: string
                    kind:
                      description: Kind of the child resource
                      type: string
                    selector:
                      additionalProperties:
                        type: string
                      description: Selector to select the child resources that the workload wants to expose to traits
                      type: object
                  required:
                  - apiVersion
                  - kind
                  type: object
                type: array
              definitionRef:
                description: Reference to the CustomResourceDefinition that defines this workload kind.
                properties:
                  name:
                    description: Name of the referenced CustomResourceDefinition.
                    type: string
                  version:
                    description: Version indicate which version should be used if CRD has multiple versions by default it will use the first one if not specified
                    type: string
                required:
                - name
                type: object
              extension:
                description: Extension is used for extension needs by OAM platform builders
                type: object
                x-kubernetes-preserve-unknown-fields: true
              podSpecPath:
                description: PodSpecPath indicates where/if this workload has K8s podSpec field if one workload has podSpec, trait can do lot's of assumption such as port, env, volume fields.
                type: string
              revisionLabel:
                description: RevisionLabel indicates which label for underlying resources(e.g. pods) of this workload can be used by trait to create resource selectors(e.g. label selector for pods).
                type: string
              schematic:
                description: Schematic defines the data format and template of the encapsulation of the workload
                properties:
                  cue:
                    description: CUE defines the encapsulation in CUE format
                    properties:
                      template:
                        description: Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field. Template is a required field if CUE is defined in Capability Definition.
                        type: string
                    required:
                    - template
                    type: object
                  helm:
                    description: A Helm represents resources used by a Helm module
                    properties:
                      release:
                        description: Release records a Helm release used by a Helm module workload.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      repository:
                        description: HelmRelease records a Helm repository used by a Helm module workload.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    required:
                    - release
                    - repository
                    type: object
                  kube:
                    description: Kube defines the encapsulation in raw Kubernetes resource format
                    properties:
                      parameters:
                        description: Parameters defines configurable parameters
                        items:
                          description: A KubeParameter defines a configurable parameter of a component.
                          properties:
                            description:
                              description: Description of this parameter.
                              type: string
                            fieldPaths:
                              description: "FieldPaths specifies an array of fields within this workload that will be overwritten by the value of this parameter. \tAll fields must be of the same type. Fields are specified as JSON field paths without a leading dot, for example 'spec.replicas'."
                              items:
                                type: string
                              type: array
                            name:
                              description: Name of this parameter
                              type: string
                            required:
                              default: false
                              description: Required specifies whether or not a value for this parameter must be supplied when authoring an Application.
                              type: boolean
                            type:
                              description: 'ValueType indicates the type of the parameter value, and only supports basic data types: string, number, boolean.'
                              enum:
                              - string
                              - number
                              - boolean
                              type: string
                          required:
                          - fieldPaths
                          - name
                          - type
                          type: object
                        type: array
                      template:
                        description: Template defines the raw Kubernetes resource
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    required:
                    - template
                    type: object
                type: object
              status:
                description: Status defines the custom health policy and status message for workload
                properties:
                  customStatus:
                    description: CustomStatus defines the custom status message that could display to user
                    type: string
                  healthPolicy:
                    description: HealthPolicy defines the health check policy for the abstraction
                    type: string
                type: object
            required:
            - definitionRef
            type: object
          status:
            description: WorkloadDefinitionStatus is the status of WorkloadDefinition
            properties:
              conditions:
                description: Conditions of the resource.
                items:
                  description: A Condition that may apply to a resource.
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the last time this condition transitioned from one status to another.
                      format: date-time
                      type: string
                    message:
                      description: A Message containing details about this condition's last transition from one status to another, if any.
                      type: string
                    reason:
                      description: A Reason for this condition's last transition from one status to another.
                      type: string
                    status:
                      description: Status of this condition; is it currently True, False, or Unknown?
                      type: string
                    type:
                      description: Type of this condition. At most one of each condition type may apply to a resource at any point in time.
                      type: string
                  required:
                  - lastTransitionTime
                  - reason
                  - status
                  - type
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
