/
types.go
79 lines (65 loc) · 3.38 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
/*
Copyright 2023.
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 (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// +genclient
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:path=seedgenerators,scope=Cluster,shortName=seedgen
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
//+kubebuilder:printcolumn:name="State",type="string",JSONPath=".status.conditions[-1:].type"
//+kubebuilder:printcolumn:name="Details",type="string",JSONPath=".status.conditions[-1:].message"
// +kubebuilder:validation:XValidation:message="seedgen is a singleton, metadata.name must be 'seedimage'", rule="self.metadata.name == 'seedimage'"
// SeedGenerator is the Schema for the seedgenerators API
// +operator-sdk:csv:customresourcedefinitions:displayName="Seed Generator",resources={{Namespace, v1}}
type SeedGenerator struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
//+kubebuilder:validation:XValidation:rule="self == oldSelf",message="cannot modify spec, cr must be deleted and recreated"
Spec SeedGeneratorSpec `json:"spec,omitempty"`
Status SeedGeneratorStatus `json:"status,omitempty"`
}
// SeedGeneratorSpec defines the desired state of SeedGenerator
type SeedGeneratorSpec struct {
//+operator-sdk:csv:customresourcedefinitions:type=spec,displayName="Seed Image",xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern="^([a-z0-9]+://)?[\\S]+$"
// SeedImage defines the full pull-spec of the seed container image to be created.
SeedImage string `json:"seedImage,omitempty"`
//+operator-sdk:csv:customresourcedefinitions:type=spec,xDescriptors={"urn:alm:descriptor:com.tectonic.ui:text"}
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern="^([a-z0-9]+://)?[\\S]+$"
// RecertImage defines the full pull-spec of the recert container image to use.
RecertImage string `json:"recertImage,omitempty"`
}
// SeedGeneratorStatus defines the observed state of SeedGenerator
type SeedGeneratorStatus struct {
// +operator-sdk:csv:customresourcedefinitions:type=status,displayName="Status"
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
StartedAt metav1.Time `json:"startedAt,omitempty"`
CompletedAt metav1.Time `json:"completedAt,omitempty"`
// +operator-sdk:csv:customresourcedefinitions:type=status,displayName="Conditions",xDescriptors={"urn:alm:descriptor:io.kubernetes.conditions"}
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
//+kubebuilder:object:root=true
// SeedGeneratorList contains a list of SeedGenerator
type SeedGeneratorList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SeedGenerator `json:"items"`
}
func init() {
SchemeBuilder.Register(&SeedGenerator{}, &SeedGeneratorList{})
}