github.com/codeready-toolchain/api@v0.0.0-20240507023248-73662d6db2c5/api/v1alpha1/tiertemplate_types.go (about)

     1  package v1alpha1
     2  
     3  import (
     4  	templatev1 "github.com/openshift/api/template/v1"
     5  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     6  )
     7  
     8  const (
     9  	// ClusterResourcesType contains a type name of the template containing cluster-scoped resources
    10  	ClusterResourcesTemplateType = "clusterresources"
    11  
    12  	// TierTemplateObjectOptionalResourceAnnotation is annotation to be used to mark a TierTemplate object as optional.
    13  	// That means that it won't be applied if the corresponding API group is not present in the cluster.
    14  	TierTemplateObjectOptionalResourceAnnotation = LabelKeyPrefix + "optional-resource"
    15  )
    16  
    17  // TierTemplateSpec defines the desired state of TierTemplate
    18  // +k8s:openapi-gen=true
    19  type TierTemplateSpec struct {
    20  
    21  	// The tier of the template. For example: "basic", "advanced", or "team"
    22  	TierName string `json:"tierName"`
    23  
    24  	// The type of the template. For example: "code", "dev", "stage" or "cluster"
    25  	Type string `json:"type"`
    26  
    27  	// The revision of the corresponding template
    28  	Revision string `json:"revision"`
    29  
    30  	// Template contains an OpenShift Template to be used to provision either a user's namespace or cluster-wide resources
    31  	Template templatev1.Template `json:"template"`
    32  }
    33  
    34  //+kubebuilder:object:root=true
    35  //+kubebuilder:subresource:status
    36  
    37  // TierTemplate is the Schema for the tiertemplates API
    38  // +kubebuilder:resource:path=tiertemplates,scope=Namespaced
    39  // +kubebuilder:printcolumn:name="Type",type="string",JSONPath=`.spec.type`
    40  // +kubebuilder:printcolumn:name="Revision",type="string",JSONPath=`.spec.revision`
    41  // +kubebuilder:validation:XPreserveUnknownFields
    42  // +operator-sdk:gen-csv:customresourcedefinitions.displayName="Template Tier"
    43  type TierTemplate struct {
    44  	metav1.TypeMeta   `json:",inline"`
    45  	metav1.ObjectMeta `json:"metadata,omitempty"`
    46  
    47  	Spec TierTemplateSpec `json:"spec,omitempty"`
    48  }
    49  
    50  //+kubebuilder:object:root=true
    51  
    52  // TierTemplateList contains a list of TierTemplate
    53  type TierTemplateList struct {
    54  	metav1.TypeMeta `json:",inline"`
    55  	metav1.ListMeta `json:"metadata,omitempty"`
    56  	Items           []TierTemplate `json:"items"`
    57  }
    58  
    59  func init() {
    60  	SchemeBuilder.Register(&TierTemplate{}, &TierTemplateList{})
    61  }