/
iamrolepolicyattachment_types.go
103 lines (82 loc) · 3.75 KB
/
iamrolepolicyattachment_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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
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"
)
// IAMRolePolicyAttachmentParameters define the desired state of an AWS IAM
// Role policy attachment.
type IAMRolePolicyAttachmentParameters struct {
// PolicyARN is the Amazon Resource Name (ARN) of the IAM policy you want to
// attach.
// +immutable
PolicyARN string `json:"policyArn,omitempty"`
// PolicyARNRef references an IAMPolicy to retrieve its Policy ARN.
// +optional
PolicyARNRef *xpv1.Reference `json:"policyArnRef,omitempty"`
// PolicyARNSelector selects a reference to an IAMPolicy to retrieve its
// Policy ARN
// +optional
PolicyARNSelector *xpv1.Selector `json:"policyArnSelector,omitempty"`
// RoleName presents the name of the IAM role.
// +immutable
RoleName string `json:"roleName,omitempty"`
// RoleNameRef references an IAMRole to retrieve its Name
// +optional
RoleNameRef *xpv1.Reference `json:"roleNameRef,omitempty"`
// RoleNameSelector selects a reference to an IAMRole to retrieve its Name
// +optional
RoleNameSelector *xpv1.Selector `json:"roleNameSelector,omitempty"`
}
// An IAMRolePolicyAttachmentSpec defines the desired state of an
// IAMRolePolicyAttachment.
type IAMRolePolicyAttachmentSpec struct {
xpv1.ResourceSpec `json:",inline"`
ForProvider IAMRolePolicyAttachmentParameters `json:"forProvider"`
}
// IAMRolePolicyAttachmentExternalStatus keeps the state for the external resource
type IAMRolePolicyAttachmentExternalStatus struct {
// AttachedPolicyARN is the arn for the attached policy. If nil, the policy
// is not yet attached
AttachedPolicyARN string `json:"attachedPolicyArn"`
}
// An IAMRolePolicyAttachmentStatus represents the observed state of an
// IAMRolePolicyAttachment.
type IAMRolePolicyAttachmentStatus struct {
xpv1.ResourceStatus `json:",inline"`
AtProvider IAMRolePolicyAttachmentExternalStatus `json:"atProvider"`
}
// +kubebuilder:object:root=true
// An IAMRolePolicyAttachment is a managed resource that represents an AWS IAM
// Role policy attachment.
// +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="ROLENAME",type="string",JSONPath=".spec.forProvider.roleName"
// +kubebuilder:printcolumn:name="POLICYARN",type="string",JSONPath=".spec.forProvider.policyArn"
// +kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:subresource:status
// +kubebuilder:resource:scope=Cluster,categories={crossplane,managed,aws}
type IAMRolePolicyAttachment struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec IAMRolePolicyAttachmentSpec `json:"spec"`
Status IAMRolePolicyAttachmentStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// IAMRolePolicyAttachmentList contains a list of IAMRolePolicyAttachments
type IAMRolePolicyAttachmentList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []IAMRolePolicyAttachment `json:"items"`
}