-
Notifications
You must be signed in to change notification settings - Fork 367
/
user_types.go
87 lines (69 loc) · 2.88 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
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
Copyright 2019 The Crossplane 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 v1beta1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
)
// UserParameters define the desired state of an AWS IAM User.
type UserParameters struct {
// The path for the user name.
// +optional
Path *string `json:"path,omitempty"`
// The ARN of the policy that is used to set the permissions boundary for the
// user.
// +optional
PermissionsBoundary *string `json:"permissionsBoundary,omitempty"`
// A list of tags that you want to attach to the newly created user.
// +optional
Tags []Tag `json:"tags,omitempty"`
}
// An UserSpec defines the desired state of an IAM User.
type UserSpec struct {
xpv1.ResourceSpec `json:",inline"`
ForProvider UserParameters `json:"forProvider"`
}
// UserObservation keeps the state for the external resource
type UserObservation struct {
// The Amazon Resource Name (ARN) that identifies the user.
ARN string `json:"arn,omitempty"`
// The stable and unique string identifying the user.
UserID string `json:"userId,omitempty"`
}
// An UserStatus represents the observed state of an IAM User.
type UserStatus struct {
xpv1.ResourceStatus `json:",inline"`
AtProvider UserObservation `json:"atProvider,omitempty"`
}
// +kubebuilder:object:root=true
// An User is a managed resource that represents an AWS IAM User.
// +kubebuilder:printcolumn:name="ARN",type="string",JSONPath=".status.atProvider.arn"
// +kubebuilder:printcolumn:name="ID",type="string",JSONPath=".status.atProvider.userId"
// +kubebuilder:printcolumn:name="READY",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
// +kubebuilder:printcolumn:name="SYNCED",type="string",JSONPath=".status.conditions[?(@.type=='Synced')].status"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,aws}
type User struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec UserSpec `json:"spec"`
Status UserStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// UserList contains a list of IAM Users
type UserList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []User `json:"items"`
}