From 22da957c5dcf7d7ffd73fec67ced4ad1f6038cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Ho=C3=9F?= Date: Sun, 12 Nov 2023 11:35:52 +0100 Subject: [PATCH] add kiegroup/kogito-serverless-operator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sebastian Hoß --- .reuse/dep5 | 4 + code-generator/src/catalog.rs | 9 + .../v1alpha08/sonataflowbuilds.yaml | 279 +++ .../v1alpha08/sonataflowplatforms.yaml | 365 ++++ .../v1alpha08/sonataflows.ignore | 0 .../sonataflow.org/v1alpha08/sonataflows.yaml | 1639 +++++++++++++++++ kube-custom-resources-rs/Cargo.toml | 1 + kube-custom-resources-rs/src/lib.rs | 10 + .../src/sonataflow_org_v1alpha08/mod.rs | 2 + .../sonataflowbuilds.rs | 233 +++ .../sonataflowplatforms.rs | 334 ++++ 11 files changed, 2876 insertions(+) create mode 100644 crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowbuilds.yaml create mode 100644 crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowplatforms.yaml create mode 100644 crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.ignore create mode 100644 crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.yaml create mode 100644 kube-custom-resources-rs/src/sonataflow_org_v1alpha08/mod.rs create mode 100644 kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowbuilds.rs create mode 100644 kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowplatforms.rs diff --git a/.reuse/dep5 b/.reuse/dep5 index 5eb9e5fc1..ce805974f 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -411,6 +411,10 @@ Files: crd-catalog/kiegroup/kogito-operator/* Copyright: The kiegroup/kogito-operator Authors License: Apache-2.0 +Files: crd-catalog/kiegroup/kogito-serverless-operator/* +Copyright: The kiegroup/kogito-serverless-operator Authors +License: Apache-2.0 + Files: crd-catalog/knative/operator/* Copyright: The knative/operator Authors License: Apache-2.0 diff --git a/code-generator/src/catalog.rs b/code-generator/src/catalog.rs index d56e55fef..b49876b80 100644 --- a/code-generator/src/catalog.rs +++ b/code-generator/src/catalog.rs @@ -1050,6 +1050,15 @@ pub const CRD_V1_SOURCES: &'static [UpstreamSource] = &[ "https://github.com/kiegroup/kogito-operator/blob/main/config/crd/app/bases/app.kiegroup.org_kogitosupportingservices.yaml", ], }, + UpstreamSource { + project_name: "kiegroup/kogito-serverless-operator", + license: APACHE_V2, + urls: &[ + "https://github.com/kiegroup/kogito-serverless-operator/blob/main/config/crd/bases/sonataflow.org_sonataflowbuilds.yaml", + "https://github.com/kiegroup/kogito-serverless-operator/blob/main/config/crd/bases/sonataflow.org_sonataflowplatforms.yaml", + "https://github.com/kiegroup/kogito-serverless-operator/blob/main/config/crd/bases/sonataflow.org_sonataflows.yaml", + ], + }, UpstreamSource { project_name: "knative/operator", license: APACHE_V2, diff --git a/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowbuilds.yaml b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowbuilds.yaml new file mode 100644 index 000000000..b8b5bc2cd --- /dev/null +++ b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowbuilds.yaml @@ -0,0 +1,279 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: sonataflowbuilds.sonataflow.org +spec: + group: sonataflow.org + names: + kind: SonataFlowBuild + listKind: SonataFlowBuildList + plural: sonataflowbuilds + shortNames: + - sfb + - sfbuild + - sfbuilds + singular: sonataflowbuild + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.imageTag + name: Image + type: string + - jsonPath: .status.buildPhase + name: Phase + type: string + name: v1alpha08 + schema: + openAPIV3Schema: + description: SonataFlowBuild is an internal custom resource to control workflow build instances in the target platform + 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: SonataFlowBuildSpec an abstraction over the actual build process performed by the platform. + properties: + arguments: + description: 'Arguments lists the command line arguments to send to the internal builder command. Depending on the build method you might set this attribute instead of BuildArgs. For example: ".spec.arguments=verbose=3". Please see the SonataFlow guides.' + items: + type: string + type: array + buildArgs: + description: Optional build arguments that can be set to the internal build (e.g. Docker ARG) + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envs: + description: Optional environment variables to add to the internal build + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + resources: + description: Resources optional compute resource requirements for the builder + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + timeout: + description: Timeout defines the Build maximum execution duration. The Build deadline is set to the Build start time plus the Timeout duration. If the Build deadline is exceeded, the Build context is canceled, and its phase set to BuildPhaseFailed. + format: duration + type: string + type: object + status: + description: SonataFlowBuildStatus defines the observed state of SonataFlowBuild + properties: + buildPhase: + description: Current phase of the build + type: string + error: + description: Last error found during build + type: string + imageTag: + description: The final image tag produced by this build instance + type: string + innerBuild: + description: InnerBuild is a reference to an internal build object, which can be anything known only to internal builders. + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowplatforms.yaml b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowplatforms.yaml new file mode 100644 index 000000000..e63ae8476 --- /dev/null +++ b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowplatforms.yaml @@ -0,0 +1,365 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: sonataflowplatforms.sonataflow.org +spec: + group: sonataflow.org + names: + kind: SonataFlowPlatform + listKind: SonataFlowPlatformList + plural: sonataflowplatforms + shortNames: + - sfp + - sfplatform + - sfplatforms + singular: sonataflowplatform + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .status.cluster + name: Cluster + type: string + - jsonPath: .status.conditions[?(@.type=='Succeed')].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=='Succeed')].reason + name: Reason + type: string + name: v1alpha08 + schema: + openAPIV3Schema: + description: SonataFlowPlatform is the descriptor for the workflow platform infrastructure. + 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: SonataFlowPlatformSpec defines the desired state of SonataFlowPlatform + properties: + build: + description: Attributes for building workflows in the target platform + properties: + config: + description: Describes the platform configuration for building workflows. + properties: + baseImage: + description: a base image that can be used as base layer for all images. It can be useful if you want to provide some custom base image with further utility software + type: string + registry: + description: Registry the registry where to publish the built image + properties: + address: + description: the URI to access + type: string + ca: + description: the configmap which stores the Certificate Authority + type: string + insecure: + description: if the container registry is insecure (ie, http only) + type: boolean + organization: + description: the registry organization + type: string + secret: + description: the secret where credentials are stored + type: string + type: object + strategy: + description: BuildStrategy to use to build workflows in the platform. Usually, the operator elect the strategy based on the platform. Note that this field might be read only in certain scenarios. + type: string + strategyOptions: + additionalProperties: + type: string + description: BuildStrategyOptions additional options to add to the build strategy. See https://sonataflow.org/serverlessworkflow/main/cloud/operator/build-and-deploy-workflows.html + type: object + timeout: + description: how much time to wait before time out the build process + type: string + type: object + template: + description: Describes a build template for building workflows. Base for the internal SonataFlowBuild resource. + properties: + arguments: + description: 'Arguments lists the command line arguments to send to the internal builder command. Depending on the build method you might set this attribute instead of BuildArgs. For example: ".spec.arguments=verbose=3". Please see the SonataFlow guides.' + items: + type: string + type: array + buildArgs: + description: Optional build arguments that can be set to the internal build (e.g. Docker ARG) + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + envs: + description: Optional environment variables to add to the internal build + items: + description: EnvVar represents an environment variable present in a Container. + properties: + name: + description: Name of the environment variable. Must be a C_IDENTIFIER. + type: string + value: + description: 'Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' + type: string + valueFrom: + description: Source for the environment variable's value. Cannot be used if value is not empty. + properties: + configMapKeyRef: + description: Selects a key of a ConfigMap. + properties: + key: + description: The key to select. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the ConfigMap or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + fieldRef: + description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' + properties: + apiVersion: + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". + type: string + fieldPath: + description: Path of the field to select in the specified API version. + type: string + required: + - fieldPath + type: object + x-kubernetes-map-type: atomic + resourceFieldRef: + description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' + properties: + containerName: + description: 'Container name: required for volumes, optional for env vars' + type: string + divisor: + anyOf: + - type: integer + - type: string + description: Specifies the output format of the exposed resources, defaults to "1" + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + resource: + description: 'Required: resource to select' + type: string + required: + - resource + type: object + x-kubernetes-map-type: atomic + secretKeyRef: + description: Selects a key of a secret in the pod's namespace + properties: + key: + description: The key of the secret to select from. Must be a valid secret key. + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + optional: + description: Specify whether the Secret or its key must be defined + type: boolean + required: + - key + type: object + x-kubernetes-map-type: atomic + type: object + required: + - name + type: object + type: array + resources: + description: Resources optional compute resource requirements for the builder + properties: + claims: + description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + items: + description: ResourceClaim references one entry in PodSpec.ResourceClaims. + properties: + name: + description: Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + type: object + type: object + timeout: + description: Timeout defines the Build maximum execution duration. The Build deadline is set to the Build start time plus the Timeout duration. If the Build deadline is exceeded, the Build context is canceled, and its phase set to BuildPhaseFailed. + format: duration + type: string + type: object + type: object + devMode: + description: Attributes for running workflows in devmode (immutable, no build required) + properties: + baseImage: + description: Base image to run the Workflow in dev mode instead of the operator's default. + type: string + type: object + type: object + status: + description: SonataFlowPlatformStatus defines the observed state of SonataFlowPlatform + properties: + cluster: + description: Cluster what kind of cluster you're running (ie, plain Kubernetes or OpenShift) + enum: + - kubernetes + - openshift + type: string + conditions: + description: The latest available observations of a resource's current state. + items: + description: Condition describes the common structure for conditions in our types + properties: + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human-readable message indicating details about the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type condition for the given object + type: string + required: + - status + - type + type: object + type: array + info: + additionalProperties: + type: string + description: Info generic information related to the build + type: object + observedGeneration: + description: The generation observed by the deployment controller. + format: int64 + type: integer + version: + description: Version the operator version controlling this Platform + type: string + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.ignore b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.ignore new file mode 100644 index 000000000..e69de29bb diff --git a/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.yaml b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.yaml new file mode 100644 index 000000000..f821a227f --- /dev/null +++ b/crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflows.yaml @@ -0,0 +1,1639 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + name: sonataflows.sonataflow.org +spec: + group: sonataflow.org + names: + kind: SonataFlow + listKind: SonataFlowList + plural: sonataflows + shortNames: + - sf + - workflow + - workflows + singular: sonataflow + scope: Namespaced + versions: + - additionalPrinterColumns: + - jsonPath: .metadata.annotations.sonataflow\.org\/profile + name: Profile + type: string + - jsonPath: .metadata.annotations.sonataflow\.org\/version + name: Version + type: string + - jsonPath: .status.endpoint + name: URL + type: string + - jsonPath: .status.conditions[?(@.type=='Running')].status + name: Ready + type: string + - jsonPath: .status.conditions[?(@.type=='Running')].reason + name: Reason + type: string + name: v1alpha08 + schema: + openAPIV3Schema: + description: SonataFlow is the descriptor representation for a workflow application based on the CNCF Serverless Workflow specification. + 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: SonataFlowSpec defines the desired state of SonataFlow + properties: + flow: + description: "Flow describes the contents of the Workflow definition following the CNCF Serverless Workflow Specification. The attributes not part of the flow are defined by the Custom Resource metadata information, as follows: \n - Id, name, and key are replaced by the Custom Resource's name. Must follow the Kubernetes naming patterns (RFC1123). \n - Description can be added in the CR's annotation field sonataflow.org/description \n - Version is also defined in the CR's annotation, field sonataflow.org/version \n - SpecVersion is in the CR's apiVersion, for example v1alpha08 means that it follows the specification version 0.8." + properties: + annotations: + description: Annotations List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities. + items: + type: string + type: array + auth: + description: Auth definitions can be used to define authentication information that should be applied to resources defined in the operation property of function definitions. It is not used as authentication information for the function invocation, but just to access the resource containing the function invocation information. + x-kubernetes-preserve-unknown-fields: true + autoRetries: + description: AutoRetries If set to true, actions should automatically be retried on unchecked errors. Default is false + type: boolean + constants: + additionalProperties: + description: RawMessage is a raw encoded JSON value. It implements Marshaler and Unmarshaler and can be used to delay JSON decoding or precompute a JSON encoding. + format: byte + type: string + description: Constants Workflow constants are used to define static, and immutable, data which is available to Workflow Expressions. + type: object + dataInputSchema: + description: DataInputSchema URI of the JSON Schema used to validate the workflow data input + properties: + failOnValidationErrors: + type: boolean + schema: + type: string + required: + - failOnValidationErrors + - schema + type: object + errors: + description: Defines checked errors that can be explicitly handled during workflow execution. + items: + description: Error declaration for workflow definitions + properties: + code: + description: Code OnError code. Can be used in addition to the name to help runtimes resolve to technical errors/exceptions. Should not be defined if error is set to '*'. + type: string + description: + description: OnError description. + type: string + name: + description: Name Domain-specific error name. + type: string + required: + - name + type: object + type: array + events: + items: + description: Event used to define events and their correlations + properties: + correlation: + description: Define event correlation rules for this event. Only used for consumed events. + items: + description: Correlation define event correlation rules for an event. Only used for `consumed` events + properties: + contextAttributeName: + description: CloudEvent Extension Context Attribute name + type: string + contextAttributeValue: + description: CloudEvent Extension Context Attribute value + type: string + required: + - contextAttributeName + type: object + type: array + dataOnly: + description: If `true`, only the Event payload is accessible to consuming Workflow states. If `false`, both event payload and context attributes should be accessible. Defaults to true. + type: boolean + kind: + default: consumed + description: Defines the CloudEvent as either 'consumed' or 'produced' by the workflow. Defaults to `consumed`. + enum: + - consumed + - produced + type: string + metadata: + additionalProperties: + type: object + description: Metadata information + type: object + name: + description: Unique event name. + type: string + source: + description: CloudEvent source. + type: string + type: + description: CloudEvent type. + type: string + required: + - name + - type + type: object + type: array + functions: + items: + description: Function ... + properties: + authRef: + description: References an auth definition name to be used to access to resource defined in the operation parameter. + type: string + metadata: + additionalProperties: + type: object + description: Metadata information + type: object + name: + description: Unique function name + type: string + operation: + description: If type is `rest`, #. If type is `rpc`, ##. If type is `expression`, defines the workflow expression. If the type is `custom`, #. + type: string + type: + default: rest + description: Defines the function type. Is either `custom`, `rest`, `rpc`, `expression`, `graphql`, `odata` or `asyncapi`. Default is `rest`. + enum: + - rest + - rpc + - expression + - graphql + - odata + - asyncapi + - custom + type: string + required: + - name + - operation + type: object + type: array + keepActive: + description: If "true", workflow instances is not terminated when there are no active execution paths. Instance can be terminated with "terminate end definition" or reaching defined "workflowExecTimeout" + type: boolean + metadata: + description: Metadata custom information shared with the runtime. + x-kubernetes-preserve-unknown-fields: true + retries: + items: + description: Retry ... + properties: + delay: + description: Time delay between retry attempts (ISO 8601 duration format) + type: string + increment: + description: Static value by which the delay increases during each attempt (ISO 8601 time format) + type: string + jitter: + description: 'If float type, maximum amount of random time added or subtracted from the delay between each retry relative to total delay (between 0 and 1). If string type, absolute maximum amount of random time added or subtracted from the delay between each retry (ISO 8601 duration format) TODO: make iso8601duration compatible this type' + properties: + floatVal: + type: number + strVal: + type: string + type: + description: Type represents the stored type of Float32OrString. + format: int64 + type: integer + type: object + maxAttempts: + anyOf: + - type: integer + - type: string + description: Maximum number of retry attempts. + x-kubernetes-int-or-string: true + maxDelay: + description: Maximum time delay between retry attempts (ISO 8601 duration format) + type: string + multiplier: + description: Numeric value, if specified the delay between retries is multiplied by this value. + properties: + floatVal: + type: number + strVal: + type: string + type: + description: Type represents the stored type of Float32OrString. + format: int64 + type: integer + type: object + name: + description: Unique retry strategy name + type: string + required: + - maxAttempts + - name + type: object + type: array + secrets: + description: Secrets allow you to access sensitive information, such as passwords, OAuth tokens, ssh keys, etc, inside your Workflow Expressions. + items: + type: string + type: array + start: + description: Workflow start definition. + x-kubernetes-preserve-unknown-fields: true + states: + items: + properties: + callbackState: + description: callbackState executes a function and waits for callback event that indicates completion of the task. + properties: + action: + description: Defines the action to be executed. + properties: + actionDataFilter: + description: Filter the state data to select only the data that can be used within function definition arguments using its fromStateData property. Filter the action results to select only the result data that should be added/merged back into the state data using its results property. Select the part of state data which the action data results should be added/merged to using the toStateData property. + properties: + fromStateData: + description: Workflow expression that filters state data that can be used by the action. + type: string + results: + description: Workflow expression that filters the actions data results. + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element. + type: string + useResults: + description: If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + condition: + description: Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded. + type: string + eventRef: + description: References a 'trigger' and 'result' reusable event definitions. + properties: + contextAttributes: + additionalProperties: + type: object + description: Add additional extension context attributes to the produced event. + type: object + data: + description: If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by triggerEventRef. If object type, a custom object to become the data (payload) of the event referenced by triggerEventRef. + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + resultEventRef: + description: Reference to the unique name of a 'consumed' event definition + type: string + resultEventTimeout: + description: Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it be set to the actionExecutionTimeout + type: string + triggerEventRef: + description: Reference to the unique name of a 'produced' event definition, + type: string + required: + - resultEventRef + - triggerEventRef + type: object + functionRef: + description: References a reusable function definition. + properties: + arguments: + additionalProperties: + type: object + description: 'Arguments (inputs) to be passed to the referenced function TODO: validate it as required if function type is graphql' + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + refName: + description: Name of the referenced function. + type: string + selectionSet: + description: 'Used if function type is graphql. String containing a valid GraphQL selection set. TODO: validate it as required if function type is graphql' + type: string + required: + - refName + type: object + id: + description: Defines Unique action identifier. + type: string + name: + description: Defines Unique action name. + type: string + nonRetryableErrors: + description: List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` + items: + type: string + type: array + retryRef: + description: References a defined workflow retry definition. If not defined uses the default runtime retry definition. + type: string + retryableErrors: + description: List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` + items: + type: string + type: array + sleep: + description: Defines time period workflow execution should sleep before / after function execution. + properties: + after: + description: Defines amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + before: + description: Defines amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + type: object + subFlowRef: + description: References a workflow to be invoked. + properties: + invoke: + default: sync + description: Specifies if the subflow should be invoked sync or async. Defaults to sync. + enum: + - async + - sync + type: string + onParentComplete: + default: terminate + description: onParentComplete specifies how subflow execution should behave when parent workflow completes if invoke is 'async'. Defaults to terminate. + enum: + - terminate + - continue + type: string + version: + description: Sub-workflow version + type: string + workflowId: + description: Sub-workflow unique id + type: string + required: + - workflowId + type: object + type: object + eventDataFilter: + description: Event data filter definition. + properties: + data: + description: Workflow expression that filters of the event data (payload). + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element + type: string + useData: + description: If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + eventRef: + description: References a unique callback event name in the defined workflow events. + type: string + timeouts: + description: Time period to wait for incoming events (ISO 8601 format) + properties: + actionExecTimeout: + description: Default single actions definition execution timeout (ISO 8601 duration format) + type: string + eventTimeout: + description: Default timeout for consuming defined events (ISO 8601 duration format) + type: string + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - action + - eventRef + type: object + compensatedBy: + description: Unique Name of a workflow state which is responsible for compensation of this state. + type: string + delayState: + description: delayState Causes the workflow execution to delay for a specified duration. + properties: + timeDelay: + description: Amount of time (ISO 8601 format) to delay + type: string + required: + - timeDelay + type: object + end: + description: State end definition. + x-kubernetes-preserve-unknown-fields: true + eventState: + description: event states await one or more events and perform actions when they are received. If defined as the workflow starting state, the event state definition controls when the workflow instances should be created. + properties: + exclusive: + default: true + description: If true consuming one of the defined events causes its associated actions to be performed. If false all the defined events must be consumed in order for actions to be performed. Defaults to true. + type: boolean + onEvents: + description: Define the events to be consumed and optional actions to be performed. + items: + description: OnEvents define which actions are be performed for the one or more events. + properties: + actionMode: + default: sequential + description: Should actions be performed sequentially or in parallel. Default is sequential. + enum: + - sequential + - parallel + type: string + actions: + description: Actions to be performed if expression matches + items: + description: Action specify invocations of services or other workflows during workflow execution. + properties: + actionDataFilter: + description: Filter the state data to select only the data that can be used within function definition arguments using its fromStateData property. Filter the action results to select only the result data that should be added/merged back into the state data using its results property. Select the part of state data which the action data results should be added/merged to using the toStateData property. + properties: + fromStateData: + description: Workflow expression that filters state data that can be used by the action. + type: string + results: + description: Workflow expression that filters the actions data results. + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element. + type: string + useResults: + description: If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + condition: + description: Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded. + type: string + eventRef: + description: References a 'trigger' and 'result' reusable event definitions. + properties: + contextAttributes: + additionalProperties: + type: object + description: Add additional extension context attributes to the produced event. + type: object + data: + description: If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by triggerEventRef. If object type, a custom object to become the data (payload) of the event referenced by triggerEventRef. + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + resultEventRef: + description: Reference to the unique name of a 'consumed' event definition + type: string + resultEventTimeout: + description: Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it be set to the actionExecutionTimeout + type: string + triggerEventRef: + description: Reference to the unique name of a 'produced' event definition, + type: string + required: + - resultEventRef + - triggerEventRef + type: object + functionRef: + description: References a reusable function definition. + properties: + arguments: + additionalProperties: + type: object + description: 'Arguments (inputs) to be passed to the referenced function TODO: validate it as required if function type is graphql' + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + refName: + description: Name of the referenced function. + type: string + selectionSet: + description: 'Used if function type is graphql. String containing a valid GraphQL selection set. TODO: validate it as required if function type is graphql' + type: string + required: + - refName + type: object + id: + description: Defines Unique action identifier. + type: string + name: + description: Defines Unique action name. + type: string + nonRetryableErrors: + description: List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` + items: + type: string + type: array + retryRef: + description: References a defined workflow retry definition. If not defined uses the default runtime retry definition. + type: string + retryableErrors: + description: List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` + items: + type: string + type: array + sleep: + description: Defines time period workflow execution should sleep before / after function execution. + properties: + after: + description: Defines amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + before: + description: Defines amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + type: object + subFlowRef: + description: References a workflow to be invoked. + properties: + invoke: + default: sync + description: Specifies if the subflow should be invoked sync or async. Defaults to sync. + enum: + - async + - sync + type: string + onParentComplete: + default: terminate + description: onParentComplete specifies how subflow execution should behave when parent workflow completes if invoke is 'async'. Defaults to terminate. + enum: + - terminate + - continue + type: string + version: + description: Sub-workflow version + type: string + workflowId: + description: Sub-workflow unique id + type: string + required: + - workflowId + type: object + type: object + type: array + eventDataFilter: + description: eventDataFilter defines the callback event data filter definition + properties: + data: + description: Workflow expression that filters of the event data (payload). + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element + type: string + useData: + description: If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + eventRefs: + description: References one or more unique event names in the defined workflow events. + items: + type: string + minItems: 1 + type: array + required: + - eventRefs + type: object + minItems: 1 + type: array + timeouts: + description: State specific timeouts. + properties: + actionExecTimeout: + description: Default single actions definition execution timeout (ISO 8601 duration format) + type: string + eventTimeout: + description: Default timeout for consuming defined events (ISO 8601 duration format) + type: string + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - onEvents + type: object + forEachState: + description: forEachState used to execute actions for each element of a data set. + properties: + actions: + description: Actions to be executed for each of the elements of inputCollection. + items: + description: Action specify invocations of services or other workflows during workflow execution. + properties: + actionDataFilter: + description: Filter the state data to select only the data that can be used within function definition arguments using its fromStateData property. Filter the action results to select only the result data that should be added/merged back into the state data using its results property. Select the part of state data which the action data results should be added/merged to using the toStateData property. + properties: + fromStateData: + description: Workflow expression that filters state data that can be used by the action. + type: string + results: + description: Workflow expression that filters the actions data results. + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element. + type: string + useResults: + description: If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + condition: + description: Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded. + type: string + eventRef: + description: References a 'trigger' and 'result' reusable event definitions. + properties: + contextAttributes: + additionalProperties: + type: object + description: Add additional extension context attributes to the produced event. + type: object + data: + description: If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by triggerEventRef. If object type, a custom object to become the data (payload) of the event referenced by triggerEventRef. + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + resultEventRef: + description: Reference to the unique name of a 'consumed' event definition + type: string + resultEventTimeout: + description: Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it be set to the actionExecutionTimeout + type: string + triggerEventRef: + description: Reference to the unique name of a 'produced' event definition, + type: string + required: + - resultEventRef + - triggerEventRef + type: object + functionRef: + description: References a reusable function definition. + properties: + arguments: + additionalProperties: + type: object + description: 'Arguments (inputs) to be passed to the referenced function TODO: validate it as required if function type is graphql' + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + refName: + description: Name of the referenced function. + type: string + selectionSet: + description: 'Used if function type is graphql. String containing a valid GraphQL selection set. TODO: validate it as required if function type is graphql' + type: string + required: + - refName + type: object + id: + description: Defines Unique action identifier. + type: string + name: + description: Defines Unique action name. + type: string + nonRetryableErrors: + description: List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` + items: + type: string + type: array + retryRef: + description: References a defined workflow retry definition. If not defined uses the default runtime retry definition. + type: string + retryableErrors: + description: List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` + items: + type: string + type: array + sleep: + description: Defines time period workflow execution should sleep before / after function execution. + properties: + after: + description: Defines amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + before: + description: Defines amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + type: object + subFlowRef: + description: References a workflow to be invoked. + properties: + invoke: + default: sync + description: Specifies if the subflow should be invoked sync or async. Defaults to sync. + enum: + - async + - sync + type: string + onParentComplete: + default: terminate + description: onParentComplete specifies how subflow execution should behave when parent workflow completes if invoke is 'async'. Defaults to terminate. + enum: + - terminate + - continue + type: string + version: + description: Sub-workflow version + type: string + workflowId: + description: Sub-workflow unique id + type: string + required: + - workflowId + type: object + type: object + minItems: 0 + type: array + batchSize: + anyOf: + - type: integer + - type: string + description: Specifies how many iterations may run in parallel at the same time. Used if mode property is set to parallel (default). If not specified, its value should be the size of the inputCollection. + x-kubernetes-int-or-string: true + inputCollection: + description: Workflow expression selecting an array element of the states' data. + type: string + iterationParam: + description: Name of the iteration parameter that can be referenced in actions/workflow. For each parallel iteration, this param should contain a unique element of the inputCollection array. + type: string + mode: + default: parallel + description: Specifies how iterations are to be performed (sequential or in parallel), defaults to parallel. + enum: + - sequential + - parallel + type: string + outputCollection: + description: Workflow expression specifying an array element of the states data to add the results of each iteration. + type: string + timeouts: + description: State specific timeout. + properties: + actionExecTimeout: + description: Default single actions definition execution timeout (ISO 8601 duration format) + type: string + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - inputCollection + type: object + id: + description: Unique State id. + type: string + injectState: + description: injectState used to inject static data into state data input. + properties: + data: + additionalProperties: + type: object + description: JSON object which can be set as state's data input and can be manipulated via filter + minProperties: 1 + type: object + timeouts: + description: State specific timeouts + properties: + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - data + type: object + metadata: + additionalProperties: + type: object + description: Metadata information. + type: object + name: + description: State name. + type: string + onErrors: + description: States error handling and retries definitions. + items: + description: OnError ... + properties: + end: + description: End workflow execution in case of this error. If retryRef is defined, this ends workflow only if retries were unsuccessful. + x-kubernetes-preserve-unknown-fields: true + errorRef: + description: ErrorRef Reference to a unique workflow error definition. Used of errorRefs is not used + type: string + errorRefs: + description: ErrorRefs References one or more workflow error definitions. Used if errorRef is not used + items: + type: string + type: array + transition: + description: Transition to next state to handle the error. If retryRef is defined, this transition is taken only if retries were unsuccessful. + x-kubernetes-preserve-unknown-fields: true + type: object + type: array + operationState: + description: operationState defines a set of actions to be performed in sequence or in parallel. + properties: + actionMode: + default: sequential + description: Specifies whether actions are performed in sequence or in parallel, defaults to sequential. + enum: + - sequential + - parallel + type: string + actions: + description: Actions to be performed + items: + description: Action specify invocations of services or other workflows during workflow execution. + properties: + actionDataFilter: + description: Filter the state data to select only the data that can be used within function definition arguments using its fromStateData property. Filter the action results to select only the result data that should be added/merged back into the state data using its results property. Select the part of state data which the action data results should be added/merged to using the toStateData property. + properties: + fromStateData: + description: Workflow expression that filters state data that can be used by the action. + type: string + results: + description: Workflow expression that filters the actions data results. + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element. + type: string + useResults: + description: If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + condition: + description: Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded. + type: string + eventRef: + description: References a 'trigger' and 'result' reusable event definitions. + properties: + contextAttributes: + additionalProperties: + type: object + description: Add additional extension context attributes to the produced event. + type: object + data: + description: If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by triggerEventRef. If object type, a custom object to become the data (payload) of the event referenced by triggerEventRef. + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + resultEventRef: + description: Reference to the unique name of a 'consumed' event definition + type: string + resultEventTimeout: + description: Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it be set to the actionExecutionTimeout + type: string + triggerEventRef: + description: Reference to the unique name of a 'produced' event definition, + type: string + required: + - resultEventRef + - triggerEventRef + type: object + functionRef: + description: References a reusable function definition. + properties: + arguments: + additionalProperties: + type: object + description: 'Arguments (inputs) to be passed to the referenced function TODO: validate it as required if function type is graphql' + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + refName: + description: Name of the referenced function. + type: string + selectionSet: + description: 'Used if function type is graphql. String containing a valid GraphQL selection set. TODO: validate it as required if function type is graphql' + type: string + required: + - refName + type: object + id: + description: Defines Unique action identifier. + type: string + name: + description: Defines Unique action name. + type: string + nonRetryableErrors: + description: List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` + items: + type: string + type: array + retryRef: + description: References a defined workflow retry definition. If not defined uses the default runtime retry definition. + type: string + retryableErrors: + description: List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` + items: + type: string + type: array + sleep: + description: Defines time period workflow execution should sleep before / after function execution. + properties: + after: + description: Defines amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + before: + description: Defines amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + type: object + subFlowRef: + description: References a workflow to be invoked. + properties: + invoke: + default: sync + description: Specifies if the subflow should be invoked sync or async. Defaults to sync. + enum: + - async + - sync + type: string + onParentComplete: + default: terminate + description: onParentComplete specifies how subflow execution should behave when parent workflow completes if invoke is 'async'. Defaults to terminate. + enum: + - terminate + - continue + type: string + version: + description: Sub-workflow version + type: string + workflowId: + description: Sub-workflow unique id + type: string + required: + - workflowId + type: object + type: object + minItems: 0 + type: array + timeouts: + description: State specific timeouts + properties: + actionExecTimeout: + description: Default single actions definition execution timeout (ISO 8601 duration format) + type: string + stateExecTimeout: + description: Defines workflow state execution timeout. + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - actions + type: object + parallelState: + description: parallelState Consists of a number of states that are executed in parallel. + properties: + branches: + description: List of branches for this parallel state. + items: + description: Branch Definition + properties: + actions: + description: Actions to be executed in this branch + items: + description: Action specify invocations of services or other workflows during workflow execution. + properties: + actionDataFilter: + description: Filter the state data to select only the data that can be used within function definition arguments using its fromStateData property. Filter the action results to select only the result data that should be added/merged back into the state data using its results property. Select the part of state data which the action data results should be added/merged to using the toStateData property. + properties: + fromStateData: + description: Workflow expression that filters state data that can be used by the action. + type: string + results: + description: Workflow expression that filters the actions data results. + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element. + type: string + useResults: + description: If set to false, action data results are not added/merged to state data. In this case 'results' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + condition: + description: Expression, if defined, must evaluate to true for this action to be performed. If false, action is disregarded. + type: string + eventRef: + description: References a 'trigger' and 'result' reusable event definitions. + properties: + contextAttributes: + additionalProperties: + type: object + description: Add additional extension context attributes to the produced event. + type: object + data: + description: If string type, an expression which selects parts of the states data output to become the data (payload) of the event referenced by triggerEventRef. If object type, a custom object to become the data (payload) of the event referenced by triggerEventRef. + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + resultEventRef: + description: Reference to the unique name of a 'consumed' event definition + type: string + resultEventTimeout: + description: Maximum amount of time (ISO 8601 format) to wait for the result event. If not defined it be set to the actionExecutionTimeout + type: string + triggerEventRef: + description: Reference to the unique name of a 'produced' event definition, + type: string + required: + - resultEventRef + - triggerEventRef + type: object + functionRef: + description: References a reusable function definition. + properties: + arguments: + additionalProperties: + type: object + description: 'Arguments (inputs) to be passed to the referenced function TODO: validate it as required if function type is graphql' + type: object + invoke: + default: sync + description: Specifies if the function should be invoked sync or async. Default is sync. + enum: + - async + - sync + type: string + refName: + description: Name of the referenced function. + type: string + selectionSet: + description: 'Used if function type is graphql. String containing a valid GraphQL selection set. TODO: validate it as required if function type is graphql' + type: string + required: + - refName + type: object + id: + description: Defines Unique action identifier. + type: string + name: + description: Defines Unique action name. + type: string + nonRetryableErrors: + description: List of unique references to defined workflow errors for which the action should not be retried. Used only when `autoRetries` is set to `true` + items: + type: string + type: array + retryRef: + description: References a defined workflow retry definition. If not defined uses the default runtime retry definition. + type: string + retryableErrors: + description: List of unique references to defined workflow errors for which the action should be retried. Used only when `autoRetries` is set to `false` + items: + type: string + type: array + sleep: + description: Defines time period workflow execution should sleep before / after function execution. + properties: + after: + description: Defines amount of time (ISO 8601 duration format) to sleep after function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + before: + description: Defines amount of time (ISO 8601 duration format) to sleep before function/subflow invocation. Does not apply if 'eventRef' is defined. + type: string + type: object + subFlowRef: + description: References a workflow to be invoked. + properties: + invoke: + default: sync + description: Specifies if the subflow should be invoked sync or async. Defaults to sync. + enum: + - async + - sync + type: string + onParentComplete: + default: terminate + description: onParentComplete specifies how subflow execution should behave when parent workflow completes if invoke is 'async'. Defaults to terminate. + enum: + - terminate + - continue + type: string + version: + description: Sub-workflow version + type: string + workflowId: + description: Sub-workflow unique id + type: string + required: + - workflowId + type: object + type: object + minItems: 1 + type: array + name: + description: Branch name + type: string + timeouts: + description: Branch specific timeout settings + properties: + actionExecTimeout: + description: Single actions definition execution timeout duration (ISO 8601 duration format) + type: string + branchExecTimeout: + description: Single branch execution timeout duration (ISO 8601 duration format) + type: string + type: object + required: + - actions + - name + type: object + minItems: 1 + type: array + completionType: + default: allOf + description: Option types on how to complete branch execution. Defaults to `allOf`. + enum: + - allOf + - atLeast + type: string + numCompleted: + anyOf: + - type: integer + - type: string + description: 'Used when branchCompletionType is set to atLeast to specify the least number of branches that must complete in order for the state to transition/end. TODO: change this field to unmarshal result as int' + x-kubernetes-int-or-string: true + timeouts: + description: State specific timeouts + properties: + branchExecTimeout: + description: Default single branch execution timeout (ISO 8601 duration format) + type: string + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - branches + type: object + sleepState: + description: sleepState suspends workflow execution for a given time duration. + properties: + duration: + description: Duration (ISO 8601 duration format) to sleep + type: string + timeouts: + description: Timeouts State specific timeouts + properties: + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - duration + type: object + stateDataFilter: + description: State data filter. + properties: + input: + description: Workflow expression to filter the state data input + type: string + output: + description: Workflow expression that filters the state data output + type: string + type: object + switchState: + description: 'switchState is workflow''s gateways: direct transitions onf a workflow based on certain conditions.' + properties: + dataConditions: + description: Defines conditions evaluated against data + items: + description: DataCondition specify a data-based condition statement which causes a transition to another workflow state if evaluated to true. + properties: + condition: + description: Workflow expression evaluated against state data. Must evaluate to true or false. + type: string + end: + description: TODO End or Transition needs to be exclusive tag, one or another should be set. Explicit transition to end + properties: + compensate: + description: If set to true, triggers workflow compensation before workflow execution completes. Default is false. + type: boolean + continueAs: + description: Defines that current workflow execution should stop, and execution should continue as a new workflow instance of the provided id + properties: + data: + description: If string type, an expression which selects parts of the states data output to become the workflow data input of continued execution. If object type, a custom object to become the workflow data input of the continued execution + type: object + version: + description: Version of the workflow to continue execution as. + type: string + workflowExecTimeout: + description: WorkflowExecTimeout Workflow execution timeout to be used by the workflow continuing execution. Overwrites any specific settings set by that workflow + properties: + duration: + default: unlimited + description: Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'. + type: string + interrupt: + description: If false, workflow instance is allowed to finish current execution. If true, current workflow execution is stopped immediately. Default is false. + type: boolean + runBefore: + description: Name of a workflow state to be executed before workflow instance is terminated. + type: string + required: + - duration + type: object + workflowId: + description: Unique id of the workflow to continue execution as. + type: string + required: + - workflowId + type: object + produceEvents: + description: Array of producedEvent definitions. Defines events that should be produced. + items: + description: ProduceEvent Defines the event (CloudEvent format) to be produced when workflow execution completes or during a workflow transitions. The eventRef property must match the name of one of the defined produced events in the events definition. + properties: + contextAttributes: + additionalProperties: + type: string + description: Add additional event extension context attributes. + type: object + data: + description: If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event. + type: object + eventRef: + description: Reference to a defined unique event name in the events definition + type: string + required: + - eventRef + type: object + type: array + terminate: + description: If true, completes all execution flows in the given workflow instance. + type: boolean + type: object + metadata: + additionalProperties: + type: object + description: Metadata information. + type: object + name: + description: Data condition name. + type: string + transition: + description: Workflow transition if condition is evaluated to true + properties: + compensate: + default: false + description: If set to true, triggers workflow compensation before this transition is taken. Default is false. + type: boolean + nextState: + description: Name of the state to transition to next. + type: string + produceEvents: + description: Array of producedEvent definitions. Events to be produced before the transition takes place. + items: + description: ProduceEvent Defines the event (CloudEvent format) to be produced when workflow execution completes or during a workflow transitions. The eventRef property must match the name of one of the defined produced events in the events definition. + properties: + contextAttributes: + additionalProperties: + type: string + description: Add additional event extension context attributes. + type: object + data: + description: If String, expression which selects parts of the states data output to become the data of the produced event. If object a custom object to become the data of produced event. + type: object + eventRef: + description: Reference to a defined unique event name in the events definition + type: string + required: + - eventRef + type: object + type: array + required: + - nextState + type: object + required: + - condition + - end + type: object + type: array + defaultCondition: + description: Default transition of the workflow if there is no matching data conditions. Can include a transition or end definition. + properties: + end: + description: If this state an end state + x-kubernetes-preserve-unknown-fields: true + transition: + description: Serverless workflow states can have one or more incoming and outgoing transitions (from/to other states). Each state can define a transition definition that is used to determine which state to transition to next. + x-kubernetes-preserve-unknown-fields: true + type: object + eventConditions: + description: Defines conditions evaluated against events. + items: + description: EventCondition specify events which the switch state must wait for. + properties: + end: + description: TODO End or Transition needs to be exclusive tag, one or another should be set. Explicit transition to end + x-kubernetes-preserve-unknown-fields: true + eventDataFilter: + description: Event data filter definition. + properties: + data: + description: Workflow expression that filters of the event data (payload). + type: string + toStateData: + description: Workflow expression that selects a state data element to which the action results should be added/merged into. If not specified denotes the top-level state data element + type: string + useData: + description: If set to false, event payload is not added/merged to state data. In this case 'data' and 'toStateData' should be ignored. Default is true. + type: boolean + type: object + eventRef: + description: References a unique event name in the defined workflow events. + type: string + metadata: + description: Metadata information. + x-kubernetes-preserve-unknown-fields: true + name: + description: Event condition name. + type: string + transition: + description: Workflow transition if condition is evaluated to true + x-kubernetes-preserve-unknown-fields: true + required: + - eventRef + type: object + type: array + timeouts: + description: SwitchState specific timeouts + properties: + eventTimeout: + description: 'Specify the expire value to transitions to defaultCondition. When event-based conditions do not arrive. NOTE: this is only available for EventConditions' + type: string + stateExecTimeout: + description: Default workflow state execution timeout (ISO 8601 duration format) + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + type: object + required: + - defaultCondition + type: object + transition: + description: Next transition of the workflow after the time delay. + x-kubernetes-preserve-unknown-fields: true + type: + description: stateType can be any of delay, callback, event, foreach, inject, operation, parallel, sleep, switch + enum: + - delay + - callback + - event + - foreach + - inject + - operation + - parallel + - sleep + - switch + type: string + usedForCompensation: + description: If true, this state is used to compensate another state. Default is false. + type: boolean + required: + - name + - type + type: object + minItems: 1 + type: array + x-kubernetes-preserve-unknown-fields: true + timeouts: + description: Defines the workflow default timeout settings. + properties: + actionExecTimeout: + description: ActionExecTimeout Single actions definition execution timeout duration (ISO 8601 duration format). + type: string + branchExecTimeout: + description: BranchExecTimeout Single branch execution timeout duration (ISO 8601 duration format). + type: string + eventTimeout: + description: EventTimeout Timeout duration to wait for consuming defined events (ISO 8601 duration format). + type: string + stateExecTimeout: + description: StateExecTimeout Total state execution timeout (including retries) (ISO 8601 duration format). + properties: + single: + description: Single state execution timeout, not including retries (ISO 8601 duration format) + type: string + total: + description: Total state execution timeout, including retries (ISO 8601 duration format) + type: string + required: + - total + type: object + workflowExecTimeout: + description: WorkflowExecTimeout Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'. + properties: + duration: + default: unlimited + description: Workflow execution timeout duration (ISO 8601 duration format). If not specified should be 'unlimited'. + type: string + interrupt: + description: If false, workflow instance is allowed to finish current execution. If true, current workflow execution is stopped immediately. Default is false. + type: boolean + runBefore: + description: Name of a workflow state to be executed before workflow instance is terminated. + type: string + required: + - duration + type: object + type: object + required: + - states + type: object + resources: + description: Resources workflow resources that are linked to this workflow definition. For example, a collection of OpenAPI specification files. + properties: + configMaps: + items: + description: ConfigMapWorkflowResource ConfigMap local reference holding one or more workflow resources, such as OpenAPI files that will be mounted in the workflow application. + properties: + configMap: + description: ConfigMap the given configMap name in the same workflow context to find the resource + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + workflowPath: + description: WorkflowPath path relative to the workflow application root file system within the pod (//src/main/resources). Starting trailing slashes will be removed. + type: string + required: + - configMap + type: object + type: array + type: object + required: + - flow + type: object + status: + description: SonataFlowStatus defines the observed state of SonataFlow + properties: + address: + description: Address is used as a part of Addressable interface (status.address.url) for knative + properties: + CACerts: + description: CACerts is the Certification Authority (CA) certificates in PEM format according to https://www.rfc-editor.org/rfc/rfc7468. + type: string + name: + description: Name is the name of the address. + type: string + url: + type: string + type: object + conditions: + description: The latest available observations of a resource's current state. + items: + description: Condition describes the common structure for conditions in our types + properties: + lastUpdateTime: + description: The last time this condition was updated. + format: date-time + type: string + message: + description: A human-readable message indicating details about the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type condition for the given object + type: string + required: + - status + - type + type: object + type: array + endpoint: + description: Endpoint is an externally accessible URL of the workflow + type: string + lastTimeRecoverAttempt: + format: date-time + type: string + observedGeneration: + description: The generation observed by the deployment controller. + format: int64 + type: integer + recoverFailureAttempts: + description: keeps track of how many failure recovers a given workflow had so far + type: integer + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/kube-custom-resources-rs/Cargo.toml b/kube-custom-resources-rs/Cargo.toml index 1674848ca..46e596275 100644 --- a/kube-custom-resources-rs/Cargo.toml +++ b/kube-custom-resources-rs/Cargo.toml @@ -289,6 +289,7 @@ serving_kubedl_io_v1alpha1 = [] sfn_services_k8s_aws_v1alpha1 = [] site_superedge_io_v1alpha1 = [] slo_koordinator_sh_v1alpha1 = [] +sonataflow_org_v1alpha08 = [] source_toolkit_fluxcd_io_v1beta1 = [] source_toolkit_fluxcd_io_v1beta2 = [] sparkoperator_k8s_io_v1beta2 = [] diff --git a/kube-custom-resources-rs/src/lib.rs b/kube-custom-resources-rs/src/lib.rs index b2b3a43ca..2bac40cff 100644 --- a/kube-custom-resources-rs/src/lib.rs +++ b/kube-custom-resources-rs/src/lib.rs @@ -2447,6 +2447,14 @@ kinds: - `NodeMetric` - `NodeSLO` +## sonataflow_org_v1alpha08 + +apiVersion: `sonataflow.org/v1alpha08` + +kinds: +- `SonataFlowBuild` +- `SonataFlowPlatform` + ## source_toolkit_fluxcd_io_v1beta1 apiVersion: `source.toolkit.fluxcd.io/v1beta1` @@ -3208,6 +3216,8 @@ pub mod sfn_services_k8s_aws_v1alpha1; pub mod site_superedge_io_v1alpha1; #[cfg(feature = "slo_koordinator_sh_v1alpha1")] pub mod slo_koordinator_sh_v1alpha1; +#[cfg(feature = "sonataflow_org_v1alpha08")] +pub mod sonataflow_org_v1alpha08; #[cfg(feature = "source_toolkit_fluxcd_io_v1beta1")] pub mod source_toolkit_fluxcd_io_v1beta1; #[cfg(feature = "source_toolkit_fluxcd_io_v1beta2")] diff --git a/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/mod.rs b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/mod.rs new file mode 100644 index 000000000..04a99550b --- /dev/null +++ b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/mod.rs @@ -0,0 +1,2 @@ +pub mod sonataflowbuilds; +pub mod sonataflowplatforms; diff --git a/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowbuilds.rs b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowbuilds.rs new file mode 100644 index 000000000..583dd8a1e --- /dev/null +++ b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowbuilds.rs @@ -0,0 +1,233 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowbuilds.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +/// SonataFlowBuildSpec an abstraction over the actual build process performed by the platform. +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "sonataflow.org", version = "v1alpha08", kind = "SonataFlowBuild", plural = "sonataflowbuilds")] +#[kube(namespaced)] +#[kube(status = "SonataFlowBuildStatus")] +#[kube(schema = "disabled")] +pub struct SonataFlowBuildSpec { + /// Arguments lists the command line arguments to send to the internal builder command. Depending on the build method you might set this attribute instead of BuildArgs. For example: ".spec.arguments=verbose=3". Please see the SonataFlow guides. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + /// Optional build arguments that can be set to the internal build (e.g. Docker ARG) + #[serde(default, skip_serializing_if = "Option::is_none", rename = "buildArgs")] + pub build_args: Option>, + /// Optional environment variables to add to the internal build + #[serde(default, skip_serializing_if = "Option::is_none")] + pub envs: Option>, + /// Resources optional compute resource requirements for the builder + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + /// Timeout defines the Build maximum execution duration. The Build deadline is set to the Build start time plus the Timeout duration. If the Build deadline is exceeded, the Build context is canceled, and its phase set to BuildPhaseFailed. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timeout: Option, +} + +/// EnvVar represents an environment variable present in a Container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgs { + /// Name of the environment variable. Must be a C_IDENTIFIER. + pub name: String, + /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + /// Source for the environment variable's value. Cannot be used if value is not empty. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// Source for the environment variable's value. Cannot be used if value is not empty. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgsValueFrom { + /// Selects a key of a ConfigMap. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a ConfigMap. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgsValueFromConfigMapKeyRef { + /// The key to select. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgsValueFromFieldRef { + /// Version of the schema the FieldPath is written in terms of, defaults to "v1". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Path of the field to select in the specified API version. + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgsValueFromResourceFieldRef { + /// Container name: required for volumes, optional for env vars + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + /// Specifies the output format of the exposed resources, defaults to "1" + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + /// Required: resource to select + pub resource: String, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildBuildArgsValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// EnvVar represents an environment variable present in a Container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvs { + /// Name of the environment variable. Must be a C_IDENTIFIER. + pub name: String, + /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + /// Source for the environment variable's value. Cannot be used if value is not empty. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// Source for the environment variable's value. Cannot be used if value is not empty. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvsValueFrom { + /// Selects a key of a ConfigMap. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a ConfigMap. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvsValueFromConfigMapKeyRef { + /// The key to select. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvsValueFromFieldRef { + /// Version of the schema the FieldPath is written in terms of, defaults to "v1". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Path of the field to select in the specified API version. + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvsValueFromResourceFieldRef { + /// Container name: required for volumes, optional for env vars + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + /// Specifies the output format of the exposed resources, defaults to "1" + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + /// Required: resource to select + pub resource: String, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildEnvsValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Resources optional compute resource requirements for the builder +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildResources { + /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + /// This field is immutable. It can only be set for containers. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub claims: Option>, + /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +/// ResourceClaim references one entry in PodSpec.ResourceClaims. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildResourcesClaims { + /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + pub name: String, +} + +/// SonataFlowBuildStatus defines the observed state of SonataFlowBuild +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowBuildStatus { + /// Current phase of the build + #[serde(default, skip_serializing_if = "Option::is_none", rename = "buildPhase")] + pub build_phase: Option, + /// Last error found during build + #[serde(default, skip_serializing_if = "Option::is_none")] + pub error: Option, + /// The final image tag produced by this build instance + #[serde(default, skip_serializing_if = "Option::is_none", rename = "imageTag")] + pub image_tag: Option, + /// InnerBuild is a reference to an internal build object, which can be anything known only to internal builders. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "innerBuild")] + pub inner_build: Option>, +} + diff --git a/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowplatforms.rs b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowplatforms.rs new file mode 100644 index 000000000..dd8b75fb8 --- /dev/null +++ b/kube-custom-resources-rs/src/sonataflow_org_v1alpha08/sonataflowplatforms.rs @@ -0,0 +1,334 @@ +// WARNING: generated by kopium - manual changes will be overwritten +// kopium command: kopium --docs --filename=./crd-catalog/kiegroup/kogito-serverless-operator/sonataflow.org/v1alpha08/sonataflowplatforms.yaml --derive=Default --derive=PartialEq +// kopium version: 0.16.2 + +use kube::CustomResource; +use serde::{Serialize, Deserialize}; +use std::collections::BTreeMap; +use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString; + +/// SonataFlowPlatformSpec defines the desired state of SonataFlowPlatform +#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +#[kube(group = "sonataflow.org", version = "v1alpha08", kind = "SonataFlowPlatform", plural = "sonataflowplatforms")] +#[kube(namespaced)] +#[kube(status = "SonataFlowPlatformStatus")] +#[kube(schema = "disabled")] +pub struct SonataFlowPlatformSpec { + /// Attributes for building workflows in the target platform + #[serde(default, skip_serializing_if = "Option::is_none")] + pub build: Option, + /// Attributes for running workflows in devmode (immutable, no build required) + #[serde(default, skip_serializing_if = "Option::is_none", rename = "devMode")] + pub dev_mode: Option, +} + +/// Attributes for building workflows in the target platform +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuild { + /// Describes the platform configuration for building workflows. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub config: Option, + /// Describes a build template for building workflows. Base for the internal SonataFlowBuild resource. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub template: Option, +} + +/// Describes the platform configuration for building workflows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildConfig { + /// a base image that can be used as base layer for all images. It can be useful if you want to provide some custom base image with further utility software + #[serde(default, skip_serializing_if = "Option::is_none", rename = "baseImage")] + pub base_image: Option, + /// Registry the registry where to publish the built image + #[serde(default, skip_serializing_if = "Option::is_none")] + pub registry: Option, + /// BuildStrategy to use to build workflows in the platform. Usually, the operator elect the strategy based on the platform. Note that this field might be read only in certain scenarios. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub strategy: Option, + /// BuildStrategyOptions additional options to add to the build strategy. See https://sonataflow.org/serverlessworkflow/main/cloud/operator/build-and-deploy-workflows.html + #[serde(default, skip_serializing_if = "Option::is_none", rename = "strategyOptions")] + pub strategy_options: Option>, + /// how much time to wait before time out the build process + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timeout: Option, +} + +/// Registry the registry where to publish the built image +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildConfigRegistry { + /// the URI to access + #[serde(default, skip_serializing_if = "Option::is_none")] + pub address: Option, + /// the configmap which stores the Certificate Authority + #[serde(default, skip_serializing_if = "Option::is_none")] + pub ca: Option, + /// if the container registry is insecure (ie, http only) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub insecure: Option, + /// the registry organization + #[serde(default, skip_serializing_if = "Option::is_none")] + pub organization: Option, + /// the secret where credentials are stored + #[serde(default, skip_serializing_if = "Option::is_none")] + pub secret: Option, +} + +/// Describes a build template for building workflows. Base for the internal SonataFlowBuild resource. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplate { + /// Arguments lists the command line arguments to send to the internal builder command. Depending on the build method you might set this attribute instead of BuildArgs. For example: ".spec.arguments=verbose=3". Please see the SonataFlow guides. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub arguments: Option>, + /// Optional build arguments that can be set to the internal build (e.g. Docker ARG) + #[serde(default, skip_serializing_if = "Option::is_none", rename = "buildArgs")] + pub build_args: Option>, + /// Optional environment variables to add to the internal build + #[serde(default, skip_serializing_if = "Option::is_none")] + pub envs: Option>, + /// Resources optional compute resource requirements for the builder + #[serde(default, skip_serializing_if = "Option::is_none")] + pub resources: Option, + /// Timeout defines the Build maximum execution duration. The Build deadline is set to the Build start time plus the Timeout duration. If the Build deadline is exceeded, the Build context is canceled, and its phase set to BuildPhaseFailed. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub timeout: Option, +} + +/// EnvVar represents an environment variable present in a Container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgs { + /// Name of the environment variable. Must be a C_IDENTIFIER. + pub name: String, + /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + /// Source for the environment variable's value. Cannot be used if value is not empty. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// Source for the environment variable's value. Cannot be used if value is not empty. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgsValueFrom { + /// Selects a key of a ConfigMap. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a ConfigMap. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgsValueFromConfigMapKeyRef { + /// The key to select. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgsValueFromFieldRef { + /// Version of the schema the FieldPath is written in terms of, defaults to "v1". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Path of the field to select in the specified API version. + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgsValueFromResourceFieldRef { + /// Container name: required for volumes, optional for env vars + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + /// Specifies the output format of the exposed resources, defaults to "1" + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + /// Required: resource to select + pub resource: String, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateBuildArgsValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// EnvVar represents an environment variable present in a Container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvs { + /// Name of the environment variable. Must be a C_IDENTIFIER. + pub name: String, + /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + #[serde(default, skip_serializing_if = "Option::is_none")] + pub value: Option, + /// Source for the environment variable's value. Cannot be used if value is not empty. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] + pub value_from: Option, +} + +/// Source for the environment variable's value. Cannot be used if value is not empty. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvsValueFrom { + /// Selects a key of a ConfigMap. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] + pub config_map_key_ref: Option, + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] + pub field_ref: Option, + /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] + pub resource_field_ref: Option, + /// Selects a key of a secret in the pod's namespace + #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretKeyRef")] + pub secret_key_ref: Option, +} + +/// Selects a key of a ConfigMap. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvsValueFromConfigMapKeyRef { + /// The key to select. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the ConfigMap or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvsValueFromFieldRef { + /// Version of the schema the FieldPath is written in terms of, defaults to "v1". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] + pub api_version: Option, + /// Path of the field to select in the specified API version. + #[serde(rename = "fieldPath")] + pub field_path: String, +} + +/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvsValueFromResourceFieldRef { + /// Container name: required for volumes, optional for env vars + #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerName")] + pub container_name: Option, + /// Specifies the output format of the exposed resources, defaults to "1" + #[serde(default, skip_serializing_if = "Option::is_none")] + pub divisor: Option, + /// Required: resource to select + pub resource: String, +} + +/// Selects a key of a secret in the pod's namespace +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateEnvsValueFromSecretKeyRef { + /// The key of the secret to select from. Must be a valid secret key. + pub key: String, + /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid? + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// Specify whether the Secret or its key must be defined + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, +} + +/// Resources optional compute resource requirements for the builder +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateResources { + /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + /// This field is immutable. It can only be set for containers. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub claims: Option>, + /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub limits: Option>, + /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + #[serde(default, skip_serializing_if = "Option::is_none")] + pub requests: Option>, +} + +/// ResourceClaim references one entry in PodSpec.ResourceClaims. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformBuildTemplateResourcesClaims { + /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + pub name: String, +} + +/// Attributes for running workflows in devmode (immutable, no build required) +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformDevMode { + /// Base image to run the Workflow in dev mode instead of the operator's default. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "baseImage")] + pub base_image: Option, +} + +/// SonataFlowPlatformStatus defines the observed state of SonataFlowPlatform +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformStatus { + /// Cluster what kind of cluster you're running (ie, plain Kubernetes or OpenShift) + #[serde(default, skip_serializing_if = "Option::is_none")] + pub cluster: Option, + /// The latest available observations of a resource's current state. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub conditions: Option>, + /// Info generic information related to the build + #[serde(default, skip_serializing_if = "Option::is_none")] + pub info: Option>, + /// The generation observed by the deployment controller. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] + pub observed_generation: Option, + /// Version the operator version controlling this Platform + #[serde(default, skip_serializing_if = "Option::is_none")] + pub version: Option, +} + +/// SonataFlowPlatformStatus defines the observed state of SonataFlowPlatform +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum SonataFlowPlatformStatusCluster { + #[serde(rename = "kubernetes")] + Kubernetes, + #[serde(rename = "openshift")] + Openshift, +} + +/// Condition describes the common structure for conditions in our types +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct SonataFlowPlatformStatusConditions { + /// The last time this condition was updated. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdateTime")] + pub last_update_time: Option, + /// A human-readable message indicating details about the transition. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub message: Option, + /// The reason for the condition's last transition. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reason: Option, + /// Status of the condition, one of True, False, Unknown. + pub status: String, + /// Type condition for the given object + #[serde(rename = "type")] + pub r#type: String, +} +