/
memcached_version_types.go
86 lines (71 loc) · 3.09 KB
/
memcached_version_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
/*
Copyright AppsCode Inc. and Contributors
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"
const (
ResourceCodeMemcachedVersion = "mcversion"
ResourceKindMemcachedVersion = "MemcachedVersion"
ResourceSingularMemcachedVersion = "memcachedversion"
ResourcePluralMemcachedVersion = "memcachedversions"
)
// MemcachedVersion defines a Memcached database version.
// +genclient
// +genclient:nonNamespaced
// +genclient:skipVerbs=updateStatus
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:object:root=true
// +kubebuilder:resource:path=memcachedversions,singular=memcachedversion,scope=Cluster,shortName=mcversion,categories={datastore,kubedb,appscode}
// +kubebuilder:printcolumn:name="Version",type="string",JSONPath=".spec.version"
// +kubebuilder:printcolumn:name="DB_IMAGE",type="string",JSONPath=".spec.db.image"
// +kubebuilder:printcolumn:name="Deprecated",type="boolean",JSONPath=".spec.deprecated"
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
type MemcachedVersion struct {
metav1.TypeMeta `json:",inline,omitempty"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MemcachedVersionSpec `json:"spec,omitempty"`
}
// MemcachedVersionSpec is the spec for memcached version
type MemcachedVersionSpec struct {
// Version
Version string `json:"version"`
// Database Image
DB MemcachedVersionDatabase `json:"db"`
// Exporter Image
Exporter MemcachedVersionExporter `json:"exporter"`
// Deprecated versions usable but regarded as obsolete and best avoided, typically due to having been superseded.
// +optional
Deprecated bool `json:"deprecated,omitempty"`
// PSP names
PodSecurityPolicies MemcachedVersionPodSecurityPolicy `json:"podSecurityPolicies"`
}
// MemcachedVersionDatabase is the Memcached Database image
type MemcachedVersionDatabase struct {
Image string `json:"image"`
}
// MemcachedVersionExporter is the image for the Memcached exporter
type MemcachedVersionExporter struct {
Image string `json:"image"`
}
// MemcachedVersionPodSecurityPolicy is the Memcached pod security policies
type MemcachedVersionPodSecurityPolicy struct {
DatabasePolicyName string `json:"databasePolicyName"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// MemcachedVersionList is a list of MemcachedVersions
type MemcachedVersionList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
// Items is a list of MemcachedVersion CRD objects
Items []MemcachedVersion `json:"items,omitempty"`
}