apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: (devel) creationTimestamp: null name: releasepayloads.release.openshift.io spec: group: release.openshift.io names: kind: ReleasePayload listKind: ReleasePayloadList plural: releasepayloads shortNames: - rp singular: releasepayload scope: Namespaced versions: - name: v1alpha1 schema: openAPIV3Schema: description: "ReleasePayload encapsulates the information for the creation of a ReleasePayload and aggregates the results of its respective verification tests. \n The release-controller is configured to monitor imagestreams, in a specific namespace, that are annotated with a ReleaseConfig. The ReleaseConfig is a definition of how releases are calculated. When a ReleasePayload is generated, it will be generated in the same namespace as the imagstream that produced it. If/when an update occurs, to one of these imagestreams, the release-controller will: 1. Create a point-in-time mirror of the updated imagestream 2. Create a new Release from the mirror - Any errors before this point will cause the release to marked `Failed` 3. Launches a set of release analysis jobs 4. Launches an aggregation job 5. Launches a set of release verification jobs - These can either be `Blocking Jobs` which will prevent release acceptance or `Informing Jobs` which will not prevent release acceptance. 6. For Stable releases, launches a set of jobs to test a subset of the supported upgrades defined inside the release image itself. While these jobs do not have any real bearing on the acceptance or rejection of a ReleasePayload, they will be monitored and their respective results captured. The hope would be to use these results to provide a convenient way to override a \"Rejected\" release caused by a blocking upgrade job. 7. Monitors for job completions - If all `Blocking Jobs` complete successfully, then the release is `Accepted`. If any `Blocking Jobs` fail, the release will be marked `Rejected` 8. Publishes all results to the respective webpage \n Example: ART: 1. Publishes an update to the `ocp/4.9-art-latest` imagestream \n Release-controller: 1. Creates a mirror named: `ocp/4.9-art-latest-2021-09-27-105859` 2. Creates a ReleasePayload: `ocp/4.9.0-0.nightly-2021-09-27-105859` -Labels: release.openshift.io/imagestream=release release.openshift.io/imagestreamtag-name=4.9.0-0.nightly-2021-09-27-105859 3. Creates an OpenShift Release: `ocp/release:4.9.0-0.nightly-2021-09-27-105859` 4. Update ReleasePayload conditions with results of release creation job If the release was created successfully, the release-controller: 5. Launches: 4.9.0-0.nightly-2021-09-27-105859-aggregated--analysis- 6. Launches: 4.9.0-0.nightly-2021-09-27-105859-aggregated--aggregator 7. Launches: 4.9.0-0.nightly-2021-09-27-105859- \n When ART promotes a GA release, they will assemble releases themselves, publish it to quay.io, and then update the \"stable\" release stream (i.e. ocp/release) with the corresponding payload. In this scenario, the release-controller will perform all the same steps, mentioned above, but the mirror will be named after the \"official\" release (i.e. 4.9.7) and not not contain a timestamp. Likewise, any verification tests will only contain the release name and the name of the verification test as defined in the ReleaseConfig. The release-controller will also launch a small sample of jobs to test upgrades from the list of upgrade versions defined inside the release image itself: \n For example: $ oc adm release info quay.io/openshift-release-dev/ocp-release:4.11.22-x86_64 \n The list of supported upgrades is: 4.10.16, 4.10.17, 4.10.18, 4.10.20, 4.10.21, 4.10.22, 4.10.23, 4.10.24, 4.10.25, 4.10.26, 4.10.27, 4.10.28, 4.10.29, 4.10.30, 4.10.31, 4.10.32, 4.10.33, 4.10.34, 4.10.35, 4.10.36, 4.10.37, 4.10.38, 4.10.39, 4.10.40, 4.10.41, 4.10.42, 4.10.43, 4.10.44, 4.10.45, 4.10.46, 4.10.47, 4.11.0, 4.11.1, 4.11.2, 4.11.3, 4.11.4, 4.11.5, 4.11.6, 4.11.7, 4.11.8, 4.11.9, 4.11.10, 4.11.11, 4.11.12, 4.11.13, 4.11.14, 4.11.16, 4.11.17, 4.11.18, 4.11.19, 4.11.20, 4.11.21 \n From the list above, the release-controller will launch a subset of jobs named like: 4.11.22-upgrade-from-4.10.16- 4.11.22-upgrade-from-4.11.0- \n Where is defined in the Release Configuration definitions in the openshift/release repo: https://github.com/openshift/release/blob/e5c9122144c09c4095f0f87888b9685712dc7b1e/core-services/release-controller/_releases/release-ocp-4.y-stable.json#L20-L30 \n Mapping from a Release to ReleasePayload: A ReleasePayload will always be named after the Release that it corresponds to, with the addition of a random string suffix. Both objects will reside in the same namespace. \n For a release: `ocp/release:4.9.0-0.nightly-2021-09-27-105859` A corresponding ReleasePayload will exist: `ocp/4.9.0-0.nightly-2021-09-27-105859` \n Mapping from ReleasePayload to Release: A ReleasePayload is decorated with a couple labels that will point back to the Release that it corresponds to: - release.openshift.io/imagestream=release - release.openshift.io/imagestreamtag-name=4.9.0-0.nightly-2021-09-27-105859 \n Because the ReleasePayload and the Release will both reside in the same namespace, the release that created the ReleasePayload will be located here: \n /: \n Similarly, the ReleasePayload object itself also has the PayloadCoordinates (.spec.payloadCoordinates) that point back to the Release as well: \n spec: payloadCoordinates: imagestreamName: release imagestreamTagName: 4.9.0-0.nightly-2021-09-27-105859 namespace: ocp \n The release that created the ReleasePayload will be located here: \n /: \n Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support." type: object 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: Spec the inputs used to create the ReleasePayload type: object properties: payloadCoordinates: description: PayloadCoordinates the coordinates of the imagestreamtag that this ReleasePayload was created from type: object properties: imagestreamName: description: 'ImagestreamName is the location of the configured "release" imagestream - This is a configurable parameter ("to") passed into the release-controller via the ReleaseConfig''s defined here: https://github.com/openshift/release/blob/master/core-services/release-controller/_releases' type: string imagestreamTagName: description: ImagestreamTagName is the name of the actual release type: string namespace: description: Namespace must match that of the ReleasePayload type: string streamName: description: StreamName is the name of the release stream this payload belongs to (e.g. "4.19.0-0.nightly") type: string payloadCreationConfig: description: PayloadCreationConfig the configuration used when creating the ReleasePayload type: object properties: prowCoordinates: description: ProwCoordinates houses the configuration for Prow type: object properties: namespace: description: Namespace the namespace where Prow is configured to run prowv1.ProwJobs type: string releaseCreationCoordinates: description: ReleaseCreationCoordinates houses the configuration of the release creation job type: object properties: namespace: description: Namespace the namespace where the release creation batchv1.Jobs are created type: string releaseCreationJobName: description: ReleaseCreationJobName the name the release creation batchv1.Job type: string releaseMirrorCoordinates: description: ReleaseMirrorCoordinates houses the configuration of the release mirror job type: object properties: namespace: description: Namespace the namespace where the release mirror batchv1.Jobs are created type: string releaseMirrorJobName: description: ReleaseCreationJobName the name the release mirror batchv1.Job type: string payloadOverride: description: PayloadOverride specified when manual intervention is required to manually Accept or Reject a ReleasePayload type: object properties: override: description: Override specifies the ReleasePayloadOverride to apply to the ReleasePayload type: string reason: description: Reason is a human-readable string that specifies the reason for manually overriding the Acceptance/Rejections of a ReleasePayload type: string payloadType: description: PayloadType specifies how the release payload is stored. If "Local" (the default), the release is created in a local imagestream. If "Reference", the release is created directly in a remote repository with no local imagestream copy. type: string default: Local enum: - Local - Reference payloadVerificationConfig: description: PayloadVerificationConfig the configuration that will be used to verify this ReleasePayload type: object properties: blockingJobs: description: BlockingJobs are release verification jobs that will prevent a ReleasePayload from being Accepted if the job fails type: array items: description: CIConfiguration is an Openshift CI system's job definition of a verification test to run against a ReleasePayload type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the actual name of the prowjob definition as stored in the CI Job Configuration. This value is used to lookup and read in the prowjob for processing by the release-controller type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test. This value will be used as the key to look up the configuration and the results of the respective verification test type: string maxRetries: description: MaxRetries Maximum retry attempts for the job. Defaults to 0 - do not retry on fail type: integer qualifiers: description: 'Qualifiers holds the releasequalifiers.ReleaseQualifiers definitions that enable, and override (if specified), any settings defined in: https://github.com/openshift/release/blob/master/core-services/release-controller/release-qualifiers.yaml' type: object additionalProperties: description: ReleaseQualifier defines the configuration for a single release qualifier It contains metadata about the qualifier and its notification settings type: object properties: approval: description: Approval indicates whether this qualifier is earned via Team Approval Using a pointer to distinguish between "not set" and "set to false" type: boolean badgeName: description: BadgeName short name displayed, as UI badges, in job level summaries type: string description: description: Description contains detailed information about the qualifier for display in tooltips or detailed views type: string enabled: description: Enabled indicates whether this qualifier is currently active Using a pointer to distinguish between "not set" and "set to false" type: boolean failureLabels: description: FailureLabels labels to apply when qualifying jobs fail type: array items: type: string notifications: description: Notifications contains configuration for notification channels type: object properties: jira: description: Jira contains Jira-specific notification configuration type: object properties: assignee: description: Assignee is the default assignee for tickets created by this qualifier type: string component: description: Component is the Jira component this qualifier relates to type: string description: description: Description is the default description text for Jira tickets type: string escalations: description: Escalations defines the escalation rules for Jira notifications Each escalation specifies when and how to create tickets based on failure patterns type: array items: description: 'Escalation defines a single escalation rule for Jira notifications It specifies the conditions and actions for creating Jira tickets Multiple criteria can be combined to create sophisticated escalation rules: - Simple: Failures=3 triggers after 3 consecutive failures - Windowed: OverLastRuns=10, Failures=2 triggers if >=2 of last 10 runs failed - Percentage: OverLastRuns=10, PassPercentage=60 triggers if <60% of last 10 runs passed - Time-bounded: OverPeriod="2d", OverLastRuns=20, PassPercentage=80 considers last 20 runs or runs from last 2 days (whichever provides more samples)' type: object properties: failures: description: Failures is the number of failures required to trigger this escalation When used alone, this counts consecutive failures When combined with OverLastRuns, this counts total failures in the window type: integer mentions: description: Mentions is a list of users to mention in the Jira ticket type: array items: type: string name: description: Name is the unique identifier for this escalation level type: string needsInfo: description: NeedsInfo is a list of users to add as watchers or request information from type: array items: type: string overLastRuns: description: OverLastRuns defines the window of recent runs to consider If omitted when Failures is set, defaults to Failures (consecutive mode) Can be combined with Failures, PassPercentage, or OverPeriod type: integer minimum: 1 overPeriod: description: 'OverPeriod defines a time window for considering runs (e.g., "2d" for 2 days) Used with OverLastRuns to expand the sample set: whichever provides more runs is used Format examples: "1h", "24h", "2d", "1w"' type: string pattern: ^[1-9]\d*(h|d|w)$ passPercentage: description: PassPercentage defines the minimum pass rate required (0-100) Escalates when the pass rate falls below this threshold Must be used with OverLastRuns to define the evaluation window type: integer maximum: 100 minimum: 0 priority: description: Priority is the Jira priority level for tickets created at this escalation type: string project: description: Project is the Jira project key where tickets will be created type: string summary: description: Summary is the default summary text for Jira tickets type: string thread: description: Thread identifier for separating notifications across jobs When multiple jobs contribute to the same qualifier, different thread values will result in separate Jira tickets being created type: string payloadBadgeStatus: description: PayloadBadgeStatus indicates if/when the qualifier's BadgeName should be displayed at the ReleasePayload level type: string summary: description: Summary provides a brief description of what this qualifier represents type: string informingJobs: description: InformingJobs are release verification jobs used to execute tests against a ReleasePayload type: array items: description: CIConfiguration is an Openshift CI system's job definition of a verification test to run against a ReleasePayload type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the actual name of the prowjob definition as stored in the CI Job Configuration. This value is used to lookup and read in the prowjob for processing by the release-controller type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test. This value will be used as the key to look up the configuration and the results of the respective verification test type: string maxRetries: description: MaxRetries Maximum retry attempts for the job. Defaults to 0 - do not retry on fail type: integer qualifiers: description: 'Qualifiers holds the releasequalifiers.ReleaseQualifiers definitions that enable, and override (if specified), any settings defined in: https://github.com/openshift/release/blob/master/core-services/release-controller/release-qualifiers.yaml' type: object additionalProperties: description: ReleaseQualifier defines the configuration for a single release qualifier It contains metadata about the qualifier and its notification settings type: object properties: approval: description: Approval indicates whether this qualifier is earned via Team Approval Using a pointer to distinguish between "not set" and "set to false" type: boolean badgeName: description: BadgeName short name displayed, as UI badges, in job level summaries type: string description: description: Description contains detailed information about the qualifier for display in tooltips or detailed views type: string enabled: description: Enabled indicates whether this qualifier is currently active Using a pointer to distinguish between "not set" and "set to false" type: boolean failureLabels: description: FailureLabels labels to apply when qualifying jobs fail type: array items: type: string notifications: description: Notifications contains configuration for notification channels type: object properties: jira: description: Jira contains Jira-specific notification configuration type: object properties: assignee: description: Assignee is the default assignee for tickets created by this qualifier type: string component: description: Component is the Jira component this qualifier relates to type: string description: description: Description is the default description text for Jira tickets type: string escalations: description: Escalations defines the escalation rules for Jira notifications Each escalation specifies when and how to create tickets based on failure patterns type: array items: description: 'Escalation defines a single escalation rule for Jira notifications It specifies the conditions and actions for creating Jira tickets Multiple criteria can be combined to create sophisticated escalation rules: - Simple: Failures=3 triggers after 3 consecutive failures - Windowed: OverLastRuns=10, Failures=2 triggers if >=2 of last 10 runs failed - Percentage: OverLastRuns=10, PassPercentage=60 triggers if <60% of last 10 runs passed - Time-bounded: OverPeriod="2d", OverLastRuns=20, PassPercentage=80 considers last 20 runs or runs from last 2 days (whichever provides more samples)' type: object properties: failures: description: Failures is the number of failures required to trigger this escalation When used alone, this counts consecutive failures When combined with OverLastRuns, this counts total failures in the window type: integer mentions: description: Mentions is a list of users to mention in the Jira ticket type: array items: type: string name: description: Name is the unique identifier for this escalation level type: string needsInfo: description: NeedsInfo is a list of users to add as watchers or request information from type: array items: type: string overLastRuns: description: OverLastRuns defines the window of recent runs to consider If omitted when Failures is set, defaults to Failures (consecutive mode) Can be combined with Failures, PassPercentage, or OverPeriod type: integer minimum: 1 overPeriod: description: 'OverPeriod defines a time window for considering runs (e.g., "2d" for 2 days) Used with OverLastRuns to expand the sample set: whichever provides more runs is used Format examples: "1h", "24h", "2d", "1w"' type: string pattern: ^[1-9]\d*(h|d|w)$ passPercentage: description: PassPercentage defines the minimum pass rate required (0-100) Escalates when the pass rate falls below this threshold Must be used with OverLastRuns to define the evaluation window type: integer maximum: 100 minimum: 0 priority: description: Priority is the Jira priority level for tickets created at this escalation type: string project: description: Project is the Jira project key where tickets will be created type: string summary: description: Summary is the default summary text for Jira tickets type: string thread: description: Thread identifier for separating notifications across jobs When multiple jobs contribute to the same qualifier, different thread values will result in separate Jira tickets being created type: string payloadBadgeStatus: description: PayloadBadgeStatus indicates if/when the qualifier's BadgeName should be displayed at the ReleasePayload level type: string summary: description: Summary provides a brief description of what this qualifier represents type: string payloadVerificationDataSource: description: PayloadVerificationDataSource where JobRunResult will be collected from. type: string default: BuildFarmLookup enum: - BuildFarmLookup - ImageStreamTagAnnotation x-kubernetes-validations: - rule: self == oldSelf message: PayloadVerificationDataSource is immutable upgradeJobs: description: UpgradeJobs are automatically generated jobs used to execute upgrade tests against a ReleasePayload type: array items: description: CIConfiguration is an Openshift CI system's job definition of a verification test to run against a ReleasePayload type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the actual name of the prowjob definition as stored in the CI Job Configuration. This value is used to lookup and read in the prowjob for processing by the release-controller type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test. This value will be used as the key to look up the configuration and the results of the respective verification test type: string maxRetries: description: MaxRetries Maximum retry attempts for the job. Defaults to 0 - do not retry on fail type: integer qualifiers: description: 'Qualifiers holds the releasequalifiers.ReleaseQualifiers definitions that enable, and override (if specified), any settings defined in: https://github.com/openshift/release/blob/master/core-services/release-controller/release-qualifiers.yaml' type: object additionalProperties: description: ReleaseQualifier defines the configuration for a single release qualifier It contains metadata about the qualifier and its notification settings type: object properties: approval: description: Approval indicates whether this qualifier is earned via Team Approval Using a pointer to distinguish between "not set" and "set to false" type: boolean badgeName: description: BadgeName short name displayed, as UI badges, in job level summaries type: string description: description: Description contains detailed information about the qualifier for display in tooltips or detailed views type: string enabled: description: Enabled indicates whether this qualifier is currently active Using a pointer to distinguish between "not set" and "set to false" type: boolean failureLabels: description: FailureLabels labels to apply when qualifying jobs fail type: array items: type: string notifications: description: Notifications contains configuration for notification channels type: object properties: jira: description: Jira contains Jira-specific notification configuration type: object properties: assignee: description: Assignee is the default assignee for tickets created by this qualifier type: string component: description: Component is the Jira component this qualifier relates to type: string description: description: Description is the default description text for Jira tickets type: string escalations: description: Escalations defines the escalation rules for Jira notifications Each escalation specifies when and how to create tickets based on failure patterns type: array items: description: 'Escalation defines a single escalation rule for Jira notifications It specifies the conditions and actions for creating Jira tickets Multiple criteria can be combined to create sophisticated escalation rules: - Simple: Failures=3 triggers after 3 consecutive failures - Windowed: OverLastRuns=10, Failures=2 triggers if >=2 of last 10 runs failed - Percentage: OverLastRuns=10, PassPercentage=60 triggers if <60% of last 10 runs passed - Time-bounded: OverPeriod="2d", OverLastRuns=20, PassPercentage=80 considers last 20 runs or runs from last 2 days (whichever provides more samples)' type: object properties: failures: description: Failures is the number of failures required to trigger this escalation When used alone, this counts consecutive failures When combined with OverLastRuns, this counts total failures in the window type: integer mentions: description: Mentions is a list of users to mention in the Jira ticket type: array items: type: string name: description: Name is the unique identifier for this escalation level type: string needsInfo: description: NeedsInfo is a list of users to add as watchers or request information from type: array items: type: string overLastRuns: description: OverLastRuns defines the window of recent runs to consider If omitted when Failures is set, defaults to Failures (consecutive mode) Can be combined with Failures, PassPercentage, or OverPeriod type: integer minimum: 1 overPeriod: description: 'OverPeriod defines a time window for considering runs (e.g., "2d" for 2 days) Used with OverLastRuns to expand the sample set: whichever provides more runs is used Format examples: "1h", "24h", "2d", "1w"' type: string pattern: ^[1-9]\d*(h|d|w)$ passPercentage: description: PassPercentage defines the minimum pass rate required (0-100) Escalates when the pass rate falls below this threshold Must be used with OverLastRuns to define the evaluation window type: integer maximum: 100 minimum: 0 priority: description: Priority is the Jira priority level for tickets created at this escalation type: string project: description: Project is the Jira project key where tickets will be created type: string summary: description: Summary is the default summary text for Jira tickets type: string thread: description: Thread identifier for separating notifications across jobs When multiple jobs contribute to the same qualifier, different thread values will result in separate Jira tickets being created type: string payloadBadgeStatus: description: PayloadBadgeStatus indicates if/when the qualifier's BadgeName should be displayed at the ReleasePayload level type: string summary: description: Summary provides a brief description of what this qualifier represents type: string x-kubernetes-validations: - rule: '!has(oldSelf.payloadVerificationDataSource) || has(self.payloadVerificationDataSource)' message: PayloadVerificationDataSource is required once set releaseCoordinates: description: ReleaseCoordinates list of ReleaseCoordinates where this ReleasePayload has been, or will be, published type: array items: description: ReleaseCoordinates specifies the location where this ReleasePayload has been, or will be, published to. type: object properties: digest: type: string repository: type: string tag: type: string status: description: Status is the current status of the ReleasePayload type: object properties: blockingJobResults: description: BlockingJobResults stores the results of all blocking jobs type: array items: description: JobStatus encapsulates the name of the job, all the results of the jobs, and an aggregated result of all the jobs type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the name of the prowjob definition as stored in the CI Job Configuration type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test type: string maxRetries: description: MaxRetries maximum times to retry a job type: integer results: description: JobRunResults contains the links for individual jobs type: array items: description: JobRunResult the results of a prowjob run The release-controller creates ProwJobs (prowv1.ProwJob) during the sync_ready control loop and relies on an informer to process jobs, that it created, as they are completed. The JobRunResults will be created, by the release-controller during the sync_ready loop and updated whenever any changes, to the respective job is received by the informer. type: object properties: completionTime: description: CompletionTime timestamp for when the prow pipeline controller observes the final state of the ProwJob For instance, if a client Aborts a ProwJob, the Pipeline controller will receive notification of the change and update the PtowJob's Status accordingly. type: string format: date-time coordinates: description: Coordinates the location of the job type: object properties: cluster: type: string name: type: string namespace: type: string humanProwResultsURL: description: HumanProwResultsURL the html link to the prow results type: string startTime: description: StartTime timestamp for when the prowjob was created type: string format: date-time state: description: State the current state of the job run type: string upgradeType: description: UpgradeType the type of upgrade performed via this job type: string state: description: AggregateState is the overall success/failure of all the executed jobs type: string conditions: description: Conditions communicates the state of the ReleasePayload. Supported conditions include PayloadCreated, PayloadFailed, PayloadAccepted, and PayloadRejected. type: array 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, \n 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 }" type: object required: - lastTransitionTime - message - reason - status - type 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. type: string format: date-time message: description: message is a human readable message indicating details about the transition. This may be an empty string. type: string maxLength: 32768 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. type: integer format: int64 minimum: 0 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. type: string maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ status: description: status of the condition, one of True, False, Unknown. type: string enum: - "True" - "False" - Unknown 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) type: string 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])$ informingJobResults: description: InformingJobResults stores the results of all informing jobs type: array items: description: JobStatus encapsulates the name of the job, all the results of the jobs, and an aggregated result of all the jobs type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the name of the prowjob definition as stored in the CI Job Configuration type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test type: string maxRetries: description: MaxRetries maximum times to retry a job type: integer results: description: JobRunResults contains the links for individual jobs type: array items: description: JobRunResult the results of a prowjob run The release-controller creates ProwJobs (prowv1.ProwJob) during the sync_ready control loop and relies on an informer to process jobs, that it created, as they are completed. The JobRunResults will be created, by the release-controller during the sync_ready loop and updated whenever any changes, to the respective job is received by the informer. type: object properties: completionTime: description: CompletionTime timestamp for when the prow pipeline controller observes the final state of the ProwJob For instance, if a client Aborts a ProwJob, the Pipeline controller will receive notification of the change and update the PtowJob's Status accordingly. type: string format: date-time coordinates: description: Coordinates the location of the job type: object properties: cluster: type: string name: type: string namespace: type: string humanProwResultsURL: description: HumanProwResultsURL the html link to the prow results type: string startTime: description: StartTime timestamp for when the prowjob was created type: string format: date-time state: description: State the current state of the job run type: string upgradeType: description: UpgradeType the type of upgrade performed via this job type: string state: description: AggregateState is the overall success/failure of all the executed jobs type: string qualifiersSummary: description: QualifiersSummary aggregates all qualifier-related information for this payload. Contains payload-level qualifier metadata (e.g., failure labels) and a map of per-qualifier summaries. type: object properties: failureLabels: description: FailureLabels are labels to apply to the payload when any qualifying jobs fail. Aggregated from the merged qualifier config for all qualifiers referenced by this payload. type: array items: type: string qualifiers: description: Qualifiers maps each QualifierId to summary information about that qualifier, including the list of jobs that reference it, aggregate state, and badge status. This field is computed from the Spec and provides a convenient lookup for UI and reporting purposes. type: object additionalProperties: description: ReleaseQualifierSummary contains summary information about a specific release qualifier including which jobs reference it, aggregate state, and badge status. type: object properties: aggregateState: description: AggregateState represents the overall state of all jobs for this qualifier Computed using the same logic as ComputeJobState type: string approval: description: Approval indicates this qualifier is approval-based (label-driven) rather than job-based. type: boolean badgeEarned: description: 'BadgeEarned indicates whether this qualifier badge has been earned Badges are earned when: qualifier.Enabled == true AND AggregateState == JobStateSuccess' type: boolean badgeName: description: BadgeName is the display name for the badge from the global config Empty if no badge is configured for this qualifier type: string badgePropagated: description: 'BadgePropagated indicates whether the earned badge should be displayed at payload level Computed from: BadgeEarned AND PayloadBadgeStatus rules Only true if badge is earned AND PayloadBadgeStatus allows propagation' type: boolean failureLabels: description: FailureLabels are labels to apply when this qualifier's jobs fail. Computed from the merged global and per-job qualifier config. type: array items: type: string jiraNotifications: description: 'JiraNotifications tracks per-thread Jira escalation notification state. The map key is the thread ID (format: ----).' type: object additionalProperties: description: JiraNotificationState tracks the notification state for a specific Jira escalation thread. This state is used to prevent duplicate notifications and detect when conditions abate. type: object properties: abated: description: Abated indicates conditions have improved since the last escalation. When true, an abatement comment has been left on the Jira ticket. Cleared when conditions worsen again and a new escalation triggers. type: boolean activeEscalation: description: ActiveEscalation is the name of the highest escalation level that has been notified type: string activePriority: description: ActivePriority is the Jira priority of the active escalation type: string issueKey: description: IssueKey is the Jira issue key (e.g., "OCPBUGS-123") created for this thread type: string lastTransitionTime: description: LastTransitionTime is when the notification state last changed type: string format: date-time jobs: description: Jobs lists all jobs that reference this qualifier type: array items: description: ReleaseQualifierJobReference represents a job that has been tagged with a specific qualifier type: object properties: ciConfigurationJobName: description: CIConfigurationJobName is the name of the prowjob definition as stored in the CI Job Configuration type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test type: string releaseCreationJobResult: description: ReleaseCreationJobResult stores the coordinates and status of the release creation job that is created, by the release-controller, to create the release imagestream defined by the PayloadCoordinates in the ReleasePayloadSpec. If the release creation job fails to get created or completes unsuccessfully, the ReleasePayload will automatically be "Rejected". If the release creation job is successful, the release-controller will then begin the validation process. type: object properties: coordinates: description: Coordinates the location of the batch/v1 Job type: object properties: name: type: string namespace: type: string message: description: Message is a human-readable message indicating details about the result of the release creation job type: string status: description: Status is the current status of the release creation job type: string releaseMirrorJobResult: description: ReleaseMirrorJobResult stores the coordinates and status of the release mirror job that is created, by the release-controller, to mirror the release, defined by the PayloadCoordinates in the ReleasePayloadSpec, to an external registry. If the release mirror job fails to get created or completes unsuccessfully, the ReleasePayload may still be processed and verified accordingly. If the release mirror job is successful, then this ReleasePayload will be available in the external registry. type: object properties: coordinates: description: Coordinates the location of the batch/v1 Job type: object properties: name: type: string namespace: type: string message: description: Message is a human-readable message indicating details about the result of the release mirror job type: string status: description: Status is the current status of the release mirror job type: string upgradeJobResults: description: UpgradeJobResults stores the results of generated upgrade jobs type: array items: description: JobStatus encapsulates the name of the job, all the results of the jobs, and an aggregated result of all the jobs type: object properties: analysisJobCount: description: AnalysisJobCount Number of asynchronous jobs to execute for release analysis. type: integer ciConfigurationJobName: description: CIConfigurationJobName is the name of the prowjob definition as stored in the CI Job Configuration type: string ciConfigurationName: description: CIConfigurationName the unique name given to a verification test type: string maxRetries: description: MaxRetries maximum times to retry a job type: integer results: description: JobRunResults contains the links for individual jobs type: array items: description: JobRunResult the results of a prowjob run The release-controller creates ProwJobs (prowv1.ProwJob) during the sync_ready control loop and relies on an informer to process jobs, that it created, as they are completed. The JobRunResults will be created, by the release-controller during the sync_ready loop and updated whenever any changes, to the respective job is received by the informer. type: object properties: completionTime: description: CompletionTime timestamp for when the prow pipeline controller observes the final state of the ProwJob For instance, if a client Aborts a ProwJob, the Pipeline controller will receive notification of the change and update the PtowJob's Status accordingly. type: string format: date-time coordinates: description: Coordinates the location of the job type: object properties: cluster: type: string name: type: string namespace: type: string humanProwResultsURL: description: HumanProwResultsURL the html link to the prow results type: string startTime: description: StartTime timestamp for when the prowjob was created type: string format: date-time state: description: State the current state of the job run type: string upgradeType: description: UpgradeType the type of upgrade performed via this job type: string state: description: AggregateState is the overall success/failure of all the executed jobs type: string served: true storage: true subresources: status: {}