Skip to content

Commit 3972d64

Browse files
authored
Merge pull request #164 from negz/operational
Add support for operation functions
2 parents c704fcf + 3fd547c commit 3972d64

13 files changed

+1033
-363
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,3 +161,6 @@ cython_debug/
161161

162162
# We don't commit our docs - instead we generate them and upload to GitHub pages.
163163
docs
164+
165+
# AIs
166+
.claude/

crossplane/function/proto/v1/run_function.proto

Lines changed: 151 additions & 107 deletions
Large diffs are not rendered by default.

crossplane/function/proto/v1/run_function_pb2.py

Lines changed: 69 additions & 57 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crossplane/function/proto/v1/run_function_pb2.pyi

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
from google.protobuf import struct_pb2 as _struct_pb2
21
from google.protobuf import duration_pb2 as _duration_pb2
2+
from google.protobuf import struct_pb2 as _struct_pb2
33
from google.protobuf.internal import containers as _containers
44
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
55
from google.protobuf import descriptor as _descriptor
66
from google.protobuf import message as _message
7-
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
7+
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
8+
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
89

910
DESCRIPTOR: _descriptor.FileDescriptor
1011

@@ -49,7 +50,7 @@ STATUS_CONDITION_TRUE: Status
4950
STATUS_CONDITION_FALSE: Status
5051

5152
class RunFunctionRequest(_message.Message):
52-
__slots__ = ("meta", "observed", "desired", "input", "context", "extra_resources", "credentials")
53+
__slots__ = ("meta", "observed", "desired", "input", "context", "extra_resources", "credentials", "required_resources")
5354
class ExtraResourcesEntry(_message.Message):
5455
__slots__ = ("key", "value")
5556
KEY_FIELD_NUMBER: _ClassVar[int]
@@ -64,21 +65,30 @@ class RunFunctionRequest(_message.Message):
6465
key: str
6566
value: Credentials
6667
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Credentials, _Mapping]] = ...) -> None: ...
68+
class RequiredResourcesEntry(_message.Message):
69+
__slots__ = ("key", "value")
70+
KEY_FIELD_NUMBER: _ClassVar[int]
71+
VALUE_FIELD_NUMBER: _ClassVar[int]
72+
key: str
73+
value: Resources
74+
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[Resources, _Mapping]] = ...) -> None: ...
6775
META_FIELD_NUMBER: _ClassVar[int]
6876
OBSERVED_FIELD_NUMBER: _ClassVar[int]
6977
DESIRED_FIELD_NUMBER: _ClassVar[int]
7078
INPUT_FIELD_NUMBER: _ClassVar[int]
7179
CONTEXT_FIELD_NUMBER: _ClassVar[int]
7280
EXTRA_RESOURCES_FIELD_NUMBER: _ClassVar[int]
7381
CREDENTIALS_FIELD_NUMBER: _ClassVar[int]
82+
REQUIRED_RESOURCES_FIELD_NUMBER: _ClassVar[int]
7483
meta: RequestMeta
7584
observed: State
7685
desired: State
7786
input: _struct_pb2.Struct
7887
context: _struct_pb2.Struct
7988
extra_resources: _containers.MessageMap[str, Resources]
8089
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: ...
90+
required_resources: _containers.MessageMap[str, Resources]
91+
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]] = ..., required_resources: _Optional[_Mapping[str, Resources]] = ...) -> None: ...
8292

8393
class Credentials(_message.Message):
8494
__slots__ = ("credential_data",)
@@ -106,20 +116,22 @@ class Resources(_message.Message):
106116
def __init__(self, items: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ...) -> None: ...
107117

108118
class RunFunctionResponse(_message.Message):
109-
__slots__ = ("meta", "desired", "results", "context", "requirements", "conditions")
119+
__slots__ = ("meta", "desired", "results", "context", "requirements", "conditions", "output")
110120
META_FIELD_NUMBER: _ClassVar[int]
111121
DESIRED_FIELD_NUMBER: _ClassVar[int]
112122
RESULTS_FIELD_NUMBER: _ClassVar[int]
113123
CONTEXT_FIELD_NUMBER: _ClassVar[int]
114124
REQUIREMENTS_FIELD_NUMBER: _ClassVar[int]
115125
CONDITIONS_FIELD_NUMBER: _ClassVar[int]
126+
OUTPUT_FIELD_NUMBER: _ClassVar[int]
116127
meta: ResponseMeta
117128
desired: State
118129
results: _containers.RepeatedCompositeFieldContainer[Result]
119130
context: _struct_pb2.Struct
120131
requirements: Requirements
121132
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: ...
133+
output: _struct_pb2.Struct
134+
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]]] = ..., output: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ...
123135

124136
class RequestMeta(_message.Message):
125137
__slots__ = ("tag",)
@@ -128,29 +140,40 @@ class RequestMeta(_message.Message):
128140
def __init__(self, tag: _Optional[str] = ...) -> None: ...
129141

130142
class Requirements(_message.Message):
131-
__slots__ = ("extra_resources",)
143+
__slots__ = ("extra_resources", "resources")
132144
class ExtraResourcesEntry(_message.Message):
133145
__slots__ = ("key", "value")
134146
KEY_FIELD_NUMBER: _ClassVar[int]
135147
VALUE_FIELD_NUMBER: _ClassVar[int]
136148
key: str
137149
value: ResourceSelector
138150
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[ResourceSelector, _Mapping]] = ...) -> None: ...
151+
class ResourcesEntry(_message.Message):
152+
__slots__ = ("key", "value")
153+
KEY_FIELD_NUMBER: _ClassVar[int]
154+
VALUE_FIELD_NUMBER: _ClassVar[int]
155+
key: str
156+
value: ResourceSelector
157+
def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[ResourceSelector, _Mapping]] = ...) -> None: ...
139158
EXTRA_RESOURCES_FIELD_NUMBER: _ClassVar[int]
159+
RESOURCES_FIELD_NUMBER: _ClassVar[int]
140160
extra_resources: _containers.MessageMap[str, ResourceSelector]
141-
def __init__(self, extra_resources: _Optional[_Mapping[str, ResourceSelector]] = ...) -> None: ...
161+
resources: _containers.MessageMap[str, ResourceSelector]
162+
def __init__(self, extra_resources: _Optional[_Mapping[str, ResourceSelector]] = ..., resources: _Optional[_Mapping[str, ResourceSelector]] = ...) -> None: ...
142163

143164
class ResourceSelector(_message.Message):
144-
__slots__ = ("api_version", "kind", "match_name", "match_labels")
165+
__slots__ = ("api_version", "kind", "match_name", "match_labels", "namespace")
145166
API_VERSION_FIELD_NUMBER: _ClassVar[int]
146167
KIND_FIELD_NUMBER: _ClassVar[int]
147168
MATCH_NAME_FIELD_NUMBER: _ClassVar[int]
148169
MATCH_LABELS_FIELD_NUMBER: _ClassVar[int]
170+
NAMESPACE_FIELD_NUMBER: _ClassVar[int]
149171
api_version: str
150172
kind: str
151173
match_name: str
152174
match_labels: MatchLabels
153-
def __init__(self, api_version: _Optional[str] = ..., kind: _Optional[str] = ..., match_name: _Optional[str] = ..., match_labels: _Optional[_Union[MatchLabels, _Mapping]] = ...) -> None: ...
175+
namespace: str
176+
def __init__(self, api_version: _Optional[str] = ..., kind: _Optional[str] = ..., match_name: _Optional[str] = ..., match_labels: _Optional[_Union[MatchLabels, _Mapping]] = ..., namespace: _Optional[str] = ...) -> None: ...
154177

155178
class MatchLabels(_message.Message):
156179
__slots__ = ("labels",)
@@ -171,7 +194,7 @@ class ResponseMeta(_message.Message):
171194
TTL_FIELD_NUMBER: _ClassVar[int]
172195
tag: str
173196
ttl: _duration_pb2.Duration
174-
def __init__(self, tag: _Optional[str] = ..., ttl: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ...
197+
def __init__(self, tag: _Optional[str] = ..., ttl: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ...) -> None: ...
175198

176199
class State(_message.Message):
177200
__slots__ = ("composite", "resources")

crossplane/function/proto/v1/run_function_pb2_grpc.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from crossplane.function.proto.v1 import run_function_pb2 as crossplane_dot_function_dot_proto_dot_v1_dot_run__function__pb2
77

8-
GRPC_GENERATED_VERSION = '1.71.0'
8+
GRPC_GENERATED_VERSION = '1.73.1'
99
GRPC_VERSION = grpc.__version__
1010
_version_not_supported = False
1111

@@ -26,7 +26,7 @@
2626

2727

2828
class FunctionRunnerServiceStub(object):
29-
"""A FunctionRunnerService is a Composition Function.
29+
"""A FunctionRunnerService is a function.
3030
"""
3131

3232
def __init__(self, channel):
@@ -43,11 +43,11 @@ def __init__(self, channel):
4343

4444

4545
class FunctionRunnerServiceServicer(object):
46-
"""A FunctionRunnerService is a Composition Function.
46+
"""A FunctionRunnerService is a function.
4747
"""
4848

4949
def RunFunction(self, request, context):
50-
"""RunFunction runs the Composition Function.
50+
"""RunFunction runs the function.
5151
"""
5252
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
5353
context.set_details('Method not implemented!')
@@ -70,7 +70,7 @@ def add_FunctionRunnerServiceServicer_to_server(servicer, server):
7070

7171
# This class is part of an EXPERIMENTAL API.
7272
class FunctionRunnerService(object):
73-
"""A FunctionRunnerService is a Composition Function.
73+
"""A FunctionRunnerService is a function.
7474
"""
7575

7676
@staticmethod

0 commit comments

Comments
 (0)