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

     1  package v1alpha1
     2  
     3  import (
     4  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     5  )
     6  
     7  const (
     8  	// SpaceBindingRequestLabelKey is a label on the SpaceBinding, and will hold the name of the SpaceBindingRequest that created the SpaceBinding resource.
     9  	SpaceBindingRequestLabelKey = LabelKeyPrefix + "spacebindingrequest"
    10  	// SpaceBindingRequestNamespaceLabelKey is a label on the SpaceBinding, and will hold the namespace of the SpaceBindingRequest that created the SpaceBinding resource.
    11  	SpaceBindingRequestNamespaceLabelKey = LabelKeyPrefix + "spacebindingrequest-namespace"
    12  
    13  	// --- Status condition reasons ---
    14  
    15  	// SpaceBindingRequestTerminatingReason represents the reason for space binding request termination.
    16  	SpaceBindingRequestTerminatingReason = terminatingReason
    17  
    18  	// SpaceBindingRequestTerminatingFailedReason represents the reason for a failed space binding request termination.
    19  	SpaceBindingRequestTerminatingFailedReason = terminatingFailedReason
    20  
    21  	// SpaceBindingRequestUnableToCreateSpaceBindingReason represents the reason for a failed space binding creation.
    22  	SpaceBindingRequestUnableToCreateSpaceBindingReason = UnableToCreateSpaceBinding
    23  
    24  	// SpaceBindingRequestProvisioningReason represents the reason for space binding request provisioning.
    25  	SpaceBindingRequestProvisioningReason = provisioningReason
    26  
    27  	// SpaceBindingRequestProvisionedReason represents the reason for a successfully provisioned space binding request.
    28  	SpaceBindingRequestProvisionedReason = provisionedReason
    29  )
    30  
    31  // SpaceBindingRequestSpec defines the desired state of SpaceBindingRequest
    32  // +k8s:openapi-gen=true
    33  type SpaceBindingRequestSpec struct {
    34  	// MasterUserRecord is a required property introduced to retain the name of the MUR
    35  	// for which this SpaceBinding is provisioned.
    36  	MasterUserRecord string `json:"masterUserRecord"`
    37  
    38  	// SpaceRole is a required property which defines the role that will be granted to the MUR in the current Space by the SpaceBinding resource.
    39  	SpaceRole string `json:"spaceRole"`
    40  }
    41  
    42  // SpaceBindingRequestStatus defines the observed state of SpaceBinding
    43  // +k8s:openapi-gen=true
    44  type SpaceBindingRequestStatus struct {
    45  	// Conditions is an array of SpaceBindingRequest conditions
    46  	// Supported condition types:
    47  	// Provisioning, SpaceBindingNotReady and Ready
    48  	// +optional
    49  	// +patchMergeKey=type
    50  	// +patchStrategy=merge
    51  	// +listType=map
    52  	// +listMapKey=type
    53  	Conditions []Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
    54  }
    55  
    56  // +kubebuilder:object:root=true
    57  // +kubebuilder:subresource:status
    58  
    59  // SpaceBindingRequest is the Schema for the SpaceBindingRequest API
    60  // +k8s:openapi-gen=true
    61  // +kubebuilder:resource:scope=Namespaced
    62  // +kubebuilder:printcolumn:name="MUR",type="string",JSONPath=`.spec.masterUserRecord`
    63  // +kubebuilder:printcolumn:name="SpaceRole",type="string",JSONPath=`.spec.spaceRole`
    64  // +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=`.status.conditions[?(@.type=="Ready")].status`
    65  // +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=`.status.conditions[?(@.type=="Ready")].reason`
    66  // +kubebuilder:validation:XPreserveUnknownFields
    67  // +operator-sdk:gen-csv:customresourcedefinitions.displayName="SpaceBindingRequest"
    68  type SpaceBindingRequest struct {
    69  	metav1.TypeMeta   `json:",inline"`
    70  	metav1.ObjectMeta `json:"metadata,omitempty"`
    71  
    72  	Spec   SpaceBindingRequestSpec   `json:"spec,omitempty"`
    73  	Status SpaceBindingRequestStatus `json:"status,omitempty"`
    74  }
    75  
    76  //+kubebuilder:object:root=true
    77  
    78  // SpaceBindingRequestList contains a list of SpaceBindingRequests
    79  type SpaceBindingRequestList struct {
    80  	metav1.TypeMeta `json:",inline"`
    81  	metav1.ListMeta `json:"metadata,omitempty"`
    82  	Items           []SpaceBindingRequest `json:"items"`
    83  }
    84  
    85  func init() {
    86  	SchemeBuilder.Register(&SpaceBindingRequest{}, &SpaceBindingRequestList{})
    87  }