
// This file was autogenerated by go-to-protobuf. Do not edit it manually!

syntax = "proto2";

package github.com.openshift.api.samples.v1;

import "k8s.io/api/core/v1/generated.proto";
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";

// Package-wide variables from generator "generated".
option go_package = "github.com/openshift/api/samples/v1";

// Config contains the configuration and detailed condition status for the Samples Operator.
//
// Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
// +openshift:compatibility-gen:level=1
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:path=configs,scope=Cluster
// +openshift:api-approved.openshift.io=https://github.com/openshift/api/pull/513
// +openshift:file-pattern=operatorOrdering=00
// +kubebuilder:metadata:annotations="description=Extension for configuring openshift samples operator."
// +kubebuilder:metadata:annotations="displayName=ConfigsSamples"
message Config {
  // metadata is the standard object's metadata.
  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;

  // +required
  optional ConfigSpec spec = 2;

  // +optional
  optional ConfigStatus status = 3;
}

// ConfigCondition captures various conditions of the Config
// as entries are processed.
message ConfigCondition {
  // type of condition.
  optional string type = 1;

  // status of the condition, one of True, False, Unknown.
  optional string status = 2;

  // lastUpdateTime is the last time this condition was updated.
  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastUpdateTime = 3;

  // lastTransitionTime is the last time the condition transitioned from one status to another.
  optional .k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 4;

  // reason is what caused the condition's last transition.
  optional string reason = 5;

  // message is a human readable message indicating details about the transition.
  optional string message = 6;
}

// Compatibility level 1: Stable within a major release for a minimum of 12 months or 3 minor releases (whichever is longer).
// +openshift:compatibility-gen:level=1
message ConfigList {
  // metadata is the standard list's metadata.
  // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
  optional .k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;

  repeated Config items = 2;
}

// ConfigSpec contains the desired configuration and state for the Samples Operator, controlling
// various behavior around the imagestreams and templates it creates/updates in the
// openshift namespace.
message ConfigSpec {
  // managementState is top level on/off type of switch for all operators.
  // When "Managed", this operator processes config and manipulates the samples accordingly.
  // When "Unmanaged", this operator ignores any updates to the resources it watches.
  // When "Removed", it reacts that same wasy as it does if the Config object
  // is deleted, meaning any ImageStreams or Templates it manages (i.e. it honors the skipped
  // lists) and the registry secret are deleted, along with the ConfigMap in the operator's
  // namespace that represents the last config used to manipulate the samples,
  optional string managementState = 1;

  // samplesRegistry allows for the specification of which registry is accessed
  // by the ImageStreams for their image content.  Defaults on the content in https://github.com/openshift/library
  // that are pulled into this github repository, but based on our pulling only ocp content it typically
  // defaults to registry.redhat.io.
  optional string samplesRegistry = 2;

  // architectures determine which hardware architecture(s) to install, where x86_64, ppc64le, and s390x are the only
  // supported choices currently.
  repeated string architectures = 4;

  // skippedImagestreams specifies names of image streams that should NOT be
  // created/updated.  Admins can use this to allow them to delete content
  // they don’t want.  They will still have to manually delete the
  // content but the operator will not recreate(or update) anything
  // listed here.
  repeated string skippedImagestreams = 5;

  // skippedTemplates specifies names of templates that should NOT be
  // created/updated.  Admins can use this to allow them to delete content
  // they don’t want.  They will still have to manually delete the
  // content but the operator will not recreate(or update) anything
  // listed here.
  repeated string skippedTemplates = 6;

  // skippedHelmCharts specifies names of helm charts that should NOT be
  // managed. Admins can use this to allow them to delete content
  // they don’t want. They will still have to MANUALLY DELETE the
  // content but the operator will not recreate(or update) anything
  // listed here. Few examples of the name of helmcharts which can be skipped are
  // 'redhat-redhat-perl-imagestreams','redhat-redhat-nodejs-imagestreams','redhat-nginx-imagestreams',
  // 'redhat-redhat-ruby-imagestreams','redhat-redhat-python-imagestreams','redhat-redhat-php-imagestreams',
  // 'redhat-httpd-imagestreams','redhat-redhat-dotnet-imagestreams'. Rest of the names can be obtained from
  // openshift console --> helmcharts -->installed helmcharts. This will display the list of all the
  // 12 helmcharts(of imagestreams)being installed by Samples Operator. The skippedHelmCharts must be a
  // valid Kubernetes resource name. May contain only lowercase alphanumeric characters, hyphens and periods,
  // and each period separated segment must begin and end with an alphanumeric character. It must be non-empty
  // and at most 253 characters in length
  // +listType=set
  // +kubebuilder:validation:MaxItems=16
  // +kubebuilder:validation:XValidation:rule="self.all(x, x.matches('^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'))",message="skippedHelmCharts must be a valid Kubernetes resource name. May contain only lowercase alphanumeric characters, hyphens and periods, and each period separated segment must begin and end with an alphanumeric character"
  repeated string skippedhelmCharts = 7;
}

// ConfigStatus contains the actual configuration in effect, as well as various details
// that describe the state of the Samples Operator.
message ConfigStatus {
  // managementState reflects the current operational status of the on/off switch for
  // the operator.  This operator compares the ManagementState as part of determining that we are turning
  // the operator back on (i.e. "Managed") when it was previously "Unmanaged".
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  optional string managementState = 1;

  // conditions represents the available maintenance status of the sample
  // imagestreams and templates.
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  repeated ConfigCondition conditions = 2;

  // samplesRegistry allows for the specification of which registry is accessed
  // by the ImageStreams for their image content.  Defaults on the content in https://github.com/openshift/library
  // that are pulled into this github repository, but based on our pulling only ocp content it typically
  // defaults to registry.redhat.io.
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  optional string samplesRegistry = 3;

  // architectures determine which hardware architecture(s) to install, where x86_64 and ppc64le are the
  // supported choices.
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  repeated string architectures = 5;

  // skippedImagestreams specifies names of image streams that should NOT be
  // created/updated.  Admins can use this to allow them to delete content
  // they don’t want.  They will still have to manually delete the
  // content but the operator will not recreate(or update) anything
  // listed here.
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  repeated string skippedImagestreams = 6;

  // skippedTemplates specifies names of templates that should NOT be
  // created/updated.  Admins can use this to allow them to delete content
  // they don’t want.  They will still have to manually delete the
  // content but the operator will not recreate(or update) anything
  // listed here.
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  repeated string skippedTemplates = 7;

  // version is the value of the operator's payload based version indicator when it was last successfully processed
  // +patchMergeKey=type
  // +patchStrategy=merge
  // +optional
  optional string version = 8;
}

