Skip to content

Commit 83ccf50

Browse files
author
Patrick J. McNerthney
committed
Enable self.resources.newresource = { ... }
1 parent c9f3d25 commit 83ccf50

File tree

5 files changed

+52
-24
lines changed

5 files changed

+52
-24
lines changed

examples/get-started-app/composition.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ spec:
1919
def compose(self):
2020
labels = {'example.crossplane.io/app': self.metadata.name}
2121
22-
d = self.resources.deployment('apps/v1', 'Deployment')
22+
d = self.resources.deployment('apps/v1', 'Deployment', self.metadata.namespace)
2323
d.metadata.labels = labels
2424
d.spec.replicas = 2
2525
d.spec.selector.matchLabels = labels
@@ -29,7 +29,7 @@ spec:
2929
d.spec.template.spec.containers[0].ports[0].containerPort = 80
3030
d.ready = d.conditions.Available.status
3131
32-
s = self.resources.service('v1', 'Service')
32+
s = self.resources.service('v1', 'Service', self.metadata.namespace)
3333
s.metadata.labels = labels
3434
s.spec.selector = labels
3535
s.spec.ports[0].protocol = 'TCP'

function/composite.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def __iter__(self):
9090

9191
class Resources:
9292
def __init__(self, composite):
93-
self._composite = composite
93+
self.__dict__['_composite'] = composite
9494

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

114+
def __setattr__(self, key, resource):
115+
self[key] = resource
116+
117+
def __setitem__(self, key, resource):
118+
print('SETITEM', key, resource)
119+
self._composite.response.desired.resources[key].resource = resource
120+
114121
def __delattr__(self, key):
115122
del self[key]
116123

tests/fn_cases/bucket.yaml

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/fn_cases/buckets.yaml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
request:
2+
input:
3+
composite: |
4+
class Composite(BaseComposite):
5+
def compose(self):
6+
7+
self.resources.bucket1.apiVersion = 's3.aws.upbound.io/v1beta2'
8+
self.resources.bucket1.kind = 'Bucket'
9+
self.resources.bucket1.spec.forProvider.region = 'us-east-1'
10+
11+
self.resources.bucket2 = {
12+
'apiVersion': 's3.aws.upbound.io/v1beta2',
13+
'kind': 'Bucket',
14+
'spec': {
15+
'forProvider': {
16+
'region': 'us-east-1',
17+
},
18+
},
19+
}
20+
21+
response:
22+
desired:
23+
resources:
24+
bucket1:
25+
resource:
26+
apiVersion: s3.aws.upbound.io/v1beta2
27+
kind: Bucket
28+
spec:
29+
forProvider:
30+
region: us-east-1
31+
bucket2:
32+
resource:
33+
apiVersion: s3.aws.upbound.io/v1beta2
34+
kind: Bucket
35+
spec:
36+
forProvider:
37+
region: us-east-1

tests/fn_cases/get-started-app.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ request:
33
composite:
44
resource:
55
metadata:
6+
namespace: my-namespace
67
name: my-app
78
spec:
89
image: nginx
@@ -26,7 +27,7 @@ request:
2627
def compose(self):
2728
labels = {'example.crossplane.io/app': self.metadata.name}
2829
29-
d = self.resources.deployment('apps/v1', 'Deployment')
30+
d = self.resources.deployment('apps/v1', 'Deployment', self.metadata.namespace)
3031
d.metadata.labels = labels
3132
d.spec.replicas = 2
3233
d.spec.selector.matchLabels = labels
@@ -36,7 +37,7 @@ request:
3637
d.spec.template.spec.containers[0].ports[0].containerPort = 80
3738
d.ready = d.conditions.Available.status
3839
39-
s = self.resources.service('v1', 'Service')
40+
s = self.resources.service('v1', 'Service', self.metadata.namespace)
4041
s.metadata.labels = labels
4142
s.spec.selector = labels
4243
s.spec.ports[0].protocol = 'TCP'
@@ -62,6 +63,7 @@ response:
6263
metadata:
6364
labels:
6465
example.crossplane.io/app: my-app
66+
namespace: my-namespace
6567
spec:
6668
replicas: 2
6769
selector:
@@ -85,6 +87,7 @@ response:
8587
metadata:
8688
labels:
8789
example.crossplane.io/app: my-app
90+
namespace: my-namespace
8891
spec:
8992
selector:
9093
example.crossplane.io/app: my-app

0 commit comments

Comments
 (0)