Skip to content

Commit

Permalink
Merge pull request #3 from upbound/awg/best-practices
Browse files Browse the repository at this point in the history
Follow Crossplane best practices and clean up linter errors
  • Loading branch information
adamwg authored Nov 6, 2024
2 parents c54cb25 + f310511 commit 7b5c863
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 28 deletions.
29 changes: 23 additions & 6 deletions apis/xstoragebuckets/definition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,34 @@ spec:
spec:
description: StorageBucketSpec defines the desired state of StorageBucket.
properties:
acl:
type: string
region:
type: string
versioning:
type: boolean
parameters:
properties:
acl:
type: string
region:
type: string
versioning:
type: boolean
type: object
required:
- acl
- region
- versioning
type: object
required:
- parameters
status:
description: StorageBucketStatus defines the observed state of StorageBucket.
type: object
required:
- spec
type: object
served: true
status:
controllers:
compositeResourceClaimType:
apiVersion: ""
kind: ""
compositeResourceType:
apiVersion: ""
kind: ""
7 changes: 4 additions & 3 deletions examples/storagebucket/example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ metadata:
name: example
namespace: default
spec:
region: us-west-1
versioning: true
acl: public
parameters:
region: us-west-1
versioning: true
acl: public
13 changes: 7 additions & 6 deletions functions/compose-bucket-kcl/main.k
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import models.io.upbound.aws.s3.v1beta1 as s3v1beta1

oxr = option("params").oxr # observed composite resource
params = oxr.spec.parameters

bucketName = "{}-bucket".format(oxr.metadata.name)

Expand All @@ -20,7 +21,7 @@ _items: [any] = [
metadata: _metadata(bucketName)
spec = {
forProvider = {
region = oxr.spec.region
region = params.region
}
}
},
Expand All @@ -29,8 +30,8 @@ _items: [any] = [
metadata: _metadata("{}-acl".format(oxr.metadata.name))
spec = {
forProvider = {
region = oxr.spec.region
acl = oxr.spec.acl
region = params.region
acl = params.acl
}
}
},
Expand All @@ -39,7 +40,7 @@ _items: [any] = [
metadata: _metadata("{}-encryption".format(oxr.metadata.name))
spec = {
forProvider = {
region = oxr.spec.region
region = params.region
bucketRef = {
name = bucketName
}
Expand All @@ -59,13 +60,13 @@ _items: [any] = [
]

# Set up versioning for the bucket if desired
if oxr.spec.versioning:
if params.versioning:
_items += [
s3v1beta1.BucketVersioning{
metadata: _metadata("{}-versioning".format(oxr.metadata.name))
spec = {
forProvider = {
region = oxr.spec.region
region = params.region
bucketRef = {
name = bucketName
}
Expand Down
25 changes: 13 additions & 12 deletions functions/compose-bucket-python/main.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
from crossplane.function import resource
from crossplane.function.proto.v1 import run_function_pb2 as fnv1
from .model.io.k8s.apimachinery.pkg.apis.meta import v1 as metav1
from .model.com.example.platform.xstoragebucket import v1alpha1
from .model.io.upbound.aws.s3.bucket import v1beta1 as bucketv1beta1
from .model.io.upbound.aws.s3.bucketacl import v1beta1 as aclv1beta1
from .model.io.upbound.aws.s3.bucketversioning import v1beta1 as verv1beta1
from .model.io.upbound.aws.s3.bucketserversideencryptionconfiguration import v1beta1 as ssev1beta1
from model.io.k8s.apimachinery.pkg.apis.meta import v1 as metav1
from model.com.example.platform.xstoragebucket import v1alpha1
from model.io.upbound.aws.s3.bucket import v1beta1 as bucketv1beta1
from model.io.upbound.aws.s3.bucketacl import v1beta1 as aclv1beta1
from model.io.upbound.aws.s3.bucketversioning import v1beta1 as verv1beta1
from model.io.upbound.aws.s3.bucketserversideencryptionconfiguration import v1beta1 as ssev1beta1

def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
observed_xr = v1alpha1.XStorageBucket(**req.observed.composite.resource)
xr_name = observed_xr.metadata.name
bucket_name = xr_name + "-bucket"
params = observed_xr.spec.parameters

bucket = bucketv1beta1.Bucket(
apiVersion="s3.aws.upbound.io/v1beta1",
Expand All @@ -20,7 +21,7 @@ def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
),
spec=bucketv1beta1.Spec(
forProvider=bucketv1beta1.ForProvider(
region=observed_xr.spec.region,
region=params.region,
),
),
)
Expand All @@ -34,11 +35,11 @@ def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
),
spec=aclv1beta1.Spec(
forProvider=aclv1beta1.ForProvider(
region=observed_xr.spec.region,
region=params.region,
bucketRef=aclv1beta1.BucketRef(
name = bucket_name,
),
acl=observed_xr.spec.acl,
acl=params.acl,
),
),
)
Expand All @@ -52,7 +53,7 @@ def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
),
spec=ssev1beta1.Spec(
forProvider=ssev1beta1.ForProvider(
region=observed_xr.spec.region,
region=params.region,
bucketRef=ssev1beta1.BucketRef(
name=bucket_name,
),
Expand All @@ -71,7 +72,7 @@ def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
)
resource.update(rsp.desired.resources[sse.metadata.name], sse)

if observed_xr.spec.versioning:
if params.versioning:
versioning = verv1beta1.BucketVersioning(
apiVersion="s3.aws.upbound.io/v1beta1",
kind="BucketVersioning",
Expand All @@ -80,7 +81,7 @@ def compose(req: fnv1.RunFunctionRequest, rsp: fnv1.RunFunctionResponse):
),
spec=verv1beta1.Spec(
forProvider=verv1beta1.ForProvider(
region=observed_xr.spec.region,
region=params.region,
bucketRef=verv1beta1.BucketRef(
name=bucket_name,
),
Expand Down
2 changes: 1 addition & 1 deletion upbound.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metadata:
spec:
dependsOn:
- provider: xpkg.upbound.io/upbound/provider-aws-s3
version: '>v1.16.0'
version: '>=v1.17.0'
- function: xpkg.upbound.io/crossplane-contrib/function-auto-ready
version: '>=v0.0.0'
description: This is where you can describe your project.
Expand Down

0 comments on commit 7b5c863

Please sign in to comment.