metal-stack-api 0.0.22__py3-none-any.whl → 0.0.23__py3-none-any.whl

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.
Files changed (115) hide show
  1. {metal_stack_api-0.0.22.dist-info → metal_stack_api-0.0.23.dist-info}/METADATA +3 -2
  2. metal_stack_api-0.0.23.dist-info/RECORD +97 -0
  3. {metal_stack_api-0.0.22.dist-info → metal_stack_api-0.0.23.dist-info}/top_level.txt +0 -1
  4. metalstack/admin/v2/{filesystem_connecpy.py → filesystem_connect.py} +22 -22
  5. metalstack/admin/v2/filesystem_pb2.py +20 -19
  6. metalstack/admin/v2/filesystem_pb2.pyi +1 -0
  7. metalstack/admin/v2/{image_connecpy.py → image_connect.py} +24 -24
  8. metalstack/admin/v2/image_pb2.py +24 -23
  9. metalstack/admin/v2/image_pb2.pyi +1 -0
  10. metalstack/admin/v2/{ip_connecpy.py → ip_connect.py} +20 -20
  11. metalstack/admin/v2/ip_pb2.py +2 -2
  12. metalstack/admin/v2/{machine_connecpy.py → machine_connect.py} +20 -20
  13. metalstack/admin/v2/machine_pb2.py +15 -14
  14. metalstack/admin/v2/machine_pb2.pyi +1 -0
  15. metalstack/admin/v2/{network_connecpy.py → network_connect.py} +26 -26
  16. metalstack/admin/v2/network_pb2.py +45 -36
  17. metalstack/admin/v2/network_pb2.pyi +1 -0
  18. metalstack/admin/v2/{partition_connecpy.py → partition_connect.py} +24 -24
  19. metalstack/admin/v2/partition_pb2.py +23 -22
  20. metalstack/admin/v2/partition_pb2.pyi +1 -0
  21. metalstack/admin/v2/{size_connecpy.py → size_connect.py} +22 -22
  22. metalstack/admin/v2/size_pb2.py +20 -19
  23. metalstack/admin/v2/size_pb2.pyi +1 -0
  24. metalstack/admin/v2/switch_connect.py +444 -0
  25. metalstack/admin/v2/switch_pb2.py +108 -0
  26. metalstack/admin/v2/switch_pb2.pyi +114 -0
  27. metalstack/admin/v2/{tenant_connecpy.py → tenant_connect.py} +20 -20
  28. metalstack/admin/v2/tenant_pb2.py +18 -15
  29. metalstack/admin/v2/tenant_pb2.pyi +1 -0
  30. metalstack/admin/v2/{token_connecpy.py → token_connect.py} +20 -20
  31. metalstack/admin/v2/token_pb2.py +2 -2
  32. metalstack/api/v2/common_pb2.py +2 -2
  33. metalstack/api/v2/{filesystem_connecpy.py → filesystem_connect.py} +22 -22
  34. metalstack/api/v2/filesystem_pb2.py +54 -53
  35. metalstack/api/v2/filesystem_pb2.pyi +1 -0
  36. metalstack/api/v2/{health_connecpy.py → health_connect.py} +18 -18
  37. metalstack/api/v2/health_pb2.py +2 -2
  38. metalstack/api/v2/{image_connecpy.py → image_connect.py} +22 -22
  39. metalstack/api/v2/image_pb2.py +32 -31
  40. metalstack/api/v2/image_pb2.pyi +1 -0
  41. metalstack/api/v2/{ip_connecpy.py → ip_connect.py} +26 -26
  42. metalstack/api/v2/ip_pb2.py +41 -40
  43. metalstack/api/v2/ip_pb2.pyi +1 -0
  44. metalstack/api/v2/{machine_connecpy.py → machine_connect.py} +26 -26
  45. metalstack/api/v2/machine_pb2.py +122 -121
  46. metalstack/api/v2/machine_pb2.pyi +1 -0
  47. metalstack/api/v2/{method_connecpy.py → method_connect.py} +20 -20
  48. metalstack/api/v2/method_pb2.py +2 -2
  49. metalstack/api/v2/{network_connecpy.py → network_connect.py} +28 -28
  50. metalstack/api/v2/network_pb2.py +73 -66
  51. metalstack/api/v2/network_pb2.pyi +1 -0
  52. metalstack/api/v2/{partition_connecpy.py → partition_connect.py} +20 -20
  53. metalstack/api/v2/partition_pb2.py +25 -24
  54. metalstack/api/v2/partition_pb2.pyi +1 -0
  55. metalstack/api/v2/predefined_rules_pb2.py +50 -0
  56. metalstack/api/v2/predefined_rules_pb2.pyi +19 -0
  57. metalstack/api/v2/{project_connecpy.py → project_connect.py} +40 -40
  58. metalstack/api/v2/project_pb2.py +69 -64
  59. metalstack/api/v2/project_pb2.pyi +1 -0
  60. metalstack/api/v2/{size_connecpy.py → size_connect.py} +20 -20
  61. metalstack/api/v2/size_pb2.py +26 -25
  62. metalstack/api/v2/size_pb2.pyi +1 -0
  63. metalstack/api/v2/switch_pb2.py +62 -41
  64. metalstack/api/v2/switch_pb2.pyi +54 -11
  65. metalstack/api/v2/{tenant_connecpy.py → tenant_connect.py} +40 -40
  66. metalstack/api/v2/tenant_pb2.py +69 -64
  67. metalstack/api/v2/tenant_pb2.pyi +1 -0
  68. metalstack/api/v2/{token_connecpy.py → token_connect.py} +28 -28
  69. metalstack/api/v2/token_pb2.py +51 -50
  70. metalstack/api/v2/token_pb2.pyi +1 -0
  71. metalstack/api/v2/{user_connecpy.py → user_connect.py} +18 -18
  72. metalstack/api/v2/user_pb2.py +15 -11
  73. metalstack/api/v2/user_pb2.pyi +2 -0
  74. metalstack/api/v2/{version_connecpy.py → version_connect.py} +18 -18
  75. metalstack/api/v2/version_pb2.py +2 -2
  76. metalstack/client/client.py +56 -52
  77. metalstack/infra/v2/{bmc_connecpy.py → bmc_connect.py} +18 -18
  78. metalstack/infra/v2/bmc_pb2.py +2 -2
  79. metalstack/infra/v2/{switch_connecpy.py → switch_connect.py} +83 -18
  80. metalstack/infra/v2/switch_pb2.py +28 -10
  81. metalstack/infra/v2/switch_pb2.pyi +51 -0
  82. buf/__init__.py +0 -0
  83. buf/validate/__init__.py +0 -0
  84. buf/validate/validate_pb2.py +0 -450
  85. buf/validate/validate_pb2.pyi +0 -627
  86. buf/validate/validate_pb2_grpc.py +0 -4
  87. metal_stack_api-0.0.22.dist-info/RECORD +0 -124
  88. metalstack/admin/v2/filesystem_pb2_grpc.py +0 -169
  89. metalstack/admin/v2/image_pb2_grpc.py +0 -213
  90. metalstack/admin/v2/ip_pb2_grpc.py +0 -125
  91. metalstack/admin/v2/machine_pb2_grpc.py +0 -125
  92. metalstack/admin/v2/network_pb2_grpc.py +0 -257
  93. metalstack/admin/v2/partition_pb2_grpc.py +0 -213
  94. metalstack/admin/v2/size_pb2_grpc.py +0 -169
  95. metalstack/admin/v2/tenant_pb2_grpc.py +0 -125
  96. metalstack/admin/v2/token_pb2_grpc.py +0 -125
  97. metalstack/api/v2/common_pb2_grpc.py +0 -4
  98. metalstack/api/v2/filesystem_pb2_grpc.py +0 -169
  99. metalstack/api/v2/health_pb2_grpc.py +0 -81
  100. metalstack/api/v2/image_pb2_grpc.py +0 -169
  101. metalstack/api/v2/ip_pb2_grpc.py +0 -257
  102. metalstack/api/v2/machine_pb2_grpc.py +0 -257
  103. metalstack/api/v2/method_pb2_grpc.py +0 -128
  104. metalstack/api/v2/network_pb2_grpc.py +0 -301
  105. metalstack/api/v2/partition_pb2_grpc.py +0 -125
  106. metalstack/api/v2/project_pb2_grpc.py +0 -565
  107. metalstack/api/v2/size_pb2_grpc.py +0 -125
  108. metalstack/api/v2/switch_pb2_grpc.py +0 -4
  109. metalstack/api/v2/tenant_pb2_grpc.py +0 -565
  110. metalstack/api/v2/token_pb2_grpc.py +0 -301
  111. metalstack/api/v2/user_pb2_grpc.py +0 -81
  112. metalstack/api/v2/version_pb2_grpc.py +0 -81
  113. metalstack/infra/v2/bmc_pb2_grpc.py +0 -81
  114. metalstack/infra/v2/switch_pb2_grpc.py +0 -81
  115. {metal_stack_api-0.0.22.dist-info → metal_stack_api-0.0.23.dist-info}/WHEEL +0 -0
@@ -0,0 +1,114 @@
1
+ import datetime
2
+
3
+ from buf.validate import validate_pb2 as _validate_pb2
4
+ from google.protobuf import timestamp_pb2 as _timestamp_pb2
5
+ from metalstack.api.v2 import common_pb2 as _common_pb2
6
+ from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
7
+ from metalstack.api.v2 import switch_pb2 as _switch_pb2
8
+ from google.protobuf.internal import containers as _containers
9
+ from google.protobuf import descriptor as _descriptor
10
+ from google.protobuf import message as _message
11
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
12
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
13
+
14
+ DESCRIPTOR: _descriptor.FileDescriptor
15
+
16
+ class SwitchServiceGetRequest(_message.Message):
17
+ __slots__ = ("id",)
18
+ ID_FIELD_NUMBER: _ClassVar[int]
19
+ id: str
20
+ def __init__(self, id: _Optional[str] = ...) -> None: ...
21
+
22
+ class SwitchServiceGetResponse(_message.Message):
23
+ __slots__ = ("switch",)
24
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
25
+ switch: _switch_pb2.Switch
26
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
27
+
28
+ class SwitchServiceListRequest(_message.Message):
29
+ __slots__ = ("query",)
30
+ QUERY_FIELD_NUMBER: _ClassVar[int]
31
+ query: _switch_pb2.SwitchQuery
32
+ def __init__(self, query: _Optional[_Union[_switch_pb2.SwitchQuery, _Mapping]] = ...) -> None: ...
33
+
34
+ class SwitchServiceListResponse(_message.Message):
35
+ __slots__ = ("switches",)
36
+ SWITCHES_FIELD_NUMBER: _ClassVar[int]
37
+ switches: _containers.RepeatedCompositeFieldContainer[_switch_pb2.Switch]
38
+ def __init__(self, switches: _Optional[_Iterable[_Union[_switch_pb2.Switch, _Mapping]]] = ...) -> None: ...
39
+
40
+ class SwitchServiceUpdateRequest(_message.Message):
41
+ __slots__ = ("id", "update_meta", "updated_at", "description", "rack_id", "replace_mode", "management_ip", "management_user", "console_command", "nics", "os")
42
+ ID_FIELD_NUMBER: _ClassVar[int]
43
+ UPDATE_META_FIELD_NUMBER: _ClassVar[int]
44
+ UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
45
+ DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
46
+ RACK_ID_FIELD_NUMBER: _ClassVar[int]
47
+ REPLACE_MODE_FIELD_NUMBER: _ClassVar[int]
48
+ MANAGEMENT_IP_FIELD_NUMBER: _ClassVar[int]
49
+ MANAGEMENT_USER_FIELD_NUMBER: _ClassVar[int]
50
+ CONSOLE_COMMAND_FIELD_NUMBER: _ClassVar[int]
51
+ NICS_FIELD_NUMBER: _ClassVar[int]
52
+ OS_FIELD_NUMBER: _ClassVar[int]
53
+ id: str
54
+ update_meta: _common_pb2.UpdateMeta
55
+ updated_at: _timestamp_pb2.Timestamp
56
+ description: str
57
+ rack_id: str
58
+ replace_mode: _switch_pb2.SwitchReplaceMode
59
+ management_ip: str
60
+ management_user: str
61
+ console_command: str
62
+ nics: _containers.RepeatedCompositeFieldContainer[_switch_pb2.SwitchNic]
63
+ os: _switch_pb2.SwitchOS
64
+ def __init__(self, id: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., description: _Optional[str] = ..., rack_id: _Optional[str] = ..., replace_mode: _Optional[_Union[_switch_pb2.SwitchReplaceMode, str]] = ..., management_ip: _Optional[str] = ..., management_user: _Optional[str] = ..., console_command: _Optional[str] = ..., nics: _Optional[_Iterable[_Union[_switch_pb2.SwitchNic, _Mapping]]] = ..., os: _Optional[_Union[_switch_pb2.SwitchOS, _Mapping]] = ...) -> None: ...
65
+
66
+ class SwitchServiceUpdateResponse(_message.Message):
67
+ __slots__ = ("switch",)
68
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
69
+ switch: _switch_pb2.Switch
70
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
71
+
72
+ class SwitchServiceDeleteRequest(_message.Message):
73
+ __slots__ = ("id", "force")
74
+ ID_FIELD_NUMBER: _ClassVar[int]
75
+ FORCE_FIELD_NUMBER: _ClassVar[int]
76
+ id: str
77
+ force: bool
78
+ def __init__(self, id: _Optional[str] = ..., force: _Optional[bool] = ...) -> None: ...
79
+
80
+ class SwitchServiceDeleteResponse(_message.Message):
81
+ __slots__ = ("switch",)
82
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
83
+ switch: _switch_pb2.Switch
84
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
85
+
86
+ class SwitchServiceMigrateRequest(_message.Message):
87
+ __slots__ = ("old_switch", "new_switch")
88
+ OLD_SWITCH_FIELD_NUMBER: _ClassVar[int]
89
+ NEW_SWITCH_FIELD_NUMBER: _ClassVar[int]
90
+ old_switch: str
91
+ new_switch: str
92
+ def __init__(self, old_switch: _Optional[str] = ..., new_switch: _Optional[str] = ...) -> None: ...
93
+
94
+ class SwitchServiceMigrateResponse(_message.Message):
95
+ __slots__ = ("switch",)
96
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
97
+ switch: _switch_pb2.Switch
98
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
99
+
100
+ class SwitchServicePortRequest(_message.Message):
101
+ __slots__ = ("id", "nic_name", "status")
102
+ ID_FIELD_NUMBER: _ClassVar[int]
103
+ NIC_NAME_FIELD_NUMBER: _ClassVar[int]
104
+ STATUS_FIELD_NUMBER: _ClassVar[int]
105
+ id: str
106
+ nic_name: str
107
+ status: _switch_pb2.SwitchPortStatus
108
+ def __init__(self, id: _Optional[str] = ..., nic_name: _Optional[str] = ..., status: _Optional[_Union[_switch_pb2.SwitchPortStatus, str]] = ...) -> None: ...
109
+
110
+ class SwitchServicePortResponse(_message.Message):
111
+ __slots__ = ("switch",)
112
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
113
+ switch: _switch_pb2.Switch
114
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
@@ -1,30 +1,30 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Generated by https://github.com/i2y/connecpy/v2/protoc-gen-connecpy. DO NOT EDIT!
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
3
  # source: metalstack/admin/v2/tenant.proto
4
4
 
5
5
  from collections.abc import AsyncIterator, Iterable, Iterator, Mapping
6
6
  from typing import Protocol
7
7
 
8
- from connecpy.client import ConnecpyClient, ConnecpyClientSync
9
- from connecpy.code import Code
10
- from connecpy.exceptions import ConnecpyException
11
- from connecpy.interceptor import Interceptor, InterceptorSync
12
- from connecpy.method import IdempotencyLevel, MethodInfo
13
- from connecpy.request import Headers, RequestContext
14
- from connecpy.server import ConnecpyASGIApplication, ConnecpyWSGIApplication, Endpoint, EndpointSync
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
15
  import metalstack.admin.v2.tenant_pb2 as metalstack_dot_admin_dot_v2_dot_tenant__pb2
16
16
 
17
17
 
18
18
  class TenantService(Protocol):
19
19
  async def create(self, request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateResponse:
20
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
21
 
22
22
  async def list(self, request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceListResponse:
23
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
24
 
25
25
 
26
- class TenantServiceASGIApplication(ConnecpyASGIApplication):
27
- def __init__(self, service: TenantService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None):
26
+ class TenantServiceASGIApplication(ConnectASGIApplication):
27
+ def __init__(self, service: TenantService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
28
  super().__init__(
29
29
  endpoints={
30
30
  "/metalstack.admin.v2.TenantService/Create": Endpoint.unary(
@@ -53,12 +53,12 @@ class TenantServiceASGIApplication(ConnecpyASGIApplication):
53
53
  )
54
54
 
55
55
  @property
56
- def path(self):
56
+ def path(self) -> str:
57
57
  """Returns the URL path to mount the application to when serving multiple applications."""
58
58
  return "/metalstack.admin.v2.TenantService"
59
59
 
60
60
 
61
- class TenantServiceClient(ConnecpyClient):
61
+ class TenantServiceClient(ConnectClient):
62
62
  async def create(
63
63
  self,
64
64
  request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateRequest,
@@ -102,13 +102,13 @@ class TenantServiceClient(ConnecpyClient):
102
102
 
103
103
  class TenantServiceSync(Protocol):
104
104
  def create(self, request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateResponse:
105
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
105
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
106
  def list(self, request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceListResponse:
107
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
107
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
108
108
 
109
109
 
110
- class TenantServiceWSGIApplication(ConnecpyWSGIApplication):
111
- def __init__(self, service: TenantServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None):
110
+ class TenantServiceWSGIApplication(ConnectWSGIApplication):
111
+ def __init__(self, service: TenantServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
112
112
  super().__init__(
113
113
  endpoints={
114
114
  "/metalstack.admin.v2.TenantService/Create": EndpointSync.unary(
@@ -137,12 +137,12 @@ class TenantServiceWSGIApplication(ConnecpyWSGIApplication):
137
137
  )
138
138
 
139
139
  @property
140
- def path(self):
140
+ def path(self) -> str:
141
141
  """Returns the URL path to mount the application to when serving multiple applications."""
142
142
  return "/metalstack.admin.v2.TenantService"
143
143
 
144
144
 
145
- class TenantServiceClientSync(ConnecpyClientSync):
145
+ class TenantServiceClientSync(ConnectClientSync):
146
146
  def create(
147
147
  self,
148
148
  request: metalstack_dot_admin_dot_v2_dot_tenant__pb2.TenantServiceCreateRequest,
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: metalstack/admin/v2/tenant.proto
5
- # Protobuf Python Version: 6.32.0
5
+ # Protobuf Python Version: 6.32.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -13,7 +13,7 @@ _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
15
  32,
16
- 0,
16
+ 1,
17
17
  '',
18
18
  'metalstack/admin/v2/tenant.proto'
19
19
  )
@@ -24,10 +24,11 @@ _sym_db = _symbol_database.Default()
24
24
 
25
25
  from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
26
  from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
27
+ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
27
28
  from metalstack.api.v2 import tenant_pb2 as metalstack_dot_api_dot_v2_dot_tenant__pb2
28
29
 
29
30
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xdf\x01\n\x1aTenantServiceCreateRequest\x12\x1d\n\x04name\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x02\x18@R\x04name\x12\x31\n\x0b\x64\x65scription\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\"\n\navatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"\xb9\x01\n\x18TenantServiceListRequest\x12\x19\n\x05login\x18\x01 \x01(\tH\x00R\x05login\x88\x01\x01\x12\x17\n\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x03 \x01(\tH\x02R\x05\x65mail\x88\x01\x01\x12\x31\n\x06paging\x18\x07 \x01(\x0b\x32\x19.metalstack.api.v2.PagingR\x06pagingB\x08\n\x06_loginB\x07\n\x05_nameB\x08\n\x06_email\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page2\xf2\x01\n\rTenantService\x12r\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\x05\xd2\xf3\x18\x01\x01\x12m\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/tenant.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/tenant.proto\"\xe2\x01\n\x1aTenantServiceCreateRequest\x12\x1f\n\x04name\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x32\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\x05\x65mail\x18\x03 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\"\n\navatar_url\x18\x04 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"\xc6\x01\n\x18TenantServiceListRequest\x12\x19\n\x05login\x18\x01 \x01(\tH\x00R\x05login\x88\x01\x01\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04name\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x03 \x01(\tH\x02R\x05\x65mail\x88\x01\x01\x12\x31\n\x06paging\x18\x07 \x01(\x0b\x32\x19.metalstack.api.v2.PagingR\x06pagingB\x08\n\x06_loginB\x07\n\x05_nameB\x08\n\x06_email\"\x80\x01\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page2\xf2\x01\n\rTenantService\x12r\n\x06\x43reate\x12/.metalstack.admin.v2.TenantServiceCreateRequest\x1a\x30.metalstack.admin.v2.TenantServiceCreateResponse\"\x05\xd2\xf3\x18\x01\x01\x12m\n\x04List\x12-.metalstack.admin.v2.TenantServiceListRequest\x1a..metalstack.admin.v2.TenantServiceListResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bTenantProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
31
32
 
32
33
  _globals = globals()
33
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,23 +37,25 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
37
  _globals['DESCRIPTOR']._loaded_options = None
37
38
  _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\013TenantProtoP\001Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\242\002\003MAX\252\002\023Metalstack.Admin.V2\312\002\023Metalstack\\Admin\\V2\342\002\037Metalstack\\Admin\\V2\\GPBMetadata\352\002\025Metalstack::Admin::V2'
38
39
  _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None
39
- _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\006r\004\020\002\030@'
40
+ _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
40
41
  _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None
41
- _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\007r\005\020\002\030\200\004'
42
+ _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001'
42
43
  _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._loaded_options = None
43
44
  _globals['_TENANTSERVICECREATEREQUEST'].fields_by_name['email']._serialized_options = b'\272H\004r\002`\001'
45
+ _globals['_TENANTSERVICELISTREQUEST'].fields_by_name['name']._loaded_options = None
46
+ _globals['_TENANTSERVICELISTREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
44
47
  _globals['_TENANTSERVICE'].methods_by_name['Create']._loaded_options = None
45
48
  _globals['_TENANTSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001'
46
49
  _globals['_TENANTSERVICE'].methods_by_name['List']._loaded_options = None
47
50
  _globals['_TENANTSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002'
48
- _globals['_TENANTSERVICECREATEREQUEST']._serialized_start=151
49
- _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=374
50
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=376
51
- _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=456
52
- _globals['_TENANTSERVICELISTREQUEST']._serialized_start=459
53
- _globals['_TENANTSERVICELISTREQUEST']._serialized_end=644
54
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=647
55
- _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=775
56
- _globals['_TENANTSERVICE']._serialized_start=778
57
- _globals['_TENANTSERVICE']._serialized_end=1020
51
+ _globals['_TENANTSERVICECREATEREQUEST']._serialized_start=193
52
+ _globals['_TENANTSERVICECREATEREQUEST']._serialized_end=419
53
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_start=421
54
+ _globals['_TENANTSERVICECREATERESPONSE']._serialized_end=501
55
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_start=504
56
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_end=702
57
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=705
58
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=833
59
+ _globals['_TENANTSERVICE']._serialized_start=836
60
+ _globals['_TENANTSERVICE']._serialized_end=1078
58
61
  # @@protoc_insertion_point(module_scope)
@@ -1,5 +1,6 @@
1
1
  from buf.validate import validate_pb2 as _validate_pb2
2
2
  from metalstack.api.v2 import common_pb2 as _common_pb2
3
+ from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
3
4
  from metalstack.api.v2 import tenant_pb2 as _tenant_pb2
4
5
  from google.protobuf.internal import containers as _containers
5
6
  from google.protobuf import descriptor as _descriptor
@@ -1,30 +1,30 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Generated by https://github.com/i2y/connecpy/v2/protoc-gen-connecpy. DO NOT EDIT!
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
3
  # source: metalstack/admin/v2/token.proto
4
4
 
5
5
  from collections.abc import AsyncIterator, Iterable, Iterator, Mapping
6
6
  from typing import Protocol
7
7
 
8
- from connecpy.client import ConnecpyClient, ConnecpyClientSync
9
- from connecpy.code import Code
10
- from connecpy.exceptions import ConnecpyException
11
- from connecpy.interceptor import Interceptor, InterceptorSync
12
- from connecpy.method import IdempotencyLevel, MethodInfo
13
- from connecpy.request import Headers, RequestContext
14
- from connecpy.server import ConnecpyASGIApplication, ConnecpyWSGIApplication, Endpoint, EndpointSync
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
15
  import metalstack.admin.v2.token_pb2 as metalstack_dot_admin_dot_v2_dot_token__pb2
16
16
 
17
17
 
18
18
  class TokenService(Protocol):
19
19
  async def list(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListResponse:
20
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
21
 
22
22
  async def revoke(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceRevokeRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceRevokeResponse:
23
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
24
 
25
25
 
26
- class TokenServiceASGIApplication(ConnecpyASGIApplication):
27
- def __init__(self, service: TokenService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None):
26
+ class TokenServiceASGIApplication(ConnectASGIApplication):
27
+ def __init__(self, service: TokenService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
28
  super().__init__(
29
29
  endpoints={
30
30
  "/metalstack.admin.v2.TokenService/List": Endpoint.unary(
@@ -53,12 +53,12 @@ class TokenServiceASGIApplication(ConnecpyASGIApplication):
53
53
  )
54
54
 
55
55
  @property
56
- def path(self):
56
+ def path(self) -> str:
57
57
  """Returns the URL path to mount the application to when serving multiple applications."""
58
58
  return "/metalstack.admin.v2.TokenService"
59
59
 
60
60
 
61
- class TokenServiceClient(ConnecpyClient):
61
+ class TokenServiceClient(ConnectClient):
62
62
  async def list(
63
63
  self,
64
64
  request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListRequest,
@@ -102,13 +102,13 @@ class TokenServiceClient(ConnecpyClient):
102
102
 
103
103
  class TokenServiceSync(Protocol):
104
104
  def list(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListResponse:
105
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
105
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
106
  def revoke(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceRevokeRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceRevokeResponse:
107
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
107
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
108
108
 
109
109
 
110
- class TokenServiceWSGIApplication(ConnecpyWSGIApplication):
111
- def __init__(self, service: TokenServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None):
110
+ class TokenServiceWSGIApplication(ConnectWSGIApplication):
111
+ def __init__(self, service: TokenServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
112
112
  super().__init__(
113
113
  endpoints={
114
114
  "/metalstack.admin.v2.TokenService/List": EndpointSync.unary(
@@ -137,12 +137,12 @@ class TokenServiceWSGIApplication(ConnecpyWSGIApplication):
137
137
  )
138
138
 
139
139
  @property
140
- def path(self):
140
+ def path(self) -> str:
141
141
  """Returns the URL path to mount the application to when serving multiple applications."""
142
142
  return "/metalstack.admin.v2.TokenService"
143
143
 
144
144
 
145
- class TokenServiceClientSync(ConnecpyClientSync):
145
+ class TokenServiceClientSync(ConnectClientSync):
146
146
  def list(
147
147
  self,
148
148
  request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceListRequest,
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: metalstack/admin/v2/token.proto
5
- # Protobuf Python Version: 6.32.0
5
+ # Protobuf Python Version: 6.32.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -13,7 +13,7 @@ _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
15
  32,
16
- 0,
16
+ 1,
17
17
  '',
18
18
  'metalstack/admin/v2/token.proto'
19
19
  )
@@ -2,7 +2,7 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # NO CHECKED-IN PROTOBUF GENCODE
4
4
  # source: metalstack/api/v2/common.proto
5
- # Protobuf Python Version: 6.32.0
5
+ # Protobuf Python Version: 6.32.1
6
6
  """Generated protocol buffer code."""
7
7
  from google.protobuf import descriptor as _descriptor
8
8
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -13,7 +13,7 @@ _runtime_version.ValidateProtobufRuntimeVersion(
13
13
  _runtime_version.Domain.PUBLIC,
14
14
  6,
15
15
  32,
16
- 0,
16
+ 1,
17
17
  '',
18
18
  'metalstack/api/v2/common.proto'
19
19
  )
@@ -1,33 +1,33 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Generated by https://github.com/i2y/connecpy/v2/protoc-gen-connecpy. DO NOT EDIT!
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
3
  # source: metalstack/api/v2/filesystem.proto
4
4
 
5
5
  from collections.abc import AsyncIterator, Iterable, Iterator, Mapping
6
6
  from typing import Protocol
7
7
 
8
- from connecpy.client import ConnecpyClient, ConnecpyClientSync
9
- from connecpy.code import Code
10
- from connecpy.exceptions import ConnecpyException
11
- from connecpy.interceptor import Interceptor, InterceptorSync
12
- from connecpy.method import IdempotencyLevel, MethodInfo
13
- from connecpy.request import Headers, RequestContext
14
- from connecpy.server import ConnecpyASGIApplication, ConnecpyWSGIApplication, Endpoint, EndpointSync
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
15
  import metalstack.api.v2.filesystem_pb2 as metalstack_dot_api_dot_v2_dot_filesystem__pb2
16
16
 
17
17
 
18
18
  class FilesystemService(Protocol):
19
19
  async def get(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetResponse:
20
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
21
 
22
22
  async def list(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceListRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceListResponse:
23
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
24
 
25
25
  async def match(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceMatchRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceMatchResponse:
26
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
26
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
27
27
 
28
28
 
29
- class FilesystemServiceASGIApplication(ConnecpyASGIApplication):
30
- def __init__(self, service: FilesystemService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None):
29
+ class FilesystemServiceASGIApplication(ConnectASGIApplication):
30
+ def __init__(self, service: FilesystemService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
31
31
  super().__init__(
32
32
  endpoints={
33
33
  "/metalstack.api.v2.FilesystemService/Get": Endpoint.unary(
@@ -66,12 +66,12 @@ class FilesystemServiceASGIApplication(ConnecpyASGIApplication):
66
66
  )
67
67
 
68
68
  @property
69
- def path(self):
69
+ def path(self) -> str:
70
70
  """Returns the URL path to mount the application to when serving multiple applications."""
71
71
  return "/metalstack.api.v2.FilesystemService"
72
72
 
73
73
 
74
- class FilesystemServiceClient(ConnecpyClient):
74
+ class FilesystemServiceClient(ConnectClient):
75
75
  async def get(
76
76
  self,
77
77
  request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetRequest,
@@ -135,15 +135,15 @@ class FilesystemServiceClient(ConnecpyClient):
135
135
 
136
136
  class FilesystemServiceSync(Protocol):
137
137
  def get(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetResponse:
138
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
138
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
139
139
  def list(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceListRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceListResponse:
140
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
140
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
141
141
  def match(self, request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceMatchRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceMatchResponse:
142
- raise ConnecpyException(Code.UNIMPLEMENTED, "Not implemented")
142
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
143
143
 
144
144
 
145
- class FilesystemServiceWSGIApplication(ConnecpyWSGIApplication):
146
- def __init__(self, service: FilesystemServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None):
145
+ class FilesystemServiceWSGIApplication(ConnectWSGIApplication):
146
+ def __init__(self, service: FilesystemServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
147
147
  super().__init__(
148
148
  endpoints={
149
149
  "/metalstack.api.v2.FilesystemService/Get": EndpointSync.unary(
@@ -182,12 +182,12 @@ class FilesystemServiceWSGIApplication(ConnecpyWSGIApplication):
182
182
  )
183
183
 
184
184
  @property
185
- def path(self):
185
+ def path(self) -> str:
186
186
  """Returns the URL path to mount the application to when serving multiple applications."""
187
187
  return "/metalstack.api.v2.FilesystemService"
188
188
 
189
189
 
190
- class FilesystemServiceClientSync(ConnecpyClientSync):
190
+ class FilesystemServiceClientSync(ConnectClientSync):
191
191
  def get(
192
192
  self,
193
193
  request: metalstack_dot_api_dot_v2_dot_filesystem__pb2.FilesystemServiceGetRequest,