crossplane-function-pythonic 0.5.0__tar.gz → 0.6.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/.gitignore +1 -0
- crossplane_function_pythonic-0.5.0/README.md → crossplane_function_pythonic-0.6.1/PKG-INFO +137 -14
- crossplane_function_pythonic-0.5.0/PKG-INFO → crossplane_function_pythonic-0.6.1/README.md +110 -40
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/__about__.py +1 -1
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/composite.py +157 -3
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/function.py +21 -6
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/grpc.py +26 -4
- crossplane_function_pythonic-0.6.1/crossplane/pythonic/packages.py +180 -0
- crossplane_function_pythonic-0.6.1/crossplane/pythonic/proto/v1/run_function.proto +436 -0
- crossplane_function_pythonic-0.6.1/crossplane/pythonic/proto/v1/run_function_pb2.py +129 -0
- crossplane_function_pythonic-0.6.1/crossplane/pythonic/proto/v1/run_function_pb2.pyi +306 -0
- crossplane_function_pythonic-0.6.1/crossplane/pythonic/proto/v1/run_function_pb2_grpc.py +101 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/protobuf.py +28 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/render.py +107 -10
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/cluster-function-pythonic.yaml +1 -1
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/context/composition.yaml +1 -1
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/context/resources.yaml +1 -1
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/pyproject.toml +30 -16
- crossplane_function_pythonic-0.5.0/crossplane/pythonic/packages.py +0 -148
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/LICENSE +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/__init__.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/__main__.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/auto_ready.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/command.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/main.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/crossplane/pythonic/version.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/README.md +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/aks/kubernetescluster.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/aks/resourcegroup.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/install.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/providers.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/aks-cluster/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/resources.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connection-details-composition/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connections/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connections/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connections/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connections/resources.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/connections/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/composition-v2.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/render-v2.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/eks-cluster/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/README.md +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/runtime.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/vcluster.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/filing-system/vcluster.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/conditions/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/conditions/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/conditions/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/conditions/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/context/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/context/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/context/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/fromYaml/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/fromYaml/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/fromYaml/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getComposedResource/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getComposedResource/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getComposedResource/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getComposedResource/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCompositeResource/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCompositeResource/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCompositeResource/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCredentialData/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCredentialData/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCredentialData/resources.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getCredentialData/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getResourceCondition/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getResourceCondition/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getResourceCondition/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/getResourceCondition/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/include/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/include/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/include/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/toYaml/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/toYaml/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/functions/toYaml/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/inline/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/inline/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/inline/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/recursive/composition-real.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/recursive/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/recursive/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/recursive/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/required-resources/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/required-resources/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/required-resources/resources.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-go-templating/required-resources/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-sequencer/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-sequencer/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-sequencer/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-sequencer/sequencer.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/function-sequencer/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/get-started-app/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/get-started-app/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/get-started-app/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/get-started-app/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/get-started-app/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/vcluster.py +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/helm-copy-secret/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/README.md +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/provider-ec2.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/import-existing-vpc/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/inlined/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/inlined/definition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/inlined/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/inlined/xr.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/run-all.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/usages-extra/composition.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/usages-extra/observed.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/usages-extra/render.sh +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/usages-extra/resources.yaml +0 -0
- {crossplane_function_pythonic-0.5.0 → crossplane_function_pythonic-0.6.1}/examples/usages-extra/xr.yaml +0 -0
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: crossplane-function-pythonic
|
|
3
|
+
Version: 0.6.1
|
|
4
|
+
Summary: A Python centric Crossplane Function
|
|
5
|
+
Project-URL: Documentation, https://github.com/crossplane-contrib/function-pythonic#readme
|
|
6
|
+
Project-URL: Issues, https://github.com/crossplane-contrib/function-pythonic/issues
|
|
7
|
+
Project-URL: Source, https://github.com/crossplane-contrib/function-pythonic
|
|
8
|
+
Author-email: Patrick J McNerthney <pat@mcnerthney.com>
|
|
9
|
+
License-Expression: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
+
Requires-Python: <3.15,>=3.12
|
|
17
|
+
Requires-Dist: grpcio==1.80.0
|
|
18
|
+
Requires-Dist: inflect==7.5.0
|
|
19
|
+
Requires-Dist: kr8s==0.20.15
|
|
20
|
+
Requires-Dist: protobuf==7.35.0
|
|
21
|
+
Requires-Dist: pyyaml==6.0.3
|
|
22
|
+
Provides-Extra: packages
|
|
23
|
+
Requires-Dist: kopf==1.44.5; extra == 'packages'
|
|
24
|
+
Provides-Extra: pip-install
|
|
25
|
+
Requires-Dist: pip==26.1.1; extra == 'pip-install'
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
1
28
|
# function-pythonic
|
|
2
29
|
|
|
3
30
|
## Introduction
|
|
@@ -57,7 +84,7 @@ kind: Function
|
|
|
57
84
|
metadata:
|
|
58
85
|
name: function-pythonic
|
|
59
86
|
spec:
|
|
60
|
-
package: xpkg.
|
|
87
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
61
88
|
```
|
|
62
89
|
|
|
63
90
|
### Crossplane V1
|
|
@@ -69,7 +96,7 @@ kind: Function
|
|
|
69
96
|
metadata:
|
|
70
97
|
name: function-pythonic
|
|
71
98
|
spec:
|
|
72
|
-
package: xpkg.
|
|
99
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
73
100
|
runtimeConfigRef:
|
|
74
101
|
name: function-pythonic
|
|
75
102
|
--
|
|
@@ -266,6 +293,7 @@ The BaseComposite class provides the following fields for manipulating the Compo
|
|
|
266
293
|
| self.metadata | Map | The composite observed metadata |
|
|
267
294
|
| self.spec | Map | The composite observed spec |
|
|
268
295
|
| self.status | Map | The composite desired and observed status, read from observed if not in desired |
|
|
296
|
+
| self.output | Map | The step output, only used during Operations |
|
|
269
297
|
| self.conditions | Conditions | The composite desired and observed conditions, read from observed if not in desired |
|
|
270
298
|
| self.results | Results | Returned results applied to the Composite and optionally on the Claim |
|
|
271
299
|
| self.connectionSecret | Map | The name, namespace, and resourceName to use when generating the connection secret in Crossplane v2 |
|
|
@@ -280,17 +308,31 @@ The BaseComposite also provides access to the following Crossplane Function leve
|
|
|
280
308
|
| self.request | Message | Low level direct access to the RunFunctionRequest message |
|
|
281
309
|
| self.response | Message | Low level direct access to the RunFunctionResponse message |
|
|
282
310
|
| self.logger | Logger | Python logger to log messages to the running function stdout |
|
|
311
|
+
| self.capabilities | Capabilities | This Crossplane version's Capabilities |
|
|
283
312
|
| self.parameters | Map | The configured step parameters |
|
|
284
313
|
| self.ttl | Integer | Get or set the response TTL, in seconds |
|
|
285
314
|
| self.credentials | Credentials | The request credentials |
|
|
286
315
|
| self.context | Map | The response context, initialized from the request context |
|
|
287
316
|
| self.environment | Map | The response environment, initialized from the request context environment |
|
|
288
317
|
| self.requireds | Requireds | Request and read additional local Kubernetes resources |
|
|
318
|
+
| self.schemas | Schemas | Request and read CustomResourceDefinition schemas |
|
|
289
319
|
| self.resources | Resources | Define and process composed resources |
|
|
290
320
|
| self.usages| Boolean | Generate Crossplane Usages for resource dependencies, default False |
|
|
291
321
|
| self.autoReady | Boolean | Perform auto ready processing on all composed resources, default True |
|
|
292
322
|
| self.unknownsFatal | Boolean | Terminate the composition if already created resources are assigned unknown values, default False |
|
|
293
323
|
|
|
324
|
+
### Capabiities
|
|
325
|
+
|
|
326
|
+
The Capabilities of the Crossplane version calling function-pythonic.
|
|
327
|
+
|
|
328
|
+
| Field | Type | Description |
|
|
329
|
+
| ----- | ---- | ----------- |
|
|
330
|
+
| bool(Capabilities) | Boolean | Whether or not the Crossplane version supports Capabilities |
|
|
331
|
+
| Capabiities.requireds | Boolean | Functions can return required resources and Crossplane will fetch the required resources |
|
|
332
|
+
| Capabiities.credentials | Boolean | Functions can receive credentials from secrets specified in the Composition |
|
|
333
|
+
| Capabiities.conditions | Boolean | Functions can return status conditions to be applied to the XR and optionally its claim |
|
|
334
|
+
| Capabiities.schemas | Boolean | Functions can request OpenAPI schemas and Crossplane will return them |
|
|
335
|
+
|
|
294
336
|
### Composed Resources
|
|
295
337
|
|
|
296
338
|
Creating and accessing composed resources is performed using the `BaseComposite.resources` field.
|
|
@@ -324,7 +366,7 @@ Resource class:
|
|
|
324
366
|
|
|
325
367
|
Creating and accessing required resources is performed using the `BaseComposite.requireds` field.
|
|
326
368
|
`BaseComposite.requireds` is a dictionary of the required resources whose key is the required
|
|
327
|
-
|
|
369
|
+
schema name. The value returned when getting a required resource from BaseComposite is the
|
|
328
370
|
following RequiredResources class:
|
|
329
371
|
|
|
330
372
|
| Field | Type | Description |
|
|
@@ -337,9 +379,6 @@ following RequiredResources class:
|
|
|
337
379
|
| RequiredResources.matchName | String | The names to match when returning the required resources |
|
|
338
380
|
| RequiredResources.matchLabels | Map | The labels to match when returning the required resources |
|
|
339
381
|
|
|
340
|
-
The current version of crossplane-sdk-python used by function-pythonic does not support namespace
|
|
341
|
-
selection. For now, use matchLabels and filter the results if required.
|
|
342
|
-
|
|
343
382
|
RequiredResources acts like a Python list to provide access to the found required resources.
|
|
344
383
|
Each resource in the list is the following RequiredResource class:
|
|
345
384
|
|
|
@@ -356,6 +395,22 @@ Each resource in the list is the following RequiredResource class:
|
|
|
356
395
|
| RequiredResource.conditions | Map | The required resource conditions |
|
|
357
396
|
| RequiredResource.connection | Map | The required resource connection details |
|
|
358
397
|
|
|
398
|
+
### Required Schemas
|
|
399
|
+
|
|
400
|
+
Creating and accessing required schemas is performed using the `BaseComposite.schemas` field.
|
|
401
|
+
`BaseComposite.schemas` is a dictionary of the required schema whose key is the required
|
|
402
|
+
resource name. The value returned when getting a required resource from BaseComposite is the
|
|
403
|
+
following Schema class:
|
|
404
|
+
|
|
405
|
+
| Field | Type | Description |
|
|
406
|
+
| ----- | ---- | ----------- |
|
|
407
|
+
| Schema(apiVersion,kind) | Schema | Reset the required schema and set the optional parameters |
|
|
408
|
+
| Schema.name | String | The required schema name |
|
|
409
|
+
| Schema.apiVersion | String | The required schema selector apiVersion |
|
|
410
|
+
| Schema.kind | String | The required schema selector kind |
|
|
411
|
+
| Schema.\_\_getitem\_\_ | Map | The required schema openAPIV3Schema |
|
|
412
|
+
| Schema.\_\_getattr\_\_ | Map | The required schema openAPIV3Schema |
|
|
413
|
+
|
|
359
414
|
### Conditions
|
|
360
415
|
|
|
361
416
|
The `BaseComposite.conditions`, `Resource.conditions`, and `RequiredResource.conditions` fields
|
|
@@ -474,7 +529,7 @@ $ function-pythonic render --help
|
|
|
474
529
|
usage: Crossplane Function Pythonic render [-h] [--debug] [--log-name-width WIDTH] [--logger-level LOGGER=LEVEL] [--python-path DIRECTORY]
|
|
475
530
|
[--render-unknowns] [--allow-oversize-protos] [--crossplane-v1] [--kube-context CONTEXT]
|
|
476
531
|
[--context-files KEY=PATH] [--context-values KEY=VALUE] [--observed-resources PATH]
|
|
477
|
-
[--required-resources PATH] [--
|
|
532
|
+
[--required-resources PATH] [--required-schemas PATH] [--include-full-xr] [--include-connection-xr]
|
|
478
533
|
[--include-function-results] [--include-context]
|
|
479
534
|
COMPOSITE [COMPOSITION]
|
|
480
535
|
|
|
@@ -506,8 +561,8 @@ options:
|
|
|
506
561
|
A YAML file or directory of YAML files specifying the observed state of composed resources.
|
|
507
562
|
--required-resources, -e PATH
|
|
508
563
|
A YAML file or directory of YAML files specifying required resources to pass to the Function pipeline.
|
|
509
|
-
--
|
|
510
|
-
A
|
|
564
|
+
--required-schemas, -s PATH
|
|
565
|
+
A JSON file or directory of JSON files specifying required schemas to pass to the Function pipeline.
|
|
511
566
|
--include-full-xr, -x
|
|
512
567
|
Include a direct copy of the input XR's spedc and metadata fields in the rendered output.
|
|
513
568
|
--include-connection-xr
|
|
@@ -576,9 +631,15 @@ status:
|
|
|
576
631
|
Most of the examples contain a `render.sh` command which uses `function-pythonic render` to
|
|
577
632
|
render the example.
|
|
578
633
|
|
|
579
|
-
##
|
|
634
|
+
## Shared Python Packages
|
|
635
|
+
|
|
636
|
+
Python packages and modules can be added to the function-pythonic runtime
|
|
637
|
+
by including the python code in any of the following resources: ConfigMap,
|
|
638
|
+
Secret, EnvironmentConfig, or Composition
|
|
580
639
|
|
|
581
|
-
ConfigMap
|
|
640
|
+
### ConfigMap Packages
|
|
641
|
+
|
|
642
|
+
ConfigMap based python packages are enable using the `--packages-configmaps` and
|
|
582
643
|
`--packages-namespace` command line options. ConfigMaps with the label
|
|
583
644
|
`function-pythonic.package` will be incorporated in the python path at
|
|
584
645
|
the location configured in the label value. For example, the following
|
|
@@ -640,7 +701,7 @@ data:
|
|
|
640
701
|
composite: example.pythonic.features.FeatureOneComposite
|
|
641
702
|
...
|
|
642
703
|
```
|
|
643
|
-
This requires enabling the the packages support using the `--packages` command
|
|
704
|
+
This requires enabling the the packages support using the `--packages-configmaps` command
|
|
644
705
|
line option in the DeploymentRuntimeConfig and configuring the required
|
|
645
706
|
Kubernetes RBAC permissions. For example:
|
|
646
707
|
```yaml
|
|
@@ -649,7 +710,7 @@ kind: Function
|
|
|
649
710
|
metadata:
|
|
650
711
|
name: function-pythonic
|
|
651
712
|
spec:
|
|
652
|
-
package: xpkg.
|
|
713
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
653
714
|
runtimeConfigRef:
|
|
654
715
|
name: function-pythonic
|
|
655
716
|
---
|
|
@@ -711,9 +772,71 @@ ClusterRole permissions. The `--packages-namespace` command line option will res
|
|
|
711
772
|
to only using the supplied namespace. This option can be invoked multiple times.
|
|
712
773
|
The above RBAC permission can then be per namespace RBAC Role permissions.
|
|
713
774
|
|
|
775
|
+
### Secret Packages
|
|
776
|
+
|
|
714
777
|
Secrets can also be used in an identical manner as ConfigMaps by enabling the
|
|
715
778
|
`--packages-secrets` command line option. Secrets permissions need to be
|
|
716
|
-
added to the above RBAC configuration.
|
|
779
|
+
added to the above RBAC configuration. Secret based python packages also enable
|
|
780
|
+
provisioning files with binary data.
|
|
781
|
+
|
|
782
|
+
### EnvironmentConfig Packages
|
|
783
|
+
|
|
784
|
+
EnvironmentConfig based provisioning enable an entire package and module
|
|
785
|
+
directory structure. Use the `--packages-environmentconfigs` command line option
|
|
786
|
+
and configure the ClusterRole RBAC access.
|
|
787
|
+
```yaml
|
|
788
|
+
apiVersion: apiextensions.crossplane.io/v1beta1
|
|
789
|
+
kind: EnvironmentConfig
|
|
790
|
+
metadata:
|
|
791
|
+
name: test
|
|
792
|
+
labels:
|
|
793
|
+
function-pythonic.package: 'true'
|
|
794
|
+
data:
|
|
795
|
+
arootpackage:
|
|
796
|
+
asubpackage:
|
|
797
|
+
bmodule.py: |
|
|
798
|
+
def hello(where):
|
|
799
|
+
return f"Hello, {where}!"
|
|
800
|
+
amodule.py: |
|
|
801
|
+
def goodby(where):
|
|
802
|
+
return f"Goodby, {where}!"
|
|
803
|
+
```
|
|
804
|
+
### Composition Packages
|
|
805
|
+
|
|
806
|
+
Composition based provisioning works just like EnvironmentConfig where a
|
|
807
|
+
directory structure is created. Use the `--packages-compositions` command line option
|
|
808
|
+
and configure the ClusterRole RBAC access. The main reason to use Composition
|
|
809
|
+
based provision is because Compositions can be included in a Crossplane
|
|
810
|
+
Configuration Package.
|
|
811
|
+
```yaml
|
|
812
|
+
apiVersion: apiextensions.crossplane.io/v1
|
|
813
|
+
kind: Composition
|
|
814
|
+
metadata:
|
|
815
|
+
labels:
|
|
816
|
+
function-pythonic.package: 'true'
|
|
817
|
+
name: test
|
|
818
|
+
spec:
|
|
819
|
+
compositeTypeRef:
|
|
820
|
+
apiVersion: code.pythoni.com/v1alpha1
|
|
821
|
+
kind: Code
|
|
822
|
+
mode: Pipeline
|
|
823
|
+
pipeline:
|
|
824
|
+
- step: render
|
|
825
|
+
functionRef:
|
|
826
|
+
name: function-pythonic
|
|
827
|
+
input:
|
|
828
|
+
apiVersion: pythonic.fn.crossplane.io/v1alpha1
|
|
829
|
+
kind: Composite
|
|
830
|
+
packages:
|
|
831
|
+
arootpackage:
|
|
832
|
+
asubpackage:
|
|
833
|
+
bmodule.py: |
|
|
834
|
+
def hello(where):
|
|
835
|
+
return f"Hello, {where}!"
|
|
836
|
+
amodule.py: |
|
|
837
|
+
def goodby(where):
|
|
838
|
+
return f"Goodby, {where}!"
|
|
839
|
+
```
|
|
717
840
|
|
|
718
841
|
## Step Parameters
|
|
719
842
|
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: crossplane-function-pythonic
|
|
3
|
-
Version: 0.5.0
|
|
4
|
-
Summary: A Python centric Crossplane Function
|
|
5
|
-
Project-URL: Documentation, https://github.com/crossplane-contrib/function-pythonic#readme
|
|
6
|
-
Project-URL: Issues, https://github.com/crossplane-contrib/function-pythonic/issues
|
|
7
|
-
Project-URL: Source, https://github.com/crossplane-contrib/function-pythonic
|
|
8
|
-
Author-email: Patrick J McNerthney <pat@mcnerthney.com>
|
|
9
|
-
License-Expression: Apache-2.0
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Programming Language :: Python
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
-
Requires-Python: <3.15,>=3.12
|
|
17
|
-
Requires-Dist: crossplane-function-sdk-python==0.11.0
|
|
18
|
-
Requires-Dist: inflect==7.5.0
|
|
19
|
-
Requires-Dist: kr8s==0.20.15
|
|
20
|
-
Requires-Dist: pyyaml==6.0.3
|
|
21
|
-
Provides-Extra: packages
|
|
22
|
-
Requires-Dist: kopf==1.43.0; extra == 'packages'
|
|
23
|
-
Provides-Extra: pip-install
|
|
24
|
-
Requires-Dist: pip==26.0.1; extra == 'pip-install'
|
|
25
|
-
Description-Content-Type: text/markdown
|
|
26
|
-
|
|
27
1
|
# function-pythonic
|
|
28
2
|
|
|
29
3
|
## Introduction
|
|
@@ -83,7 +57,7 @@ kind: Function
|
|
|
83
57
|
metadata:
|
|
84
58
|
name: function-pythonic
|
|
85
59
|
spec:
|
|
86
|
-
package: xpkg.
|
|
60
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
87
61
|
```
|
|
88
62
|
|
|
89
63
|
### Crossplane V1
|
|
@@ -95,7 +69,7 @@ kind: Function
|
|
|
95
69
|
metadata:
|
|
96
70
|
name: function-pythonic
|
|
97
71
|
spec:
|
|
98
|
-
package: xpkg.
|
|
72
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
99
73
|
runtimeConfigRef:
|
|
100
74
|
name: function-pythonic
|
|
101
75
|
--
|
|
@@ -292,6 +266,7 @@ The BaseComposite class provides the following fields for manipulating the Compo
|
|
|
292
266
|
| self.metadata | Map | The composite observed metadata |
|
|
293
267
|
| self.spec | Map | The composite observed spec |
|
|
294
268
|
| self.status | Map | The composite desired and observed status, read from observed if not in desired |
|
|
269
|
+
| self.output | Map | The step output, only used during Operations |
|
|
295
270
|
| self.conditions | Conditions | The composite desired and observed conditions, read from observed if not in desired |
|
|
296
271
|
| self.results | Results | Returned results applied to the Composite and optionally on the Claim |
|
|
297
272
|
| self.connectionSecret | Map | The name, namespace, and resourceName to use when generating the connection secret in Crossplane v2 |
|
|
@@ -306,17 +281,31 @@ The BaseComposite also provides access to the following Crossplane Function leve
|
|
|
306
281
|
| self.request | Message | Low level direct access to the RunFunctionRequest message |
|
|
307
282
|
| self.response | Message | Low level direct access to the RunFunctionResponse message |
|
|
308
283
|
| self.logger | Logger | Python logger to log messages to the running function stdout |
|
|
284
|
+
| self.capabilities | Capabilities | This Crossplane version's Capabilities |
|
|
309
285
|
| self.parameters | Map | The configured step parameters |
|
|
310
286
|
| self.ttl | Integer | Get or set the response TTL, in seconds |
|
|
311
287
|
| self.credentials | Credentials | The request credentials |
|
|
312
288
|
| self.context | Map | The response context, initialized from the request context |
|
|
313
289
|
| self.environment | Map | The response environment, initialized from the request context environment |
|
|
314
290
|
| self.requireds | Requireds | Request and read additional local Kubernetes resources |
|
|
291
|
+
| self.schemas | Schemas | Request and read CustomResourceDefinition schemas |
|
|
315
292
|
| self.resources | Resources | Define and process composed resources |
|
|
316
293
|
| self.usages| Boolean | Generate Crossplane Usages for resource dependencies, default False |
|
|
317
294
|
| self.autoReady | Boolean | Perform auto ready processing on all composed resources, default True |
|
|
318
295
|
| self.unknownsFatal | Boolean | Terminate the composition if already created resources are assigned unknown values, default False |
|
|
319
296
|
|
|
297
|
+
### Capabiities
|
|
298
|
+
|
|
299
|
+
The Capabilities of the Crossplane version calling function-pythonic.
|
|
300
|
+
|
|
301
|
+
| Field | Type | Description |
|
|
302
|
+
| ----- | ---- | ----------- |
|
|
303
|
+
| bool(Capabilities) | Boolean | Whether or not the Crossplane version supports Capabilities |
|
|
304
|
+
| Capabiities.requireds | Boolean | Functions can return required resources and Crossplane will fetch the required resources |
|
|
305
|
+
| Capabiities.credentials | Boolean | Functions can receive credentials from secrets specified in the Composition |
|
|
306
|
+
| Capabiities.conditions | Boolean | Functions can return status conditions to be applied to the XR and optionally its claim |
|
|
307
|
+
| Capabiities.schemas | Boolean | Functions can request OpenAPI schemas and Crossplane will return them |
|
|
308
|
+
|
|
320
309
|
### Composed Resources
|
|
321
310
|
|
|
322
311
|
Creating and accessing composed resources is performed using the `BaseComposite.resources` field.
|
|
@@ -350,7 +339,7 @@ Resource class:
|
|
|
350
339
|
|
|
351
340
|
Creating and accessing required resources is performed using the `BaseComposite.requireds` field.
|
|
352
341
|
`BaseComposite.requireds` is a dictionary of the required resources whose key is the required
|
|
353
|
-
|
|
342
|
+
schema name. The value returned when getting a required resource from BaseComposite is the
|
|
354
343
|
following RequiredResources class:
|
|
355
344
|
|
|
356
345
|
| Field | Type | Description |
|
|
@@ -363,9 +352,6 @@ following RequiredResources class:
|
|
|
363
352
|
| RequiredResources.matchName | String | The names to match when returning the required resources |
|
|
364
353
|
| RequiredResources.matchLabels | Map | The labels to match when returning the required resources |
|
|
365
354
|
|
|
366
|
-
The current version of crossplane-sdk-python used by function-pythonic does not support namespace
|
|
367
|
-
selection. For now, use matchLabels and filter the results if required.
|
|
368
|
-
|
|
369
355
|
RequiredResources acts like a Python list to provide access to the found required resources.
|
|
370
356
|
Each resource in the list is the following RequiredResource class:
|
|
371
357
|
|
|
@@ -382,6 +368,22 @@ Each resource in the list is the following RequiredResource class:
|
|
|
382
368
|
| RequiredResource.conditions | Map | The required resource conditions |
|
|
383
369
|
| RequiredResource.connection | Map | The required resource connection details |
|
|
384
370
|
|
|
371
|
+
### Required Schemas
|
|
372
|
+
|
|
373
|
+
Creating and accessing required schemas is performed using the `BaseComposite.schemas` field.
|
|
374
|
+
`BaseComposite.schemas` is a dictionary of the required schema whose key is the required
|
|
375
|
+
resource name. The value returned when getting a required resource from BaseComposite is the
|
|
376
|
+
following Schema class:
|
|
377
|
+
|
|
378
|
+
| Field | Type | Description |
|
|
379
|
+
| ----- | ---- | ----------- |
|
|
380
|
+
| Schema(apiVersion,kind) | Schema | Reset the required schema and set the optional parameters |
|
|
381
|
+
| Schema.name | String | The required schema name |
|
|
382
|
+
| Schema.apiVersion | String | The required schema selector apiVersion |
|
|
383
|
+
| Schema.kind | String | The required schema selector kind |
|
|
384
|
+
| Schema.\_\_getitem\_\_ | Map | The required schema openAPIV3Schema |
|
|
385
|
+
| Schema.\_\_getattr\_\_ | Map | The required schema openAPIV3Schema |
|
|
386
|
+
|
|
385
387
|
### Conditions
|
|
386
388
|
|
|
387
389
|
The `BaseComposite.conditions`, `Resource.conditions`, and `RequiredResource.conditions` fields
|
|
@@ -500,7 +502,7 @@ $ function-pythonic render --help
|
|
|
500
502
|
usage: Crossplane Function Pythonic render [-h] [--debug] [--log-name-width WIDTH] [--logger-level LOGGER=LEVEL] [--python-path DIRECTORY]
|
|
501
503
|
[--render-unknowns] [--allow-oversize-protos] [--crossplane-v1] [--kube-context CONTEXT]
|
|
502
504
|
[--context-files KEY=PATH] [--context-values KEY=VALUE] [--observed-resources PATH]
|
|
503
|
-
[--required-resources PATH] [--
|
|
505
|
+
[--required-resources PATH] [--required-schemas PATH] [--include-full-xr] [--include-connection-xr]
|
|
504
506
|
[--include-function-results] [--include-context]
|
|
505
507
|
COMPOSITE [COMPOSITION]
|
|
506
508
|
|
|
@@ -532,8 +534,8 @@ options:
|
|
|
532
534
|
A YAML file or directory of YAML files specifying the observed state of composed resources.
|
|
533
535
|
--required-resources, -e PATH
|
|
534
536
|
A YAML file or directory of YAML files specifying required resources to pass to the Function pipeline.
|
|
535
|
-
--
|
|
536
|
-
A
|
|
537
|
+
--required-schemas, -s PATH
|
|
538
|
+
A JSON file or directory of JSON files specifying required schemas to pass to the Function pipeline.
|
|
537
539
|
--include-full-xr, -x
|
|
538
540
|
Include a direct copy of the input XR's spedc and metadata fields in the rendered output.
|
|
539
541
|
--include-connection-xr
|
|
@@ -602,9 +604,15 @@ status:
|
|
|
602
604
|
Most of the examples contain a `render.sh` command which uses `function-pythonic render` to
|
|
603
605
|
render the example.
|
|
604
606
|
|
|
605
|
-
##
|
|
607
|
+
## Shared Python Packages
|
|
608
|
+
|
|
609
|
+
Python packages and modules can be added to the function-pythonic runtime
|
|
610
|
+
by including the python code in any of the following resources: ConfigMap,
|
|
611
|
+
Secret, EnvironmentConfig, or Composition
|
|
606
612
|
|
|
607
|
-
ConfigMap
|
|
613
|
+
### ConfigMap Packages
|
|
614
|
+
|
|
615
|
+
ConfigMap based python packages are enable using the `--packages-configmaps` and
|
|
608
616
|
`--packages-namespace` command line options. ConfigMaps with the label
|
|
609
617
|
`function-pythonic.package` will be incorporated in the python path at
|
|
610
618
|
the location configured in the label value. For example, the following
|
|
@@ -666,7 +674,7 @@ data:
|
|
|
666
674
|
composite: example.pythonic.features.FeatureOneComposite
|
|
667
675
|
...
|
|
668
676
|
```
|
|
669
|
-
This requires enabling the the packages support using the `--packages` command
|
|
677
|
+
This requires enabling the the packages support using the `--packages-configmaps` command
|
|
670
678
|
line option in the DeploymentRuntimeConfig and configuring the required
|
|
671
679
|
Kubernetes RBAC permissions. For example:
|
|
672
680
|
```yaml
|
|
@@ -675,7 +683,7 @@ kind: Function
|
|
|
675
683
|
metadata:
|
|
676
684
|
name: function-pythonic
|
|
677
685
|
spec:
|
|
678
|
-
package: xpkg.
|
|
686
|
+
package: xpkg.crossplane.io/crossplane-contrib/function-pythonic:v0.6.0
|
|
679
687
|
runtimeConfigRef:
|
|
680
688
|
name: function-pythonic
|
|
681
689
|
---
|
|
@@ -737,9 +745,71 @@ ClusterRole permissions. The `--packages-namespace` command line option will res
|
|
|
737
745
|
to only using the supplied namespace. This option can be invoked multiple times.
|
|
738
746
|
The above RBAC permission can then be per namespace RBAC Role permissions.
|
|
739
747
|
|
|
748
|
+
### Secret Packages
|
|
749
|
+
|
|
740
750
|
Secrets can also be used in an identical manner as ConfigMaps by enabling the
|
|
741
751
|
`--packages-secrets` command line option. Secrets permissions need to be
|
|
742
|
-
added to the above RBAC configuration.
|
|
752
|
+
added to the above RBAC configuration. Secret based python packages also enable
|
|
753
|
+
provisioning files with binary data.
|
|
754
|
+
|
|
755
|
+
### EnvironmentConfig Packages
|
|
756
|
+
|
|
757
|
+
EnvironmentConfig based provisioning enable an entire package and module
|
|
758
|
+
directory structure. Use the `--packages-environmentconfigs` command line option
|
|
759
|
+
and configure the ClusterRole RBAC access.
|
|
760
|
+
```yaml
|
|
761
|
+
apiVersion: apiextensions.crossplane.io/v1beta1
|
|
762
|
+
kind: EnvironmentConfig
|
|
763
|
+
metadata:
|
|
764
|
+
name: test
|
|
765
|
+
labels:
|
|
766
|
+
function-pythonic.package: 'true'
|
|
767
|
+
data:
|
|
768
|
+
arootpackage:
|
|
769
|
+
asubpackage:
|
|
770
|
+
bmodule.py: |
|
|
771
|
+
def hello(where):
|
|
772
|
+
return f"Hello, {where}!"
|
|
773
|
+
amodule.py: |
|
|
774
|
+
def goodby(where):
|
|
775
|
+
return f"Goodby, {where}!"
|
|
776
|
+
```
|
|
777
|
+
### Composition Packages
|
|
778
|
+
|
|
779
|
+
Composition based provisioning works just like EnvironmentConfig where a
|
|
780
|
+
directory structure is created. Use the `--packages-compositions` command line option
|
|
781
|
+
and configure the ClusterRole RBAC access. The main reason to use Composition
|
|
782
|
+
based provision is because Compositions can be included in a Crossplane
|
|
783
|
+
Configuration Package.
|
|
784
|
+
```yaml
|
|
785
|
+
apiVersion: apiextensions.crossplane.io/v1
|
|
786
|
+
kind: Composition
|
|
787
|
+
metadata:
|
|
788
|
+
labels:
|
|
789
|
+
function-pythonic.package: 'true'
|
|
790
|
+
name: test
|
|
791
|
+
spec:
|
|
792
|
+
compositeTypeRef:
|
|
793
|
+
apiVersion: code.pythoni.com/v1alpha1
|
|
794
|
+
kind: Code
|
|
795
|
+
mode: Pipeline
|
|
796
|
+
pipeline:
|
|
797
|
+
- step: render
|
|
798
|
+
functionRef:
|
|
799
|
+
name: function-pythonic
|
|
800
|
+
input:
|
|
801
|
+
apiVersion: pythonic.fn.crossplane.io/v1alpha1
|
|
802
|
+
kind: Composite
|
|
803
|
+
packages:
|
|
804
|
+
arootpackage:
|
|
805
|
+
asubpackage:
|
|
806
|
+
bmodule.py: |
|
|
807
|
+
def hello(where):
|
|
808
|
+
return f"Hello, {where}!"
|
|
809
|
+
amodule.py: |
|
|
810
|
+
def goodby(where):
|
|
811
|
+
return f"Goodby, {where}!"
|
|
812
|
+
```
|
|
743
813
|
|
|
744
814
|
## Step Parameters
|
|
745
815
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# This is set at build time, using "hatch version"
|
|
2
|
-
__version__ = "0.
|
|
2
|
+
__version__ = "0.6.1"
|