--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.16.5 name: promises.platform.kratix.io spec: group: platform.kratix.io names: categories: - kratix kind: Promise listKind: PromiseList plural: promises singular: promise scope: Cluster versions: - additionalPrinterColumns: - jsonPath: .status.status name: Status type: string - jsonPath: .status.kind name: Kind type: string - jsonPath: .status.apiVersion name: API Version type: string - jsonPath: .status.version name: Version type: string - jsonPath: .status.message name: Message type: string name: v1alpha1 schema: openAPIV3Schema: description: Promise is the Schema for the promises 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: PromiseSpec defines the desired state of Promise properties: api: description: |- API an application developers will use to request a Resource from this Promise. Must be a valid kubernetes custom resource definition. type: object x-kubernetes-embedded-resource: true x-kubernetes-preserve-unknown-fields: true dependencies: description: A collection of prerequisites that enable the creation of a Resource. items: description: Resources represents the manifest workload to be deployed on Destinations type: object x-kubernetes-preserve-unknown-fields: true type: array destinationSelectors: description: A list of key and value pairs (labels) used for scheduling. items: description: PromiseScheduling defines label selectors for matching Destinations where Resources should be scheduled properties: matchLabels: additionalProperties: type: string description: Labels that a Destination must match for Resources from this Promise to be scheduled to it type: object type: object type: array requiredPromises: description: |- A list of Promises that are required by this Promise. All required Promises must be present and available for this promise to be made available. items: description: RequiredPromise defines a dependency on another Promise that must be installed and available properties: name: description: Name of the required Promise type: string version: description: Version of the required Promise. If empty, any version is accepted type: string type: object type: array workflows: description: A list of pipelines to be executed at different stages of the Promise lifecycle. properties: config: description: Configuration options that apply to all workflows defined in this Promise properties: pipelineNamespace: description: Namespace for all workflow jobs (promise and resource) to run in; needs to be an existing namespace or else workflow won't start type: string reconciliationInterval: description: Interval at which all workflows (promise and resource) defined in this Promise are reconciled; if not set, defaults to the platform-wide reconciliation interval type: string type: object promise: description: Pipelines triggered when the Promise itself is created, updated, or deleted properties: configure: description: Pipelines to execute when the resource or Promise is created or updated items: type: object type: array x-kubernetes-preserve-unknown-fields: true delete: description: Pipelines to execute when the resource or Promise is deleted items: type: object type: array x-kubernetes-preserve-unknown-fields: true type: object resource: description: Pipelines triggered when a Resource Request (instance of the Promise API) is created, updated, or deleted properties: configure: description: Pipelines to execute when the resource or Promise is created or updated items: type: object type: array x-kubernetes-preserve-unknown-fields: true delete: description: Pipelines to execute when the resource or Promise is deleted items: type: object type: array x-kubernetes-preserve-unknown-fields: true type: object type: object type: object status: description: PromiseStatus defines the observed state of Promise properties: apiVersion: description: The API version of the Resource API defined by this Promise (e.g. "marketplace.kratix.io/v1alpha1") type: string conditions: description: Current conditions of the Promise. Includes Available, WorksSucceeded, and Reconciled conditions items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array kind: description: The Kind of the Resource API defined by this Promise (e.g. "Database") type: string kratix: description: Kratix-managed status for this Promise. This field contains fields set by Kratix controllers. properties: apiVersion: description: The API version of the Resource API defined by this Promise (e.g. "marketplace.kratix.io/v1alpha1") type: string kind: description: The Kind of the Resource API defined by this Promise (e.g. "Database") type: string lastAvailableTime: description: Timestamp of when this Promise was last in an Available state format: date-time type: string status: description: 'Overall status of the Promise: Available or Unavailable' type: string version: description: Version of the Promise, derived from the PromiseRelease if installed via one type: string workflows: description: Status of the Workflow execution properties: pipelines: description: Status of the Pipeline execution items: properties: attempts: format: int64 type: integer lastTransitionTime: description: Last transition time of the workflow format: date-time type: string message: description: Message from the suspended pipeline type: string name: description: Name of the workflow type: string nextRetryAt: type: string phase: description: Phase of the workflow type: string type: object type: array suspendedGeneration: description: Generation at which the workflow was suspended format: int64 type: integer type: object type: object lastAvailableTime: description: Timestamp of when this Promise was last in an Available state format: date-time type: string message: description: Message set by Promise configure workflow type: string observedGeneration: description: The generation last observed by the controller format: int64 type: integer requiredBy: description: List of other Promises that depend on this Promise items: description: RequiredBy indicates another Promise depends on this one properties: promise: description: The Promise that requires this Promise properties: name: description: Name of the Promise type: string version: description: Version of the Promise type: string type: object requiredVersion: description: The specific version required by the dependent Promise type: string type: object type: array requiredPromises: description: Status of each required Promise dependency items: description: RequiredPromiseStatus tracks the availability of a required Promise dependency properties: name: description: Name of the required Promise type: string state: description: Current state of the required Promise (e.g. "Available", "Unavailable") type: string version: description: Version of the required Promise that this Promise requires type: string type: object type: array status: description: 'Overall status of the Promise: Available or Unavailable' type: string version: description: Version of the Promise, derived from the PromiseRelease if installed via one type: string type: object type: object served: true storage: true subresources: status: {}