
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: applicationconfigurations.core.oam.dev
spec:
  group: core.oam.dev
  names:
    categories:
    - oam
    kind: ApplicationConfiguration
    listKind: ApplicationConfigurationList
    plural: applicationconfigurations
    shortNames:
    - appconfig
    singular: applicationconfiguration
  scope: Namespaced
  versions:
  - name: v1alpha2
    schema:
      openAPIV3Schema:
        description: An ApplicationConfiguration represents an OAM application.
        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: An ApplicationConfigurationSpec defines the desired state
              of a ApplicationConfiguration.
            properties:
              components:
                description: Components of which this ApplicationConfiguration consists.
                  Each component will be used to instantiate a workload.
                items:
                  description: An ApplicationConfigurationComponent specifies a component
                    of an ApplicationConfiguration. Each component is used to instantiate
                    a workload.
                  properties:
                    componentName:
                      description: ComponentName specifies a component whose latest
                        revision will be bind with ApplicationConfiguration. When
                        the spec of the referenced component changes, ApplicationConfiguration
                        will automatically migrate all trait affect from the prior
                        revision to the new one. This is mutually exclusive with RevisionName.
                      type: string
                    dataInputs:
                      description: DataInputs specify the data input sinks into this
                        component.
                      items:
                        description: DataInput specifies a data input sink to an object.
                          If input is array, it will be appended to the target field
                          paths.
                        properties:
                          conditions:
                            description: When the Conditions is satified, ToFieldPaths
                              will be filled with passed value
                            items:
                              description: ConditionRequirement specifies the requirement
                                to match a value.
                              properties:
                                fieldPath:
                                  description: FieldPath specifies got value from
                                    workload/trait object
                                  type: string
                                op:
                                  description: ConditionOperator specifies the operator
                                    to match a value.
                                  type: string
                                value:
                                  description: Value specifies an expected value This
                                    is mutually exclusive with ValueFrom
                                  type: string
                                valueFrom:
                                  description: ValueFrom specifies expected value
                                    from AppConfig This is mutually exclusive with
                                    Value
                                  properties:
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                              required:
                              - op
                              type: object
                            type: array
                          inputStore:
                            description: InputStore specifies the object used to read
                              intermediate data genereted by DataOutput
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: 'If referring to a piece of an object
                                  instead of an entire object, this string should
                                  contain a valid JSON/Go field access statement,
                                  such as desiredState.manifest.containers[2]. For
                                  example, if the object reference is to a container
                                  within a pod, this would take on a value like: "spec.containers{name}"
                                  (where "name" refers to the name of the container
                                  that triggered the event) or if no container name
                                  is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only
                                  to have some well-defined way of referencing a part
                                  of an object. TODO: this design is not final and
                                  this field is subject to change in the future.'
                                type: string
                              kind:
                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              namespace:
                                description: 'Namespace of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                type: string
                              operations:
                                description: Operations specify the data processing
                                  operations
                                items:
                                  description: DataOperation defines the specific
                                    operation for data
                                  properties:
                                    conditions:
                                      items:
                                        description: ConditionRequirement specifies
                                          the requirement to match a value.
                                        properties:
                                          fieldPath:
                                            description: FieldPath specifies got value
                                              from workload/trait object
                                            type: string
                                          op:
                                            description: ConditionOperator specifies
                                              the operator to match a value.
                                            type: string
                                          value:
                                            description: Value specifies an expected
                                              value This is mutually exclusive with
                                              ValueFrom
                                            type: string
                                          valueFrom:
                                            description: ValueFrom specifies expected
                                              value from AppConfig This is mutually
                                              exclusive with Value
                                            properties:
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                        required:
                                        - op
                                        type: object
                                      type: array
                                    op:
                                      description: Operator specifies the operation
                                        under this DataOperation type
                                      type: string
                                    toDataPath:
                                      description: ToDataPath refers to the value
                                        of an object's specfied by ToDataPath. For
                                        example the ToDataPath "redis" specifies "redis
                                        info" in '{"redis":"redis info"}'
                                      type: string
                                    toFieldPath:
                                      description: ToFieldPath refers to the value
                                        of an object's field
                                      type: string
                                    type:
                                      description: Type specifies the type of DataOperation
                                      type: string
                                    value:
                                      description: Value specifies an expected value
                                        This is mutually exclusive with ValueFrom
                                      type: string
                                    valueFrom:
                                      description: ValueFrom specifies expected value
                                        from object such as workload and trait This
                                        is mutually exclusive with Value
                                      properties:
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                  required:
                                  - op
                                  - toFieldPath
                                  - type
                                  type: object
                                type: array
                              resourceVersion:
                                description: 'Specific resourceVersion to which this
                                  reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                type: string
                              uid:
                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                type: string
                            type: object
                          strategyMergeKeys:
                            description: StrategyMergeKeys specifies the merge key
                              if the toFieldPaths target is an array. The StrategyMergeKeys
                              is optional, by default, if the toFieldPaths target
                              is an array, we will append. If StrategyMergeKeys specified,
                              we will check the key in the target array. If any key
                              exist, do update; if no key exist, append.
                            items:
                              type: string
                            type: array
                          toFieldPaths:
                            description: ToFieldPaths specifies the field paths of
                              an object to fill passed value.
                            items:
                              type: string
                            type: array
                          valueFrom:
                            description: ValueFrom specifies the value source.
                            properties:
                              dataOutputName:
                                description: DataOutputName matches a name of a DataOutput
                                  in the same AppConfig.
                                type: string
                            required:
                            - dataOutputName
                            type: object
                        type: object
                      type: array
                    dataOutputs:
                      description: DataOutputs specify the data output sources from
                        this component.
                      items:
                        description: DataOutput specifies a data output source from
                          an object.
                        properties:
                          conditions:
                            description: Conditions specify the conditions that should
                              be satisfied before emitting a data output. Different
                              conditions are AND-ed together. If no conditions is
                              specified, it is by default to check output value not
                              empty.
                            items:
                              description: ConditionRequirement specifies the requirement
                                to match a value.
                              properties:
                                fieldPath:
                                  description: FieldPath specifies got value from
                                    workload/trait object
                                  type: string
                                op:
                                  description: ConditionOperator specifies the operator
                                    to match a value.
                                  type: string
                                value:
                                  description: Value specifies an expected value This
                                    is mutually exclusive with ValueFrom
                                  type: string
                                valueFrom:
                                  description: ValueFrom specifies expected value
                                    from AppConfig This is mutually exclusive with
                                    Value
                                  properties:
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                              required:
                              - op
                              type: object
                            type: array
                          fieldPath:
                            description: FieldPath refers to the value of an object's
                              field.
                            type: string
                          name:
                            description: Name is the unique name of a DataOutput in
                              an ApplicationConfiguration.
                            type: string
                          outputStore:
                            description: OutputStore specifies the object used to
                              store intermediate data generated by Operations
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: 'If referring to a piece of an object
                                  instead of an entire object, this string should
                                  contain a valid JSON/Go field access statement,
                                  such as desiredState.manifest.containers[2]. For
                                  example, if the object reference is to a container
                                  within a pod, this would take on a value like: "spec.containers{name}"
                                  (where "name" refers to the name of the container
                                  that triggered the event) or if no container name
                                  is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only
                                  to have some well-defined way of referencing a part
                                  of an object. TODO: this design is not final and
                                  this field is subject to change in the future.'
                                type: string
                              kind:
                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              namespace:
                                description: 'Namespace of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                type: string
                              operations:
                                description: Operations specify the data processing
                                  operations
                                items:
                                  description: DataOperation defines the specific
                                    operation for data
                                  properties:
                                    conditions:
                                      items:
                                        description: ConditionRequirement specifies
                                          the requirement to match a value.
                                        properties:
                                          fieldPath:
                                            description: FieldPath specifies got value
                                              from workload/trait object
                                            type: string
                                          op:
                                            description: ConditionOperator specifies
                                              the operator to match a value.
                                            type: string
                                          value:
                                            description: Value specifies an expected
                                              value This is mutually exclusive with
                                              ValueFrom
                                            type: string
                                          valueFrom:
                                            description: ValueFrom specifies expected
                                              value from AppConfig This is mutually
                                              exclusive with Value
                                            properties:
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                        required:
                                        - op
                                        type: object
                                      type: array
                                    op:
                                      description: Operator specifies the operation
                                        under this DataOperation type
                                      type: string
                                    toDataPath:
                                      description: ToDataPath refers to the value
                                        of an object's specfied by ToDataPath. For
                                        example the ToDataPath "redis" specifies "redis
                                        info" in '{"redis":"redis info"}'
                                      type: string
                                    toFieldPath:
                                      description: ToFieldPath refers to the value
                                        of an object's field
                                      type: string
                                    type:
                                      description: Type specifies the type of DataOperation
                                      type: string
                                    value:
                                      description: Value specifies an expected value
                                        This is mutually exclusive with ValueFrom
                                      type: string
                                    valueFrom:
                                      description: ValueFrom specifies expected value
                                        from object such as workload and trait This
                                        is mutually exclusive with Value
                                      properties:
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                  required:
                                  - op
                                  - toFieldPath
                                  - type
                                  type: object
                                type: array
                              resourceVersion:
                                description: 'Specific resourceVersion to which this
                                  reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                type: string
                              uid:
                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                type: string
                            type: object
                        type: object
                      type: array
                    parameterValues:
                      description: ParameterValues specify values for the the specified
                        component's parameters. Any parameter required by the component
                        must be specified.
                      items:
                        description: A ComponentParameterValue specifies a value for
                          a named parameter. The associated component must publish
                          a parameter with this name.
                        properties:
                          name:
                            description: Name of the component parameter to set.
                            type: string
                          value:
                            anyOf:
                            - type: integer
                            - type: string
                            description: Value to set.
                            x-kubernetes-int-or-string: true
                        required:
                        - name
                        - value
                        type: object
                      type: array
                    revisionName:
                      description: RevisionName of a specific component revision to
                        which to bind ApplicationConfiguration. This is mutually exclusive
                        with componentName.
                      type: string
                    scopes:
                      description: Scopes in which the specified component should
                        exist.
                      items:
                        description: A ComponentScope specifies a scope in which a
                          component should exist.
                        properties:
                          scopeRef:
                            description: A ScopeReference must refer to an OAM scope
                              resource.
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: 'If referring to a piece of an object
                                  instead of an entire object, this string should
                                  contain a valid JSON/Go field access statement,
                                  such as desiredState.manifest.containers[2]. For
                                  example, if the object reference is to a container
                                  within a pod, this would take on a value like: "spec.containers{name}"
                                  (where "name" refers to the name of the container
                                  that triggered the event) or if no container name
                                  is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only
                                  to have some well-defined way of referencing a part
                                  of an object. TODO: this design is not final and
                                  this field is subject to change in the future.'
                                type: string
                              kind:
                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              namespace:
                                description: 'Namespace of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                type: string
                              resourceVersion:
                                description: 'Specific resourceVersion to which this
                                  reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                type: string
                              uid:
                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                type: string
                            type: object
                        required:
                        - scopeRef
                        type: object
                      type: array
                    traits:
                      description: Traits of the specified component.
                      items:
                        description: A ComponentTrait specifies a trait that should
                          be applied to a component.
                        properties:
                          dataInputs:
                            description: DataInputs specify the data input sinks into
                              this trait.
                            items:
                              description: DataInput specifies a data input sink to
                                an object. If input is array, it will be appended
                                to the target field paths.
                              properties:
                                conditions:
                                  description: When the Conditions is satified, ToFieldPaths
                                    will be filled with passed value
                                  items:
                                    description: ConditionRequirement specifies the
                                      requirement to match a value.
                                    properties:
                                      fieldPath:
                                        description: FieldPath specifies got value
                                          from workload/trait object
                                        type: string
                                      op:
                                        description: ConditionOperator specifies the
                                          operator to match a value.
                                        type: string
                                      value:
                                        description: Value specifies an expected value
                                          This is mutually exclusive with ValueFrom
                                        type: string
                                      valueFrom:
                                        description: ValueFrom specifies expected
                                          value from AppConfig This is mutually exclusive
                                          with Value
                                        properties:
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                    required:
                                    - op
                                    type: object
                                  type: array
                                inputStore:
                                  description: InputStore specifies the object used
                                    to read intermediate data genereted by DataOutput
                                  properties:
                                    apiVersion:
                                      description: API version of the referent.
                                      type: string
                                    fieldPath:
                                      description: 'If referring to a piece of an
                                        object instead of an entire object, this string
                                        should contain a valid JSON/Go field access
                                        statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to
                                        a container within a pod, this would take
                                        on a value like: "spec.containers{name}" (where
                                        "name" refers to the name of the container
                                        that triggered the event) or if no container
                                        name is specified "spec.containers[2]" (container
                                        with index 2 in this pod). This syntax is
                                        chosen only to have some well-defined way
                                        of referencing a part of an object. TODO:
                                        this design is not final and this field is
                                        subject to change in the future.'
                                      type: string
                                    kind:
                                      description: 'Kind of the referent. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                      type: string
                                    namespace:
                                      description: 'Namespace of the referent. More
                                        info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                      type: string
                                    operations:
                                      description: Operations specify the data processing
                                        operations
                                      items:
                                        description: DataOperation defines the specific
                                          operation for data
                                        properties:
                                          conditions:
                                            items:
                                              description: ConditionRequirement specifies
                                                the requirement to match a value.
                                              properties:
                                                fieldPath:
                                                  description: FieldPath specifies
                                                    got value from workload/trait
                                                    object
                                                  type: string
                                                op:
                                                  description: ConditionOperator specifies
                                                    the operator to match a value.
                                                  type: string
                                                value:
                                                  description: Value specifies an
                                                    expected value This is mutually
                                                    exclusive with ValueFrom
                                                  type: string
                                                valueFrom:
                                                  description: ValueFrom specifies
                                                    expected value from AppConfig
                                                    This is mutually exclusive with
                                                    Value
                                                  properties:
                                                    fieldPath:
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                              required:
                                              - op
                                              type: object
                                            type: array
                                          op:
                                            description: Operator specifies the operation
                                              under this DataOperation type
                                            type: string
                                          toDataPath:
                                            description: ToDataPath refers to the
                                              value of an object's specfied by ToDataPath.
                                              For example the ToDataPath "redis" specifies
                                              "redis info" in '{"redis":"redis info"}'
                                            type: string
                                          toFieldPath:
                                            description: ToFieldPath refers to the
                                              value of an object's field
                                            type: string
                                          type:
                                            description: Type specifies the type of
                                              DataOperation
                                            type: string
                                          value:
                                            description: Value specifies an expected
                                              value This is mutually exclusive with
                                              ValueFrom
                                            type: string
                                          valueFrom:
                                            description: ValueFrom specifies expected
                                              value from object such as workload and
                                              trait This is mutually exclusive with
                                              Value
                                            properties:
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                        required:
                                        - op
                                        - toFieldPath
                                        - type
                                        type: object
                                      type: array
                                    resourceVersion:
                                      description: 'Specific resourceVersion to which
                                        this reference is made, if any. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                      type: string
                                    uid:
                                      description: 'UID of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                      type: string
                                  type: object
                                strategyMergeKeys:
                                  description: StrategyMergeKeys specifies the merge
                                    key if the toFieldPaths target is an array. The
                                    StrategyMergeKeys is optional, by default, if
                                    the toFieldPaths target is an array, we will append.
                                    If StrategyMergeKeys specified, we will check
                                    the key in the target array. If any key exist,
                                    do update; if no key exist, append.
                                  items:
                                    type: string
                                  type: array
                                toFieldPaths:
                                  description: ToFieldPaths specifies the field paths
                                    of an object to fill passed value.
                                  items:
                                    type: string
                                  type: array
                                valueFrom:
                                  description: ValueFrom specifies the value source.
                                  properties:
                                    dataOutputName:
                                      description: DataOutputName matches a name of
                                        a DataOutput in the same AppConfig.
                                      type: string
                                  required:
                                  - dataOutputName
                                  type: object
                              type: object
                            type: array
                          dataOutputs:
                            description: DataOutputs specify the data output sources
                              from this trait.
                            items:
                              description: DataOutput specifies a data output source
                                from an object.
                              properties:
                                conditions:
                                  description: Conditions specify the conditions that
                                    should be satisfied before emitting a data output.
                                    Different conditions are AND-ed together. If no
                                    conditions is specified, it is by default to check
                                    output value not empty.
                                  items:
                                    description: ConditionRequirement specifies the
                                      requirement to match a value.
                                    properties:
                                      fieldPath:
                                        description: FieldPath specifies got value
                                          from workload/trait object
                                        type: string
                                      op:
                                        description: ConditionOperator specifies the
                                          operator to match a value.
                                        type: string
                                      value:
                                        description: Value specifies an expected value
                                          This is mutually exclusive with ValueFrom
                                        type: string
                                      valueFrom:
                                        description: ValueFrom specifies expected
                                          value from AppConfig This is mutually exclusive
                                          with Value
                                        properties:
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                    required:
                                    - op
                                    type: object
                                  type: array
                                fieldPath:
                                  description: FieldPath refers to the value of an
                                    object's field.
                                  type: string
                                name:
                                  description: Name is the unique name of a DataOutput
                                    in an ApplicationConfiguration.
                                  type: string
                                outputStore:
                                  description: OutputStore specifies the object used
                                    to store intermediate data generated by Operations
                                  properties:
                                    apiVersion:
                                      description: API version of the referent.
                                      type: string
                                    fieldPath:
                                      description: 'If referring to a piece of an
                                        object instead of an entire object, this string
                                        should contain a valid JSON/Go field access
                                        statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to
                                        a container within a pod, this would take
                                        on a value like: "spec.containers{name}" (where
                                        "name" refers to the name of the container
                                        that triggered the event) or if no container
                                        name is specified "spec.containers[2]" (container
                                        with index 2 in this pod). This syntax is
                                        chosen only to have some well-defined way
                                        of referencing a part of an object. TODO:
                                        this design is not final and this field is
                                        subject to change in the future.'
                                      type: string
                                    kind:
                                      description: 'Kind of the referent. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                      type: string
                                    namespace:
                                      description: 'Namespace of the referent. More
                                        info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                      type: string
                                    operations:
                                      description: Operations specify the data processing
                                        operations
                                      items:
                                        description: DataOperation defines the specific
                                          operation for data
                                        properties:
                                          conditions:
                                            items:
                                              description: ConditionRequirement specifies
                                                the requirement to match a value.
                                              properties:
                                                fieldPath:
                                                  description: FieldPath specifies
                                                    got value from workload/trait
                                                    object
                                                  type: string
                                                op:
                                                  description: ConditionOperator specifies
                                                    the operator to match a value.
                                                  type: string
                                                value:
                                                  description: Value specifies an
                                                    expected value This is mutually
                                                    exclusive with ValueFrom
                                                  type: string
                                                valueFrom:
                                                  description: ValueFrom specifies
                                                    expected value from AppConfig
                                                    This is mutually exclusive with
                                                    Value
                                                  properties:
                                                    fieldPath:
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                              required:
                                              - op
                                              type: object
                                            type: array
                                          op:
                                            description: Operator specifies the operation
                                              under this DataOperation type
                                            type: string
                                          toDataPath:
                                            description: ToDataPath refers to the
                                              value of an object's specfied by ToDataPath.
                                              For example the ToDataPath "redis" specifies
                                              "redis info" in '{"redis":"redis info"}'
                                            type: string
                                          toFieldPath:
                                            description: ToFieldPath refers to the
                                              value of an object's field
                                            type: string
                                          type:
                                            description: Type specifies the type of
                                              DataOperation
                                            type: string
                                          value:
                                            description: Value specifies an expected
                                              value This is mutually exclusive with
                                              ValueFrom
                                            type: string
                                          valueFrom:
                                            description: ValueFrom specifies expected
                                              value from object such as workload and
                                              trait This is mutually exclusive with
                                              Value
                                            properties:
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                        required:
                                        - op
                                        - toFieldPath
                                        - type
                                        type: object
                                      type: array
                                    resourceVersion:
                                      description: 'Specific resourceVersion to which
                                        this reference is made, if any. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                      type: string
                                    uid:
                                      description: 'UID of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                      type: string
                                  type: object
                              type: object
                            type: array
                          trait:
                            description: A Trait that will be created for the component
                            type: object
                            
                            
                        required:
                        - trait
                        type: object
                      type: array
                  type: object
                type: array
            required:
            - components
            type: object
          status:
            description: An ApplicationConfigurationStatus represents the observed
              state of a ApplicationConfiguration.
            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
              dependency:
                description: DependencyStatus represents the observed state of the
                  dependency of an ApplicationConfiguration.
                properties:
                  unsatisfied:
                    items:
                      description: UnstaifiedDependency describes unsatisfied dependency
                        flow between one pair of objects.
                      properties:
                        from:
                          description: DependencyFromObject represents the object
                            that dependency data comes from.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            fieldPath:
                              description: 'If referring to a piece of an object instead
                                of an entire object, this string should contain a
                                valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                For example, if the object reference is to a container
                                within a pod, this would take on a value like: "spec.containers{name}"
                                (where "name" refers to the name of the container
                                that triggered the event) or if no container name
                                is specified "spec.containers[2]" (container with
                                index 2 in this pod). This syntax is chosen only to
                                have some well-defined way of referencing a part of
                                an object. TODO: this design is not final and this
                                field is subject to change in the future.'
                              type: string
                            kind:
                              description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                              type: string
                            namespace:
                              description: 'Namespace of the referent. More info:
                                https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                              type: string
                            resourceVersion:
                              description: 'Specific resourceVersion to which this
                                reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                              type: string
                            uid:
                              description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                              type: string
                          type: object
                        reason:
                          type: string
                        to:
                          description: DependencyToObject represents the object that
                            dependency data goes to.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            fieldPath:
                              description: 'If referring to a piece of an object instead
                                of an entire object, this string should contain a
                                valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                For example, if the object reference is to a container
                                within a pod, this would take on a value like: "spec.containers{name}"
                                (where "name" refers to the name of the container
                                that triggered the event) or if no container name
                                is specified "spec.containers[2]" (container with
                                index 2 in this pod). This syntax is chosen only to
                                have some well-defined way of referencing a part of
                                an object. TODO: this design is not final and this
                                field is subject to change in the future.'
                              type: string
                            fieldPaths:
                              items:
                                type: string
                              type: array
                            kind:
                              description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                              type: string
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                              type: string
                            namespace:
                              description: 'Namespace of the referent. More info:
                                https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                              type: string
                            resourceVersion:
                              description: 'Specific resourceVersion to which this
                                reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                              type: string
                            uid:
                              description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                              type: string
                          type: object
                      required:
                      - from
                      - reason
                      - to
                      type: object
                    type: array
                type: object
              historyWorkloads:
                description: HistoryWorkloads will record history but still working
                  revision workloads.
                items:
                  description: HistoryWorkload contain the old component revision
                    that are still running
                  properties:
                    revision:
                      description: Revision of this workload
                      type: string
                    workloadRef:
                      description: Reference to running workload.
                      properties:
                        apiVersion:
                          description: API version of the referent.
                          type: string
                        fieldPath:
                          description: 'If referring to a piece of an object instead
                            of an entire object, this string should contain a valid
                            JSON/Go field access statement, such as desiredState.manifest.containers[2].
                            For example, if the object reference is to a container
                            within a pod, this would take on a value like: "spec.containers{name}"
                            (where "name" refers to the name of the container that
                            triggered the event) or if no container name is specified
                            "spec.containers[2]" (container with index 2 in this pod).
                            This syntax is chosen only to have some well-defined way
                            of referencing a part of an object. TODO: this design
                            is not final and this field is subject to change in the
                            future.'
                          type: string
                        kind:
                          description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                          type: string
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                          type: string
                        namespace:
                          description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                          type: string
                        resourceVersion:
                          description: 'Specific resourceVersion to which this reference
                            is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                          type: string
                        uid:
                          description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                          type: string
                      type: object
                  type: object
                type: array
              observedGeneration:
                description: The generation observed by the appConfig controller.
                format: int64
                type: integer
              rollingStatus:
                description: RollingStatus indicates what phase are we in the rollout
                  phase
                type: string
              status:
                description: Status is a place holder for a customized controller
                  to fill if it needs a single place to summarize the status of the
                  entire application
                type: string
              workloads:
                description: Workloads created by this ApplicationConfiguration.
                items:
                  description: A WorkloadStatus represents the status of a workload.
                  properties:
                    appliedComponentRevision:
                      description: AppliedComponentRevision indicates the applied
                        component revision name of this workload
                      type: string
                    componentName:
                      description: ComponentName that produced this workload.
                      type: string
                    componentRevisionName:
                      description: ComponentRevisionName of current component
                      type: string
                    dependencyUnsatisfied:
                      description: DependencyUnsatisfied notify does the workload
                        has dependency unsatisfied
                      type: boolean
                    scopes:
                      description: Scopes associated with this workload.
                      items:
                        description: A WorkloadScope represents a scope associated
                          with a workload and its status
                        properties:
                          scopeRef:
                            description: Reference to a scope created by an ApplicationConfiguration.
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: 'If referring to a piece of an object
                                  instead of an entire object, this string should
                                  contain a valid JSON/Go field access statement,
                                  such as desiredState.manifest.containers[2]. For
                                  example, if the object reference is to a container
                                  within a pod, this would take on a value like: "spec.containers{name}"
                                  (where "name" refers to the name of the container
                                  that triggered the event) or if no container name
                                  is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only
                                  to have some well-defined way of referencing a part
                                  of an object. TODO: this design is not final and
                                  this field is subject to change in the future.'
                                type: string
                              kind:
                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              namespace:
                                description: 'Namespace of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                type: string
                              resourceVersion:
                                description: 'Specific resourceVersion to which this
                                  reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                type: string
                              uid:
                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                type: string
                            type: object
                          status:
                            description: Status is a place holder for a customized
                              controller to fill if it needs a single place to summarize
                              the status of the scope
                            type: string
                        required:
                        - scopeRef
                        type: object
                      type: array
                    status:
                      description: Status is a place holder for a customized controller
                        to fill if it needs a single place to summarize the entire
                        status of the workload
                      type: string
                    traits:
                      description: Traits associated with this workload.
                      items:
                        description: A WorkloadTrait represents a trait associated
                          with a workload and its status
                        properties:
                          appliedGeneration:
                            description: AppliedGeneration indicates the generation
                              observed by the appConfig controller. The same field
                              is also recorded in the annotations of traits. A trait
                              is possible to be deleted from cluster after created.
                              This field is useful to track the observed generation
                              of traits after they are deleted.
                            format: int64
                            type: integer
                          dependencyUnsatisfied:
                            description: DependencyUnsatisfied notify does the trait
                              has dependency unsatisfied
                            type: boolean
                          message:
                            description: Message will allow controller to leave some
                              additional information for this trait
                            type: string
                          status:
                            description: Status is a place holder for a customized
                              controller to fill if it needs a single place to summarize
                              the status of the trait
                            type: string
                          traitRef:
                            description: Reference to a trait created by an ApplicationConfiguration.
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: 'If referring to a piece of an object
                                  instead of an entire object, this string should
                                  contain a valid JSON/Go field access statement,
                                  such as desiredState.manifest.containers[2]. For
                                  example, if the object reference is to a container
                                  within a pod, this would take on a value like: "spec.containers{name}"
                                  (where "name" refers to the name of the container
                                  that triggered the event) or if no container name
                                  is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only
                                  to have some well-defined way of referencing a part
                                  of an object. TODO: this design is not final and
                                  this field is subject to change in the future.'
                                type: string
                              kind:
                                description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                type: string
                              name:
                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              namespace:
                                description: 'Namespace of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                type: string
                              resourceVersion:
                                description: 'Specific resourceVersion to which this
                                  reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                type: string
                              uid:
                                description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                type: string
                            type: object
                        required:
                        - traitRef
                        type: object
                      type: array
                    workloadRef:
                      description: Reference to a workload created by an ApplicationConfiguration.
                      properties:
                        apiVersion:
                          description: API version of the referent.
                          type: string
                        fieldPath:
                          description: 'If referring to a piece of an object instead
                            of an entire object, this string should contain a valid
                            JSON/Go field access statement, such as desiredState.manifest.containers[2].
                            For example, if the object reference is to a container
                            within a pod, this would take on a value like: "spec.containers{name}"
                            (where "name" refers to the name of the container that
                            triggered the event) or if no container name is specified
                            "spec.containers[2]" (container with index 2 in this pod).
                            This syntax is chosen only to have some well-defined way
                            of referencing a part of an object. TODO: this design
                            is not final and this field is subject to change in the
                            future.'
                          type: string
                        kind:
                          description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                          type: string
                        name:
                          description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                          type: string
                        namespace:
                          description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                          type: string
                        resourceVersion:
                          description: 'Specific resourceVersion to which this reference
                            is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                          type: string
                        uid:
                          description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                          type: string
                      type: object
                  type: object
                type: array
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
