Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit d72ba30

Browse files
committed
Add strongly-typed Protobuf and gRPC codegen and refactor exporter for clarity
1 parent b707e48 commit d72ba30

16 files changed

Lines changed: 3036 additions & 382 deletions

File tree

buf.gen.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ plugins:
66
out: ./packages/jumpstarter-protocol/jumpstarter_protocol
77
- remote: buf.build/grpc/python
88
out: ./packages/jumpstarter-protocol/jumpstarter_protocol
9+
- remote: buf.build/community/nipunn1313-mypy:v3.7.0
10+
out: ./packages/jumpstarter-protocol/jumpstarter_protocol
11+
- remote: buf.build/community/nipunn1313-mypy-grpc:v3.7.0
12+
out: ./packages/jumpstarter-protocol/jumpstarter_protocol
913
inputs:
1014
- git_repo: https://github.com/jumpstarter-dev/jumpstarter-protocol.git
1115
branch: main
Lines changed: 318 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,318 @@
1+
"""
2+
@generated by mypy-protobuf. Do not edit manually!
3+
isort:skip_file
4+
Copyright 2024 The Jumpstarter Authors
5+
(-- api-linter: core::0215::foreign-type-reference=disabled
6+
(-- api-linter: core::0192::has-comments=disabled
7+
(-- api-linter: core::0191::java-package=disabled
8+
(-- api-linter: core::0191::java-outer-classname=disabled
9+
(-- api-linter: core::0191::java-multiple-files=disabled
10+
"""
11+
12+
import builtins
13+
import collections.abc
14+
import google.protobuf.descriptor
15+
import google.protobuf.duration_pb2
16+
import google.protobuf.field_mask_pb2
17+
import google.protobuf.internal.containers
18+
import google.protobuf.message
19+
import google.protobuf.timestamp_pb2
20+
import jumpstarter.v1.common_pb2
21+
import jumpstarter.v1.kubernetes_pb2
22+
import sys
23+
import typing
24+
25+
if sys.version_info >= (3, 10):
26+
import typing as typing_extensions
27+
else:
28+
import typing_extensions
29+
30+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
31+
32+
@typing.final
33+
class Exporter(google.protobuf.message.Message):
34+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
35+
36+
@typing.final
37+
class LabelsEntry(google.protobuf.message.Message):
38+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
39+
40+
KEY_FIELD_NUMBER: builtins.int
41+
VALUE_FIELD_NUMBER: builtins.int
42+
key: builtins.str
43+
value: builtins.str
44+
def __init__(
45+
self,
46+
*,
47+
key: builtins.str = ...,
48+
value: builtins.str = ...,
49+
) -> None: ...
50+
def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...
51+
52+
NAME_FIELD_NUMBER: builtins.int
53+
LABELS_FIELD_NUMBER: builtins.int
54+
ONLINE_FIELD_NUMBER: builtins.int
55+
STATUS_FIELD_NUMBER: builtins.int
56+
name: builtins.str
57+
online: builtins.bool
58+
status: jumpstarter.v1.common_pb2.ExporterStatus.ValueType
59+
@property
60+
def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
61+
def __init__(
62+
self,
63+
*,
64+
name: builtins.str = ...,
65+
labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
66+
online: builtins.bool = ...,
67+
status: jumpstarter.v1.common_pb2.ExporterStatus.ValueType = ...,
68+
) -> None: ...
69+
def ClearField(self, field_name: typing.Literal["labels", b"labels", "name", b"name", "online", b"online", "status", b"status"]) -> None: ...
70+
71+
Global___Exporter: typing_extensions.TypeAlias = Exporter
72+
73+
@typing.final
74+
class Lease(google.protobuf.message.Message):
75+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
76+
77+
NAME_FIELD_NUMBER: builtins.int
78+
SELECTOR_FIELD_NUMBER: builtins.int
79+
DURATION_FIELD_NUMBER: builtins.int
80+
EFFECTIVE_DURATION_FIELD_NUMBER: builtins.int
81+
BEGIN_TIME_FIELD_NUMBER: builtins.int
82+
EFFECTIVE_BEGIN_TIME_FIELD_NUMBER: builtins.int
83+
END_TIME_FIELD_NUMBER: builtins.int
84+
EFFECTIVE_END_TIME_FIELD_NUMBER: builtins.int
85+
CLIENT_FIELD_NUMBER: builtins.int
86+
EXPORTER_FIELD_NUMBER: builtins.int
87+
CONDITIONS_FIELD_NUMBER: builtins.int
88+
name: builtins.str
89+
selector: builtins.str
90+
client: builtins.str
91+
exporter: builtins.str
92+
@property
93+
def duration(self) -> google.protobuf.duration_pb2.Duration: ...
94+
@property
95+
def effective_duration(self) -> google.protobuf.duration_pb2.Duration: ...
96+
@property
97+
def begin_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
98+
@property
99+
def effective_begin_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
100+
@property
101+
def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
102+
@property
103+
def effective_end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
104+
@property
105+
def conditions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[jumpstarter.v1.kubernetes_pb2.Condition]: ...
106+
def __init__(
107+
self,
108+
*,
109+
name: builtins.str = ...,
110+
selector: builtins.str = ...,
111+
duration: google.protobuf.duration_pb2.Duration | None = ...,
112+
effective_duration: google.protobuf.duration_pb2.Duration | None = ...,
113+
begin_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
114+
effective_begin_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
115+
end_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
116+
effective_end_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
117+
client: builtins.str | None = ...,
118+
exporter: builtins.str | None = ...,
119+
conditions: collections.abc.Iterable[jumpstarter.v1.kubernetes_pb2.Condition] | None = ...,
120+
) -> None: ...
121+
def HasField(self, field_name: typing.Literal["_begin_time", b"_begin_time", "_client", b"_client", "_duration", b"_duration", "_effective_begin_time", b"_effective_begin_time", "_effective_end_time", b"_effective_end_time", "_end_time", b"_end_time", "_exporter", b"_exporter", "begin_time", b"begin_time", "client", b"client", "duration", b"duration", "effective_begin_time", b"effective_begin_time", "effective_duration", b"effective_duration", "effective_end_time", b"effective_end_time", "end_time", b"end_time", "exporter", b"exporter"]) -> builtins.bool: ...
122+
def ClearField(self, field_name: typing.Literal["_begin_time", b"_begin_time", "_client", b"_client", "_duration", b"_duration", "_effective_begin_time", b"_effective_begin_time", "_effective_end_time", b"_effective_end_time", "_end_time", b"_end_time", "_exporter", b"_exporter", "begin_time", b"begin_time", "client", b"client", "conditions", b"conditions", "duration", b"duration", "effective_begin_time", b"effective_begin_time", "effective_duration", b"effective_duration", "effective_end_time", b"effective_end_time", "end_time", b"end_time", "exporter", b"exporter", "name", b"name", "selector", b"selector"]) -> None: ...
123+
@typing.overload
124+
def WhichOneof(self, oneof_group: typing.Literal["_begin_time", b"_begin_time"]) -> typing.Literal["begin_time"] | None: ...
125+
@typing.overload
126+
def WhichOneof(self, oneof_group: typing.Literal["_client", b"_client"]) -> typing.Literal["client"] | None: ...
127+
@typing.overload
128+
def WhichOneof(self, oneof_group: typing.Literal["_duration", b"_duration"]) -> typing.Literal["duration"] | None: ...
129+
@typing.overload
130+
def WhichOneof(self, oneof_group: typing.Literal["_effective_begin_time", b"_effective_begin_time"]) -> typing.Literal["effective_begin_time"] | None: ...
131+
@typing.overload
132+
def WhichOneof(self, oneof_group: typing.Literal["_effective_end_time", b"_effective_end_time"]) -> typing.Literal["effective_end_time"] | None: ...
133+
@typing.overload
134+
def WhichOneof(self, oneof_group: typing.Literal["_end_time", b"_end_time"]) -> typing.Literal["end_time"] | None: ...
135+
@typing.overload
136+
def WhichOneof(self, oneof_group: typing.Literal["_exporter", b"_exporter"]) -> typing.Literal["exporter"] | None: ...
137+
138+
Global___Lease: typing_extensions.TypeAlias = Lease
139+
140+
@typing.final
141+
class GetExporterRequest(google.protobuf.message.Message):
142+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
143+
144+
NAME_FIELD_NUMBER: builtins.int
145+
name: builtins.str
146+
def __init__(
147+
self,
148+
*,
149+
name: builtins.str = ...,
150+
) -> None: ...
151+
def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ...
152+
153+
Global___GetExporterRequest: typing_extensions.TypeAlias = GetExporterRequest
154+
155+
@typing.final
156+
class ListExportersRequest(google.protobuf.message.Message):
157+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
158+
159+
PARENT_FIELD_NUMBER: builtins.int
160+
PAGE_SIZE_FIELD_NUMBER: builtins.int
161+
PAGE_TOKEN_FIELD_NUMBER: builtins.int
162+
FILTER_FIELD_NUMBER: builtins.int
163+
parent: builtins.str
164+
page_size: builtins.int
165+
page_token: builtins.str
166+
filter: builtins.str
167+
def __init__(
168+
self,
169+
*,
170+
parent: builtins.str = ...,
171+
page_size: builtins.int = ...,
172+
page_token: builtins.str = ...,
173+
filter: builtins.str = ...,
174+
) -> None: ...
175+
def ClearField(self, field_name: typing.Literal["filter", b"filter", "page_size", b"page_size", "page_token", b"page_token", "parent", b"parent"]) -> None: ...
176+
177+
Global___ListExportersRequest: typing_extensions.TypeAlias = ListExportersRequest
178+
179+
@typing.final
180+
class ListExportersResponse(google.protobuf.message.Message):
181+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
182+
183+
EXPORTERS_FIELD_NUMBER: builtins.int
184+
NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
185+
next_page_token: builtins.str
186+
@property
187+
def exporters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Exporter]: ...
188+
def __init__(
189+
self,
190+
*,
191+
exporters: collections.abc.Iterable[Global___Exporter] | None = ...,
192+
next_page_token: builtins.str = ...,
193+
) -> None: ...
194+
def ClearField(self, field_name: typing.Literal["exporters", b"exporters", "next_page_token", b"next_page_token"]) -> None: ...
195+
196+
Global___ListExportersResponse: typing_extensions.TypeAlias = ListExportersResponse
197+
198+
@typing.final
199+
class GetLeaseRequest(google.protobuf.message.Message):
200+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
201+
202+
NAME_FIELD_NUMBER: builtins.int
203+
name: builtins.str
204+
def __init__(
205+
self,
206+
*,
207+
name: builtins.str = ...,
208+
) -> None: ...
209+
def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ...
210+
211+
Global___GetLeaseRequest: typing_extensions.TypeAlias = GetLeaseRequest
212+
213+
@typing.final
214+
class ListLeasesRequest(google.protobuf.message.Message):
215+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
216+
217+
PARENT_FIELD_NUMBER: builtins.int
218+
PAGE_SIZE_FIELD_NUMBER: builtins.int
219+
PAGE_TOKEN_FIELD_NUMBER: builtins.int
220+
FILTER_FIELD_NUMBER: builtins.int
221+
ONLY_ACTIVE_FIELD_NUMBER: builtins.int
222+
parent: builtins.str
223+
page_size: builtins.int
224+
page_token: builtins.str
225+
filter: builtins.str
226+
only_active: builtins.bool
227+
def __init__(
228+
self,
229+
*,
230+
parent: builtins.str = ...,
231+
page_size: builtins.int = ...,
232+
page_token: builtins.str = ...,
233+
filter: builtins.str = ...,
234+
only_active: builtins.bool | None = ...,
235+
) -> None: ...
236+
def HasField(self, field_name: typing.Literal["_only_active", b"_only_active", "only_active", b"only_active"]) -> builtins.bool: ...
237+
def ClearField(self, field_name: typing.Literal["_only_active", b"_only_active", "filter", b"filter", "only_active", b"only_active", "page_size", b"page_size", "page_token", b"page_token", "parent", b"parent"]) -> None: ...
238+
def WhichOneof(self, oneof_group: typing.Literal["_only_active", b"_only_active"]) -> typing.Literal["only_active"] | None: ...
239+
240+
Global___ListLeasesRequest: typing_extensions.TypeAlias = ListLeasesRequest
241+
242+
@typing.final
243+
class ListLeasesResponse(google.protobuf.message.Message):
244+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
245+
246+
LEASES_FIELD_NUMBER: builtins.int
247+
NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
248+
next_page_token: builtins.str
249+
@property
250+
def leases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___Lease]: ...
251+
def __init__(
252+
self,
253+
*,
254+
leases: collections.abc.Iterable[Global___Lease] | None = ...,
255+
next_page_token: builtins.str = ...,
256+
) -> None: ...
257+
def ClearField(self, field_name: typing.Literal["leases", b"leases", "next_page_token", b"next_page_token"]) -> None: ...
258+
259+
Global___ListLeasesResponse: typing_extensions.TypeAlias = ListLeasesResponse
260+
261+
@typing.final
262+
class CreateLeaseRequest(google.protobuf.message.Message):
263+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
264+
265+
PARENT_FIELD_NUMBER: builtins.int
266+
LEASE_ID_FIELD_NUMBER: builtins.int
267+
LEASE_FIELD_NUMBER: builtins.int
268+
parent: builtins.str
269+
lease_id: builtins.str
270+
@property
271+
def lease(self) -> Global___Lease: ...
272+
def __init__(
273+
self,
274+
*,
275+
parent: builtins.str = ...,
276+
lease_id: builtins.str = ...,
277+
lease: Global___Lease | None = ...,
278+
) -> None: ...
279+
def HasField(self, field_name: typing.Literal["lease", b"lease"]) -> builtins.bool: ...
280+
def ClearField(self, field_name: typing.Literal["lease", b"lease", "lease_id", b"lease_id", "parent", b"parent"]) -> None: ...
281+
282+
Global___CreateLeaseRequest: typing_extensions.TypeAlias = CreateLeaseRequest
283+
284+
@typing.final
285+
class UpdateLeaseRequest(google.protobuf.message.Message):
286+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
287+
288+
LEASE_FIELD_NUMBER: builtins.int
289+
UPDATE_MASK_FIELD_NUMBER: builtins.int
290+
@property
291+
def lease(self) -> Global___Lease: ...
292+
@property
293+
def update_mask(self) -> google.protobuf.field_mask_pb2.FieldMask: ...
294+
def __init__(
295+
self,
296+
*,
297+
lease: Global___Lease | None = ...,
298+
update_mask: google.protobuf.field_mask_pb2.FieldMask | None = ...,
299+
) -> None: ...
300+
def HasField(self, field_name: typing.Literal["lease", b"lease", "update_mask", b"update_mask"]) -> builtins.bool: ...
301+
def ClearField(self, field_name: typing.Literal["lease", b"lease", "update_mask", b"update_mask"]) -> None: ...
302+
303+
Global___UpdateLeaseRequest: typing_extensions.TypeAlias = UpdateLeaseRequest
304+
305+
@typing.final
306+
class DeleteLeaseRequest(google.protobuf.message.Message):
307+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
308+
309+
NAME_FIELD_NUMBER: builtins.int
310+
name: builtins.str
311+
def __init__(
312+
self,
313+
*,
314+
name: builtins.str = ...,
315+
) -> None: ...
316+
def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ...
317+
318+
Global___DeleteLeaseRequest: typing_extensions.TypeAlias = DeleteLeaseRequest

0 commit comments

Comments
 (0)