apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.2 name: applications.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: Application listKind: ApplicationList plural: applications shortNames: - hasapp - ha - app singular: application scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .metadata.creationTimestamp name: Age type: date - jsonPath: .status.conditions[-1].status name: Status type: string - jsonPath: .status.conditions[-1].reason name: Reason type: string name: v1alpha1 schema: openAPIV3Schema: description: Application is the Schema for the applications API. For description, refer to Hybrid Application Service Kube API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: ApplicationSpec defines the desired state of Application properties: appModelRepository: description: |- AppModelRepository refers to the git repository that will store the application model (a devfile) Can be the same as GitOps repository. A repository will be generated if this field is left blank. Optional. properties: branch: description: |- Branch corresponds to the branch in the repository that should be used Example: devel. Optional. type: string context: description: |- Context corresponds to the context within the repository that should be used Example: folderA/folderB/gitops. Optional. type: string url: description: |- URL refers to the repository URL that should be used. If not specified, a GitOps repository under the $GITHUB_ORG (defaults to redhat-appstudio-appdata) organization on GitHub will be generated by HAS. Example: https://github.com/devfile-test/myrepo. Required. type: string required: - url type: object description: description: |- Description refers to a brief description of the application. Optional. type: string displayName: description: |- DisplayName refers to the name that an application will be deployed with in App Studio. Required. type: string gitOpsRepository: description: |- GitOpsRepository refers to the git repository that will store the gitops resources. Can be the same as App Model Repository. A repository will be generated if this field is left blank. Optional. properties: branch: description: |- Branch corresponds to the branch in the repository that should be used Example: devel. Optional. type: string context: description: |- Context corresponds to the context within the repository that should be used Example: folderA/folderB/gitops. Optional. type: string url: description: |- URL refers to the repository URL that should be used. If not specified, a GitOps repository under the $GITHUB_ORG (defaults to redhat-appstudio-appdata) organization on GitHub will be generated by HAS. Example: https://github.com/devfile-test/myrepo. Required. type: string required: - url type: object required: - displayName type: object status: description: ApplicationStatus defines the observed state of Application properties: conditions: description: Conditions is an array of the Application's status conditions items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array devfile: description: Devfile corresponds to the devfile representation of the Application resource type: string required: - conditions type: object required: - spec type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.2 name: componentdetectionqueries.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: ComponentDetectionQuery listKind: ComponentDetectionQueryList plural: componentdetectionqueries shortNames: - hcdq - compdetection singular: componentdetectionquery scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .metadata.creationTimestamp name: Age type: date - jsonPath: .status.conditions[-1].status name: Status type: string - jsonPath: .status.conditions[-1].reason name: Reason type: string - jsonPath: .status.conditions[-1].type name: Type type: string name: v1alpha1 schema: openAPIV3Schema: description: ComponentDetectionQuery is the Schema for the componentdetectionqueries API. For description, refer to Hybrid Application Service Kube API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: ComponentDetectionQuerySpec defines the desired state of ComponentDetectionQuery properties: generateComponentName: description: |- It defines if should generate random characters at the end of the component name instead of a predicted default value The default value is false. If the value is set to true, component name will always have random characters appended Optional. type: boolean git: description: |- Git Source for a Component. Required. properties: context: description: |- A relative path inside the git repo containing the component Example: folderA/folderB/gitops. Optional. type: string devfileUrl: description: |- If specified, the devfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Example: https://raw.githubusercontent.com/devfile-samples/devfile-sample-java-springboot-basic/main/devfile.yaml. Optional. type: string dockerfileUrl: description: |- If specified, the dockerfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Optional. type: string revision: description: |- Specify a branch/tag/commit id. If not specified, default is `main`/`master`. Example: devel. Optional. type: string url: description: An HTTPS URL representing the git repository to create the component from. type: string required: - url type: object secret: description: |- Secret describes the name of an optional Kubernetes secret containing a Personal Access Token to access the git repostiory. Optional. type: string required: - git type: object status: description: ComponentDetectionQueryStatus defines the observed state of ComponentDetectionQuery properties: componentDetected: additionalProperties: description: ComponentDetectionDescription holds all the information about the component being detected properties: componentStub: description: ComponentStub is a stub of the component detected with all the info gathered from the devfile or service detection properties: actions: description: |- Specific actions that will be processed by the controller and then removed from 'spec.actions'. Used for triggering builds or creating pipeline configuration PRs. Optional. properties: create-pipeline-configuration-pr: description: |- Send a PR with build pipeline configuration proposal for Component version(s). If not set, version onboarding will be done without pipeline configuration PR. Could be used after onboarding to create / renew build pipeline definition. Optional. properties: all-versions: description: |- When specified it will send a PR with build pipeline configuration proposal for all Component versions. Has precedence over 'version' and 'versions'. Optional. type: boolean version: description: |- When specified it will send a PR with build pipeline configuration proposal for the Component version. Can be specified together with 'versions' and any duplicates will be removed. Optional. type: string versions: description: |- When specified it will send a PR with build pipeline configuration proposal for Component versions. Can be specified together with 'version' and any duplicates will be removed. Optional. items: type: string type: array type: object trigger-push-build: description: |- Specify name of component version to restart the push build for. Can be specified together with 'trigger-push-builds' and any duplicates will be removed. Optional. type: string trigger-push-builds: description: |- Specify names of component versions to restart the push build for. Can be specified together with 'trigger-push-build' and any duplicates will be removed. Optional. items: type: string type: array type: object application: description: |- Application is the name of the application resource that the component belongs to. Optional. !!! Will be removed when we remove old model pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string build-nudges-ref: description: |- The list of components to be nudged by this components build upon a successful result. Optional. !!! Will be removed when we remove old model items: type: string type: array componentName: description: |- ComponentName is name of the component to be added to the Application. The name must adhere to DNS-1123 validation. Optional. !!! Will be removed when we remove old model maxLength: 63 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string containerImage: description: |- The container image repository to use for this component (without tag). Either will be set by Image Repository, or explicitly specified with custom repo. All versions of this component will use this single image repository. Example: quay.io/org/tenant/component Optional. type: string default-build-pipeline: description: |- Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Pipeline used for all versions, unless explicitly specified for a specific version. When omitted it has to be specified in all versions. Optional. properties: pull: description: |- Pipeline used for pull pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object pull-and-push: description: |- Pipeline used for pull and push pipeline runs. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object push: description: |- Pipeline used for push pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object type: object env: description: |- An array of environment variables to add to the component (ValueFrom not currently supported) Optional 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 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 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 replicas: description: |- The number of replicas to deploy the component with. Optional. !!! Will be removed when we remove old model type: integer repository-settings: description: |- Used for setting additional settings for the Repository CR. Optional. properties: comment-strategy: description: |- When specified, will set value of `comment_strategy` in the Repository CR Optional. type: string github-app-token-scope-repos: description: |- When specified, will add values to `github_app_token_scope_repos` in the Repository CR Optional. items: type: string type: array type: object resources: description: |- Compute Resources required by this component. Optional. properties: 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object route: description: |- The route to expose the component with. Optional. !!! Will be removed when we remove old model type: string secret: description: |- Secret describes the name of a Kubernetes secret containing either: 1. A Personal Access Token to access the Component's git repostiory (if using a Git-source component) or 2. An Image Pull Secret to access the Component's container image (if using an Image-source component). Optional. !!! Will be removed when we remove old model type: string skip-offboarding-pr: description: |- When 'true', during offboarding a cleaning PR won't be created. Default: false. Optional. type: boolean skipGitOpsResourceGeneration: description: |- Whether or not to bypass the generation of GitOps resources for the Component. Defaults to false. Optional. !!! Will be removed when we remove old model type: boolean source: description: |- Source describes the Component source. Required. properties: dockerfileUri: description: |- Dockerfile path for all versions, unless explicitly specified for a version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile" Optional. type: string git: description: |- Git Source for a Component. Optional. !!! Will be removed when we remove old model properties: context: description: |- A relative path inside the git repo containing the component Example: folderA/folderB/gitops. Optional. type: string devfileUrl: description: |- If specified, the devfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Example: https://raw.githubusercontent.com/devfile-samples/devfile-sample-java-springboot-basic/main/devfile.yaml. Optional. type: string dockerfileUrl: description: |- If specified, the dockerfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Optional. type: string revision: description: |- Specify a branch/tag/commit id. If not specified, default is `main`/`master`. Example: devel. Optional. type: string url: description: An HTTPS URL representing the git repository to create the component from. type: string required: - url type: object url: description: |- Git repository URL for the component. Optional. !!! Will be required when we remove old model type: string versions: description: |- List of all versions for this component. Optional. !!! Will be required when we remove old model items: properties: build-pipeline: description: |- Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Pipeline used for the version; when omitted, the default pipeline will be used from 'spec.default-build-pipeline'. Optional. properties: pull: description: |- Pipeline used for pull pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object pull-and-push: description: |- Pipeline used for pull and push pipeline runs. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object push: description: |- Pipeline used for push pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object type: object context: description: |- Context directory for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "" (empty string, root of repository). Optional. type: string dockerfileUri: description: |- Dockerfile path for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile". Optional. type: string name: description: |- User defined name for the version. After sanitization (lower case, removing spaces, etc) all version names must be unique. Required. type: string revision: description: |- Git branch to use for the version. Required. type: string skip-builds: description: |- When 'true' it will disable builds for a revision in the version. Default: false. Optional. type: boolean required: - name - revision type: object type: array type: object targetPort: description: |- The port to expose the component over. Optional. !!! Will be removed when we remove old model type: integer required: - source type: object devfileFound: description: DevfileFound tells if a devfile is found in the component type: boolean language: description: |- Language specifies the language of the component detected Example: JavaScript type: string projectType: description: |- ProjectType specifies the type of project for the component detected Example Node.JS type: string type: object description: ComponentDetected gives a list of components and the info from detection type: object conditions: description: Conditions is an array of the ComponentDetectionQuery's status conditions items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object required: - spec type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.2 name: components.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: Component listKind: ComponentList plural: components shortNames: - cmp - comp singular: component scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .metadata.creationTimestamp name: Age type: date - jsonPath: .status.conditions[-1].status name: Status type: string - jsonPath: .status.conditions[-1].reason name: Reason type: string - jsonPath: .status.conditions[-1].type name: Type type: string name: v1alpha1 schema: openAPIV3Schema: description: Component is the Schema for the components API. For description, refer to Hybrid Application Service Kube API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: ComponentSpec defines the desired state of Component properties: actions: description: |- Specific actions that will be processed by the controller and then removed from 'spec.actions'. Used for triggering builds or creating pipeline configuration PRs. Optional. properties: create-pipeline-configuration-pr: description: |- Send a PR with build pipeline configuration proposal for Component version(s). If not set, version onboarding will be done without pipeline configuration PR. Could be used after onboarding to create / renew build pipeline definition. Optional. properties: all-versions: description: |- When specified it will send a PR with build pipeline configuration proposal for all Component versions. Has precedence over 'version' and 'versions'. Optional. type: boolean version: description: |- When specified it will send a PR with build pipeline configuration proposal for the Component version. Can be specified together with 'versions' and any duplicates will be removed. Optional. type: string versions: description: |- When specified it will send a PR with build pipeline configuration proposal for Component versions. Can be specified together with 'version' and any duplicates will be removed. Optional. items: type: string type: array type: object trigger-push-build: description: |- Specify name of component version to restart the push build for. Can be specified together with 'trigger-push-builds' and any duplicates will be removed. Optional. type: string trigger-push-builds: description: |- Specify names of component versions to restart the push build for. Can be specified together with 'trigger-push-build' and any duplicates will be removed. Optional. items: type: string type: array type: object application: description: |- Application is the name of the application resource that the component belongs to. Optional. !!! Will be removed when we remove old model pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string build-nudges-ref: description: |- The list of components to be nudged by this components build upon a successful result. Optional. !!! Will be removed when we remove old model items: type: string type: array componentName: description: |- ComponentName is name of the component to be added to the Application. The name must adhere to DNS-1123 validation. Optional. !!! Will be removed when we remove old model maxLength: 63 pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string containerImage: description: |- The container image repository to use for this component (without tag). Either will be set by Image Repository, or explicitly specified with custom repo. All versions of this component will use this single image repository. Example: quay.io/org/tenant/component Optional. type: string default-build-pipeline: description: |- Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Pipeline used for all versions, unless explicitly specified for a specific version. When omitted it has to be specified in all versions. Optional. properties: pull: description: |- Pipeline used for pull pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object pull-and-push: description: |- Pipeline used for pull and push pipeline runs. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object push: description: |- Pipeline used for push pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object type: object env: description: |- An array of environment variables to add to the component (ValueFrom not currently supported) Optional 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 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 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 replicas: description: |- The number of replicas to deploy the component with. Optional. !!! Will be removed when we remove old model type: integer repository-settings: description: |- Used for setting additional settings for the Repository CR. Optional. properties: comment-strategy: description: |- When specified, will set value of `comment_strategy` in the Repository CR Optional. type: string github-app-token-scope-repos: description: |- When specified, will add values to `github_app_token_scope_repos` in the Repository CR Optional. items: type: string type: array type: object resources: description: |- Compute Resources required by this component. Optional. properties: 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object route: description: |- The route to expose the component with. Optional. !!! Will be removed when we remove old model type: string secret: description: |- Secret describes the name of a Kubernetes secret containing either: 1. A Personal Access Token to access the Component's git repostiory (if using a Git-source component) or 2. An Image Pull Secret to access the Component's container image (if using an Image-source component). Optional. !!! Will be removed when we remove old model type: string skip-offboarding-pr: description: |- When 'true', during offboarding a cleaning PR won't be created. Default: false. Optional. type: boolean skipGitOpsResourceGeneration: description: |- Whether or not to bypass the generation of GitOps resources for the Component. Defaults to false. Optional. !!! Will be removed when we remove old model type: boolean source: description: |- Source describes the Component source. Required. properties: dockerfileUri: description: |- Dockerfile path for all versions, unless explicitly specified for a version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile" Optional. type: string git: description: |- Git Source for a Component. Optional. !!! Will be removed when we remove old model properties: context: description: |- A relative path inside the git repo containing the component Example: folderA/folderB/gitops. Optional. type: string devfileUrl: description: |- If specified, the devfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Example: https://raw.githubusercontent.com/devfile-samples/devfile-sample-java-springboot-basic/main/devfile.yaml. Optional. type: string dockerfileUrl: description: |- If specified, the dockerfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Optional. type: string revision: description: |- Specify a branch/tag/commit id. If not specified, default is `main`/`master`. Example: devel. Optional. type: string url: description: An HTTPS URL representing the git repository to create the component from. type: string required: - url type: object url: description: |- Git repository URL for the component. Optional. !!! Will be required when we remove old model type: string versions: description: |- List of all versions for this component. Optional. !!! Will be required when we remove old model items: properties: build-pipeline: description: |- Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Pipeline used for the version; when omitted, the default pipeline will be used from 'spec.default-build-pipeline'. Optional. properties: pull: description: |- Pipeline used for pull pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object pull-and-push: description: |- Pipeline used for pull and push pipeline runs. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object push: description: |- Pipeline used for push pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object type: object context: description: |- Context directory for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "" (empty string, root of repository). Optional. type: string dockerfileUri: description: |- Dockerfile path for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile". Optional. type: string name: description: |- User defined name for the version. After sanitization (lower case, removing spaces, etc) all version names must be unique. Required. type: string revision: description: |- Git branch to use for the version. Required. type: string skip-builds: description: |- When 'true' it will disable builds for a revision in the version. Default: false. Optional. type: boolean required: - name - revision type: object type: array type: object targetPort: description: |- The port to expose the component over. Optional. !!! Will be removed when we remove old model type: integer required: - source type: object status: description: ComponentStatus defines the observed state of Component properties: build-nudged-by: description: |- The list of names of Components whose builds nudge this resource (their spec.build-nudges-ref[] references this component) !!! Will be removed when we remove old model items: type: string type: array conditions: description: Conditions is an array of the Component's status conditions items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array devfile: description: |- The devfile model for the Component CR !!! Will be removed when we remove old model type: string gitops: description: |- GitOps specific status for the Component CR !!! Will be removed when we remove old model properties: branch: description: Branch is the git branch used for the gitops repository type: string commitID: description: CommitID is the most recent commit ID in the GitOps repository for this component type: string context: description: Context is the path within the gitops repository used for the gitops resources type: string repositoryURL: description: RepositoryURL is the gitops repository URL for the component type: string resourceGenerationSkipped: description: ResourceGenerationSkipped is whether or not GitOps resource generation was skipped for the component type: boolean type: object lastBuiltCommit: description: |- The last built commit id (SHA-1 checksum) from the latest component build. Example: 41fbdb124775323f58fd5ce93c70bb7d79c20650. !!! Will be removed when we remove old model SHOULD this be in version specific section?? type: string lastPromotedImage: description: |- The last digest image component promoted with. Example: quay.io/someorg/somerepository@sha256:5ca85b7f7b9da18a9c4101e81ee1d9bac35ac2b0b0221908ff7389204660a262. !!! Will be removed when we remove old model SHOULD this be in version specific section?? type: string message: description: |- General error message, not specific to any version (version-specific errors are in versions[].message). Example: "Spec.ContainerImage is not set" or "GitHub App is not installed". type: string pac-repository: description: Name of Repository CR for the component. type: string repository-settings: description: Identifies which additional settings are used for the Repository CR. properties: comment-strategy: description: |- When specified, will set value of `comment_strategy` in the Repository CR Optional. type: string github-app-token-scope-repos: description: |- When specified, will add values to `github_app_token_scope_repos` in the Repository CR Optional. items: type: string type: array type: object versions: description: |- All versions which were processed by onboarding. When version is removed from the spec, offboarding will remove it from the status. items: properties: configuration-merge-url: description: |- Link with onboarding PR if requested by 'spec.actions.create-pipeline-configuration-pr'. Only present if onboarding was successful. Example: https://github.com/user/repo/pull/1 type: string message: description: |- Version specific error message. Example: "pipeline for this version doesn't exist" type: string name: description: Name for the version. type: string onboarding-status: description: Onboarding status will be either 'succeeded' or 'failed' ('disabled' won't be there because we will just remove specific version section). type: string onboarding-time: description: |- Timestamp for when onboarding happened. Only present if onboarding was successful. Example: "29 May 2024 15:11:16 UTC" type: string revision: description: Git revision (branch) for the version. type: string skip-builds: description: Identifies that builds for the revision in the version are disabled. type: boolean type: object type: array webhook: description: |- Webhook URL generated by Builds !!! Will be removed when we remove old model type: string type: object required: - spec type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: deploymenttargetclaims.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: DeploymentTargetClaim listKind: DeploymentTargetClaimList plural: deploymenttargetclaims singular: deploymenttargetclaim scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: DeploymentTargetClaim is the Schema for the deploymenttargetclaims API. It represents a request for a DeploymentTarget. 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: DeploymentTargetClaimSpec defines the desired state of DeploymentTargetClaim properties: deploymentTargetClassName: type: string targetName: type: string required: - deploymentTargetClassName type: object status: description: DeploymentTargetClaimStatus defines the observed state of DeploymentTargetClaim properties: conditions: description: Conditions is an array of the DeploymentTargetClaim's status conditions items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array phase: type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: deploymenttargetclasses.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: DeploymentTargetClass listKind: DeploymentTargetClassList plural: deploymenttargetclasses singular: deploymenttargetclass scope: Cluster versions: - name: v1alpha1 schema: openAPIV3Schema: description: DeploymentTargetClass is the Schema for the deploymenttargetclasses API. Defines DeploymentTarget properties that should be abstracted from the controller/user that creates a DTC and wants a DT to be provisioned automatically for it. 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: DeploymentTargetClassSpec defines the desired state of DeploymentTargetClass properties: parameters: description: Parameters are used to forward additional information to the provisioner. type: object provisioner: type: string reclaimPolicy: description: The reclaimPolicy field will tell the provisioner what to do with the DT once its corresponding DTC is deleted, the values can be Retain or Delete. type: string required: - provisioner - reclaimPolicy type: object status: description: DeploymentTargetClassStatus defines the observed state of DeploymentTargetClass type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: deploymenttargets.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: DeploymentTarget listKind: DeploymentTargetList plural: deploymenttargets singular: deploymenttarget scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: DeploymentTarget is the Schema for the deploymenttargets API. A deployment target, usually a K8s api endpoint. The credentials for connecting to the target will be stored in a secret which will be referenced in the clusterCredentialsSecret field 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: DeploymentTargetSpec defines the desired state of DeploymentTarget properties: claimRef: type: string deploymentTargetClassName: type: string kubernetesCredentials: description: DeploymentTargetKubernetesClusterCredentials defines the K8s cluster credentials for the DeploymentTarget. properties: allowInsecureSkipTLSVerify: description: Indicates that a Service should not check the TLS certificate when connecting to this target. type: boolean apiURL: description: APIURL is a reference to a cluster API url. type: string clusterCredentialsSecret: description: ClusterCredentialsSecret is a reference to the name of k8s Secret that contains a kubeconfig. type: string defaultNamespace: type: string required: - allowInsecureSkipTLSVerify - apiURL - clusterCredentialsSecret - defaultNamespace type: object required: - deploymentTargetClassName - kubernetesCredentials type: object status: description: DeploymentTargetStatus defines the observed state of DeploymentTarget properties: conditions: description: Conditions is an array of the DeploymentTarget's status conditions items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array phase: type: string type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: environments.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: Environment listKind: EnvironmentList plural: environments shortNames: - env singular: environment scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: Environment is the Schema for the environments API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: EnvironmentSpec defines the desired state of Environment properties: configuration: description: Configuration contains environment-specific details for Applications/Components that are deployed to the Environment. properties: env: description: Env is an array of standard environment vairables items: description: EnvVarPair describes environment variables to use for the component properties: name: description: Name is the environment variable name type: string value: description: Value is the environment variable value type: string required: - name - value type: object type: array target: description: Target is used to reference a DeploymentTargetClaim for a target Environment. The Environment controller uses the referenced DeploymentTargetClaim to access its bounded DeploymentTarget with cluster credential secret. properties: deploymentTargetClaim: description: DeploymentTargetClaimConfig specifies the DeploymentTargetClaim details for a given Environment. properties: claimName: type: string required: - claimName type: object required: - deploymentTargetClaim type: object type: object deploymentStrategy: description: DeploymentStrategy is the promotion strategy for the Environment See Environment API doc for details. type: string displayName: description: DisplayName is the user-visible, user-definable name for the environment (but not used for functional requirements) type: string parentEnvironment: description: 'ParentEnvironment references another Environment defined in the namespace: when automated promotion is enabled, promotions to the parent environment will cause this environment to be promoted to. See Environment API doc for details.' type: string tags: description: Tags are a user-visisble, user-definable set of tags that can be applied to the environment items: type: string type: array type: description: 'DEPRECATED: Type is whether the Environment is a POC or non-POC environment - This field is deprecated, and should not be used.' type: string unstableConfigurationFields: description: 'UnstableConfigurationFields are experimental/prototype: the API has not been finalized here, and is subject to breaking changes. See comment on UnstableEnvironmentConfiguration for details.' properties: clusterType: description: ClusterType indicates whether the target environment is Kubernetes or OpenShift type: string kubernetesCredentials: description: KubernetesClusterCredentials contains cluster credentials for a target Kubernetes/OpenShift cluster. properties: allowInsecureSkipTLSVerify: description: Indicates that ArgoCD/GitOps Service should not check the TLS certificate. type: boolean apiURL: description: APIURL is a reference to a cluster API url defined within the kube config file of the cluster credentials secret. type: string clusterCredentialsSecret: description: "ClusterCredentialsSecret is a reference to the name of k8s Secret, defined within the same namespace as the Environment resource, that contains a kubeconfig. The Secret must be of type 'managed-gitops.redhat.com/managed-environment' \n See this temporary URL for details: https://github.com/redhat-appstudio/managed-gitops/tree/main/examples/m6-demo#gitopsdeploymentmanagedenvironment-resource" type: string clusterResources: description: "ClusterResources is used in conjuction with the Namespace field. If the Namespaces field is non-empty, this field will be used to determine whether Argo CD should attempt to manage cluster-scoped resources. - If Namespaces field is empty, this field is not used. - If you are familiar with Argo CD: this field is equivalent to the field of the same name in the Argo CD Cluster Secret. \n Optional, default to false." type: boolean ingressDomain: description: IngressDomain is the cluster's ingress domain. For example, in minikube it would be $(minikube ip).nip.io and in OCP it would look like apps.xyz.rhcloud.com. If clusterType == "Kubernetes", ingressDomain is mandatory and is enforced by the webhook validation type: string namespaces: description: "Namespaces allows one to indicate which Namespaces the Secret's ServiceAccount has access to. \n Optional, defaults to empty. If empty, it is assumed that the ServiceAccount has access to all Namespaces. \n The ServiceAccount that GitOps Service/Argo CD uses to deploy may not have access to all of the Namespaces on a cluster. If not specified, it is assumed that the Argo CD ServiceAccount has read/write at cluster-scope. - If you are familiar with Argo CD: this field is equivalent to the field of the same name in the Argo CD Cluster Secret." items: type: string type: array targetNamespace: description: TargetNamespace is the default destination target on the cluster for deployments. This Namespace will be used for any GitOps repository K8s resources where the `.metadata.Namespace` field is not specified. type: string required: - allowInsecureSkipTLSVerify - apiURL - clusterCredentialsSecret - targetNamespace type: object type: object required: - deploymentStrategy - displayName type: object status: description: EnvironmentStatus defines the observed state of Environment properties: conditions: items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: promotionruns.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: PromotionRun listKind: PromotionRunList plural: promotionruns shortNames: - apr - promotion singular: promotionrun scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: PromotionRun is the Schema for the promotionruns API properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: description: PromotionRunSpec defines the desired state of PromotionRun properties: application: description: Application is the name of an Application resource defined within the namespaced, and which is the target of the promotion type: string automatedPromotion: description: 'AutomatedPromotion is for fields specific to automated promotion Only one field should be defined: either ''manualPromotion'' or ''automatedPromotion'', but not both.' properties: initialEnvironment: description: 'InitialEnvironment: start iterating through the digraph, beginning with the value specified in ''initialEnvironment''' type: string required: - initialEnvironment type: object manualPromotion: description: 'ManualPromotion is for fields specific to manual promotion. Only one field should be defined: either ''manualPromotion'' or ''automatedPromotion'', but not both.' properties: targetEnvironment: description: TargetEnvironment is the environment to promote to type: string required: - targetEnvironment type: object snapshot: description: Snapshot refers to the name of a Snapshot resource defined within the namespace, used to promote container images between Environments. type: string required: - application - snapshot type: object status: description: PromotionRunStatus defines the observed state of PromotionRun properties: activeBindings: description: 'ActiveBindings is the list of active bindings currently being promoted to: - For an automated promotion, there can be multiple active bindings at a time (one for each env at a particular tree depth) - For a manual promotion, there will be only one.' items: type: string type: array completionResult: description: CompletionResult indicates success/failure once the promotion has completed all work. CompletionResult will only have a value if State field is 'Complete'. type: string conditions: items: description: PromotionRunCondition contains details about an PromotionRun condition, which is usually an error or warning properties: lastProbeTime: description: LastProbeTime is the last time the condition was observed. format: date-time type: string lastTransitionTime: description: LastTransitionTime is the last time the condition transitioned from one status to another. format: date-time type: string message: description: Message contains human-readable message indicating details about the last condition. type: string reason: description: Reason is a unique, one-word, CamelCase reason for the condition's last transition. type: string status: description: Status is the status of the condition. type: string type: description: Type is a PromotionRun condition type type: string required: - status - type type: object type: array environmentStatus: description: EnvironmentStatus represents the set of steps taken during the current promotion items: description: 'PromotionRunEnvironmentStatus represents the set of steps taken during the current promotion: - manual promotions will only have a single step. - automated promotions may have one or more steps, depending on how many environments have been promoted to.' properties: displayStatus: description: DisplayStatus is human-readible description of the current state/status. type: string environmentName: description: EnvironmentName is the name of the environment that was promoted to in this step type: string status: description: Status is/was the result of promoting to that environment. type: string step: description: Step is the sequential number of the step in the array, starting with 1 type: integer required: - displayStatus - environmentName - status - step type: object type: array promotionStartTime: description: PromotionStartTime is set to the value when the PromotionRun Reconciler first started the promotion. format: date-time type: string state: description: State indicates whether or not the overall promotion (either manual or automated is complete) type: string required: - state type: object type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 creationTimestamp: null name: snapshotenvironmentbindings.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: SnapshotEnvironmentBinding listKind: SnapshotEnvironmentBindingList plural: snapshotenvironmentbindings shortNames: - aseb - binding singular: snapshotenvironmentbinding scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: "The `SnapshotEnvironmentBinding` resource specifies the deployment relationship between (a single application, a single environment, and a single snapshot) combination. \n It can be thought of as a 3-tuple that defines what Application should be deployed to what Environment, and which Snapshot should be deployed (Snapshot being the specific component container image versions of that Aplication that should be deployed to that Environment). \n **Note**: There should not exist multiple SnapshotEnvironmentBinding CRs in a Namespace that share the same Application and Environment value. For example: - Good: - SnapshotEnvironmentBinding A: (application=appA, environment=dev, snapshot=my-snapshot) - SnapshotEnvironmentBinding B: (application=appA, environment=staging, snapshot=my-snapshot) \n - Bad: - SnapshotEnvironmentBinding A: (application=*appA*, environment=*staging*, snapshot=my-snapshot) - SnapshotEnvironmentBinding B: (application=*appA*, environment=*staging*, snapshot=second-snapshot)" 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: See 'SnapshotEnvironmentBinding' resource for details of this resource. SnapshotEnvironmentBindingSpec defines the desired state of SnapshotEnvironmentBinding. properties: application: description: Application is a reference to the Application resource (defined in the same namespace) that we are deploying as part of this SnapshotEnvironmentBinding. Required type: string components: description: Component-specific configuration information, used when generating GitOps repository resources. Required. items: description: BindingComponent contains individual component data properties: configuration: description: Configuration describes GitOps repository customizations that are specific to the the component-application-environment combination. - Values defined in this struct will overwrite values from Application/Environment/Component. Optional properties: env: description: Env describes environment variables to use for the component. Optional. items: description: EnvVarPair describes environment variables to use for the component properties: name: description: Name is the environment variable name type: string value: description: Value is the environment variable value type: string required: - name - value type: object type: array replicas: description: Replicas defines the number of replicas to use for the component Optional type: integer resources: description: Resources defines the Compute Resources required by the component. Optional. properties: 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. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object type: object name: description: Name is the name of the component. type: string required: - name type: object type: array environment: description: Environment is the environment resource (defined in the namespace) that the binding will deploy to. Required type: string snapshot: description: Snapshot is the Snapshot resource (defined in the namespace) that contains the container image versions for the components of the Application. Required type: string required: - application - components - environment - snapshot type: object status: description: SnapshotEnvironmentBindingStatus defines the observed state of SnapshotEnvironmentBinding properties: bindingConditions: description: BindingConditions will contain user-oriented error messages from the SnapshotEnvironmentBinding reconciler. items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array componentDeploymentConditions: description: ComponentDeploymentConditions describes the deployment status of all of the Components of the Application. This status is updated by the Gitops Service's SnapshotEnvironmentBinding controller items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array components: description: Components describes a component's GitOps repository information. This status is updated by the Application Service controller. items: description: BindingComponentStatus contains the status of the components properties: generatedRouteName: description: GeneratedRouteName is the name of the route that was generated for the Component, if a Route was generated. type: string gitopsRepository: description: GitOpsRepository contains the Git URL, path, branch, and most recent commit id for the component properties: branch: description: Branch is the branch to use when accessing the GitOps repository type: string commitID: description: CommitID contains the most recent commit ID for which the Kubernetes resources of the Component were modified. type: string generatedResources: description: GeneratedResources contains the list of GitOps repository resources generated by the application service controller in the overlays/ dir, for example, 'deployment-patch.yaml'. This is stored to differentiate between application-service controller generated resources vs resources added by a user items: type: string type: array path: description: 'Path is a pointer to a folder in the GitOps repo, containing a kustomization.yaml NOTE: Each component-env combination must have it''s own separate path' type: string url: description: URL is the Git repository URL e.g. The Git repository that contains the K8s resources to deployment for the component of the application. type: string required: - branch - commitID - generatedResources - path - url type: object name: description: Name is the name of the component. type: string required: - gitopsRepository - name type: object type: array gitopsDeployments: description: GitOpsDeployments describes the set of GitOpsDeployment resources that are owned by the SnapshotEnvironmentBinding, and are deploying the Components of the Application to the target Environment. To determine the health/sync status of a binding, you can look at the GitOpsDeployments decribed here. items: description: "BindingStatusGitOpsDeployment describes an individual reference to a GitOpsDeployment resources that is used to deploy this binding. \n To determine the health/sync status of a binding, you can look at the GitOpsDeployments decribed here." properties: commitID: description: GitOpsDeploymentCommitID is the commit ID of the GitOpsDeployment type: string componentName: description: ComponentName is the name of the component in the (component, gitopsdeployment) pair type: string gitopsDeployment: description: GitOpsDeployment is a reference to the name of a GitOpsDeployment resource which is used to deploy the binding. The Health/sync status for the binding can thus be read from the references GitOpsDeployment type: string health: description: GitOpsDeploymentHealthStatus is the health status of the deployment owned by the binding type: string syncStatus: description: GitOpsDeploymentSyncStatus is the sync status of the deployment owned by the binding type: string required: - componentName type: object type: array gitopsRepoConditions: description: Condition describes operations on the GitOps repository, for example, if there were issues with generating/processing the repository. This status is updated by the Application Service controller. items: description: "Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" properties: lastTransitionTime: description: lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object required: - spec type: object served: true storage: true subresources: status: {} --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.17.2 name: snapshots.appstudio.redhat.com spec: group: appstudio.redhat.com names: kind: Snapshot listKind: SnapshotList plural: snapshots shortNames: - as - snapshot singular: snapshot scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: Snapshot is the Schema for the snapshots API properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: SnapshotSpec defines the desired state of Snapshot properties: application: description: Application is a reference to the name of an Application resource within the same namespace, which defines the target application for the Snapshot (when used with a Binding). type: string artifacts: description: |- Artifacts is a placeholder section for 'artifact links' we want to maintain to other AppStudio resources. See Environment API doc for details. properties: unstableFields: description: |- NOTE: This field (and struct) are placeholders. - Until this API is stabilized, consumers of the API may store any unstructured JSON/YAML data here, but no backwards compatibility will be preserved. x-kubernetes-preserve-unknown-fields: true type: object componentGroup: description: ComponentGroup is a reference to the name of a ComponentGroup resource within the same namespace, which defines the target ComponentGroup for the Snapshot. type: string components: description: Components field contains the sets of components to deploy as part of this snapshot. items: description: SnapshotComponent properties: containerImage: description: ContainerImage is the container image to use when deploying the component, as part of a Snapshot type: string name: description: Name is the name of the component type: string source: description: |- Source describes the Component source. Optional. properties: dockerfileUri: description: |- Dockerfile path for all versions, unless explicitly specified for a version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile" Optional. type: string git: description: |- Git Source for a Component. Optional. !!! Will be removed when we remove old model properties: context: description: |- A relative path inside the git repo containing the component Example: folderA/folderB/gitops. Optional. type: string devfileUrl: description: |- If specified, the devfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Example: https://raw.githubusercontent.com/devfile-samples/devfile-sample-java-springboot-basic/main/devfile.yaml. Optional. type: string dockerfileUrl: description: |- If specified, the dockerfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. Optional. type: string revision: description: |- Specify a branch/tag/commit id. If not specified, default is `main`/`master`. Example: devel. Optional. type: string url: description: An HTTPS URL representing the git repository to create the component from. type: string required: - url type: object url: description: |- Git repository URL for the component. Optional. !!! Will be required when we remove old model type: string versions: description: |- List of all versions for this component. Optional. !!! Will be required when we remove old model items: properties: build-pipeline: description: |- Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Pipeline used for the version; when omitted, the default pipeline will be used from 'spec.default-build-pipeline'. Optional. properties: pull: description: |- Pipeline used for pull pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object pull-and-push: description: |- Pipeline used for pull and push pipeline runs. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object push: description: |- Pipeline used for push pipeline run. Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. Optional. properties: pipelineref-by-git-resolver: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, specifying repository with a pipeline definition. Optional. properties: pathInRepo: description: |- Path to the pipeline definition file within the repository. Example: pipeline/push.yaml Required. type: string revision: description: |- Git revision (branch, tag, or commit) to use. Example: main Required. type: string url: description: |- Git repository URL containing the pipeline definition. Example: https://github.com/custom-pipelines/pipelines.git Required. type: string required: - pathInRepo - revision - url type: object pipelineref-by-name: description: |- Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. Such pipeline definition has to be in .tekton. Optional. type: string pipelinespec-from-bundle: description: |- Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. Pipeline name is based on build-pipeline-config CM in build-service NS. When 'latest' bundle is specified, bundle image will be used from CM. When bundle is specified to specific image bundle, then that one will be used and pipeline name will be used to fetch pipeline from that bundle. Optional. properties: bundle: description: |- Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, or specify a specific bundle image. Required. type: string name: description: |- Pipeline name to fetch from the bundle, or from build-pipeline-config CM. Required. type: string required: - bundle - name type: object type: object type: object context: description: |- Context directory for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "" (empty string, root of repository). Optional. type: string dockerfileUri: description: |- Dockerfile path for the version. Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. Default: "Dockerfile". Optional. type: string name: description: |- User defined name for the version. After sanitization (lower case, removing spaces, etc) all version names must be unique. Required. type: string revision: description: |- Git branch to use for the version. Required. type: string skip-builds: description: |- When 'true' it will disable builds for a revision in the version. Default: false. Optional. type: boolean required: - name - revision type: object type: array type: object version: description: |- Version is the component verison. Only required if multiple versions of the same Component are in the Snapshot type: string required: - containerImage - name type: object type: array displayDescription: description: DisplayDescription is a user-visible, user definable description for the resource (and is not used for any functional behaviour) type: string displayName: description: DisplayName is a user-visible, user-definable name for the resource (and is not used for any functional behaviour) type: string type: object status: description: SnapshotStatus defines the observed state of Snapshot properties: conditions: description: Conditions represent the latest available observations for the Snapshot items: description: Condition contains details for one aspect of the current state of this API Resource. properties: lastTransitionTime: description: |- lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: description: |- message is a human readable message indicating details about the transition. This may be an empty string. maxLength: 32768 type: string observedGeneration: description: |- observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: description: |- reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ type: string status: description: status of the condition, one of True, False, Unknown. enum: - "True" - "False" - Unknown type: string type: description: type of condition in CamelCase or in foo.example.com/CamelCase. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string required: - lastTransitionTime - message - reason - status - type type: object type: array type: object type: object served: true storage: true subresources: status: {}