crossplane-function-sdk-python 0.2.0__tar.gz → 0.4.0__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_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/.github/workflows/ci.yml +2 -2
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/PKG-INFO +3 -2
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/__version__.py +1 -1
- {crossplane_function_sdk_python-0.2.0/crossplane/function/proto/v1beta1 → crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1}/run_function.proto +90 -5
- crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1/run_function_pb2.py +103 -0
- {crossplane_function_sdk_python-0.2.0/crossplane/function/proto/v1beta1 → crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1}/run_function_pb2.pyi +74 -6
- crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1/run_function_pb2_grpc.py +101 -0
- crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1beta1/run_function.proto +328 -0
- crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1beta1/run_function_pb2.py +103 -0
- crossplane_function_sdk_python-0.4.0/crossplane/function/proto/v1beta1/run_function_pb2.pyi +232 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/proto/v1beta1/run_function_pb2_grpc.py +35 -4
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/resource.py +25 -1
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/response.py +14 -14
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/runtime.py +38 -3
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/pyproject.toml +10 -9
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/tests/test_resource.py +80 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/tests/test_response.py +11 -11
- crossplane_function_sdk_python-0.4.0/tests/test_runtime.py +71 -0
- crossplane_function_sdk_python-0.2.0/crossplane/function/proto/v1beta1/run_function_pb2.py +0 -74
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/.gitignore +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/LICENSE +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/README.md +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/crossplane/function/logging.py +0 -0
- {crossplane_function_sdk_python-0.2.0 → crossplane_function_sdk_python-0.4.0}/renovate.json +0 -0
|
@@ -119,7 +119,7 @@ jobs:
|
|
|
119
119
|
path: "dist"
|
|
120
120
|
|
|
121
121
|
- name: Publish to PyPI
|
|
122
|
-
uses: pypa/gh-action-pypi-publish@v1.
|
|
122
|
+
uses: pypa/gh-action-pypi-publish@v1.10.1
|
|
123
123
|
with:
|
|
124
124
|
# Note that this is currently being pushed to the 'crossplane' PyPI
|
|
125
125
|
# user (not org). See @negz if you need access - PyPI requires 2FA to
|
|
@@ -149,7 +149,7 @@ jobs:
|
|
|
149
149
|
run: hatch run docs:pdoc -d google crossplane/function -o docs
|
|
150
150
|
|
|
151
151
|
- name: Setup Pages
|
|
152
|
-
uses: actions/configure-pages@
|
|
152
|
+
uses: actions/configure-pages@v5
|
|
153
153
|
|
|
154
154
|
- name: Upload artifact
|
|
155
155
|
uses: actions/upload-pages-artifact@v3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: crossplane-function-sdk-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: The Python SDK for Crossplane composition functions
|
|
5
5
|
Project-URL: Documentation, https://github.com/crossplane/function-sdk-python#readme
|
|
6
6
|
Project-URL: Issues, https://github.com/crossplane/function-sdk-python/issues
|
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
14
14
|
Requires-Python: >=3.11
|
|
15
15
|
Requires-Dist: grpcio-reflection==1.*
|
|
16
16
|
Requires-Dist: grpcio==1.*
|
|
17
|
+
Requires-Dist: protobuf==5.27.2
|
|
17
18
|
Requires-Dist: structlog==24.*
|
|
18
19
|
Description-Content-Type: text/markdown
|
|
19
20
|
|
|
@@ -19,10 +19,9 @@ syntax = "proto3";
|
|
|
19
19
|
import "google/protobuf/struct.proto";
|
|
20
20
|
import "google/protobuf/duration.proto";
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
package apiextensions.fn.proto.v1beta1;
|
|
22
|
+
package apiextensions.fn.proto.v1;
|
|
23
|
+
|
|
24
|
+
option go_package = "github.com/crossplane/crossplane/apis/apiextensions/fn/proto/v1";
|
|
26
25
|
|
|
27
26
|
// A FunctionRunnerService is a Composition Function.
|
|
28
27
|
service FunctionRunnerService {
|
|
@@ -69,6 +68,24 @@ message RunFunctionRequest {
|
|
|
69
68
|
// did not exist, Crossplane sets the map key to an empty Resources message to
|
|
70
69
|
// indicate that it attempted to satisfy the request.
|
|
71
70
|
map<string, Resources> extra_resources = 6;
|
|
71
|
+
|
|
72
|
+
// Optional credentials that this Function may use to communicate with an
|
|
73
|
+
// external system.
|
|
74
|
+
map <string, Credentials> credentials = 7;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Credentials that a Function may use to communicate with an external system.
|
|
78
|
+
message Credentials {
|
|
79
|
+
// Source of the credentials.
|
|
80
|
+
oneof source {
|
|
81
|
+
// Credential data loaded by Crossplane, for example from a Secret.
|
|
82
|
+
CredentialData credential_data = 1;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// CredentialData loaded by Crossplane, for example from a Secret.
|
|
87
|
+
message CredentialData {
|
|
88
|
+
map<string, bytes> data = 1;
|
|
72
89
|
}
|
|
73
90
|
|
|
74
91
|
// Resources represents the state of several Crossplane resources.
|
|
@@ -104,6 +121,10 @@ message RunFunctionResponse {
|
|
|
104
121
|
|
|
105
122
|
// Requirements that must be satisfied for this Function to run successfully.
|
|
106
123
|
Requirements requirements = 5;
|
|
124
|
+
|
|
125
|
+
// Status conditions to be applied to the composite resource. Conditions may also
|
|
126
|
+
// optionally be applied to the composite resource's associated claim.
|
|
127
|
+
repeated Condition conditions = 6;
|
|
107
128
|
}
|
|
108
129
|
|
|
109
130
|
// RequestMeta contains metadata pertaining to a RunFunctionRequest.
|
|
@@ -122,11 +143,18 @@ message Requirements {
|
|
|
122
143
|
|
|
123
144
|
// ResourceSelector selects a group of resources, either by name or by label.
|
|
124
145
|
message ResourceSelector {
|
|
146
|
+
// API version of resources to select.
|
|
125
147
|
string api_version = 1;
|
|
148
|
+
|
|
149
|
+
// Kind of resources to select.
|
|
126
150
|
string kind = 2;
|
|
127
151
|
|
|
152
|
+
// Resources to match.
|
|
128
153
|
oneof match {
|
|
154
|
+
// Match the resource with this name.
|
|
129
155
|
string match_name = 3;
|
|
156
|
+
|
|
157
|
+
// Match all resources with these labels.
|
|
130
158
|
MatchLabels match_labels = 4;
|
|
131
159
|
}
|
|
132
160
|
}
|
|
@@ -219,6 +247,13 @@ message Result {
|
|
|
219
247
|
|
|
220
248
|
// Human-readable details about the result.
|
|
221
249
|
string message = 2;
|
|
250
|
+
|
|
251
|
+
// Optional PascalCase, machine-readable reason for this result. If omitted,
|
|
252
|
+
// the value will be ComposeResources.
|
|
253
|
+
optional string reason = 3;
|
|
254
|
+
|
|
255
|
+
// The resources this result targets.
|
|
256
|
+
optional Target target = 4;
|
|
222
257
|
}
|
|
223
258
|
|
|
224
259
|
// Severity of Function results.
|
|
@@ -238,4 +273,54 @@ enum Severity {
|
|
|
238
273
|
// Normal results are emitted as normal events and debug logs associated
|
|
239
274
|
// with the composite resource.
|
|
240
275
|
SEVERITY_NORMAL = 3;
|
|
241
|
-
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Target of Function results and conditions.
|
|
279
|
+
enum Target {
|
|
280
|
+
// If the target is unspecified, the result targets the composite resource.
|
|
281
|
+
TARGET_UNSPECIFIED = 0;
|
|
282
|
+
|
|
283
|
+
// Target the composite resource. Results that target the composite resource
|
|
284
|
+
// should include detailed, advanced information.
|
|
285
|
+
TARGET_COMPOSITE = 1;
|
|
286
|
+
|
|
287
|
+
// Target the composite and the claim. Results that target the composite and
|
|
288
|
+
// the claim should include only end-user friendly information.
|
|
289
|
+
TARGET_COMPOSITE_AND_CLAIM = 2;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Status condition to be applied to the composite resource. Condition may also
|
|
293
|
+
// optionally be applied to the composite resource's associated claim. For
|
|
294
|
+
// detailed information on proper usage of status conditions, please see
|
|
295
|
+
// https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties.
|
|
296
|
+
message Condition {
|
|
297
|
+
// Type of condition in PascalCase.
|
|
298
|
+
string type = 1;
|
|
299
|
+
|
|
300
|
+
// Status of the condition.
|
|
301
|
+
Status status = 2;
|
|
302
|
+
|
|
303
|
+
// Reason contains a programmatic identifier indicating the reason for the
|
|
304
|
+
// condition's last transition. Producers of specific condition types may
|
|
305
|
+
// define expected values and meanings for this field, and whether the values
|
|
306
|
+
// are considered a guaranteed API. The value should be a PascalCase string.
|
|
307
|
+
// This field may not be empty.
|
|
308
|
+
string reason = 3;
|
|
309
|
+
|
|
310
|
+
// Message is a human readable message indicating details about the
|
|
311
|
+
// transition. This may be an empty string.
|
|
312
|
+
optional string message = 4;
|
|
313
|
+
|
|
314
|
+
// The resources this condition targets.
|
|
315
|
+
optional Target target = 5;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
enum Status {
|
|
319
|
+
STATUS_CONDITION_UNSPECIFIED = 0;
|
|
320
|
+
|
|
321
|
+
STATUS_CONDITION_UNKNOWN = 1;
|
|
322
|
+
|
|
323
|
+
STATUS_CONDITION_TRUE = 2;
|
|
324
|
+
|
|
325
|
+
STATUS_CONDITION_FALSE = 3;
|
|
326
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: crossplane/function/proto/v1/run_function.proto
|
|
5
|
+
# Protobuf Python Version: 5.27.2
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
5,
|
|
15
|
+
27,
|
|
16
|
+
2,
|
|
17
|
+
'',
|
|
18
|
+
'crossplane/function/proto/v1/run_function.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
|
|
26
|
+
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/crossplane/function/proto/v1/run_function.proto\x12\x19\x61piextensions.fn.proto.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/duration.proto\"\x8d\x05\n\x12RunFunctionRequest\x12\x34\n\x04meta\x18\x01 \x01(\x0b\x32&.apiextensions.fn.proto.v1.RequestMeta\x12\x32\n\x08observed\x18\x02 \x01(\x0b\x32 .apiextensions.fn.proto.v1.State\x12\x31\n\x07\x64\x65sired\x18\x03 \x01(\x0b\x32 .apiextensions.fn.proto.v1.State\x12+\n\x05input\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12-\n\x07\x63ontext\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x01\x88\x01\x01\x12Z\n\x0f\x65xtra_resources\x18\x06 \x03(\x0b\x32\x41.apiextensions.fn.proto.v1.RunFunctionRequest.ExtraResourcesEntry\x12S\n\x0b\x63redentials\x18\x07 \x03(\x0b\x32>.apiextensions.fn.proto.v1.RunFunctionRequest.CredentialsEntry\x1a[\n\x13\x45xtraResourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.apiextensions.fn.proto.v1.Resources:\x02\x38\x01\x1aZ\n\x10\x43redentialsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.apiextensions.fn.proto.v1.Credentials:\x02\x38\x01\x42\x08\n\x06_inputB\n\n\x08_context\"]\n\x0b\x43redentials\x12\x44\n\x0f\x63redential_data\x18\x01 \x01(\x0b\x32).apiextensions.fn.proto.v1.CredentialDataH\x00\x42\x08\n\x06source\"\x80\x01\n\x0e\x43redentialData\x12\x41\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x33.apiextensions.fn.proto.v1.CredentialData.DataEntry\x1a+\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"?\n\tResources\x12\x32\n\x05items\x18\x01 \x03(\x0b\x32#.apiextensions.fn.proto.v1.Resource\"\xe7\x02\n\x13RunFunctionResponse\x12\x35\n\x04meta\x18\x01 \x01(\x0b\x32\'.apiextensions.fn.proto.v1.ResponseMeta\x12\x31\n\x07\x64\x65sired\x18\x02 \x01(\x0b\x32 .apiextensions.fn.proto.v1.State\x12\x32\n\x07results\x18\x03 \x03(\x0b\x32!.apiextensions.fn.proto.v1.Result\x12-\n\x07\x63ontext\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x88\x01\x01\x12=\n\x0crequirements\x18\x05 \x01(\x0b\x32\'.apiextensions.fn.proto.v1.Requirements\x12\x38\n\nconditions\x18\x06 \x03(\x0b\x32$.apiextensions.fn.proto.v1.ConditionB\n\n\x08_context\"\x1a\n\x0bRequestMeta\x12\x0b\n\x03tag\x18\x01 \x01(\t\"\xc8\x01\n\x0cRequirements\x12T\n\x0f\x65xtra_resources\x18\x01 \x03(\x0b\x32;.apiextensions.fn.proto.v1.Requirements.ExtraResourcesEntry\x1a\x62\n\x13\x45xtraResourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.apiextensions.fn.proto.v1.ResourceSelector:\x02\x38\x01\"\x94\x01\n\x10ResourceSelector\x12\x13\n\x0b\x61pi_version\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x14\n\nmatch_name\x18\x03 \x01(\tH\x00\x12>\n\x0cmatch_labels\x18\x04 \x01(\x0b\x32&.apiextensions.fn.proto.v1.MatchLabelsH\x00\x42\x07\n\x05match\"\x80\x01\n\x0bMatchLabels\x12\x42\n\x06labels\x18\x01 \x03(\x0b\x32\x32.apiextensions.fn.proto.v1.MatchLabels.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"P\n\x0cResponseMeta\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12+\n\x03ttl\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x88\x01\x01\x42\x06\n\x04_ttl\"\xda\x01\n\x05State\x12\x36\n\tcomposite\x18\x01 \x01(\x0b\x32#.apiextensions.fn.proto.v1.Resource\x12\x42\n\tresources\x18\x02 \x03(\x0b\x32/.apiextensions.fn.proto.v1.State.ResourcesEntry\x1aU\n\x0eResourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.apiextensions.fn.proto.v1.Resource:\x02\x38\x01\"\xf8\x01\n\x08Resource\x12)\n\x08resource\x18\x01 \x01(\x0b\x32\x17.google.protobuf.Struct\x12V\n\x12\x63onnection_details\x18\x02 \x03(\x0b\x32:.apiextensions.fn.proto.v1.Resource.ConnectionDetailsEntry\x12/\n\x05ready\x18\x03 \x01(\x0e\x32 .apiextensions.fn.proto.v1.Ready\x1a\x38\n\x16\x43onnectionDetailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\xb3\x01\n\x06Result\x12\x35\n\x08severity\x18\x01 \x01(\x0e\x32#.apiextensions.fn.proto.v1.Severity\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x13\n\x06reason\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x36\n\x06target\x18\x04 \x01(\x0e\x32!.apiextensions.fn.proto.v1.TargetH\x01\x88\x01\x01\x42\t\n\x07_reasonB\t\n\x07_target\"\xc1\x01\n\tCondition\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\x31\n\x06status\x18\x02 \x01(\x0e\x32!.apiextensions.fn.proto.v1.Status\x12\x0e\n\x06reason\x18\x03 \x01(\t\x12\x14\n\x07message\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x36\n\x06target\x18\x05 \x01(\x0e\x32!.apiextensions.fn.proto.v1.TargetH\x01\x88\x01\x01\x42\n\n\x08_messageB\t\n\x07_target*?\n\x05Ready\x12\x15\n\x11READY_UNSPECIFIED\x10\x00\x12\x0e\n\nREADY_TRUE\x10\x01\x12\x0f\n\x0bREADY_FALSE\x10\x02*c\n\x08Severity\x12\x18\n\x14SEVERITY_UNSPECIFIED\x10\x00\x12\x12\n\x0eSEVERITY_FATAL\x10\x01\x12\x14\n\x10SEVERITY_WARNING\x10\x02\x12\x13\n\x0fSEVERITY_NORMAL\x10\x03*V\n\x06Target\x12\x16\n\x12TARGET_UNSPECIFIED\x10\x00\x12\x14\n\x10TARGET_COMPOSITE\x10\x01\x12\x1e\n\x1aTARGET_COMPOSITE_AND_CLAIM\x10\x02*\x7f\n\x06Status\x12 \n\x1cSTATUS_CONDITION_UNSPECIFIED\x10\x00\x12\x1c\n\x18STATUS_CONDITION_UNKNOWN\x10\x01\x12\x19\n\x15STATUS_CONDITION_TRUE\x10\x02\x12\x1a\n\x16STATUS_CONDITION_FALSE\x10\x03\x32\x87\x01\n\x15\x46unctionRunnerService\x12n\n\x0bRunFunction\x12-.apiextensions.fn.proto.v1.RunFunctionRequest\x1a..apiextensions.fn.proto.v1.RunFunctionResponse\"\x00\x42\x41Z?github.com/crossplane/crossplane/apis/apiextensions/fn/proto/v1b\x06proto3')
|
|
30
|
+
|
|
31
|
+
_globals = globals()
|
|
32
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
33
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'crossplane.function.proto.v1.run_function_pb2', _globals)
|
|
34
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
35
|
+
_globals['DESCRIPTOR']._loaded_options = None
|
|
36
|
+
_globals['DESCRIPTOR']._serialized_options = b'Z?github.com/crossplane/crossplane/apis/apiextensions/fn/proto/v1'
|
|
37
|
+
_globals['_RUNFUNCTIONREQUEST_EXTRARESOURCESENTRY']._loaded_options = None
|
|
38
|
+
_globals['_RUNFUNCTIONREQUEST_EXTRARESOURCESENTRY']._serialized_options = b'8\001'
|
|
39
|
+
_globals['_RUNFUNCTIONREQUEST_CREDENTIALSENTRY']._loaded_options = None
|
|
40
|
+
_globals['_RUNFUNCTIONREQUEST_CREDENTIALSENTRY']._serialized_options = b'8\001'
|
|
41
|
+
_globals['_CREDENTIALDATA_DATAENTRY']._loaded_options = None
|
|
42
|
+
_globals['_CREDENTIALDATA_DATAENTRY']._serialized_options = b'8\001'
|
|
43
|
+
_globals['_REQUIREMENTS_EXTRARESOURCESENTRY']._loaded_options = None
|
|
44
|
+
_globals['_REQUIREMENTS_EXTRARESOURCESENTRY']._serialized_options = b'8\001'
|
|
45
|
+
_globals['_MATCHLABELS_LABELSENTRY']._loaded_options = None
|
|
46
|
+
_globals['_MATCHLABELS_LABELSENTRY']._serialized_options = b'8\001'
|
|
47
|
+
_globals['_STATE_RESOURCESENTRY']._loaded_options = None
|
|
48
|
+
_globals['_STATE_RESOURCESENTRY']._serialized_options = b'8\001'
|
|
49
|
+
_globals['_RESOURCE_CONNECTIONDETAILSENTRY']._loaded_options = None
|
|
50
|
+
_globals['_RESOURCE_CONNECTIONDETAILSENTRY']._serialized_options = b'8\001'
|
|
51
|
+
_globals['_READY']._serialized_start=2894
|
|
52
|
+
_globals['_READY']._serialized_end=2957
|
|
53
|
+
_globals['_SEVERITY']._serialized_start=2959
|
|
54
|
+
_globals['_SEVERITY']._serialized_end=3058
|
|
55
|
+
_globals['_TARGET']._serialized_start=3060
|
|
56
|
+
_globals['_TARGET']._serialized_end=3146
|
|
57
|
+
_globals['_STATUS']._serialized_start=3148
|
|
58
|
+
_globals['_STATUS']._serialized_end=3275
|
|
59
|
+
_globals['_RUNFUNCTIONREQUEST']._serialized_start=141
|
|
60
|
+
_globals['_RUNFUNCTIONREQUEST']._serialized_end=794
|
|
61
|
+
_globals['_RUNFUNCTIONREQUEST_EXTRARESOURCESENTRY']._serialized_start=589
|
|
62
|
+
_globals['_RUNFUNCTIONREQUEST_EXTRARESOURCESENTRY']._serialized_end=680
|
|
63
|
+
_globals['_RUNFUNCTIONREQUEST_CREDENTIALSENTRY']._serialized_start=682
|
|
64
|
+
_globals['_RUNFUNCTIONREQUEST_CREDENTIALSENTRY']._serialized_end=772
|
|
65
|
+
_globals['_CREDENTIALS']._serialized_start=796
|
|
66
|
+
_globals['_CREDENTIALS']._serialized_end=889
|
|
67
|
+
_globals['_CREDENTIALDATA']._serialized_start=892
|
|
68
|
+
_globals['_CREDENTIALDATA']._serialized_end=1020
|
|
69
|
+
_globals['_CREDENTIALDATA_DATAENTRY']._serialized_start=977
|
|
70
|
+
_globals['_CREDENTIALDATA_DATAENTRY']._serialized_end=1020
|
|
71
|
+
_globals['_RESOURCES']._serialized_start=1022
|
|
72
|
+
_globals['_RESOURCES']._serialized_end=1085
|
|
73
|
+
_globals['_RUNFUNCTIONRESPONSE']._serialized_start=1088
|
|
74
|
+
_globals['_RUNFUNCTIONRESPONSE']._serialized_end=1447
|
|
75
|
+
_globals['_REQUESTMETA']._serialized_start=1449
|
|
76
|
+
_globals['_REQUESTMETA']._serialized_end=1475
|
|
77
|
+
_globals['_REQUIREMENTS']._serialized_start=1478
|
|
78
|
+
_globals['_REQUIREMENTS']._serialized_end=1678
|
|
79
|
+
_globals['_REQUIREMENTS_EXTRARESOURCESENTRY']._serialized_start=1580
|
|
80
|
+
_globals['_REQUIREMENTS_EXTRARESOURCESENTRY']._serialized_end=1678
|
|
81
|
+
_globals['_RESOURCESELECTOR']._serialized_start=1681
|
|
82
|
+
_globals['_RESOURCESELECTOR']._serialized_end=1829
|
|
83
|
+
_globals['_MATCHLABELS']._serialized_start=1832
|
|
84
|
+
_globals['_MATCHLABELS']._serialized_end=1960
|
|
85
|
+
_globals['_MATCHLABELS_LABELSENTRY']._serialized_start=1915
|
|
86
|
+
_globals['_MATCHLABELS_LABELSENTRY']._serialized_end=1960
|
|
87
|
+
_globals['_RESPONSEMETA']._serialized_start=1962
|
|
88
|
+
_globals['_RESPONSEMETA']._serialized_end=2042
|
|
89
|
+
_globals['_STATE']._serialized_start=2045
|
|
90
|
+
_globals['_STATE']._serialized_end=2263
|
|
91
|
+
_globals['_STATE_RESOURCESENTRY']._serialized_start=2178
|
|
92
|
+
_globals['_STATE_RESOURCESENTRY']._serialized_end=2263
|
|
93
|
+
_globals['_RESOURCE']._serialized_start=2266
|
|
94
|
+
_globals['_RESOURCE']._serialized_end=2514
|
|
95
|
+
_globals['_RESOURCE_CONNECTIONDETAILSENTRY']._serialized_start=2458
|
|
96
|
+
_globals['_RESOURCE_CONNECTIONDETAILSENTRY']._serialized_end=2514
|
|
97
|
+
_globals['_RESULT']._serialized_start=2517
|
|
98
|
+
_globals['_RESULT']._serialized_end=2696
|
|
99
|
+
_globals['_CONDITION']._serialized_start=2699
|
|
100
|
+
_globals['_CONDITION']._serialized_end=2892
|
|
101
|
+
_globals['_FUNCTIONRUNNERSERVICE']._serialized_start=3278
|
|
102
|
+
_globals['_FUNCTIONRUNNERSERVICE']._serialized_end=3413
|
|
103
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -20,6 +20,19 @@ class Severity(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
20
20
|
SEVERITY_FATAL: _ClassVar[Severity]
|
|
21
21
|
SEVERITY_WARNING: _ClassVar[Severity]
|
|
22
22
|
SEVERITY_NORMAL: _ClassVar[Severity]
|
|
23
|
+
|
|
24
|
+
class Target(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
25
|
+
__slots__ = ()
|
|
26
|
+
TARGET_UNSPECIFIED: _ClassVar[Target]
|
|
27
|
+
TARGET_COMPOSITE: _ClassVar[Target]
|
|
28
|
+
TARGET_COMPOSITE_AND_CLAIM: _ClassVar[Target]
|
|
29
|
+
|
|
30
|
+
class Status(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
31
|
+
__slots__ = ()
|
|
32
|
+
STATUS_CONDITION_UNSPECIFIED: _ClassVar[Status]
|
|
33
|
+
STATUS_CONDITION_UNKNOWN: _ClassVar[Status]
|
|
34
|
+
STATUS_CONDITION_TRUE: _ClassVar[Status]
|
|
35
|
+
STATUS_CONDITION_FALSE: _ClassVar[Status]
|
|
23
36
|
READY_UNSPECIFIED: Ready
|
|
24
37
|
READY_TRUE: Ready
|
|
25
38
|
READY_FALSE: Ready
|
|
@@ -27,9 +40,16 @@ SEVERITY_UNSPECIFIED: Severity
|
|
|
27
40
|
SEVERITY_FATAL: Severity
|
|
28
41
|
SEVERITY_WARNING: Severity
|
|
29
42
|
SEVERITY_NORMAL: Severity
|
|
43
|
+
TARGET_UNSPECIFIED: Target
|
|
44
|
+
TARGET_COMPOSITE: Target
|
|
45
|
+
TARGET_COMPOSITE_AND_CLAIM: Target
|
|
46
|
+
STATUS_CONDITION_UNSPECIFIED: Status
|
|
47
|
+
STATUS_CONDITION_UNKNOWN: Status
|
|
48
|
+
STATUS_CONDITION_TRUE: Status
|
|
49
|
+
STATUS_CONDITION_FALSE: Status
|
|
30
50
|
|
|
31
51
|
class RunFunctionRequest(_message.Message):
|
|
32
|
-
__slots__ = ("meta", "observed", "desired", "input", "context", "extra_resources")
|
|
52
|
+
__slots__ = ("meta", "observed", "desired", "input", "context", "extra_resources", "credentials")
|
|
33
53
|
class ExtraResourcesEntry(_message.Message):
|
|
34
54
|
__slots__ = ("key", "value")
|
|
35
55
|
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
@@ -37,19 +57,47 @@ class RunFunctionRequest(_message.Message):
|
|
|
37
57
|
key: str
|
|
38
58
|
value: Resources
|
|
39
59
|
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Resources, _Mapping]] = ...) -> None: ...
|
|
60
|
+
class CredentialsEntry(_message.Message):
|
|
61
|
+
__slots__ = ("key", "value")
|
|
62
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
63
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
64
|
+
key: str
|
|
65
|
+
value: Credentials
|
|
66
|
+
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Credentials, _Mapping]] = ...) -> None: ...
|
|
40
67
|
META_FIELD_NUMBER: _ClassVar[int]
|
|
41
68
|
OBSERVED_FIELD_NUMBER: _ClassVar[int]
|
|
42
69
|
DESIRED_FIELD_NUMBER: _ClassVar[int]
|
|
43
70
|
INPUT_FIELD_NUMBER: _ClassVar[int]
|
|
44
71
|
CONTEXT_FIELD_NUMBER: _ClassVar[int]
|
|
45
72
|
EXTRA_RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
|
73
|
+
CREDENTIALS_FIELD_NUMBER: _ClassVar[int]
|
|
46
74
|
meta: RequestMeta
|
|
47
75
|
observed: State
|
|
48
76
|
desired: State
|
|
49
77
|
input: _struct_pb2.Struct
|
|
50
78
|
context: _struct_pb2.Struct
|
|
51
79
|
extra_resources: _containers.MessageMap[str, Resources]
|
|
52
|
-
|
|
80
|
+
credentials: _containers.MessageMap[str, Credentials]
|
|
81
|
+
def __init__(self, meta: _Optional[_Union[RequestMeta, _Mapping]] = ..., observed: _Optional[_Union[State, _Mapping]] = ..., desired: _Optional[_Union[State, _Mapping]] = ..., input: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., extra_resources: _Optional[_Mapping[str, Resources]] = ..., credentials: _Optional[_Mapping[str, Credentials]] = ...) -> None: ...
|
|
82
|
+
|
|
83
|
+
class Credentials(_message.Message):
|
|
84
|
+
__slots__ = ("credential_data",)
|
|
85
|
+
CREDENTIAL_DATA_FIELD_NUMBER: _ClassVar[int]
|
|
86
|
+
credential_data: CredentialData
|
|
87
|
+
def __init__(self, credential_data: _Optional[_Union[CredentialData, _Mapping]] = ...) -> None: ...
|
|
88
|
+
|
|
89
|
+
class CredentialData(_message.Message):
|
|
90
|
+
__slots__ = ("data",)
|
|
91
|
+
class DataEntry(_message.Message):
|
|
92
|
+
__slots__ = ("key", "value")
|
|
93
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
94
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
95
|
+
key: str
|
|
96
|
+
value: bytes
|
|
97
|
+
def __init__(self, key: _Optional[str] = ..., value: _Optional[bytes] = ...) -> None: ...
|
|
98
|
+
DATA_FIELD_NUMBER: _ClassVar[int]
|
|
99
|
+
data: _containers.ScalarMap[str, bytes]
|
|
100
|
+
def __init__(self, data: _Optional[_Mapping[str, bytes]] = ...) -> None: ...
|
|
53
101
|
|
|
54
102
|
class Resources(_message.Message):
|
|
55
103
|
__slots__ = ("items",)
|
|
@@ -58,18 +106,20 @@ class Resources(_message.Message):
|
|
|
58
106
|
def __init__(self, items: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ...) -> None: ...
|
|
59
107
|
|
|
60
108
|
class RunFunctionResponse(_message.Message):
|
|
61
|
-
__slots__ = ("meta", "desired", "results", "context", "requirements")
|
|
109
|
+
__slots__ = ("meta", "desired", "results", "context", "requirements", "conditions")
|
|
62
110
|
META_FIELD_NUMBER: _ClassVar[int]
|
|
63
111
|
DESIRED_FIELD_NUMBER: _ClassVar[int]
|
|
64
112
|
RESULTS_FIELD_NUMBER: _ClassVar[int]
|
|
65
113
|
CONTEXT_FIELD_NUMBER: _ClassVar[int]
|
|
66
114
|
REQUIREMENTS_FIELD_NUMBER: _ClassVar[int]
|
|
115
|
+
CONDITIONS_FIELD_NUMBER: _ClassVar[int]
|
|
67
116
|
meta: ResponseMeta
|
|
68
117
|
desired: State
|
|
69
118
|
results: _containers.RepeatedCompositeFieldContainer[Result]
|
|
70
119
|
context: _struct_pb2.Struct
|
|
71
120
|
requirements: Requirements
|
|
72
|
-
|
|
121
|
+
conditions: _containers.RepeatedCompositeFieldContainer[Condition]
|
|
122
|
+
def __init__(self, meta: _Optional[_Union[ResponseMeta, _Mapping]] = ..., desired: _Optional[_Union[State, _Mapping]] = ..., results: _Optional[_Iterable[_Union[Result, _Mapping]]] = ..., context: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., requirements: _Optional[_Union[Requirements, _Mapping]] = ..., conditions: _Optional[_Iterable[_Union[Condition, _Mapping]]] = ...) -> None: ...
|
|
73
123
|
|
|
74
124
|
class RequestMeta(_message.Message):
|
|
75
125
|
__slots__ = ("tag",)
|
|
@@ -156,9 +206,27 @@ class Resource(_message.Message):
|
|
|
156
206
|
def __init__(self, resource: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ..., connection_details: _Optional[_Mapping[str, bytes]] = ..., ready: _Optional[_Union[Ready, str]] = ...) -> None: ...
|
|
157
207
|
|
|
158
208
|
class Result(_message.Message):
|
|
159
|
-
__slots__ = ("severity", "message")
|
|
209
|
+
__slots__ = ("severity", "message", "reason", "target")
|
|
160
210
|
SEVERITY_FIELD_NUMBER: _ClassVar[int]
|
|
161
211
|
MESSAGE_FIELD_NUMBER: _ClassVar[int]
|
|
212
|
+
REASON_FIELD_NUMBER: _ClassVar[int]
|
|
213
|
+
TARGET_FIELD_NUMBER: _ClassVar[int]
|
|
162
214
|
severity: Severity
|
|
163
215
|
message: str
|
|
164
|
-
|
|
216
|
+
reason: str
|
|
217
|
+
target: Target
|
|
218
|
+
def __init__(self, severity: _Optional[_Union[Severity, str]] = ..., message: _Optional[str] = ..., reason: _Optional[str] = ..., target: _Optional[_Union[Target, str]] = ...) -> None: ...
|
|
219
|
+
|
|
220
|
+
class Condition(_message.Message):
|
|
221
|
+
__slots__ = ("type", "status", "reason", "message", "target")
|
|
222
|
+
TYPE_FIELD_NUMBER: _ClassVar[int]
|
|
223
|
+
STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
224
|
+
REASON_FIELD_NUMBER: _ClassVar[int]
|
|
225
|
+
MESSAGE_FIELD_NUMBER: _ClassVar[int]
|
|
226
|
+
TARGET_FIELD_NUMBER: _ClassVar[int]
|
|
227
|
+
type: str
|
|
228
|
+
status: Status
|
|
229
|
+
reason: str
|
|
230
|
+
message: str
|
|
231
|
+
target: Target
|
|
232
|
+
def __init__(self, type: _Optional[str] = ..., status: _Optional[_Union[Status, str]] = ..., reason: _Optional[str] = ..., message: _Optional[str] = ..., target: _Optional[_Union[Target, str]] = ...) -> None: ...
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
|
+
import grpc
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
from crossplane.function.proto.v1 import run_function_pb2 as crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2
|
|
7
|
+
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.66.0'
|
|
9
|
+
GRPC_VERSION = grpc.__version__
|
|
10
|
+
_version_not_supported = False
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from grpc._utilities import first_version_is_lower
|
|
14
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
|
15
|
+
except ImportError:
|
|
16
|
+
_version_not_supported = True
|
|
17
|
+
|
|
18
|
+
if _version_not_supported:
|
|
19
|
+
raise RuntimeError(
|
|
20
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
|
21
|
+
+ f' but the generated code in crossplane/function/proto/v1/run_function_pb2_grpc.py depends on'
|
|
22
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
|
23
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
|
24
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class FunctionRunnerServiceStub(object):
|
|
29
|
+
"""A FunctionRunnerService is a Composition Function.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def __init__(self, channel):
|
|
33
|
+
"""Constructor.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
channel: A grpc.Channel.
|
|
37
|
+
"""
|
|
38
|
+
self.RunFunction = channel.unary_unary(
|
|
39
|
+
'/apiextensions.fn.proto.v1.FunctionRunnerService/RunFunction',
|
|
40
|
+
request_serializer=crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionRequest.SerializeToString,
|
|
41
|
+
response_deserializer=crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionResponse.FromString,
|
|
42
|
+
_registered_method=True)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class FunctionRunnerServiceServicer(object):
|
|
46
|
+
"""A FunctionRunnerService is a Composition Function.
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
def RunFunction(self, request, context):
|
|
50
|
+
"""RunFunction runs the Composition Function.
|
|
51
|
+
"""
|
|
52
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
53
|
+
context.set_details('Method not implemented!')
|
|
54
|
+
raise NotImplementedError('Method not implemented!')
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def add_FunctionRunnerServiceServicer_to_server(servicer, server):
|
|
58
|
+
rpc_method_handlers = {
|
|
59
|
+
'RunFunction': grpc.unary_unary_rpc_method_handler(
|
|
60
|
+
servicer.RunFunction,
|
|
61
|
+
request_deserializer=crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionRequest.FromString,
|
|
62
|
+
response_serializer=crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionResponse.SerializeToString,
|
|
63
|
+
),
|
|
64
|
+
}
|
|
65
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
|
66
|
+
'apiextensions.fn.proto.v1.FunctionRunnerService', rpc_method_handlers)
|
|
67
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
|
68
|
+
server.add_registered_method_handlers('apiextensions.fn.proto.v1.FunctionRunnerService', rpc_method_handlers)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
# This class is part of an EXPERIMENTAL API.
|
|
72
|
+
class FunctionRunnerService(object):
|
|
73
|
+
"""A FunctionRunnerService is a Composition Function.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
@staticmethod
|
|
77
|
+
def RunFunction(request,
|
|
78
|
+
target,
|
|
79
|
+
options=(),
|
|
80
|
+
channel_credentials=None,
|
|
81
|
+
call_credentials=None,
|
|
82
|
+
insecure=False,
|
|
83
|
+
compression=None,
|
|
84
|
+
wait_for_ready=None,
|
|
85
|
+
timeout=None,
|
|
86
|
+
metadata=None):
|
|
87
|
+
return grpc.experimental.unary_unary(
|
|
88
|
+
request,
|
|
89
|
+
target,
|
|
90
|
+
'/apiextensions.fn.proto.v1.FunctionRunnerService/RunFunction',
|
|
91
|
+
crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionRequest.SerializeToString,
|
|
92
|
+
crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2.RunFunctionResponse.FromString,
|
|
93
|
+
options,
|
|
94
|
+
channel_credentials,
|
|
95
|
+
insecure,
|
|
96
|
+
call_credentials,
|
|
97
|
+
compression,
|
|
98
|
+
wait_for_ready,
|
|
99
|
+
timeout,
|
|
100
|
+
metadata,
|
|
101
|
+
_registered_method=True)
|