Skip to content

Commit bcccb63

Browse files
authored
Implement support for connection information during function-pythonic render (#15)
Signed-off-by: Patrick J. McNerthney <[email protected]>
1 parent 7270768 commit bcccb63

File tree

41 files changed

+429
-111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+429
-111
lines changed

README.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ kind: Function
5757
metadata:
5858
name: function-pythonic
5959
spec:
60-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.2.0
60+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.2.1
6161
```
6262
## Composed Resource Dependencies
6363
@@ -204,8 +204,9 @@ The BaseComposite class provides the following fields for manipulating the Compo
204204
| self.status | Map | The composite desired and observed status, read from observed if not in desired |
205205
| self.conditions | Conditions | The composite desired and observed conditions, read from observed if not in desired |
206206
| self.results | Results | Returned results applied to the Composite and optionally on the Claim |
207-
| self.connection | Connection | The composite desired and observed connection detials, read from observed if not in desired |
207+
| self.connection | Map | The composite desired connection detials |
208208
| self.ready | Boolean | The composite desired ready state |
209+
| self.observed.connection | Map | The composite observed connection detials |
209210

210211
The BaseComposite also provides access to the following Crossplane Function level features:
211212

@@ -246,7 +247,7 @@ Resource class:
246247
| Resource.data | Map | The resource data |
247248
| Resource.status | Map | The resource status |
248249
| Resource.conditions | Conditions | The resource conditions |
249-
| Resource.connection | Connection | The resource connection details |
250+
| Resource.connection | Map | The resource observed connection details |
250251
| Resource.ready | Boolean | The resource ready state |
251252
| Resource.unknownsFatal | Boolean | Terminate the composition if this resource has been created and is assigned unknown values, default is Composite.unknownsFatal |
252253
| Resource.usages | Boolean | Generate Crossplane Usages for this resource, default is Composite.autoReady |
@@ -286,6 +287,7 @@ Each resource in the list is the following RequiredResource class:
286287
| RequiredResource.data | Map | The required resource data |
287288
| RequiredResource.status | Map | The required resource status |
288289
| RequiredResource.conditions | Map | The required resource conditions |
290+
| RequiredResource.connection | Map | The required resource connection details |
289291

290292
### Conditions
291293

@@ -348,11 +350,11 @@ $ pip install crossplane-function-pythonic
348350
Then to render function-pythonic Compositions, use the `function-pythonic render ...`
349351
command.
350352
```shell
351-
$ function-pythonic render --help
353+
$ function-pythonic render -h
352354
usage: Crossplane Function Pythonic render [-h] [--debug] [--log-name-width WIDTH] [--python-path DIRECTORY] [--render-unknowns]
353355
[--allow-oversize-protos] [--context-files KEY=PATH] [--context-values KEY=VALUE]
354-
[--observed-resources PATH] [--extra-resources PATH] [--required-resources PATH]
355-
[--function-credentials PATH] [--include-full-xr] [--include-function-results] [--include-context]
356+
[--observed-resources PATH] [--required-resources PATH] [--secret-store PATH] [--include-full-xr]
357+
[--include-connection-xr] [--include-function-results] [--include-context]
356358
PATH [PATH/CLASS]
357359
358360
positional arguments:
@@ -376,14 +378,14 @@ options:
376378
Context key-value pairs to pass to the Function pipeline. Values must be YAML/JSON. Keys take precedence over --context-files.
377379
--observed-resources, -o PATH
378380
A YAML file or directory of YAML files specifying the observed state of composed resources.
379-
--extra-resources PATH
380-
A YAML file or directory of YAML files specifying required resources (deprecated, use --required-resources).
381381
--required-resources, -e PATH
382382
A YAML file or directory of YAML files specifying required resources to pass to the Function pipeline.
383-
--function-credentials PATH
384-
A YAML file or directory of YAML files specifying credentials to use for Functions to render the XR.
383+
--secret-store, -s PATH
384+
A YAML file or directory of YAML files specifying Secrets to use to resolve connections and credentials.
385385
--include-full-xr, -x
386386
Include a direct copy of the input XR's spedc and metadata fields in the rendered output.
387+
--include-connection-xr
388+
Include the Composite connection values in the rendered output as a resource of kind: Connection.
387389
--include-function-results, -r
388390
Include informational and warning messages from Functions in the rendered output as resources of kind: Result..
389391
--include-context, -c
@@ -521,7 +523,7 @@ kind: Function
521523
metadata:
522524
name: function-pythonic
523525
spec:
524-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.2.0
526+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.2.1
525527
runtimeConfigRef:
526528
name: function-pythonic
527529
---

crossplane/pythonic/composite.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ def __init__(self, request, single_use, logger):
4040
observed = self.request.observed.composite
4141
desired = self.response.desired.composite
4242
self.observed = observed.resource
43+
self.observed._set_attribute('connection', self.request.observed.composite.connection_details)
4344
self.desired = desired.resource
4445
self.apiVersion = self.observed.apiVersion
4546
self.kind = self.observed.kind
@@ -434,6 +435,7 @@ def __init__(self, name, ix, resource):
434435
self.data = self.observed.data
435436
self.status = self.observed.status
436437
self.conditions = Conditions(resource)
438+
self.connection = self.observed.connection_details
437439

438440
def __bool__(self):
439441
return bool(self.observed)

0 commit comments

Comments
 (0)