
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: initializers.core.oam.dev
spec:
  group: core.oam.dev
  names:
    categories:
    - oam
    kind: Initializer
    listKind: InitializerList
    plural: initializers
    shortNames:
    - init
    singular: initializer
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.status
      name: PHASE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Initializer is the Schema for the Initializer 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: A InitializerSpec defines the desired state of a Initializer.
            properties:
              appTemplate:
                description: AppTemplate indicates the application template to render
                  and deploy an system 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:
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      finalizers:
                        items:
                          type: string
                        type: array
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                      name:
                        type: string
                      namespace:
                        type: string
                    type: object
                  spec:
                    description: ApplicationSpec is the spec of Application
                    properties:
                      components:
                        items:
                          description: ApplicationComponent describe the component
                            of application
                          properties:
                            dependsOn:
                              items:
                                type: string
                              type: array
                            externalRevision:
                              description: ExternalRevision specified the component
                                revisionName
                              type: string
                            inputs:
                              description: StepInputs defines variable input of WorkflowStep
                              items:
                                properties:
                                  from:
                                    type: string
                                  parameterKey:
                                    type: string
                                required:
                                - from
                                - parameterKey
                                type: object
                              type: array
                            name:
                              type: string
                            outputs:
                              description: StepOutputs defines output variable of
                                WorkflowStep
                              items:
                                properties:
                                  name:
                                    type: string
                                  valueFrom:
                                    type: string
                                required:
                                - name
                                - valueFrom
                                type: object
                              type: array
                            properties:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            scopes:
                              additionalProperties:
                                type: string
                              description: scopes in ApplicationComponent defines
                                the component-level scopes the format is <scope-type:scope-instance-name>
                                pairs, the key represents type of `ScopeDefinition`
                                while the value represent the name of scope instance.
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            traits:
                              description: Traits define the trait of one component,
                                the type must be array to keep the order.
                              items:
                                description: ApplicationTrait defines the trait of
                                  application
                                properties:
                                  properties:
                                    type: object
                                    x-kubernetes-preserve-unknown-fields: true
                                  type:
                                    type: string
                                required:
                                - type
                                type: object
                              type: array
                            type:
                              type: string
                          required:
                          - name
                          - type
                          type: object
                        type: array
                      policies:
                        description: Policies defines the global policies for all
                          components in the app, e.g. security, metrics, gitops, multi-cluster
                          placement rules, etc. Policies are applied after components
                          are rendered and before workflow steps are executed.
                        items:
                          description: AppPolicy defines a global policy for all components
                            in the app.
                          properties:
                            name:
                              description: Name is the unique name of the policy.
                              type: string
                            properties:
                              type: object
                              x-kubernetes-preserve-unknown-fields: true
                            type:
                              type: string
                          required:
                          - name
                          - type
                          type: object
                        type: array
                      rolloutPlan:
                        description: RolloutPlan is the details on how to rollout
                          the resources The controller simply replace the old resources
                          with the new one if there is no rollout plan involved
                        properties:
                          batchPartition:
                            description: All pods in the batches up to the batchPartition
                              (included) will have the target resource specification
                              while the rest still have the source resource This is
                              designed for the operators to manually rollout Default
                              is the the number of batches which will rollout all
                              the batches
                            format: int32
                            type: integer
                          canaryMetric:
                            description: CanaryMetric provides a way for the rollout
                              process to automatically check certain metrics before
                              complete the process
                            items:
                              description: CanaryMetric holds the reference to metrics
                                used for canary analysis
                              properties:
                                interval:
                                  description: Interval represents the windows size
                                  type: string
                                metricsRange:
                                  description: Range value accepted for this metric
                                  properties:
                                    max:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: Maximum value
                                      x-kubernetes-int-or-string: true
                                    min:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: Minimum value
                                      x-kubernetes-int-or-string: true
                                  type: object
                                name:
                                  description: Name of the metric
                                  type: string
                                templateRef:
                                  description: TemplateRef references a metric template
                                    object
                                  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:
                              - name
                              type: object
                            type: array
                          numBatches:
                            description: The number of batches, default = 1
                            format: int32
                            type: integer
                          paused:
                            description: Paused the rollout, default is false
                            type: boolean
                          rolloutBatches:
                            description: The exact distribution among batches. its
                              size has to be exactly the same as the NumBatches (if
                              set) The total number cannot exceed the targetSize or
                              the size of the source resource We will IGNORE the last
                              batch's replica field if it's a percentage since round
                              errors can lead to inaccurate sum We highly recommend
                              to leave the last batch's replica field empty
                            items:
                              description: RolloutBatch is used to describe how the
                                each batch rollout should be
                              properties:
                                batchRolloutWebhooks:
                                  description: RolloutWebhooks provides a way for
                                    the batch rollout to interact with an external
                                    process
                                  items:
                                    description: RolloutWebhook holds the reference
                                      to external checks used for canary analysis
                                    properties:
                                      expectedStatus:
                                        description: ExpectedStatus contains all the
                                          expected http status code that we will accept
                                          as success
                                        items:
                                          type: integer
                                        type: array
                                      metadata:
                                        additionalProperties:
                                          type: string
                                        description: Metadata (key-value pairs) for
                                          this webhook
                                        type: object
                                      method:
                                        description: Method the HTTP call method,
                                          default is POST
                                        type: string
                                      name:
                                        description: Name of this webhook
                                        type: string
                                      type:
                                        description: Type of this webhook
                                        type: string
                                      url:
                                        description: URL address of this webhook
                                        type: string
                                    required:
                                    - name
                                    - type
                                    - url
                                    type: object
                                  type: array
                                canaryMetric:
                                  description: CanaryMetric provides a way for the
                                    batch rollout process to automatically check certain
                                    metrics before moving to the next batch
                                  items:
                                    description: CanaryMetric holds the reference
                                      to metrics used for canary analysis
                                    properties:
                                      interval:
                                        description: Interval represents the windows
                                          size
                                        type: string
                                      metricsRange:
                                        description: Range value accepted for this
                                          metric
                                        properties:
                                          max:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: Maximum value
                                            x-kubernetes-int-or-string: true
                                          min:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: Minimum value
                                            x-kubernetes-int-or-string: true
                                        type: object
                                      name:
                                        description: Name of the metric
                                        type: string
                                      templateRef:
                                        description: TemplateRef references a metric
                                          template object
                                        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:
                                    - name
                                    type: object
                                  type: array
                                instanceInterval:
                                  description: The wait time, in seconds, between
                                    instances upgrades, default = 0
                                  format: int32
                                  type: integer
                                maxUnavailable:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: MaxUnavailable is the max allowed number
                                    of pods that is unavailable during the upgrade.
                                    We will mark the batch as ready as long as there
                                    are less or equal number of pods unavailable than
                                    this number. default = 0
                                  x-kubernetes-int-or-string: true
                                podList:
                                  description: The list of Pods to get upgraded it
                                    is mutually exclusive with the Replicas field
                                  items:
                                    type: string
                                  type: array
                                replicas:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Replicas is the number of pods to
                                    upgrade in this batch it can be an absolute number
                                    (ex: 5) or a percentage of total pods we will
                                    ignore the percentage of the last batch to just
                                    fill the gap it is mutually exclusive with the
                                    PodList field'
                                  x-kubernetes-int-or-string: true
                              type: object
                            type: array
                          rolloutStrategy:
                            description: RolloutStrategy defines strategies for the
                              rollout plan The default is IncreaseFirstRolloutStrategyType
                            type: string
                          rolloutWebhooks:
                            description: RolloutWebhooks provide a way for the rollout
                              to interact with an external process
                            items:
                              description: RolloutWebhook holds the reference to external
                                checks used for canary analysis
                              properties:
                                expectedStatus:
                                  description: ExpectedStatus contains all the expected
                                    http status code that we will accept as success
                                  items:
                                    type: integer
                                  type: array
                                metadata:
                                  additionalProperties:
                                    type: string
                                  description: Metadata (key-value pairs) for this
                                    webhook
                                  type: object
                                method:
                                  description: Method the HTTP call method, default
                                    is POST
                                  type: string
                                name:
                                  description: Name of this webhook
                                  type: string
                                type:
                                  description: Type of this webhook
                                  type: string
                                url:
                                  description: URL address of this webhook
                                  type: string
                              required:
                              - name
                              - type
                              - url
                              type: object
                            type: array
                          targetSize:
                            description: The size of the target resource. The default
                              is the same as the size of the source resource.
                            format: int32
                            type: integer
                        type: object
                      workflow:
                        description: 'Workflow defines how to customize the control
                          logic. If workflow is specified, Vela won''t apply any resource,
                          but provide rendered output in AppRevision. Workflow steps
                          are executed in array order, and each step: - will have
                          a context in annotation. - should mark "finish" phase in
                          status.conditions.'
                        properties:
                          steps:
                            items:
                              description: WorkflowStep defines how to execute a workflow
                                step.
                              properties:
                                dependsOn:
                                  items:
                                    type: string
                                  type: array
                                inputs:
                                  description: StepInputs defines variable input of
                                    WorkflowStep
                                  items:
                                    properties:
                                      from:
                                        type: string
                                      parameterKey:
                                        type: string
                                    required:
                                    - from
                                    - parameterKey
                                    type: object
                                  type: array
                                name:
                                  description: Name is the unique name of the workflow
                                    step.
                                  type: string
                                outputs:
                                  description: StepOutputs defines output variable
                                    of WorkflowStep
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      valueFrom:
                                        type: string
                                    required:
                                    - name
                                    - valueFrom
                                    type: object
                                  type: array
                                properties:
                                  type: object
                                  x-kubernetes-preserve-unknown-fields: true
                                type:
                                  type: string
                              required:
                              - name
                              - type
                              type: object
                            type: array
                        type: object
                    required:
                    - components
                    type: object
                  status:
                    description: AppStatus defines the observed state of Application
                    properties:
                      appliedResources:
                        description: AppliedResources record the resources that the  workflow
                          step apply.
                        items:
                          description: ClusterObjectReference defines the object reference
                            with cluster.
                          properties:
                            apiVersion:
                              description: API version of the referent.
                              type: string
                            cluster:
                              type: string
                            creator:
                              description: ResourceCreatorRole defines the resource
                                creator.
                              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: array
                      components:
                        description: Components record the related Components created
                          by Application Controller
                        items:
                          description: 'ObjectReference contains enough information
                            to let you inspect or modify the referred object. ---
                            New uses of this type are discouraged because of difficulty
                            describing its usage when embedded in APIs.  1. Ignored
                            fields.  It includes many fields which are not generally
                            honored.  For instance, ResourceVersion and FieldPath
                            are both very rarely valid in actual usage.  2. Invalid
                            usage help.  It is impossible to add specific help for
                            individual usage.  In most embedded usages, there are
                            particular     restrictions like, "must refer only to
                            types A and B" or "UID not honored" or "name must be restricted".     Those
                            cannot be well described when embedded.  3. Inconsistent
                            validation.  Because the usages are different, the validation
                            rules are different by usage, which makes it hard for
                            users to predict what will happen.  4. The fields are
                            both imprecise and overly precise.  Kind is not a precise
                            mapping to a URL. This can produce ambiguity     during
                            interpretation and require a REST mapping.  In most cases,
                            the dependency is on the group,resource tuple     and
                            the version of the actual struct is irrelevant.  5. We
                            cannot easily change it.  Because this type is embedded
                            in many locations, updates to this type     will affect
                            numerous schemas.  Don''t make new APIs embed an underspecified
                            API type they do not control. Instead of using this type,
                            create a locally provided and used type that is well-focused
                            on your reference. For example, ServiceReferences for
                            admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                            .'
                          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: array
                      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
                      latestRevision:
                        description: LatestRevision of the application configuration
                          it generates
                        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
                      observedGeneration:
                        description: The generation observed by the application controller.
                        format: int64
                        type: integer
                      resourceTracker:
                        description: ResourceTracker record the status of the ResourceTracker
                        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
                      rollout:
                        description: AppRolloutStatus defines the observed state of
                          AppRollout
                        properties:
                          LastSourceAppRevision:
                            description: LastSourceAppRevision contains the name of
                              the app that we need to upgrade from. We will restart
                              the rollout if this is not the same as the spec
                            type: string
                          batchRollingState:
                            description: BatchRollingState only meaningful when the
                              Status is rolling
                            type: string
                          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
                          currentBatch:
                            description: The current batch the rollout is working
                              on/blocked it starts from 0
                            format: int32
                            type: integer
                          lastAppliedPodTemplateIdentifier:
                            description: lastAppliedPodTemplateIdentifier is a string
                              that uniquely represent the last pod template each workload
                              type could use different ways to identify that so we
                              cannot compare between resources We update this field
                              only after a successful rollout
                            type: string
                          lastTargetAppRevision:
                            description: LastUpgradedTargetAppRevision contains the
                              name of the app that we upgraded to We will restart
                              the rollout if this is not the same as the spec
                            type: string
                          rollingState:
                            description: RollingState is the Rollout State
                            type: string
                          rolloutOriginalSize:
                            description: RolloutTargetSize is the size of the target
                              resources. This is determined once the initial spec
                              verification and does not change until the rollout is
                              restarted
                            format: int32
                            type: integer
                          rolloutTargetSize:
                            description: RolloutTargetSize is the size of the target
                              resources. This is determined once the initial spec
                              verification and does not change until the rollout is
                              restarted
                            format: int32
                            type: integer
                          targetGeneration:
                            description: NewPodTemplateIdentifier is a string that
                              uniquely represent the new pod template each workload
                              type could use different ways to identify that so we
                              cannot compare between resources
                            type: string
                          upgradedReadyReplicas:
                            description: UpgradedReadyReplicas is the number of Pods
                              upgraded by the rollout controller that have a Ready
                              Condition.
                            format: int32
                            type: integer
                          upgradedReplicas:
                            description: UpgradedReplicas is the number of Pods upgraded
                              by the rollout controller
                            format: int32
                            type: integer
                        required:
                        - currentBatch
                        - lastTargetAppRevision
                        - rollingState
                        - upgradedReadyReplicas
                        - upgradedReplicas
                        type: object
                      services:
                        description: Services record the status of the application
                          services
                        items:
                          description: ApplicationComponentStatus record the health
                            status of App component
                          properties:
                            env:
                              type: string
                            healthy:
                              type: boolean
                            message:
                              type: string
                            name:
                              type: string
                            scopes:
                              items:
                                description: 'ObjectReference contains enough information
                                  to let you inspect or modify the referred object.
                                  --- New uses of this type are discouraged because
                                  of difficulty describing its usage when embedded
                                  in APIs.  1. Ignored fields.  It includes many fields
                                  which are not generally honored.  For instance,
                                  ResourceVersion and FieldPath are both very rarely
                                  valid in actual usage.  2. Invalid usage help.  It
                                  is impossible to add specific help for individual
                                  usage.  In most embedded usages, there are particular     restrictions
                                  like, "must refer only to types A and B" or "UID
                                  not honored" or "name must be restricted".     Those
                                  cannot be well described when embedded.  3. Inconsistent
                                  validation.  Because the usages are different, the
                                  validation rules are different by usage, which makes
                                  it hard for users to predict what will happen.  4.
                                  The fields are both imprecise and overly precise.  Kind
                                  is not a precise mapping to a URL. This can produce
                                  ambiguity     during interpretation and require
                                  a REST mapping.  In most cases, the dependency is
                                  on the group,resource tuple     and the version
                                  of the actual struct is irrelevant.  5. We cannot
                                  easily change it.  Because this type is embedded
                                  in many locations, updates to this type     will
                                  affect numerous schemas.  Don''t make new APIs embed
                                  an underspecified API type they do not control.
                                  Instead of using this type, create a locally provided
                                  and used type that is well-focused on your reference.
                                  For example, ServiceReferences for admission registration:
                                  https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                                  .'
                                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: array
                            traits:
                              items:
                                description: ApplicationTraitStatus records the trait
                                  health status
                                properties:
                                  healthy:
                                    type: boolean
                                  message:
                                    type: string
                                  type:
                                    type: string
                                required:
                                - healthy
                                - type
                                type: object
                              type: array
                            workloadDefinition:
                              description: WorkloadDefinition is the definition of
                                a WorkloadDefinition, such as deployments/apps.v1
                              properties:
                                apiVersion:
                                  type: string
                                kind:
                                  type: string
                              required:
                              - apiVersion
                              - kind
                              type: object
                          required:
                          - healthy
                          - name
                          type: object
                        type: array
                      status:
                        description: ApplicationPhase is a label for the condition
                          of a application at the current time
                        type: string
                      workflow:
                        description: Workflow record the status of workflow
                        properties:
                          appRevision:
                            type: string
                          contextBackend:
                            description: 'ObjectReference contains enough information
                              to let you inspect or modify the referred object. ---
                              New uses of this type are discouraged because of difficulty
                              describing its usage when embedded in APIs.  1. Ignored
                              fields.  It includes many fields which are not generally
                              honored.  For instance, ResourceVersion and FieldPath
                              are both very rarely valid in actual usage.  2. Invalid
                              usage help.  It is impossible to add specific help for
                              individual usage.  In most embedded usages, there are
                              particular     restrictions like, "must refer only to
                              types A and B" or "UID not honored" or "name must be
                              restricted".     Those cannot be well described when
                              embedded.  3. Inconsistent validation.  Because the
                              usages are different, the validation rules are different
                              by usage, which makes it hard for users to predict what
                              will happen.  4. The fields are both imprecise and overly
                              precise.  Kind is not a precise mapping to a URL. This
                              can produce ambiguity     during interpretation and
                              require a REST mapping.  In most cases, the dependency
                              is on the group,resource tuple     and the version of
                              the actual struct is irrelevant.  5. We cannot easily
                              change it.  Because this type is embedded in many locations,
                              updates to this type     will affect numerous schemas.  Don''t
                              make new APIs embed an underspecified API type they
                              do not control. Instead of using this type, create a
                              locally provided and used type that is well-focused
                              on your reference. For example, ServiceReferences for
                              admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                              .'
                            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
                          mode:
                            description: WorkflowMode describes the mode of workflow
                            type: string
                          steps:
                            items:
                              description: WorkflowStepStatus record the status of
                                a workflow step
                              properties:
                                id:
                                  type: string
                                message:
                                  description: A human readable message indicating
                                    details about why the workflowStep is in this
                                    state.
                                  type: string
                                name:
                                  type: string
                                phase:
                                  description: WorkflowStepPhase describes the phase
                                    of a workflow step.
                                  type: string
                                reason:
                                  description: A brief CamelCase message indicating
                                    details about why the workflowStep is in this
                                    state.
                                  type: string
                                subSteps:
                                  description: SubStepsStatus record the status of
                                    workflow steps.
                                  properties:
                                    mode:
                                      description: WorkflowMode describes the mode
                                        of workflow
                                      type: string
                                    stepIndex:
                                      type: integer
                                    steps:
                                      items:
                                        description: WorkflowSubStepStatus record
                                          the status of a workflow step
                                        properties:
                                          id:
                                            type: string
                                          message:
                                            description: A human readable message
                                              indicating details about why the workflowStep
                                              is in this state.
                                            type: string
                                          name:
                                            type: string
                                          phase:
                                            description: WorkflowStepPhase describes
                                              the phase of a workflow step.
                                            type: string
                                          reason:
                                            description: A brief CamelCase message
                                              indicating details about why the workflowStep
                                              is in this state.
                                            type: string
                                          type:
                                            type: string
                                        required:
                                        - id
                                        type: object
                                      type: array
                                  type: object
                                type:
                                  type: string
                              required:
                              - id
                              type: object
                            type: array
                          suspend:
                            type: boolean
                          terminated:
                            type: boolean
                        required:
                        - mode
                        - suspend
                        - terminated
                        type: object
                    type: object
                type: object
              dependsOn:
                description: DependsOn indicates the other initializers that this
                  depends on. It will not apply its components until all dependencies
                  exist.
                items:
                  description: DependsOn refer to an object which Initializer depends
                    on
                  properties:
                    ref:
                      description: 'ObjectReference contains enough information to
                        let you inspect or modify the referred object. --- New uses
                        of this type are discouraged because of difficulty describing
                        its usage when embedded in APIs.  1. Ignored fields.  It includes
                        many fields which are not generally honored.  For instance,
                        ResourceVersion and FieldPath are both very rarely valid in
                        actual usage.  2. Invalid usage help.  It is impossible to
                        add specific help for individual usage.  In most embedded
                        usages, there are particular     restrictions like, "must
                        refer only to types A and B" or "UID not honored" or "name
                        must be restricted".     Those cannot be well described when
                        embedded.  3. Inconsistent validation.  Because the usages
                        are different, the validation rules are different by usage,
                        which makes it hard for users to predict what will happen.  4.
                        The fields are both imprecise and overly precise.  Kind is
                        not a precise mapping to a URL. This can produce ambiguity     during
                        interpretation and require a REST mapping.  In most cases,
                        the dependency is on the group,resource tuple     and the
                        version of the actual struct is irrelevant.  5. We cannot
                        easily change it.  Because this type is embedded in many locations,
                        updates to this type     will affect numerous schemas.  Don''t
                        make new APIs embed an underspecified API type they do not
                        control. Instead of using this type, create a locally provided
                        and used type that is well-focused on your reference. For
                        example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533
                        .'
                      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:
                  - ref
                  type: object
                type: array
            required:
            - appTemplate
            type: object
          status:
            description: InitializerStatus is the status of Initializer
            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
              observedGeneration:
                description: The generation observed by the Initializer controller.
                format: int64
                type: integer
              status:
                description: InitializerPhase is a label for the condition of a initializer
                  at the current time
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
