Documentation
¶
Index ¶
- Constants
- Variables
- func RegisterDefaults(scheme *runtime.Scheme) error
- func Resource(resource string) schema.GroupResource
- type CIConfiguration
- type JobRunCoordinates
- type JobRunResult
- type JobRunState
- type JobRunUpgradeType
- type JobState
- type JobStatus
- type PayloadCoordinates
- type PayloadCreationConfig
- type PayloadVerificationConfig
- type PayloadVerificationDataSource
- type ProwCoordinates
- type ReleaseCoordinates
- type ReleaseCreationCoordinates
- type ReleaseCreationJobCoordinates
- type ReleaseCreationJobResult
- type ReleaseCreationJobStatus
- type ReleaseMirrorCoordinates
- type ReleaseMirrorJobCoordinates
- type ReleaseMirrorJobResult
- type ReleaseMirrorJobStatus
- type ReleasePayload
- type ReleasePayloadList
- type ReleasePayloadOverride
- type ReleasePayloadOverrideType
- type ReleasePayloadSpec
- type ReleasePayloadStatus
Constants ¶
const ( // ConditionPayloadCreated if false, the ReleasePayload is waiting for a release image to be created and pushed to the // TargetImageStream. If PayloadCreated is true, a release image has been created and pushed to the TargetImageStream. // Verification jobs should begin and will update the status as they complete. ConditionPayloadCreated string = "PayloadCreated" // ConditionPayloadFailed is true if a ReleasePayload image cannot be created for the given set of image mirrors // This condition is terminal ConditionPayloadFailed string = "PayloadFailed" // ConditionPayloadMirrored if false, the ReleasePayload is waiting for the release image to be mirrored to an // external image repository. If PayloadMirrored is true, the release image has been mirrored to an external image // registry. ConditionPayloadMirrored string = "PayloadMirrored" // ConditionPayloadMirrorFailed is true if a ReleasePayload image cannot be mirrored to an external image registry. ConditionPayloadMirrorFailed string = "PayloadMirrorFailed" // ConditionPayloadAccepted is true if the ReleasePayload has passed its verification criteria and can safely // be promoted to an external location // This condition is terminal ConditionPayloadAccepted string = "PayloadAccepted" // ConditionPayloadRejected is true if the ReleasePayload has failed one or more of its verification criteria // The release-controller will take no more action in this phase. ConditionPayloadRejected string = "PayloadRejected" )
These are valid condition types for ReleasePayloadStatus.
Variables ¶
var ( GroupName = "release.openshift.io" GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // Install is a function which adds this version to a scheme Install = schemeBuilder.AddToScheme // SchemeGroupVersion generated code relies on this name // Deprecated SchemeGroupVersion = GroupVersion // AddToScheme exists solely to keep the old generators creating valid code // DEPRECATED AddToScheme = schemeBuilder.AddToScheme )
Functions ¶
func RegisterDefaults ¶
RegisterDefaults adds defaulters functions to the given scheme. Public to allow building arbitrary schemes. All generated defaulters are covering - they call all nested defaulters.
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource generated code relies on this being here, but it logically belongs to the group DEPRECATED
Types ¶
type CIConfiguration ¶
type CIConfiguration struct {
// 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
CIConfigurationName string `json:"ciConfigurationName"`
// 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
CIConfigurationJobName string `json:"ciConfigurationJobName"`
// MaxRetries Maximum retry attempts for the job. Defaults to 0 - do not retry on fail
MaxRetries int `json:"maxRetries,omitempty"`
// AnalysisJobCount Number of asynchronous jobs to execute for release analysis.
AnalysisJobCount int `json:"analysisJobCount,omitempty"`
}
CIConfiguration is an Openshift CI system's job definition of a verification test to run against a ReleasePayload
func (*CIConfiguration) DeepCopy ¶
func (in *CIConfiguration) DeepCopy() *CIConfiguration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CIConfiguration.
func (*CIConfiguration) DeepCopyInto ¶
func (in *CIConfiguration) DeepCopyInto(out *CIConfiguration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobRunCoordinates ¶
type JobRunCoordinates struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
Cluster string `json:"cluster,omitempty"`
}
JobRunCoordinates houses the information necessary to locate individual job executions
func (*JobRunCoordinates) DeepCopy ¶
func (in *JobRunCoordinates) DeepCopy() *JobRunCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobRunCoordinates.
func (*JobRunCoordinates) DeepCopyInto ¶
func (in *JobRunCoordinates) DeepCopyInto(out *JobRunCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobRunResult ¶
type JobRunResult struct {
// Coordinates the location of the job
Coordinates JobRunCoordinates `json:"coordinates,omitempty"`
// StartTime timestamp for when the prowjob was created
StartTime metav1.Time `json:"startTime,omitempty"`
// 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.
CompletionTime *metav1.Time `json:"completionTime,omitempty"`
// State the current state of the job run
State JobRunState `json:"state,omitempty"`
// HumanProwResultsURL the html link to the prow results
HumanProwResultsURL string `json:"humanProwResultsURL,omitempty"`
// UpgradeType the type of upgrade performed via this job
UpgradeType JobRunUpgradeType `json:"upgradeType,omitempty"`
}
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.
func (*JobRunResult) DeepCopy ¶
func (in *JobRunResult) DeepCopy() *JobRunResult
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobRunResult.
func (*JobRunResult) DeepCopyInto ¶
func (in *JobRunResult) DeepCopyInto(out *JobRunResult)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type JobRunState ¶
type JobRunState string
JobRunState the status of a job
const ( // JobRunStateTriggered job has been created but not scheduled JobRunStateTriggered JobRunState = "Triggered" // JobRunStateScheduling job has been created and is waiting to be scheduled JobRunStateScheduling JobRunState = "Scheduling" // JobRunStatePending job is running and awaiting completion JobRunStatePending JobRunState = "Pending" // JobRunStateFailure job completed with errors JobRunStateFailure JobRunState = "Failure" // JobRunStateSuccess job completed without errors JobRunStateSuccess JobRunState = "Success" // JobRunStateAborted job was terminated early JobRunStateAborted JobRunState = "Aborted" // JobRunStateError job could not be scheduled JobRunStateError JobRunState = "Error" // JobRunStateUnknown unable to determine job state JobRunStateUnknown JobRunState = "Unknown" )
type JobRunUpgradeType ¶
type JobRunUpgradeType string
JobRunUpgradeType the type of upgrade performed via this job
const ( // JobRunUpgradeTypeUpgrade an upgrade from a release in the same Z stream (i.e. 4.11.0 to 4.11.22) JobRunUpgradeTypeUpgrade JobRunUpgradeType = "upgrade" // JobRunUpgradeTypeUpgradeMinor an upgrade from a previous minor release (i.e. 4.11.22 to 4.12.0) JobRunUpgradeTypeUpgradeMinor JobRunUpgradeType = "upgrade-minor" )
type JobState ¶
type JobState string
JobState the aggregate state of the job Supported values include Pending, Failed, Success, and Ignored.
const ( // JobStatePending not all job runs have completed // Transitions to Failed or Success JobStatePending JobState = "Pending" // JobStateFailure failed job aggregation JobStateFailure JobState = "Failure" // JobStateSuccess successful job aggregation JobStateSuccess JobState = "Success" // JobStateUnknown unable to determine the JobState JobStateUnknown JobState = "Unknown" )
type JobStatus ¶
type JobStatus struct {
// CIConfigurationName the unique name given to a verification test
CIConfigurationName string `json:"ciConfigurationName,omitempty"`
// CIConfigurationJobName is the name of the prowjob definition as stored in the CI Job Configuration
CIConfigurationJobName string `json:"ciConfigurationJobName,omitempty"`
// MaxRetries maximum times to retry a job
MaxRetries int `json:"maxRetries,omitempty"`
// AnalysisJobCount Number of asynchronous jobs to execute for release analysis.
AnalysisJobCount int `json:"analysisJobCount,omitempty"`
// AggregateState is the overall success/failure of all the executed jobs
AggregateState JobState `json:"state,omitempty"`
// JobRunResults contains the links for individual jobs
JobRunResults []JobRunResult `json:"results,omitempty"`
}
JobStatus encapsulates the name of the job, all the results of the jobs, and an aggregated result of all the jobs
func (*JobStatus) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JobStatus.
func (*JobStatus) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PayloadCoordinates ¶
type PayloadCoordinates struct {
// Namespace must match that of the ReleasePayload
Namespace string `json:"namespace,omitempty"`
// 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
ImagestreamName string `json:"imagestreamName,omitempty"`
// ImagestreamTagName is the name of the actual release
ImagestreamTagName string `json:"imagestreamTagName,omitempty"`
}
PayloadCoordinates houses the information pointing to the location of the imagesteamtag that this ReleasePayload is verifying.
Example: For a ReleasePayload named: "4.9.0-0.nightly-2021-09-27-105859" in the "ocp" namespace, and configured to be written into the "release" imagestream, we expect:
- Namespace to equal "ocp
- ImagestreamName to equal "release"
- ImagestreamTagName to equal "4.9.0-0.nightly-2021-09-27-105859", which will also serves as the prefix of the ReleasePayload
These coordinates can then be used to get the release imagestreamtag itself:
# oc -n ocp get imagestreamtag release:4.9.0-0.nightly-2021-09-27-105859
func (*PayloadCoordinates) DeepCopy ¶
func (in *PayloadCoordinates) DeepCopy() *PayloadCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PayloadCoordinates.
func (*PayloadCoordinates) DeepCopyInto ¶
func (in *PayloadCoordinates) DeepCopyInto(out *PayloadCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PayloadCreationConfig ¶
type PayloadCreationConfig struct {
// ReleaseCreationCoordinates houses the configuration of the release creation job
ReleaseCreationCoordinates ReleaseCreationCoordinates `json:"releaseCreationCoordinates,omitempty"`
// ProwCoordinates houses the configuration for Prow
ProwCoordinates ProwCoordinates `json:"prowCoordinates,omitempty"`
// ReleaseMirrorCoordinates houses the configuration of the release mirror job
ReleaseMirrorCoordinates ReleaseMirrorCoordinates `json:"releaseMirrorCoordinates,omitempty"`
}
PayloadCreationConfig the configuration used to create the ReleasePayload
func (*PayloadCreationConfig) DeepCopy ¶
func (in *PayloadCreationConfig) DeepCopy() *PayloadCreationConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PayloadCreationConfig.
func (*PayloadCreationConfig) DeepCopyInto ¶
func (in *PayloadCreationConfig) DeepCopyInto(out *PayloadCreationConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PayloadVerificationConfig ¶
type PayloadVerificationConfig struct {
// BlockingJobs are release verification jobs that will prevent a ReleasePayload from being Accepted if the job fails
BlockingJobs []CIConfiguration `json:"blockingJobs,omitempty"`
// InformingJobs are release verification jobs used to execute tests against a ReleasePayload
InformingJobs []CIConfiguration `json:"informingJobs,omitempty"`
// UpgradeJobs are automatically generated jobs used to execute upgrade tests against a ReleasePayload
UpgradeJobs []CIConfiguration `json:"upgradeJobs,omitempty"`
// PayloadVerificationDataSource where JobRunResult will be collected from.
// +kubebuilder:default=BuildFarmLookup
// +optional
PayloadVerificationDataSource PayloadVerificationDataSource `json:"payloadVerificationDataSource,omitempty"`
}
PayloadVerificationConfig specifies the configuration used to verify the ReleasePayload +kubebuilder:validation:XValidation:rule="!has(oldSelf.payloadVerificationDataSource) || has(self.payloadVerificationDataSource)", message="PayloadVerificationDataSource is required once set"
func (*PayloadVerificationConfig) DeepCopy ¶
func (in *PayloadVerificationConfig) DeepCopy() *PayloadVerificationConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PayloadVerificationConfig.
func (*PayloadVerificationConfig) DeepCopyInto ¶
func (in *PayloadVerificationConfig) DeepCopyInto(out *PayloadVerificationConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PayloadVerificationDataSource ¶
type PayloadVerificationDataSource string
PayloadVerificationDataSource specifies the location where JobRunResult will be collected from If BuildFarmLookup, the results are expected to be picked up, in realtime, as ProwJobs execute on the various CI build farms. This is the default value if not specified. If ImageStreamTagAnnotation, the results will be scrapped from the ImageStreamTag's annotations of the respective release. +kubebuilder:validation:Optional +kubebuilder:validation:Enum=BuildFarmLookup;ImageStreamTagAnnotation +kubebuilder:validation:XValidation:rule="self == oldSelf",message="PayloadVerificationDataSource is immutable"
const ( // PayloadVerificationDataSourceBuildFarm payload verification results will be collected from the ProwJobs running // on the various build farms PayloadVerificationDataSourceBuildFarm PayloadVerificationDataSource = "BuildFarmLookup" // PayloadVerificationDataSourceImageStream payload verification results will be collected from respective release's // ImageStream Annotation PayloadVerificationDataSourceImageStream PayloadVerificationDataSource = "ImageStreamTagAnnotation" )
type ProwCoordinates ¶
type ProwCoordinates struct {
// Namespace the namespace where Prow is configured to run prowv1.ProwJobs
Namespace string `json:"namespace"`
}
ProwCoordinates houses the information pointing to the location where Prow creates the release verification prowv1.ProwJobs.
func (*ProwCoordinates) DeepCopy ¶
func (in *ProwCoordinates) DeepCopy() *ProwCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProwCoordinates.
func (*ProwCoordinates) DeepCopyInto ¶
func (in *ProwCoordinates) DeepCopyInto(out *ProwCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseCoordinates ¶
type ReleaseCoordinates struct {
Repository string `json:"repository"`
Tag string `json:"tag,omitempty"`
Digest string `json:"digest,omitempty"`
}
ReleaseCoordinates specifies the location where this ReleasePayload has been, or will be, published to.
func (*ReleaseCoordinates) DeepCopy ¶
func (in *ReleaseCoordinates) DeepCopy() *ReleaseCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseCoordinates.
func (*ReleaseCoordinates) DeepCopyInto ¶
func (in *ReleaseCoordinates) DeepCopyInto(out *ReleaseCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseCreationCoordinates ¶
type ReleaseCreationCoordinates struct {
// Namespace the namespace where the release creation batchv1.Jobs are created
Namespace string `json:"namespace"`
// ReleaseCreationJobName the name the release creation batchv1.Job
ReleaseCreationJobName string `json:"releaseCreationJobName"`
}
ReleaseCreationCoordinates houses the information pointing to the location of the release creation job responsible for creating this ReleasePayload.
func (*ReleaseCreationCoordinates) DeepCopy ¶
func (in *ReleaseCreationCoordinates) DeepCopy() *ReleaseCreationCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseCreationCoordinates.
func (*ReleaseCreationCoordinates) DeepCopyInto ¶
func (in *ReleaseCreationCoordinates) DeepCopyInto(out *ReleaseCreationCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseCreationJobCoordinates ¶
type ReleaseCreationJobCoordinates struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
}
ReleaseCreationJobCoordinates houses the information necessary to locate the job execution
func (*ReleaseCreationJobCoordinates) DeepCopy ¶
func (in *ReleaseCreationJobCoordinates) DeepCopy() *ReleaseCreationJobCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseCreationJobCoordinates.
func (*ReleaseCreationJobCoordinates) DeepCopyInto ¶
func (in *ReleaseCreationJobCoordinates) DeepCopyInto(out *ReleaseCreationJobCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseCreationJobResult ¶
type ReleaseCreationJobResult struct {
// Coordinates the location of the batch/v1 Job
Coordinates ReleaseCreationJobCoordinates `json:"coordinates,omitempty"`
// Status is the current status of the release creation job
Status ReleaseCreationJobStatus `json:"status,omitempty"`
// Message is a human-readable message indicating details about the result of the release creation job
Message string `json:"message,omitempty"`
}
ReleaseCreationJobResult houses the information about the Release creation batch/v1 Job. The release creation Job creates the actual release, via an `oc adm release` command. The release-controller is responsible for launching the Job, in the --job-namespace, on the same cluster that the release-controller is running on.
func (*ReleaseCreationJobResult) DeepCopy ¶
func (in *ReleaseCreationJobResult) DeepCopy() *ReleaseCreationJobResult
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseCreationJobResult.
func (*ReleaseCreationJobResult) DeepCopyInto ¶
func (in *ReleaseCreationJobResult) DeepCopyInto(out *ReleaseCreationJobResult)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseCreationJobStatus ¶
type ReleaseCreationJobStatus string
const ( // ReleaseCreationJobUnknown means the job's current state is not known ReleaseCreationJobUnknown ReleaseCreationJobStatus = "Unknown" // ReleaseCreationJobSuccess means the job has completed its execution successfully ReleaseCreationJobSuccess ReleaseCreationJobStatus = "Success" // ReleaseCreationJobFailed means the job has failed its execution ReleaseCreationJobFailed ReleaseCreationJobStatus = "Failed" )
type ReleaseMirrorCoordinates ¶
type ReleaseMirrorCoordinates struct {
// Namespace the namespace where the release mirror batchv1.Jobs are created
Namespace string `json:"namespace"`
// ReleaseCreationJobName the name the release mirror batchv1.Job
ReleaseMirrorJobName string `json:"releaseMirrorJobName"`
}
ReleaseMirrorCoordinates houses the information pointing to the location of the release mirror job responsible for mirroring this ReleasePayload to an external repository.
func (*ReleaseMirrorCoordinates) DeepCopy ¶
func (in *ReleaseMirrorCoordinates) DeepCopy() *ReleaseMirrorCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseMirrorCoordinates.
func (*ReleaseMirrorCoordinates) DeepCopyInto ¶
func (in *ReleaseMirrorCoordinates) DeepCopyInto(out *ReleaseMirrorCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseMirrorJobCoordinates ¶
type ReleaseMirrorJobCoordinates struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
}
ReleaseMirrorJobCoordinates houses the information necessary to locate the job execution
func (*ReleaseMirrorJobCoordinates) DeepCopy ¶
func (in *ReleaseMirrorJobCoordinates) DeepCopy() *ReleaseMirrorJobCoordinates
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseMirrorJobCoordinates.
func (*ReleaseMirrorJobCoordinates) DeepCopyInto ¶
func (in *ReleaseMirrorJobCoordinates) DeepCopyInto(out *ReleaseMirrorJobCoordinates)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseMirrorJobResult ¶
type ReleaseMirrorJobResult struct {
// Coordinates the location of the batch/v1 Job
Coordinates ReleaseMirrorJobCoordinates `json:"coordinates,omitempty"`
// Status is the current status of the release mirror job
Status ReleaseMirrorJobStatus `json:"status,omitempty"`
// Message is a human-readable message indicating details about the result of the release mirror job
Message string `json:"message,omitempty"`
}
ReleaseMirrorJobResult houses the information about the Release mirror batch/v1 Job. The release mirror Job mirrors the release, via an `oc image mirror` command to an external registry. The release-controller is responsible for launching the Job, in the --job-namespace, on the same cluster that the release-controller is running on.
func (*ReleaseMirrorJobResult) DeepCopy ¶
func (in *ReleaseMirrorJobResult) DeepCopy() *ReleaseMirrorJobResult
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleaseMirrorJobResult.
func (*ReleaseMirrorJobResult) DeepCopyInto ¶
func (in *ReleaseMirrorJobResult) DeepCopyInto(out *ReleaseMirrorJobResult)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleaseMirrorJobStatus ¶
type ReleaseMirrorJobStatus string
const ( // ReleaseMirrorJobUnknown means the job's current state is not known ReleaseMirrorJobUnknown ReleaseMirrorJobStatus = "Unknown" // ReleaseMirrorJobSuccess means the job has completed its execution successfully ReleaseMirrorJobSuccess ReleaseMirrorJobStatus = "Success" // ReleaseMirrorJobFailed means the job has failed its execution ReleaseMirrorJobFailed ReleaseMirrorJobStatus = "Failed" )
type ReleasePayload ¶
type ReleasePayload struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec the inputs used to create the ReleasePayload
Spec ReleasePayloadSpec `json:"spec,omitempty"`
// Status is the current status of the ReleasePayload
Status ReleasePayloadStatus `json:"status,omitempty"`
}
ReleasePayload encapsulates the information for the creation of a ReleasePayload and aggregates the results of its respective verification tests.
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:
- Create a point-in-time mirror of the updated imagestream
- Create a new Release from the mirror - Any errors before this point will cause the release to marked `Failed`
- Launches a set of release analysis jobs
- Launches an aggregation job
- 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.
- 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.
- 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`
- Publishes all results to the respective webpage
Example: ART:
- Publishes an update to the `ocp/4.9-art-latest` imagestream
Release-controller:
- Creates a mirror named: `ocp/4.9-art-latest-2021-09-27-105859`
- 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
- Creates an OpenShift Release: `ocp/release:4.9.0-0.nightly-2021-09-27-105859`
- Update ReleasePayload conditions with results of release creation job If the release was created successfully, the release-controller:
- Launches: 4.9.0-0.nightly-2021-09-27-105859-aggregated-<name>-analysis-<count>
- Launches: 4.9.0-0.nightly-2021-09-27-105859-aggregated-<name>-aggregator
- Launches: 4.9.0-0.nightly-2021-09-27-105859-<name>
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:
For example: $ oc adm release info quay.io/openshift-release-dev/ocp-release:4.11.22-x86_64
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
From the list above, the release-controller will launch a subset of jobs named like: 4.11.22-upgrade-from-4.10.16-<platform> 4.11.22-upgrade-from-4.11.0-<platform>
Where <platform> 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
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.
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`
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
Because the ReleasePayload and the Release will both reside in the same namespace, the release that created the ReleasePayload will be located here:
<namespace>/<release.openshift.io/imagestream>:<release.openshift.io/imagestreamtag-name>
Similarly, the ReleasePayload object itself also has the PayloadCoordinates (.spec.payloadCoordinates) that point back to the Release as well:
spec:
payloadCoordinates:
imagestreamName: release
imagestreamTagName: 4.9.0-0.nightly-2021-09-27-105859
namespace: ocp
The release that created the ReleasePayload will be located here:
<namespace>/<imagestreamName>:<imagestreamTagName>
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. +openshift:compatibility-gen:level=4
func (*ReleasePayload) DeepCopy ¶
func (in *ReleasePayload) DeepCopy() *ReleasePayload
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleasePayload.
func (*ReleasePayload) DeepCopyInto ¶
func (in *ReleasePayload) DeepCopyInto(out *ReleasePayload)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ReleasePayload) DeepCopyObject ¶
func (in *ReleasePayload) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ReleasePayloadList ¶
type ReleasePayloadList struct {
metav1.TypeMeta `json:",inline"`
// Standard list metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
// List of ReleasePayloads
Items []ReleasePayload `json:"items"`
}
ReleasePayloadList is a list of ReleasePayloads
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. +openshift:compatibility-gen:level=4
func (*ReleasePayloadList) DeepCopy ¶
func (in *ReleasePayloadList) DeepCopy() *ReleasePayloadList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleasePayloadList.
func (*ReleasePayloadList) DeepCopyInto ¶
func (in *ReleasePayloadList) DeepCopyInto(out *ReleasePayloadList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ReleasePayloadList) DeepCopyObject ¶
func (in *ReleasePayloadList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ReleasePayloadOverride ¶
type ReleasePayloadOverride struct {
// Override specifies the ReleasePayloadOverride to apply to the ReleasePayload
Override ReleasePayloadOverrideType `json:"override"`
// Reason is a human-readable string that specifies the reason for manually overriding the
// Acceptance/Rejections of a ReleasePayload
Reason string `json:"reason,omitempty"`
}
ReleasePayloadOverride provides the ability to manually Accept/Reject a ReleasePayload ART, occasionally, needs the ability to manually accept/reject a Release that, for some reason or another:
- won't pass one or more of it's blocking jobs.
- shouldn't proceed with the normal release verification processing
This would be the one scenario where another party, besides the release-controller, would update a ReleasePayload instance. Upon doing so, the release-controller should see that an update occurred and make all the necessary changes to formally accept/reject the respective release.
func (*ReleasePayloadOverride) DeepCopy ¶
func (in *ReleasePayloadOverride) DeepCopy() *ReleasePayloadOverride
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleasePayloadOverride.
func (*ReleasePayloadOverride) DeepCopyInto ¶
func (in *ReleasePayloadOverride) DeepCopyInto(out *ReleasePayloadOverride)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleasePayloadOverrideType ¶
type ReleasePayloadOverrideType string
const ( // ReleasePayloadOverrideAccepted enables the manual Acceptance of a ReleasePayload. ReleasePayloadOverrideAccepted ReleasePayloadOverrideType = "Accepted" // ReleasePayloadOverrideRejected enables the manual Rejection of a ReleasePayload. ReleasePayloadOverrideRejected ReleasePayloadOverrideType = "Rejected" )
These are the supported ReleasePayloadOverride values.
type ReleasePayloadSpec ¶
type ReleasePayloadSpec struct {
// PayloadCoordinates the coordinates of the imagestreamtag that this ReleasePayload was created from
PayloadCoordinates PayloadCoordinates `json:"payloadCoordinates,omitempty"`
// PayloadCreationConfig the configuration used when creating the ReleasePayload
PayloadCreationConfig PayloadCreationConfig `json:"payloadCreationConfig,omitempty"`
// PayloadOverride specified when manual intervention is required to manually Accept or Reject a ReleasePayload
PayloadOverride ReleasePayloadOverride `json:"payloadOverride,omitempty"`
// PayloadVerificationConfig the configuration that will be used to verify this ReleasePayload
PayloadVerificationConfig PayloadVerificationConfig `json:"payloadVerificationConfig,omitempty"`
// ReleaseCoordinates list of ReleaseCoordinates where this ReleasePayload has been, or will be, published
ReleaseCoordinates []ReleaseCoordinates `json:"releaseCoordinates,omitempty"`
}
ReleasePayloadSpec has the information to represent a ReleasePayload
func (*ReleasePayloadSpec) DeepCopy ¶
func (in *ReleasePayloadSpec) DeepCopy() *ReleasePayloadSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleasePayloadSpec.
func (*ReleasePayloadSpec) DeepCopyInto ¶
func (in *ReleasePayloadSpec) DeepCopyInto(out *ReleasePayloadSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ReleasePayloadStatus ¶
type ReleasePayloadStatus struct {
// Conditions communicates the state of the ReleasePayload.
// Supported conditions include PayloadCreated, PayloadFailed, PayloadAccepted, and PayloadRejected.
Conditions []metav1.Condition `json:"conditions,omitempty"`
// 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.
ReleaseCreationJobResult ReleaseCreationJobResult `json:"releaseCreationJobResult,omitempty"`
// 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.
ReleaseMirrorJobResult ReleaseMirrorJobResult `json:"releaseMirrorJobResult,omitempty"`
// BlockingJobResults stores the results of all blocking jobs
BlockingJobResults []JobStatus `json:"blockingJobResults,omitempty"`
// InformingJobResults stores the results of all informing jobs
InformingJobResults []JobStatus `json:"informingJobResults,omitempty"`
// UpgradeJobResults stores the results of generated upgrade jobs
UpgradeJobResults []JobStatus `json:"upgradeJobResults,omitempty"`
}
ReleasePayloadStatus the status of all the promotion test jobs
func (*ReleasePayloadStatus) DeepCopy ¶
func (in *ReleasePayloadStatus) DeepCopy() *ReleasePayloadStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReleasePayloadStatus.
func (*ReleasePayloadStatus) DeepCopyInto ¶
func (in *ReleasePayloadStatus) DeepCopyInto(out *ReleasePayloadStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.