/
resourcecontext_types.go
84 lines (65 loc) · 2.18 KB
/
resourcecontext_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
/*
Copyright 2023 The KusionStack 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 (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// ResourceContextSpec defines the desired state of ResourceContext
type ResourceContextSpec struct {
Contexts []ContextDetail `json:"contexts,omitempty"`
}
type ContextDetail struct {
ID int `json:"id"`
Data map[string]string `json:"data,omitempty"`
}
//+kubebuilder:object:root=true
// ResourceContext is the Schema for the resourcecontext API
// +k8s:openapi-gen=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:resource:shortName=rc
type ResourceContext struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ResourceContextSpec `json:"spec,omitempty"`
}
// +kubebuilder:object:root=true
// ResourceContextList contains a list of ResourceContext
type ResourceContextList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ResourceContext `json:"items"`
}
func init() {
SchemeBuilder.Register(&ResourceContext{}, &ResourceContextList{})
}
// Contains is used to check whether the key-value pair in contained in Data.
func (cd *ContextDetail) Contains(key, value string) bool {
if cd.Data == nil {
return false
}
return cd.Data[key] == value
}
// Put is used to specify the value with the specified key in Data .
func (cd *ContextDetail) Put(key, value string) {
if cd.Data == nil {
cd.Data = map[string]string{}
}
cd.Data[key] = value
}
// Remove is used to remove the specified key from Data .
func (cd *ContextDetail) Remove(key string) {
if cd.Data == nil {
return
}
delete(cd.Data, key)
}