-
Notifications
You must be signed in to change notification settings - Fork 277
/
secretproviderclass_types.go
84 lines (68 loc) · 2.79 KB
/
secretproviderclass_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 2020 The Kubernetes 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 v1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// Provider enum for all the provider names
type Provider string
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// SecretObjectData defines the desired state of synced K8s secret object data
type SecretObjectData struct {
// name of the object to sync
ObjectName string `json:"objectName,omitempty"`
// data field to populate
Key string `json:"key,omitempty"`
}
// SecretObject defines the desired state of synced K8s secret objects
type SecretObject struct {
// name of the K8s secret object
SecretName string `json:"secretName,omitempty"`
// type of K8s secret object
Type string `json:"type,omitempty"`
// labels of K8s secret object
Labels map[string]string `json:"labels,omitempty"`
// annotations of k8s secret object
Annotations map[string]string `json:"annotations,omitempty"`
Data []*SecretObjectData `json:"data,omitempty"`
}
// SecretProviderClassSpec defines the desired state of SecretProviderClass
type SecretProviderClassSpec struct {
// Configuration for provider name
Provider Provider `json:"provider,omitempty"`
// Configuration for specific provider
Parameters map[string]string `json:"parameters,omitempty"`
SecretObjects []*SecretObject `json:"secretObjects,omitempty"`
}
// SecretProviderClassStatus defines the observed state of SecretProviderClass
type SecretProviderClassStatus struct {
}
// +kubebuilder:object:root=true
// +kubebuilder:storageversion
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SecretProviderClass is the Schema for the secretproviderclasses API
type SecretProviderClass struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec SecretProviderClassSpec `json:"spec,omitempty"`
Status SecretProviderClassStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// SecretProviderClassList contains a list of SecretProviderClass
type SecretProviderClassList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []SecretProviderClass `json:"items"`
}