crossplane-function-pythonic 0.4.0__tar.gz → 0.4.2__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.4.0 → crossplane_function_pythonic-0.4.2}/PKG-INFO +6 -5
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/README.md +4 -3
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__about__.py +1 -1
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__init__.py +2 -1
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/command.py +7 -1
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/composite.py +6 -6
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/function.py +5 -5
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/grpc.py +1 -1
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/protobuf.py +25 -4
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/render.py +341 -331
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/cluster-function-pythonic.yaml +1 -1
- crossplane_function_pythonic-0.4.0/examples/connection-details-composition/access-keys.yaml → crossplane_function_pythonic-0.4.2/examples/connection-details-composition/observed.yaml +19 -0
- crossplane_function_pythonic-0.4.2/examples/connection-details-composition/render.sh +5 -0
- crossplane_function_pythonic-0.4.2/examples/connections/render.sh +7 -0
- crossplane_function_pythonic-0.4.2/examples/connections/resources.yaml +27 -0
- crossplane_function_pythonic-0.4.2/examples/function-go-templating/context/render.sh +3 -0
- crossplane_function_pythonic-0.4.2/examples/function-go-templating/functions/getCredentialData/render.sh +3 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/composition.yaml +1 -1
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/composition.yaml +1 -2
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/render.sh +1 -1
- crossplane_function_pythonic-0.4.2/examples/function-go-templating/required-resources/render.sh +3 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/render.sh +1 -1
- crossplane_function_pythonic-0.4.2/examples/usages-extra/render.sh +3 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/pyproject.toml +1 -1
- crossplane_function_pythonic-0.4.0/examples/connection-details-composition/render.sh +0 -6
- crossplane_function_pythonic-0.4.0/examples/connection-details-composition/user.yaml +0 -18
- crossplane_function_pythonic-0.4.0/examples/connections/composite-connection.yaml +0 -8
- crossplane_function_pythonic-0.4.0/examples/connections/rds-connection.yaml +0 -8
- crossplane_function_pythonic-0.4.0/examples/connections/render.sh +0 -9
- crossplane_function_pythonic-0.4.0/examples/connections/step-credential.yaml +0 -8
- crossplane_function_pythonic-0.4.0/examples/function-go-templating/context/render.sh +0 -3
- crossplane_function_pythonic-0.4.0/examples/function-go-templating/functions/getCredentialData/render.sh +0 -3
- crossplane_function_pythonic-0.4.0/examples/function-go-templating/required-resources/render.sh +0 -3
- crossplane_function_pythonic-0.4.0/examples/usages-extra/render.sh +0 -3
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/.gitignore +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/LICENSE +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/__main__.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/auto_ready.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/main.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/packages.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/crossplane/pythonic/version.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/README.md +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/aks/kubernetescluster.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/aks/resourcegroup.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/definition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/install.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/providers.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/aks-cluster/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/definition.yaml +0 -0
- crossplane_function_pythonic-0.4.0/examples/connection-details-composition/secrets.yaml → crossplane_function_pythonic-0.4.2/examples/connection-details-composition/resources.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connection-details-composition/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connections/composition.yaml +0 -0
- crossplane_function_pythonic-0.4.0/examples/connections/rds-observed.yaml → crossplane_function_pythonic-0.4.2/examples/connections/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/connections/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/composition-v2.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/definition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/render-v2.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/eks-cluster/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/README.md +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/definition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/runtime.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/vcluster.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/filing-system/vcluster.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/conditions/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/composition.yaml +1 -1
- /crossplane_function_pythonic-0.4.0/examples/function-go-templating/context/environmentConfigs.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/context/resources.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/context/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/fromYaml/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getComposedResource/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCompositeResource/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCredentialData/composition.yaml +0 -0
- /crossplane_function_pythonic-0.4.0/examples/function-go-templating/functions/getCredentialData/credentials.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/functions/getCredentialData/resources.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getCredentialData/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/getResourceCondition/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/include/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/functions/toYaml/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/inline/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/composition-real.yaml +0 -0
- /crossplane_function_pythonic-0.4.0/examples/function-go-templating/recursive/composition-wrapper.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/recursive/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/recursive/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/required-resources/composition.yaml +0 -0
- /crossplane_function_pythonic-0.4.0/examples/function-go-templating/required-resources/required-resources.yaml → /crossplane_function_pythonic-0.4.2/examples/function-go-templating/required-resources/resources.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-go-templating/required-resources/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/sequencer.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/function-sequencer/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/definition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/get-started-app/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/kustomization.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/vcluster.py +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/helm-copy-secret/xrd.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/README.md +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/composition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/definition.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/observed.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/provider-ec2.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/import-existing-vpc/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/run-all.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/single-purpose/render.sh +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/single-purpose/xr.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/usages-extra/composition.yaml +0 -0
- /crossplane_function_pythonic-0.4.0/examples/usages-extra/observedResources.yaml → /crossplane_function_pythonic-0.4.2/examples/usages-extra/observed.yaml +0 -0
- /crossplane_function_pythonic-0.4.0/examples/usages-extra/extraResources.yaml → /crossplane_function_pythonic-0.4.2/examples/usages-extra/resources.yaml +0 -0
- {crossplane_function_pythonic-0.4.0 → crossplane_function_pythonic-0.4.2}/examples/usages-extra/xr.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crossplane-function-pythonic
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.2
|
|
4
4
|
Summary: A Python centric Crossplane Function
|
|
5
5
|
Project-URL: Documentation, https://github.com/crossplane-contrib/function-pythonic#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/crossplane-contrib/function-pythonic/issues
|
|
@@ -19,7 +19,7 @@ Requires-Dist: inflect==7.5.0
|
|
|
19
19
|
Requires-Dist: kr8s==0.20.15
|
|
20
20
|
Requires-Dist: pyyaml==6.0.3
|
|
21
21
|
Provides-Extra: packages
|
|
22
|
-
Requires-Dist: kopf==1.
|
|
22
|
+
Requires-Dist: kopf==1.43.0; extra == 'packages'
|
|
23
23
|
Provides-Extra: pip-install
|
|
24
24
|
Requires-Dist: pip==26.0.1; extra == 'pip-install'
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
@@ -83,7 +83,7 @@ kind: Function
|
|
|
83
83
|
metadata:
|
|
84
84
|
name: function-pythonic
|
|
85
85
|
spec:
|
|
86
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
86
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
### Crossplane V1
|
|
@@ -95,7 +95,7 @@ kind: Function
|
|
|
95
95
|
metadata:
|
|
96
96
|
name: function-pythonic
|
|
97
97
|
spec:
|
|
98
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
98
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
99
99
|
runtimeConfigRef:
|
|
100
100
|
name: function-pythonic
|
|
101
101
|
--
|
|
@@ -241,6 +241,7 @@ The following functions are provided to create Protobuf structures:
|
|
|
241
241
|
| List | Create a new Protobuf list |
|
|
242
242
|
| Unknown | Create a new Protobuf unknown placeholder |
|
|
243
243
|
| Yaml | Create a new Protobuf structure from a yaml string |
|
|
244
|
+
| YamlAll | Create a new Protobuf list from a yaml string |
|
|
244
245
|
| Json | Create a new Protobuf structure from a json string |
|
|
245
246
|
| B64Encode | Encode a string into base 64 |
|
|
246
247
|
| B64Decode | Decode a string from base 64 |
|
|
@@ -616,7 +617,7 @@ kind: Function
|
|
|
616
617
|
metadata:
|
|
617
618
|
name: function-pythonic
|
|
618
619
|
spec:
|
|
619
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
620
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
620
621
|
runtimeConfigRef:
|
|
621
622
|
name: function-pythonic
|
|
622
623
|
---
|
|
@@ -57,7 +57,7 @@ kind: Function
|
|
|
57
57
|
metadata:
|
|
58
58
|
name: function-pythonic
|
|
59
59
|
spec:
|
|
60
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
60
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
### Crossplane V1
|
|
@@ -69,7 +69,7 @@ kind: Function
|
|
|
69
69
|
metadata:
|
|
70
70
|
name: function-pythonic
|
|
71
71
|
spec:
|
|
72
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
72
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
73
73
|
runtimeConfigRef:
|
|
74
74
|
name: function-pythonic
|
|
75
75
|
--
|
|
@@ -215,6 +215,7 @@ The following functions are provided to create Protobuf structures:
|
|
|
215
215
|
| List | Create a new Protobuf list |
|
|
216
216
|
| Unknown | Create a new Protobuf unknown placeholder |
|
|
217
217
|
| Yaml | Create a new Protobuf structure from a yaml string |
|
|
218
|
+
| YamlAll | Create a new Protobuf list from a yaml string |
|
|
218
219
|
| Json | Create a new Protobuf structure from a json string |
|
|
219
220
|
| B64Encode | Encode a string into base 64 |
|
|
220
221
|
| B64Decode | Decode a string from base 64 |
|
|
@@ -590,7 +591,7 @@ kind: Function
|
|
|
590
591
|
metadata:
|
|
591
592
|
name: function-pythonic
|
|
592
593
|
spec:
|
|
593
|
-
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.
|
|
594
|
+
package: xpkg.upbound.io/crossplane-contrib/function-pythonic:v0.4.2
|
|
594
595
|
runtimeConfigRef:
|
|
595
596
|
name: function-pythonic
|
|
596
597
|
---
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# This is set at build time, using "hatch version"
|
|
2
|
-
__version__ = "0.4.
|
|
2
|
+
__version__ = "0.4.2"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
from .composite import BaseComposite
|
|
4
|
-
from .protobuf import append, Map, List, Unknown, Yaml, Json, B64Encode, B64Decode
|
|
4
|
+
from .protobuf import append, Map, List, Unknown, Yaml, YamlAll, Json, B64Encode, B64Decode
|
|
5
5
|
|
|
6
6
|
__all__ = [
|
|
7
7
|
'BaseComposite',
|
|
@@ -10,6 +10,7 @@ __all__ = [
|
|
|
10
10
|
'List',
|
|
11
11
|
'Unknown',
|
|
12
12
|
'Yaml',
|
|
13
|
+
'YamlAll',
|
|
13
14
|
'Json',
|
|
14
15
|
'B64Encode',
|
|
15
16
|
'B64Decode',
|
|
@@ -63,7 +63,7 @@ class Command:
|
|
|
63
63
|
help='Enable Crossplane V1 compatibility mode',
|
|
64
64
|
)
|
|
65
65
|
|
|
66
|
-
def __init__(self, args):
|
|
66
|
+
def __init__(self, args=None):
|
|
67
67
|
self.args = args
|
|
68
68
|
self.initialize()
|
|
69
69
|
|
|
@@ -77,6 +77,12 @@ class Command:
|
|
|
77
77
|
logger = logging.getLogger()
|
|
78
78
|
logger.handlers = [handler]
|
|
79
79
|
logger.setLevel(logging.DEBUG if self.args.debug else logging.INFO)
|
|
80
|
+
# Suppress noisy libraries, these can be overriden using --logger-level
|
|
81
|
+
logging.getLogger('asyncio').setLevel(logging.INFO)
|
|
82
|
+
logging.getLogger('grpc').setLevel(logging.INFO)
|
|
83
|
+
logging.getLogger('httpcore').setLevel(logging.INFO)
|
|
84
|
+
logging.getLogger('httpx').setLevel(logging.WARNING)
|
|
85
|
+
logging.getLogger('kr8s').setLevel(logging.INFO)
|
|
80
86
|
for logger_level in self.args.logger_level:
|
|
81
87
|
for logger_level in logger_level.split(','):
|
|
82
88
|
logger_level = logger_level.split('=')
|
|
@@ -43,7 +43,7 @@ class Connection:
|
|
|
43
43
|
|
|
44
44
|
def __set__(self, composite, values):
|
|
45
45
|
connection = self.__get__(composite)
|
|
46
|
-
|
|
46
|
+
connection()
|
|
47
47
|
for key, value in values:
|
|
48
48
|
connection[key] = value
|
|
49
49
|
|
|
@@ -384,7 +384,7 @@ class Resource:
|
|
|
384
384
|
field = resource.observed.metadata.name
|
|
385
385
|
else:
|
|
386
386
|
field = resource.status.notReady
|
|
387
|
-
self.metadata.annotations[f"
|
|
387
|
+
self.metadata.annotations[f"pythonic.dependency/{resource.name}"] = field
|
|
388
388
|
|
|
389
389
|
class Requireds:
|
|
390
390
|
def __init__(self, composite):
|
|
@@ -757,7 +757,7 @@ class Results:
|
|
|
757
757
|
return len(self) > 0
|
|
758
758
|
|
|
759
759
|
def __len__(self):
|
|
760
|
-
len(self._results)
|
|
760
|
+
return len(self._results)
|
|
761
761
|
|
|
762
762
|
def __getitem__(self, key):
|
|
763
763
|
if key >= len(self._results):
|
|
@@ -832,7 +832,7 @@ class Result:
|
|
|
832
832
|
|
|
833
833
|
@property
|
|
834
834
|
def claim(self):
|
|
835
|
-
return bool(self) and self._result == fnv1.Target.TARGET_COMPOSITE_AND_CLAIM
|
|
835
|
+
return bool(self) and self._result.target == fnv1.Target.TARGET_COMPOSITE_AND_CLAIM
|
|
836
836
|
|
|
837
837
|
@claim.setter
|
|
838
838
|
def claim(self, claim):
|
|
@@ -887,10 +887,10 @@ class _Connection:
|
|
|
887
887
|
|
|
888
888
|
def __call__(self, **kwargs):
|
|
889
889
|
self._composite.response.desired.composite.connection_details(**kwargs)
|
|
890
|
-
if self.
|
|
890
|
+
if self._composite.crossplane_v1:
|
|
891
891
|
return
|
|
892
892
|
del self._composite.resources[self._resource_name]
|
|
893
|
-
for key, value in kwargs:
|
|
893
|
+
for key, value in kwargs.items():
|
|
894
894
|
self[key] = value
|
|
895
895
|
|
|
896
896
|
def __setattr__(self, key, value):
|
|
@@ -17,9 +17,8 @@ logger = logging.getLogger(__name__)
|
|
|
17
17
|
class FunctionRunner(grpcv1.FunctionRunnerService):
|
|
18
18
|
"""A FunctionRunner handles gRPC RunFunctionRequests."""
|
|
19
19
|
|
|
20
|
-
def __init__(self,
|
|
20
|
+
def __init__(self, renderUnknowns=False, crossplane_v1=False):
|
|
21
21
|
"""Create a new FunctionRunner."""
|
|
22
|
-
self.debug = debug
|
|
23
22
|
self.renderUnknowns = renderUnknowns
|
|
24
23
|
self.crossplane_v1 = crossplane_v1
|
|
25
24
|
self.clazzes = {}
|
|
@@ -182,7 +181,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
|
|
|
182
181
|
for _, resource in sorted(entry for entry in composite.resources):
|
|
183
182
|
dependencies = resource.desired._getDependencies
|
|
184
183
|
if dependencies:
|
|
185
|
-
if
|
|
184
|
+
if composite.logger.isEnabledFor(logging.DEBUG):
|
|
186
185
|
for destination, source in sorted(dependencies.items()):
|
|
187
186
|
destination = self.trimFullName(destination)
|
|
188
187
|
source = self.trimFullName(source)
|
|
@@ -278,7 +277,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
|
|
|
278
277
|
if resource.unknownsFatal or (resource.unknownsFatal is None and composite.unknownsFatal):
|
|
279
278
|
fatalResources.append(name)
|
|
280
279
|
fatal = True
|
|
281
|
-
if
|
|
280
|
+
if composite.logger.isEnabledFor(logging.DEBUG):
|
|
282
281
|
for destination, source in sorted(unknowns.items()):
|
|
283
282
|
destination = self.trimFullName(destination)
|
|
284
283
|
source = self.trimFullName(source)
|
|
@@ -319,7 +318,7 @@ class FunctionRunner(grpcv1.FunctionRunnerService):
|
|
|
319
318
|
message = 'All resources are composed'
|
|
320
319
|
status = True
|
|
321
320
|
result = None
|
|
322
|
-
if not
|
|
321
|
+
if not composite.logger.isEnabledFor(logging.DEBUG) and level:
|
|
323
322
|
level(message)
|
|
324
323
|
composite.conditions.ResourcesComposed(reason, message, status)
|
|
325
324
|
if result:
|
|
@@ -378,6 +377,7 @@ class Module:
|
|
|
378
377
|
self.List = pythonic.List
|
|
379
378
|
self.Unknown = pythonic.Unknown
|
|
380
379
|
self.Yaml = pythonic.Yaml
|
|
380
|
+
self.YamlAll = pythonic.YamlAll
|
|
381
381
|
self.Json = pythonic.Json
|
|
382
382
|
self.B64Encode = pythonic.B64Encode
|
|
383
383
|
self.B64Decode = pythonic.B64Decode
|
|
@@ -88,7 +88,7 @@ class Command(command.Command):
|
|
|
88
88
|
|
|
89
89
|
async def run(self):
|
|
90
90
|
grpc.aio.init_grpc_aio()
|
|
91
|
-
grpc_runner = function.FunctionRunner(self.args.
|
|
91
|
+
grpc_runner = function.FunctionRunner(self.args.render_unknowns, self.args.crossplane_v1)
|
|
92
92
|
grpc_server = grpc.aio.server()
|
|
93
93
|
grpcv1.add_FunctionRunnerServiceServicer_to_server(grpc_runner, grpc_server)
|
|
94
94
|
if self.args.insecure:
|
|
@@ -42,6 +42,13 @@ def Yaml(string, readOnly=None):
|
|
|
42
42
|
string = str(string)
|
|
43
43
|
return Value(None, None, yaml.safe_load(string), readOnly)
|
|
44
44
|
|
|
45
|
+
def YamlAll(string, readOnly=None):
|
|
46
|
+
if isinstance(string, (FieldMessage, Value)):
|
|
47
|
+
if not string:
|
|
48
|
+
return string
|
|
49
|
+
string = str(string)
|
|
50
|
+
return Value(None, None, [document for document in yaml.safe_load_all(string)], readOnly)
|
|
51
|
+
|
|
45
52
|
def Json(string, readOnly=None):
|
|
46
53
|
if isinstance(string, (FieldMessage, Value)):
|
|
47
54
|
if not string:
|
|
@@ -406,12 +413,26 @@ class RepeatedMessage:
|
|
|
406
413
|
|
|
407
414
|
def __getitem__(self, key):
|
|
408
415
|
key = self._validate_key(key)
|
|
409
|
-
if key
|
|
410
|
-
|
|
411
|
-
|
|
416
|
+
if key == append:
|
|
417
|
+
if self._messages is _Unknown:
|
|
418
|
+
key = 0
|
|
419
|
+
else:
|
|
420
|
+
key = len(self._messages)
|
|
412
421
|
value = _Unknown
|
|
413
422
|
else:
|
|
414
|
-
|
|
423
|
+
if key < 0:
|
|
424
|
+
if self._messages is _Unknown:
|
|
425
|
+
key = 0
|
|
426
|
+
else:
|
|
427
|
+
key = len(self._messages) + key
|
|
428
|
+
if key < 0:
|
|
429
|
+
key = 0
|
|
430
|
+
if key in self._cache:
|
|
431
|
+
return self._cache[key]
|
|
432
|
+
if self._messages is _Unknown or key >= len(self._messages):
|
|
433
|
+
value = _Unknown
|
|
434
|
+
else:
|
|
435
|
+
value = self._messages[key]
|
|
415
436
|
if value is None and self._field.has_default_value:
|
|
416
437
|
value = self._field.default_value
|
|
417
438
|
if self._field.type == self._field.TYPE_MESSAGE:
|