Skip to content

Commit

Permalink
added username selector attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
krishchow committed Aug 10, 2020
1 parent 2450f07 commit 33b3b5a
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 6 deletions.
12 changes: 10 additions & 2 deletions apis/storage/v1alpha1/bucketpolicy_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,14 @@ type S3BucketPolicyParameters struct {
// UserName presents the name of the bucket.
// +optional
UserName *string `json:"userName,omitempty"`

// UserNameRef references to an S3Bucket to retrieve its userName
// +optional
UserNameRef *runtimev1alpha1.Reference `json:"userNameRef,omitempty"`

// UserNameSelector selects a reference to an S3Bucket to retrieve its userName
// +optional
UserNameSelector *runtimev1alpha1.Selector `json:"userNameSelector,omitempty"`
}

// Serialize is the custom marshaller for the S3BucketPolicyParameters
Expand Down Expand Up @@ -196,8 +204,8 @@ type S3BucketPolicyStatus struct {

// An S3BucketPolicy is a managed resource that represents an AWS Bucket
// policy.
// +kubebuilder:printcolumn:name="USERNAME",type="string",JSONPath=".spec.userName"
// +kubebuilder:printcolumn:name="BUCKETNAME",type="string",JSONPath=".spec.bucketName"
// +kubebuilder:printcolumn:name="USERNAME",type="string",JSONPath=".spec.forProvider.userName"
// +kubebuilder:printcolumn:name="BUCKETNAME",type="string",JSONPath=".spec.forProvider.bucketName"
// +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"
Expand Down
5 changes: 3 additions & 2 deletions apis/storage/v1alpha1/referencers.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,16 @@ func (mg *S3BucketPolicy) ResolveReferences(ctx context.Context, c client.Reader
// Resolve spec.UserName
rsp, err = r.Resolve(ctx, reference.ResolutionRequest{
CurrentValue: reference.FromPtrValue(mg.Spec.PolicyBody.UserName),
Reference: mg.Spec.PolicyBody.BucketNameRef,
Selector: mg.Spec.PolicyBody.BucketNameSelector,
Reference: mg.Spec.PolicyBody.UserNameRef,
Selector: mg.Spec.PolicyBody.UserNameSelector,
To: reference.To{Managed: &v1alpha3.S3Bucket{}, List: &v1alpha3.S3BucketList{}},
Extract: S3BucketIAMUser(),
})
if err != nil {
return err
}
mg.Spec.PolicyBody.UserName = reference.ToPtrValue(rsp.ResolvedValue)
mg.Spec.PolicyBody.UserNameRef = rsp.ResolvedReference

return nil
}
10 changes: 10 additions & 0 deletions apis/storage/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 27 additions & 2 deletions config/crd/storage.aws.crossplane.io_s3bucketpolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ metadata:
name: s3bucketpolicies.storage.aws.crossplane.io
spec:
additionalPrinterColumns:
- JSONPath: .spec.userName
- JSONPath: .spec.forProvider.userName
name: USERNAME
type: string
- JSONPath: .spec.bucketName
- JSONPath: .spec.forProvider.bucketName
name: BUCKETNAME
type: string
- JSONPath: .status.conditions[?(@.type=='Ready')].status
Expand Down Expand Up @@ -246,6 +246,31 @@ spec:
userName:
description: UserName presents the name of the bucket.
type: string
userNameRef:
description: UserNameRef references to an S3Bucket to retrieve its
userName
properties:
name:
description: Name of the referenced object.
type: string
required:
- name
type: object
userNameSelector:
description: UserNameSelector selects a reference to an S3Bucket
to retrieve its userName
properties:
matchControllerRef:
description: MatchControllerRef ensures an object with the same
controller reference as the selecting object is selected.
type: boolean
matchLabels:
additionalProperties:
type: string
description: MatchLabels ensures an object with matching labels
is selected.
type: object
type: object
version:
description: This is the current IAM policy version
type: string
Expand Down

0 comments on commit 33b3b5a

Please sign in to comment.