forked from openshift/origin
/
types.go
229 lines (183 loc) · 7.44 KB
/
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
package template
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/apis/core"
)
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// Template contains the inputs needed to produce a Config.
type Template struct {
metav1.TypeMeta
metav1.ObjectMeta
// message is an optional instructional message that will
// be displayed when this template is instantiated.
// This field should inform the user how to utilize the newly created resources.
// Parameter substitution will be performed on the message before being
// displayed so that generated credentials and other parameters can be
// included in the output.
Message string
// parameters is an optional array of Parameters used during the
// Template to Config transformation.
Parameters []Parameter
// objects is an array of resources to include in this template.
// If a namespace value is hardcoded in the object, it will be removed
// during template instantiation, however if the namespace value
// is, or contains, a ${PARAMETER_REFERENCE}, the resolved
// value after parameter substitution will be respected and the object
// will be created in that namespace.
Objects []runtime.Object
// objectLabels is an optional set of labels that are applied to every
// object during the Template to Config transformation.
ObjectLabels map[string]string
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TemplateList is a list of Template objects.
type TemplateList struct {
metav1.TypeMeta
metav1.ListMeta
Items []Template
}
// Parameter defines a name/value variable that is to be processed during
// the Template to Config transformation.
type Parameter struct {
// Required: Parameter name must be set and it can be referenced in Template
// Items using ${PARAMETER_NAME}
Name string
// Optional: The name that will show in UI instead of parameter 'Name'
DisplayName string
// Optional: Parameter can have description
Description string
// Optional: Value holds the Parameter data. If specified, the generator
// will be ignored. The value replaces all occurrences of the Parameter
// ${Name} expression during the Template to Config transformation.
Value string
// Optional: Generate specifies the generator to be used to generate
// random string from an input value specified by From field. The result
// string is stored into Value field. If empty, no generator is being
// used, leaving the result Value untouched.
Generate string
// Optional: From is an input value for the generator.
From string
// Optional: Indicates the parameter must have a value. Defaults to false.
Required bool
}
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TemplateInstance requests and records the instantiation of a Template.
// TemplateInstance is part of an experimental API.
type TemplateInstance struct {
metav1.TypeMeta
metav1.ObjectMeta
// Spec describes the desired state of this TemplateInstance.
Spec TemplateInstanceSpec
// Status describes the current state of this TemplateInstance.
Status TemplateInstanceStatus
}
// TemplateInstanceSpec describes the desired state of a TemplateInstance.
type TemplateInstanceSpec struct {
// Template is a full copy of the template for instantiation.
Template Template
// Secret is a reference to a Secret object containing the necessary
// template parameters.
Secret *core.LocalObjectReference
// Requester holds the identity of the agent requesting the template
// instantiation.
Requester *TemplateInstanceRequester
}
// TemplateInstanceRequester holds the identity of an agent requesting a
// template instantiation.
type TemplateInstanceRequester struct {
// username uniquely identifies this user among all active users.
Username string
// uid is a unique value that identifies this user across time; if this user is
// deleted and another user by the same name is added, they will have
// different UIDs.
UID string
// groups represent the groups this user is a part of.
Groups []string
// extra holds additional information provided by the authenticator.
Extra map[string]ExtraValue
}
// ExtraValue masks the value so protobuf can generate
type ExtraValue []string
// TemplateInstanceStatus describes the current state of a TemplateInstance.
type TemplateInstanceStatus struct {
// Conditions represent the latest available observations of a
// TemplateInstance's current state.
Conditions []TemplateInstanceCondition
// Objects references the objects created by the TemplateInstance.
Objects []TemplateInstanceObject
}
// TemplateInstanceCondition contains condition information for a
// TemplateInstance.
type TemplateInstanceCondition struct {
// Type of the condition, currently Ready or InstantiateFailure.
Type TemplateInstanceConditionType
// Status of the condition, one of True, False or Unknown.
Status core.ConditionStatus
// LastTransitionTime is the last time a condition status transitioned from
// one state to another.
LastTransitionTime metav1.Time
// Reason is a brief machine readable explanation for the condition's last
// transition.
Reason string
// Message is a human readable description of the details of the last
// transition, complementing reason.
Message string
}
// TemplateInstanceConditionType is the type of condition pertaining to a
// TemplateInstance.
type TemplateInstanceConditionType string
const (
// TemplateInstanceReady indicates the readiness of the template
// instantiation.
TemplateInstanceReady TemplateInstanceConditionType = "Ready"
// TemplateInstanceInstantiateFailure indicates the failure of the template
// instantiation
TemplateInstanceInstantiateFailure TemplateInstanceConditionType = "InstantiateFailure"
)
// TemplateInstanceObject references an object created by a TemplateInstance.
type TemplateInstanceObject struct {
// ref is a reference to the created object.
Ref core.ObjectReference
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// TemplateInstanceList is a list of TemplateInstance objects.
type TemplateInstanceList struct {
metav1.TypeMeta
metav1.ListMeta
// Items is a list of Templateinstances
Items []TemplateInstance
}
// +genclient
// +genclient:nonNamespaced
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// BrokerTemplateInstance holds the service broker-related state associated with
// a TemplateInstance. BrokerTemplateInstance is part of an experimental API.
type BrokerTemplateInstance struct {
metav1.TypeMeta
metav1.ObjectMeta
// Spec describes the state of this BrokerTemplateInstance.
Spec BrokerTemplateInstanceSpec
}
// BrokerTemplateInstanceSpec describes the state of a BrokerTemplateInstance.
type BrokerTemplateInstanceSpec struct {
// TemplateInstance is a reference to a TemplateInstance object residing
// in a namespace.
TemplateInstance core.ObjectReference
// Secret is a reference to a Secret object residing in a namespace,
// containing the necessary template parameters.
Secret core.ObjectReference
// BindingIDs is a list of 'binding_id's provided during successive bind
// calls to the template service broker.
BindingIDs []string
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// BrokerTemplateInstanceList is a list of BrokerTemplateInstance objects.
type BrokerTemplateInstanceList struct {
metav1.TypeMeta
metav1.ListMeta
// Items is a list of BrokerTemplateInstances
Items []BrokerTemplateInstance
}