
// 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 = "v1";

// Config contains the configuration and detailed condition status for the Samples Operator.
message Config {
  optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;

  // +kubebuilder:validation:Required
  // +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;
}

message ConfigList {
  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;
}

// 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 string managementState = 1;

  // conditions represents the available maintenance status of the sample
  // imagestreams and templates.
  // +patchMergeKey=type
  // +patchStrategy=merge
  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 string samplesRegistry = 3;

  // architectures determine which hardware architecture(s) to install, where x86_64 and ppc64le are the
  // supported choices.
  // +patchMergeKey=type
  // +patchStrategy=merge
  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
  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
  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 string version = 8;
}

