generated from crossplane/provider-template
/
searchattribute_types.go
118 lines (93 loc) · 4.85 KB
/
searchattribute_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/*
Copyright 2022 The Crossplane Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
import (
"reflect"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
)
// SearchAttributeParameters are the configurable fields of a SearchAttribute.
// +kubebuilder:validation:XValidation:rule="!has(oldSelf.temporalNamespaceName) || has(self.temporalNamespaceName)", message="TemporalNamespaceName is required once set"
type SearchAttributeParameters struct {
// Name of the SearchAttribute (immutable)
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Name is immutable"
Name string `json:"name"`
// Type of the SearchAttribute (immutable)
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Type is immutable"
// +kubebuilder:validation:Enum=Text;Keyword;Int;Double;Bool;Datetime;KeywordList;
Type string `json:"type"`
// Namespace where search-attribute will be created (immutable)
// At least one of temporalNamespaceName, temporalNamespaceNameRef or temporalNamespaceNameSelector is required.
// +kubebuilder:validation:Optional
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="TemporalNamespaceName is immutable"
// +crossplane:generate:reference:type=github.com/denniskniep/provider-temporal/apis/core/v1alpha1.TemporalNamespace
TemporalNamespaceName *string `json:"temporalNamespaceName,omitempty"`
// Namespace reference to retrieve the namespace name, where search-attribute will be created
// At least one of temporalNamespaceName, temporalNamespaceNameRef or temporalNamespaceNameSelector is required.
// +optional
TemporalNamespaceNameRef *xpv1.Reference `json:"temporalNamespaceNameRef,omitempty"`
// TemporalNamespaceNameSelector selects a reference to a TemporalNamespace and retrieves its name
// At least one of temporalNamespaceName, temporalNamespaceNameRef or temporalNamespaceNameSelector is required.
// +optional
TemporalNamespaceNameSelector *xpv1.Selector `json:"temporalNamespaceNameSelector,omitempty"`
}
// SearchAttributeObservation are the observable fields of a SearchAttribute.
type SearchAttributeObservation struct {
Name string `json:"name"`
Type string `json:"type"`
TemporalNamespaceName string `json:"temporalNamespaceName"`
}
// A SearchAttributeSpec defines the desired state of a SearchAttribute.
type SearchAttributeSpec struct {
xpv1.ResourceSpec `json:",inline"`
ForProvider SearchAttributeParameters `json:"forProvider"`
}
// A SearchAttributeStatus represents the observed state of a SearchAttribute.
type SearchAttributeStatus struct {
xpv1.ResourceStatus `json:",inline"`
AtProvider SearchAttributeObservation `json:"atProvider,omitempty"`
}
// +kubebuilder:object:root=true
// A SearchAttribute is an example API type.
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="EXTERNAL-NAME",type="string",JSONPath=".metadata.annotations.crossplane\\.io/external-name"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,temporal}
type SearchAttribute struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SearchAttributeSpec `json:"spec"`
Status SearchAttributeStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// SearchAttributeList contains a list of SearchAttribute
type SearchAttributeList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SearchAttribute `json:"items"`
}
// SearchAttribute type metadata.
var (
SearchAttributeKind = reflect.TypeOf(SearchAttribute{}).Name()
SearchAttributeGroupKind = schema.GroupKind{Group: Group, Kind: SearchAttributeKind}.String()
SearchAttributeKindAPIVersion = SearchAttributeKind + "." + SchemeGroupVersion.String()
SearchAttributeGroupVersionKind = SchemeGroupVersion.WithKind(SearchAttributeKind)
)
func init() {
SchemeBuilder.Register(&SearchAttribute{}, &SearchAttributeList{})
}