-
Notifications
You must be signed in to change notification settings - Fork 1
/
user_types.go
74 lines (57 loc) · 2.22 KB
/
user_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
/*
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.
*/
// +kubebuilder:validation:Required
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// UserSpec defines the desired state of User.
type UserSpec struct {
// List of databases, where user needs to be created with configs for it.
Databases []DatabaseRef `json:"databases"`
}
type DatabaseRef struct {
// The name of the Database CR to create user in, required.
Name string `json:"name"`
// Reference to secret with password for user in the database, not required.
PasswordSecret Secret `json:"passwordSecret,omitempty"`
// If operator would create data for user (for example for postgres with sslMode=="verify-full"),
// it is reference to non-existed Secret, that will be created during user creation in the database, not required.
CreatedSecret NamespacedName `json:"createdSecret,omitempty"`
// List of references to Privileges CR, that will be applied to created user in the database, required.
Privileges []Name `json:"privileges"`
}
// UserStatus defines the observed state of User.
type UserStatus struct {
Summary StatusSummary `json:"summary,omitempty"`
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:resource:scope=Cluster
// User is the Schema for the users API.
type User struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec UserSpec `json:"spec,omitempty"`
Status UserStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// UserList contains a list of User.
type UserList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []User `json:"items"`
}
func init() {
SchemeBuilder.Register(&User{}, &UserList{})
}