Skip to content
This repository was archived by the owner on Dec 10, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/get-started-app/composition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spec:
def compose(self):
labels = {'example.crossplane.io/app': self.metadata.name}

d = self.resources.deployment('apps/v1', 'Deployment')
d = self.resources.deployment('apps/v1', 'Deployment', self.metadata.namespace)
d.metadata.labels = labels
d.spec.replicas = 2
d.spec.selector.matchLabels = labels
Expand All @@ -29,7 +29,7 @@ spec:
d.spec.template.spec.containers[0].ports[0].containerPort = 80
d.ready = d.conditions.Available.status

s = self.resources.service('v1', 'Service')
s = self.resources.service('v1', 'Service', self.metadata.namespace)
s.metadata.labels = labels
s.spec.selector = labels
s.spec.ports[0].protocol = 'TCP'
Expand Down
9 changes: 8 additions & 1 deletion function/composite.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def __iter__(self):

class Resources:
def __init__(self, composite):
self._composite = composite
self.__dict__['_composite'] = composite

def __getattr__(self, key):
return self[key]
Expand All @@ -111,6 +111,13 @@ def __iter__(self):
for name, resource in self._composite.response.desired.resources:
yield name, self[name]

def __setattr__(self, key, resource):
self[key] = resource

def __setitem__(self, key, resource):
print('SETITEM', key, resource)
self._composite.response.desired.resources[key].resource = resource

def __delattr__(self, key):
del self[key]

Expand Down
19 changes: 0 additions & 19 deletions tests/fn_cases/bucket.yaml

This file was deleted.

37 changes: 37 additions & 0 deletions tests/fn_cases/buckets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
request:
input:
composite: |
class Composite(BaseComposite):
def compose(self):

self.resources.bucket1.apiVersion = 's3.aws.upbound.io/v1beta2'
self.resources.bucket1.kind = 'Bucket'
self.resources.bucket1.spec.forProvider.region = 'us-east-1'

self.resources.bucket2 = {
'apiVersion': 's3.aws.upbound.io/v1beta2',
'kind': 'Bucket',
'spec': {
'forProvider': {
'region': 'us-east-1',
},
},
}

response:
desired:
resources:
bucket1:
resource:
apiVersion: s3.aws.upbound.io/v1beta2
kind: Bucket
spec:
forProvider:
region: us-east-1
bucket2:
resource:
apiVersion: s3.aws.upbound.io/v1beta2
kind: Bucket
spec:
forProvider:
region: us-east-1
7 changes: 5 additions & 2 deletions tests/fn_cases/get-started-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ request:
composite:
resource:
metadata:
namespace: my-namespace
name: my-app
spec:
image: nginx
Expand All @@ -26,7 +27,7 @@ request:
def compose(self):
labels = {'example.crossplane.io/app': self.metadata.name}

d = self.resources.deployment('apps/v1', 'Deployment')
d = self.resources.deployment('apps/v1', 'Deployment', self.metadata.namespace)
d.metadata.labels = labels
d.spec.replicas = 2
d.spec.selector.matchLabels = labels
Expand All @@ -36,7 +37,7 @@ request:
d.spec.template.spec.containers[0].ports[0].containerPort = 80
d.ready = d.conditions.Available.status

s = self.resources.service('v1', 'Service')
s = self.resources.service('v1', 'Service', self.metadata.namespace)
s.metadata.labels = labels
s.spec.selector = labels
s.spec.ports[0].protocol = 'TCP'
Expand All @@ -62,6 +63,7 @@ response:
metadata:
labels:
example.crossplane.io/app: my-app
namespace: my-namespace
spec:
replicas: 2
selector:
Expand All @@ -85,6 +87,7 @@ response:
metadata:
labels:
example.crossplane.io/app: my-app
namespace: my-namespace
spec:
selector:
example.crossplane.io/app: my-app
Expand Down
Loading