apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: cert-manager.io/inject-ca-from: vela-system/kubevela-vela-core-root-cert controller-gen.kubebuilder.io/version: v0.6.2 name: applications.core.oam.dev spec: group: core.oam.dev names: categories: - oam kind: Application listKind: ApplicationList plural: applications shortNames: - app - velaapp singular: application scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .spec.components[*].name name: COMPONENT type: string - jsonPath: .spec.components[*].type name: TYPE type: string - jsonPath: .status.status name: PHASE type: string - jsonPath: .status.services[*].healthy name: HEALTHY type: boolean - jsonPath: .status.services[*].message name: STATUS type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date name: v1alpha2 schema: openAPIV3Schema: description: Application is the Schema for the applications 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: ApplicationSpec is the spec of Application properties: components: items: description: ApplicationComponent describe the component of application properties: name: type: string scopes: additionalProperties: type: string description: scopes in ApplicationComponent defines the component-level scopes the format is pairs, the key represents type of `ScopeDefinition` while the value represent the name of scope instance. type: object x-kubernetes-preserve-unknown-fields: true settings: 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: name: type: string properties: type: object x-kubernetes-preserve-unknown-fields: true required: - name type: object type: array 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 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 policy: description: PolicyStatus records the status of policy items: description: PolicyStatus records the status of policy properties: name: type: string status: type: object x-kubernetes-preserve-unknown-fields: true type: type: string required: - name - type type: object type: array services: description: Services record the status of the application services items: description: ApplicationComponentStatus record the health status of App component properties: cluster: type: string env: type: string healthy: type: boolean message: type: string name: type: string namespace: 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 an 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 finished: type: boolean message: type: string mode: description: WorkflowMode describes the mode of workflow type: string startTime: format: date-time type: string steps: items: description: WorkflowStepStatus record the status of a workflow step properties: firstExecuteTime: description: FirstExecuteTime is the first time this step execution. format: date-time type: string id: type: string lastExecuteTime: description: LastExecuteTime is the last time this step execution. format: date-time 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 suspendState: type: string terminated: type: boolean required: - finished - mode - suspend - terminated type: object type: object type: object served: true storage: false subresources: status: {} - additionalPrinterColumns: - jsonPath: .spec.components[*].name name: COMPONENT type: string - jsonPath: .spec.components[*].type name: TYPE type: string - jsonPath: .status.status name: PHASE type: string - jsonPath: .status.services[*].healthy name: HEALTHY type: boolean - jsonPath: .status.services[*].message name: STATUS type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date name: v1beta1 schema: openAPIV3Schema: description: Application is the Schema for the applications 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: 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 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 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: ref: type: string 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 policy: description: PolicyStatus records the status of policy items: description: PolicyStatus records the status of policy properties: name: type: string status: type: object x-kubernetes-preserve-unknown-fields: true type: type: string required: - name - type type: object type: array services: description: Services record the status of the application services items: description: ApplicationComponentStatus record the health status of App component properties: cluster: type: string env: type: string healthy: type: boolean message: type: string name: type: string namespace: 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 an 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 finished: type: boolean message: type: string mode: description: WorkflowMode describes the mode of workflow type: string startTime: format: date-time type: string steps: items: description: WorkflowStepStatus record the status of a workflow step properties: firstExecuteTime: description: FirstExecuteTime is the first time this step execution. format: date-time type: string id: type: string lastExecuteTime: description: LastExecuteTime is the last time this step execution. format: date-time 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 suspendState: type: string terminated: type: boolean required: - finished - mode - suspend - terminated type: object type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: []