
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: componentdefinitions.core.oam.dev
spec:
  group: core.oam.dev
  names:
    categories:
    - oam
    kind: ComponentDefinition
    listKind: ComponentDefinitionList
    plural: componentdefinitions
    shortNames:
    - comp
    singular: componentdefinition
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.workload.definition.kind
      name: WORKLOAD-KIND
      type: string
    - jsonPath: .metadata.annotations.definition\.oam\.dev/description
      name: DESCRIPTION
      type: string
    name: v1alpha2
    schema:
      openAPIV3Schema:
        description: ComponentDefinition is the Schema for the componentdefinitions
          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: ComponentDefinitionSpec defines the desired state of ComponentDefinition
            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
              extension:
                description: Extension is used for extension needs by OAM platform
                  builders
                type: object
                
              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
                        
                      repository:
                        description: HelmRelease records a Helm repository used by
                          a Helm module workload.
                        type: object
                        
                    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:
                              
                              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
                        
                    required:
                    - template
                    type: object
                  terraform:
                    description: Terraform is the struct to describe cloud resources
                      managed by Hashicorp Terraform
                    properties:
                      configuration:
                        description: Configuration is Terraform Configuration
                        type: string
                      customRegion:
                        description: Region is cloud provider's region. It will override
                          the region in the region field of ProviderReference
                        type: string
                      deleteResource:
                        default: true
                        description: DeleteResource will determine whether provisioned
                          cloud resources will be deleted when CR is deleted
                        type: boolean
                      path:
                        description: Path is the sub-directory of remote git repository.
                          It's valid when remote is set
                        type: string
                      providerRef:
                        description: ProviderReference specifies the reference to
                          Provider
                        properties:
                          name:
                            description: Name of the referenced object.
                            type: string
                          namespace:
                            default: default
                            description: Namespace of the referenced object.
                            type: string
                        required:
                        - name
                        type: object
                      type:
                        default: hcl
                        description: Type specifies which Terraform configuration
                          it is, HCL or JSON syntax
                        enum:
                        - hcl
                        - json
                        - remote
                        type: string
                      writeConnectionSecretToRef:
                        description: WriteConnectionSecretToReference specifies the
                          namespace and name of a Secret to which any connection details
                          for this managed resource should be written. Connection
                          details frequently include the endpoint, username, and password
                          required to connect to the managed resource.
                        properties:
                          name:
                            description: Name of the secret.
                            type: string
                          namespace:
                            description: Namespace of the secret.
                            type: string
                        required:
                        - name
                        type: object
                    required:
                    - configuration
                    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
              workload:
                description: Workload is a workload type descriptor
                properties:
                  definition:
                    description: Definition mutually exclusive to workload.type, a
                      embedded WorkloadDefinition
                    properties:
                      apiVersion:
                        type: string
                      kind:
                        type: string
                    required:
                    - apiVersion
                    - kind
                    type: object
                  type:
                    description: Type ref to a WorkloadDefinition via name
                    type: string
                type: object
            required:
            - workload
            type: object
          status:
            description: ComponentDefinitionStatus is the status of ComponentDefinition
            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
              configMapRef:
                description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
                  V3 JSON schema of Component parameters.
                type: string
              latestRevision:
                description: LatestRevision of the component definition
                properties:
                  name:
                    type: string
                  revision:
                    format: int64
                    type: integer
                  revisionHash:
                    description: RevisionHash record the hash value of the spec of
                      ApplicationRevision object.
                    type: string
                required:
                - name
                - revision
                type: object
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .spec.workload.definition.kind
      name: WORKLOAD-KIND
      type: string
    - jsonPath: .metadata.annotations.definition\.oam\.dev/description
      name: DESCRIPTION
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ComponentDefinition is the Schema for the componentdefinitions
          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: ComponentDefinitionSpec defines the desired state of ComponentDefinition
            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
              extension:
                description: Extension is used for extension needs by OAM platform
                  builders
                type: object
                
              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
                        
                      repository:
                        description: HelmRelease records a Helm repository used by
                          a Helm module workload.
                        type: object
                        
                    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:
                              
                              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
                        
                    required:
                    - template
                    type: object
                  terraform:
                    description: Terraform is the struct to describe cloud resources
                      managed by Hashicorp Terraform
                    properties:
                      configuration:
                        description: Configuration is Terraform Configuration
                        type: string
                      customRegion:
                        description: Region is cloud provider's region. It will override
                          the region in the region field of ProviderReference
                        type: string
                      deleteResource:
                        default: true
                        description: DeleteResource will determine whether provisioned
                          cloud resources will be deleted when CR is deleted
                        type: boolean
                      path:
                        description: Path is the sub-directory of remote git repository.
                          It's valid when remote is set
                        type: string
                      providerRef:
                        description: ProviderReference specifies the reference to
                          Provider
                        properties:
                          name:
                            description: Name of the referenced object.
                            type: string
                          namespace:
                            default: default
                            description: Namespace of the referenced object.
                            type: string
                        required:
                        - name
                        type: object
                      type:
                        default: hcl
                        description: Type specifies which Terraform configuration
                          it is, HCL or JSON syntax
                        enum:
                        - hcl
                        - json
                        - remote
                        type: string
                      writeConnectionSecretToRef:
                        description: WriteConnectionSecretToReference specifies the
                          namespace and name of a Secret to which any connection details
                          for this managed resource should be written. Connection
                          details frequently include the endpoint, username, and password
                          required to connect to the managed resource.
                        properties:
                          name:
                            description: Name of the secret.
                            type: string
                          namespace:
                            description: Namespace of the secret.
                            type: string
                        required:
                        - name
                        type: object
                    required:
                    - configuration
                    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
              workload:
                description: Workload is a workload type descriptor
                properties:
                  definition:
                    description: Definition mutually exclusive to workload.type, a
                      embedded WorkloadDefinition
                    properties:
                      apiVersion:
                        type: string
                      kind:
                        type: string
                    required:
                    - apiVersion
                    - kind
                    type: object
                  type:
                    description: Type ref to a WorkloadDefinition via name
                    type: string
                type: object
            required:
            - workload
            type: object
          status:
            description: ComponentDefinitionStatus is the status of ComponentDefinition
            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
              configMapRef:
                description: ConfigMapRef refer to a ConfigMap which contains OpenAPI
                  V3 JSON schema of Component parameters.
                type: string
              latestRevision:
                description: LatestRevision of the component definition
                properties:
                  name:
                    type: string
                  revision:
                    format: int64
                    type: integer
                  revisionHash:
                    description: RevisionHash record the hash value of the spec of
                      ApplicationRevision object.
                    type: string
                required:
                - name
                - revision
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
