metal-stack-api 0.0.28__py3-none-any.whl → 0.0.30__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metal-stack-api
3
- Version: 0.0.28
3
+ Version: 0.0.30
4
4
  Summary: Python API client for metal-stack api
5
5
  Home-page: https://github.com/metal-stack/api
6
6
  Author: metal-stack authors
@@ -7,9 +7,9 @@ metalstack/admin/v2/filesystem_pb2.pyi,sha256=yeb3mYmuTvjdSgzVl6wDSpUGQ1HLX2AWKr
7
7
  metalstack/admin/v2/image_connect.py,sha256=4-MlnrMTSEKWJlIwII3_KyGqAfQJANSEssy8_Ng2tm8,15489
8
8
  metalstack/admin/v2/image_pb2.py,sha256=bM0V2ASGVA2Q-L-uFlNQY3c-Uy1crHikMgBnnbWDoQw,8518
9
9
  metalstack/admin/v2/image_pb2.pyi,sha256=dY5Cep_Sd6LyGcmEuCyJduInDiZ32uvwyIqzoUxlNkk,3656
10
- metalstack/admin/v2/ip_connect.py,sha256=v-HPOyqbIBlfrvvLuWPWpYMUX3NcT-sSF-5m-PMLHE4,8432
11
- metalstack/admin/v2/ip_pb2.py,sha256=Kpas-H5WYcbW6veEjAGh0-ON1l54nc2IlI3u3i7zxJo,3895
12
- metalstack/admin/v2/ip_pb2.pyi,sha256=Ro5RqU2w7UcaGoB6TZK9t5dRUaQ2LxWyaVoYZhFTBms,1671
10
+ metalstack/admin/v2/ip_connect.py,sha256=4nmE0hsWGW4tJlmu0860Dp_-hHMLqvyO85fPAOTht18,5165
11
+ metalstack/admin/v2/ip_pb2.py,sha256=owBqFboWObmSeIdpokLiTY-gPQqZiABYEYGzhgfGATc,2913
12
+ metalstack/admin/v2/ip_pb2.pyi,sha256=bU9pxQ4p-8jucl25-w-T3JgqoXlX61Nb44kMVs9PCjA,970
13
13
  metalstack/admin/v2/machine_connect.py,sha256=q1qASGH8O7n0XDOVv9SY5TDkAGI82PXxw7795pCtzLc,8793
14
14
  metalstack/admin/v2/machine_pb2.py,sha256=fXxAZAe1PXumPocR7936rmcMNjntcZxZviPhD7cF4mQ,4704
15
15
  metalstack/admin/v2/machine_pb2.pyi,sha256=dGSQx-mG_B26Jv5eWAZ7_V06klPYwsqLatfY77g99kY,1739
@@ -73,8 +73,8 @@ metalstack/api/v2/tenant_connect.py,sha256=uzhCOeURjHqdoBwJJPr8tyS-uPapLEBfy1ppW
73
73
  metalstack/api/v2/tenant_pb2.py,sha256=qXx8jxNzWpPLFy6A0QpGay-WVs23OJaerEBa9KkafRY,18910
74
74
  metalstack/api/v2/tenant_pb2.pyi,sha256=prHKgu4r4r1jFb5nSrTRdn2Q7C8iCBd7l5sPMMs6W3o,10822
75
75
  metalstack/api/v2/token_connect.py,sha256=eeWuMi194zSJ2w8kNq0p25PTAaGxvENttZtG-7lW1q0,21893
76
- metalstack/api/v2/token_pb2.py,sha256=NTJPwP8KWGS6p-4Y_6R6fzE1p3TG4oG1s2SGUaJ9_4A,18128
77
- metalstack/api/v2/token_pb2.pyi,sha256=eywz0hert6pwmoH4BrpHibG8-Huaz3XpmbyGgUbwlOc,9697
76
+ metalstack/api/v2/token_pb2.py,sha256=6SnWtIpbS3euvqyweeIw0cu_fko9m22niZZ4OePsGZM,18368
77
+ metalstack/api/v2/token_pb2.pyi,sha256=JRjKXbJRBHvalqEuQAb9i31ShpcltdRNmuyggtB4Wro,10123
78
78
  metalstack/api/v2/user_connect.py,sha256=rZ4NpRKVWzKdLuO9nRAIo4bw7mpByfFucvmtI9MvIZE,5185
79
79
  metalstack/api/v2/user_pb2.py,sha256=-XsdgiSt3LiAKAChABQc-JMjFXEXXcpojW7HkpAGLyM,3993
80
80
  metalstack/api/v2/user_pb2.pyi,sha256=rXGPGTVvEkxJrNr2UHuSfxUGDoNpOxXodaZ_5eEjbqg,2032
@@ -88,10 +88,10 @@ metalstack/infra/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
88
88
  metalstack/infra/v2/bmc_connect.py,sha256=OJQQnWJmYANeDoCcwQDR-wQUiyZ0bNlNsOxDFFnaklk,5332
89
89
  metalstack/infra/v2/bmc_pb2.py,sha256=4NUyjsGQ5a5FbfHyCfKBkxVbad6Vt8RvH8QwnMCjwhg,2701
90
90
  metalstack/infra/v2/bmc_pb2.pyi,sha256=e4FGBnDQhg6K_zlhoC170lw-0OSlSdHK3So6r3Reh1E,444
91
- metalstack/infra/v2/switch_connect.py,sha256=aP6z0SDF-ks3o-mUVlC18aC_YCIpqOYniIRs7m79mOo,8984
92
- metalstack/infra/v2/switch_pb2.py,sha256=RuhV586RDLgHe5_xC8IskDobqWp71dAAr_T0ZZ-rYWk,6128
93
- metalstack/infra/v2/switch_pb2.pyi,sha256=xHjeGvO4i5MtFhV39yiv-dJbTBl2mgt2NplgP0qvAAE,3665
94
- metal_stack_api-0.0.28.dist-info/METADATA,sha256=YehXgZxh6aWr9B1uSwFYskFDJGTGTimAUi_iBK6z_cg,874
95
- metal_stack_api-0.0.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
- metal_stack_api-0.0.28.dist-info/top_level.txt,sha256=OqZoCBTOYMgPJJ3GbO1ZfY7eRpW9Ljc5g3Ajlu44n2I,11
97
- metal_stack_api-0.0.28.dist-info/RECORD,,
91
+ metalstack/infra/v2/switch_connect.py,sha256=TftYMAVcYhwFaenInmBK21CnGTyN5pXNDrKQLDWFTz4,12319
92
+ metalstack/infra/v2/switch_pb2.py,sha256=ZoVTK-bwTP33GOKvK3-GlphfHaYmmVmS8_ZrKloFB-o,7728
93
+ metalstack/infra/v2/switch_pb2.pyi,sha256=SSUHCM5ImRTV1U1X_uEA51qWZYtEd-_ZesVESiKeWNw,4309
94
+ metal_stack_api-0.0.30.dist-info/METADATA,sha256=RegEe18C0LudvlUqmo1Uqx7Pp6rLqX7secuERzuNpMc,874
95
+ metal_stack_api-0.0.30.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
+ metal_stack_api-0.0.30.dist-info/top_level.txt,sha256=OqZoCBTOYMgPJJ3GbO1ZfY7eRpW9Ljc5g3Ajlu44n2I,11
97
+ metal_stack_api-0.0.30.dist-info/RECORD,,
@@ -19,9 +19,6 @@ class IPService(Protocol):
19
19
  async def list(self, request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceListResponse:
20
20
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
21
 
22
- async def issues(self, request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse:
23
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
-
25
22
 
26
23
  class IPServiceASGIApplication(ConnectASGIApplication):
27
24
  def __init__(self, service: IPService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
@@ -37,16 +34,6 @@ class IPServiceASGIApplication(ConnectASGIApplication):
37
34
  ),
38
35
  function=service.list,
39
36
  ),
40
- "/metalstack.admin.v2.IPService/Issues": Endpoint.unary(
41
- method=MethodInfo(
42
- name="Issues",
43
- service_name="metalstack.admin.v2.IPService",
44
- input=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
45
- output=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse,
46
- idempotency_level=IdempotencyLevel.UNKNOWN,
47
- ),
48
- function=service.issues,
49
- ),
50
37
  },
51
38
  interceptors=interceptors,
52
39
  read_max_bytes=read_max_bytes,
@@ -79,32 +66,10 @@ class IPServiceClient(ConnectClient):
79
66
  timeout_ms=timeout_ms,
80
67
  )
81
68
 
82
- async def issues(
83
- self,
84
- request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
85
- *,
86
- headers: Headers | Mapping[str, str] | None = None,
87
- timeout_ms: int | None = None,
88
- ) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse:
89
- return await self.execute_unary(
90
- request=request,
91
- method=MethodInfo(
92
- name="Issues",
93
- service_name="metalstack.admin.v2.IPService",
94
- input=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
95
- output=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse,
96
- idempotency_level=IdempotencyLevel.UNKNOWN,
97
- ),
98
- headers=headers,
99
- timeout_ms=timeout_ms,
100
- )
101
-
102
69
 
103
70
  class IPServiceSync(Protocol):
104
71
  def list(self, request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceListResponse:
105
72
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
- def issues(self, request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse:
107
- raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
108
73
 
109
74
 
110
75
  class IPServiceWSGIApplication(ConnectWSGIApplication):
@@ -121,16 +86,6 @@ class IPServiceWSGIApplication(ConnectWSGIApplication):
121
86
  ),
122
87
  function=service.list,
123
88
  ),
124
- "/metalstack.admin.v2.IPService/Issues": EndpointSync.unary(
125
- method=MethodInfo(
126
- name="Issues",
127
- service_name="metalstack.admin.v2.IPService",
128
- input=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
129
- output=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse,
130
- idempotency_level=IdempotencyLevel.UNKNOWN,
131
- ),
132
- function=service.issues,
133
- ),
134
89
  },
135
90
  interceptors=interceptors,
136
91
  read_max_bytes=read_max_bytes,
@@ -162,23 +117,3 @@ class IPServiceClientSync(ConnectClientSync):
162
117
  headers=headers,
163
118
  timeout_ms=timeout_ms,
164
119
  )
165
-
166
- def issues(
167
- self,
168
- request: metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
169
- *,
170
- headers: Headers | Mapping[str, str] | None = None,
171
- timeout_ms: int | None = None,
172
- ) -> metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse:
173
- return self.execute_unary(
174
- request=request,
175
- method=MethodInfo(
176
- name="Issues",
177
- service_name="metalstack.admin.v2.IPService",
178
- input=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesRequest,
179
- output=metalstack_dot_admin_dot_v2_dot_ip__pb2.IPServiceIssuesResponse,
180
- idempotency_level=IdempotencyLevel.UNKNOWN,
181
- ),
182
- headers=headers,
183
- timeout_ms=timeout_ms,
184
- )
@@ -26,7 +26,7 @@ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common
26
26
  from metalstack.api.v2 import ip_pb2 as metalstack_dot_api_dot_v2_dot_ip__pb2
27
27
 
28
28
 
29
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cmetalstack/admin/v2/ip.proto\x12\x13metalstack.admin.v2\x1a\x1emetalstack/api/v2/common.proto\x1a\x1ametalstack/api/v2/ip.proto\"H\n\x14IPServiceListRequest\x12\x30\n\x05query\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.IPQueryR\x05query\"@\n\x15IPServiceListResponse\x12\'\n\x03ips\x18\x01 \x03(\x0b\x32\x15.metalstack.api.v2.IPR\x03ips\"\x18\n\x16IPServiceIssuesRequest\"O\n\x17IPServiceIssuesResponse\x12\x34\n\x06issues\x18\x01 \x03(\x0b\x32\x1c.metalstack.admin.v2.IPIssueR\x06issues\"R\n\x07IPIssue\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12%\n\x02ip\x18\x02 \x01(\x0b\x32\x15.metalstack.api.v2.IPR\x02ip2\xe7\x01\n\tIPService\x12i\n\x04List\x12).metalstack.admin.v2.IPServiceListRequest\x1a*.metalstack.admin.v2.IPServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12o\n\x06Issues\x12+.metalstack.admin.v2.IPServiceIssuesRequest\x1a,.metalstack.admin.v2.IPServiceIssuesResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xcb\x01\n\x17\x63om.metalstack.admin.v2B\x07IpProtoP\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')
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1cmetalstack/admin/v2/ip.proto\x12\x13metalstack.admin.v2\x1a\x1emetalstack/api/v2/common.proto\x1a\x1ametalstack/api/v2/ip.proto\"H\n\x14IPServiceListRequest\x12\x30\n\x05query\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.IPQueryR\x05query\"@\n\x15IPServiceListResponse\x12\'\n\x03ips\x18\x01 \x03(\x0b\x32\x15.metalstack.api.v2.IPR\x03ips2v\n\tIPService\x12i\n\x04List\x12).metalstack.admin.v2.IPServiceListRequest\x1a*.metalstack.admin.v2.IPServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x42\xcb\x01\n\x17\x63om.metalstack.admin.v2B\x07IpProtoP\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')
30
30
 
31
31
  _globals = globals()
32
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,18 +36,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
36
  _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\007IpProtoP\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'
37
37
  _globals['_IPSERVICE'].methods_by_name['List']._loaded_options = None
38
38
  _globals['_IPSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
39
- _globals['_IPSERVICE'].methods_by_name['Issues']._loaded_options = None
40
- _globals['_IPSERVICE'].methods_by_name['Issues']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
41
39
  _globals['_IPSERVICELISTREQUEST']._serialized_start=113
42
40
  _globals['_IPSERVICELISTREQUEST']._serialized_end=185
43
41
  _globals['_IPSERVICELISTRESPONSE']._serialized_start=187
44
42
  _globals['_IPSERVICELISTRESPONSE']._serialized_end=251
45
- _globals['_IPSERVICEISSUESREQUEST']._serialized_start=253
46
- _globals['_IPSERVICEISSUESREQUEST']._serialized_end=277
47
- _globals['_IPSERVICEISSUESRESPONSE']._serialized_start=279
48
- _globals['_IPSERVICEISSUESRESPONSE']._serialized_end=358
49
- _globals['_IPISSUE']._serialized_start=360
50
- _globals['_IPISSUE']._serialized_end=442
51
- _globals['_IPSERVICE']._serialized_start=445
52
- _globals['_IPSERVICE']._serialized_end=676
43
+ _globals['_IPSERVICE']._serialized_start=253
44
+ _globals['_IPSERVICE']._serialized_end=371
53
45
  # @@protoc_insertion_point(module_scope)
@@ -19,21 +19,3 @@ class IPServiceListResponse(_message.Message):
19
19
  IPS_FIELD_NUMBER: _ClassVar[int]
20
20
  ips: _containers.RepeatedCompositeFieldContainer[_ip_pb2.IP]
21
21
  def __init__(self, ips: _Optional[_Iterable[_Union[_ip_pb2.IP, _Mapping]]] = ...) -> None: ...
22
-
23
- class IPServiceIssuesRequest(_message.Message):
24
- __slots__ = ()
25
- def __init__(self) -> None: ...
26
-
27
- class IPServiceIssuesResponse(_message.Message):
28
- __slots__ = ("issues",)
29
- ISSUES_FIELD_NUMBER: _ClassVar[int]
30
- issues: _containers.RepeatedCompositeFieldContainer[IPIssue]
31
- def __init__(self, issues: _Optional[_Iterable[_Union[IPIssue, _Mapping]]] = ...) -> None: ...
32
-
33
- class IPIssue(_message.Message):
34
- __slots__ = ("description", "ip")
35
- DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
36
- IP_FIELD_NUMBER: _ClassVar[int]
37
- description: str
38
- ip: _ip_pb2.IP
39
- def __init__(self, description: _Optional[str] = ..., ip: _Optional[_Union[_ip_pb2.IP, _Mapping]] = ...) -> None: ...
@@ -29,7 +29,7 @@ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common
29
29
  from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
30
30
 
31
31
 
32
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xb6\x06\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1e\n\x04user\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04R\x04user\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12P\n\x0bpermissions\x18\x04 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12\x45\n\ntoken_type\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12O\n\rproject_roles\x18\t \x03(\x0b\x32*.metalstack.api.v2.Token.ProjectRolesEntryR\x0cprojectRoles\x12L\n\x0ctenant_roles\x18\n \x03(\x0b\x32).metalstack.api.v2.Token.TenantRolesEntryR\x0btenantRoles\x12J\n\nadmin_role\x18\x0b \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_role\"\xf4\x05\n\x19TokenServiceCreateRequest\x12-\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12O\n\x0bpermissions\x18\x02 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0bpermissions\x12G\n\x07\x65xpires\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\x0c\x1a\x05\x08\x81\xe7\x84\x0f\x32\x03\x08\xd8\x04R\x07\x65xpires\x12y\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntryB\x14\xbaH\x11\x9a\x01\x0e\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntryB\x16\xbaH\x13\x9a\x01\x10\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_role\"]\n\x10MethodPermission\x12$\n\x07subject\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"d\n\x1aTokenServiceCreateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"\x19\n\x17TokenServiceListRequest\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"\x9c\x06\n\x19TokenServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x45\n\x0bpermissions\x18\x04 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionR\x0bpermissions\x12y\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntryB\x14\xbaH\x11\x9a\x01\x0e\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntryB\x16\xbaH\x13\x9a\x01\x10\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\r\n\x0b_admin_role\"L\n\x1aTokenServiceUpdateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"I\n\x17TokenServiceGetResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"\x1c\n\x1aTokenServiceRefreshRequest\"e\n\x1bTokenServiceRefreshResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret*S\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x16\n\x12TOKEN_TYPE_CONSOLE\x10\x02\x32\x90\x05\n\x0cTokenService\x12\x62\n\x03Get\x12).metalstack.api.v2.TokenServiceGetRequest\x1a*.metalstack.api.v2.TokenServiceGetResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06\x43reate\x12,.metalstack.api.v2.TokenServiceCreateRequest\x1a-.metalstack.api.v2.TokenServiceCreateResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06Update\x12,.metalstack.api.v2.TokenServiceUpdateRequest\x1a-.metalstack.api.v2.TokenServiceUpdateResponse\"\x04\xd8\xf3\x18\x03\x12\x65\n\x04List\x12*.metalstack.api.v2.TokenServiceListRequest\x1a+.metalstack.api.v2.TokenServiceListResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06Revoke\x12,.metalstack.api.v2.TokenServiceRevokeRequest\x1a-.metalstack.api.v2.TokenServiceRevokeResponse\"\x04\xd8\xf3\x18\x03\x12n\n\x07Refresh\x12-.metalstack.api.v2.TokenServiceRefreshRequest\x1a..metalstack.api.v2.TokenServiceRefreshResponse\"\x04\xd8\xf3\x18\x03\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nTokenProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmetalstack/api/v2/token.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe3\x06\n\x05Token\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x1e\n\x04user\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04R\x04user\x12+\n\x04meta\x18\x03 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12P\n\x0bpermissions\x18\x05 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x0bpermissions\x12\x34\n\x07\x65xpires\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x07\x65xpires\x12\x37\n\tissued_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08issuedAt\x12\x45\n\ntoken_type\x18\x08 \x01(\x0e\x32\x1c.metalstack.api.v2.TokenTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\ttokenType\x12O\n\rproject_roles\x18\t \x03(\x0b\x32*.metalstack.api.v2.Token.ProjectRolesEntryR\x0cprojectRoles\x12L\n\x0ctenant_roles\x18\n \x03(\x0b\x32).metalstack.api.v2.Token.TenantRolesEntryR\x0btenantRoles\x12J\n\nadmin_role\x18\x0b \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_role\"\xa7\x06\n\x19TokenServiceCreateRequest\x12-\n\x0b\x64\x65scription\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12O\n\x0bpermissions\x18\x02 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionB\x08\xbaH\x05\x92\x01\x02\x10\x64R\x0bpermissions\x12G\n\x07\x65xpires\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x12\xbaH\x0f\xaa\x01\x0c\x1a\x05\x08\x81\xe7\x84\x0f\x32\x03\x08\xd8\x04R\x07\x65xpires\x12y\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceCreateRequest.ProjectRolesEntryB\x14\xbaH\x11\x9a\x01\x0e\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceCreateRequest.TenantRolesEntryB\x16\xbaH\x13\x9a\x01\x10\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x00R\tadminRole\x88\x01\x01\x12\x31\n\x06labels\x18\x08 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\r\n\x0b_admin_role\"]\n\x10MethodPermission\x12$\n\x07subject\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x02R\x07subject\x12#\n\x07methods\x18\x02 \x03(\tB\t\xbaH\x06\x92\x01\x03\x10\xf4\x03R\x07methods\"d\n\x1aTokenServiceCreateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"\x19\n\x17TokenServiceListRequest\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"9\n\x19TokenServiceRevokeRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"\x1c\n\x1aTokenServiceRevokeResponse\"\xd5\x06\n\x19TokenServiceUpdateRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x00R\nupdateMeta\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x45\n\x0bpermissions\x18\x04 \x03(\x0b\x32#.metalstack.api.v2.MethodPermissionR\x0bpermissions\x12y\n\rproject_roles\x18\x05 \x03(\x0b\x32>.metalstack.api.v2.TokenServiceUpdateRequest.ProjectRolesEntryB\x14\xbaH\x11\x9a\x01\x0e\"\x05r\x03\xb0\x01\x01*\x05\x82\x01\x02\x10\x01R\x0cprojectRoles\x12x\n\x0ctenant_roles\x18\x06 \x03(\x0b\x32=.metalstack.api.v2.TokenServiceUpdateRequest.TenantRolesEntryB\x16\xbaH\x13\x9a\x01\x10\"\x07r\x05\x10\x03\x18\x80\x01*\x05\x82\x01\x02\x10\x01R\x0btenantRoles\x12J\n\nadmin_role\x18\x07 \x01(\x0e\x32\x1c.metalstack.api.v2.AdminRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\tadminRole\x88\x01\x01\x12\x37\n\x06labels\x18\x08 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsR\x06labels\x1a_\n\x11ProjectRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x34\n\x05value\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleR\x05value:\x02\x38\x01\x1a]\n\x10TenantRolesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x33\n\x05value\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleR\x05value:\x02\x38\x01\x42\x0e\n\x0c_descriptionB\r\n\x0b_admin_role\"L\n\x1aTokenServiceUpdateResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"6\n\x16TokenServiceGetRequest\x12\x1c\n\x04uuid\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x04uuid\"I\n\x17TokenServiceGetResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\"\x1c\n\x1aTokenServiceRefreshRequest\"e\n\x1bTokenServiceRefreshResponse\x12.\n\x05token\x18\x01 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05token\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret*P\n\tTokenType\x12\x1a\n\x16TOKEN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eTOKEN_TYPE_API\x10\x01\x12\x13\n\x0fTOKEN_TYPE_USER\x10\x02\x32\x90\x05\n\x0cTokenService\x12\x62\n\x03Get\x12).metalstack.api.v2.TokenServiceGetRequest\x1a*.metalstack.api.v2.TokenServiceGetResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06\x43reate\x12,.metalstack.api.v2.TokenServiceCreateRequest\x1a-.metalstack.api.v2.TokenServiceCreateResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06Update\x12,.metalstack.api.v2.TokenServiceUpdateRequest\x1a-.metalstack.api.v2.TokenServiceUpdateResponse\"\x04\xd8\xf3\x18\x03\x12\x65\n\x04List\x12*.metalstack.api.v2.TokenServiceListRequest\x1a+.metalstack.api.v2.TokenServiceListResponse\"\x04\xd8\xf3\x18\x03\x12k\n\x06Revoke\x12,.metalstack.api.v2.TokenServiceRevokeRequest\x1a-.metalstack.api.v2.TokenServiceRevokeResponse\"\x04\xd8\xf3\x18\x03\x12n\n\x07Refresh\x12-.metalstack.api.v2.TokenServiceRefreshRequest\x1a..metalstack.api.v2.TokenServiceRefreshResponse\"\x04\xd8\xf3\x18\x03\x42\xc0\x01\n\x15\x63om.metalstack.api.v2B\nTokenProtoP\x01Z5github.com/metal-stack/api/go/metalstack/api/v2;apiv2\xa2\x02\x03MAX\xaa\x02\x11Metalstack.Api.V2\xca\x02\x11Metalstack\\Api\\V2\xe2\x02\x1dMetalstack\\Api\\V2\\GPBMetadata\xea\x02\x13Metalstack::Api::V2b\x06proto3')
33
33
 
34
34
  _globals = globals()
35
35
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -105,48 +105,48 @@ if not _descriptor._USE_C_DESCRIPTORS:
105
105
  _globals['_TOKENSERVICE'].methods_by_name['Revoke']._serialized_options = b'\330\363\030\003'
106
106
  _globals['_TOKENSERVICE'].methods_by_name['Refresh']._loaded_options = None
107
107
  _globals['_TOKENSERVICE'].methods_by_name['Refresh']._serialized_options = b'\330\363\030\003'
108
- _globals['_TOKENTYPE']._serialized_start=3336
109
- _globals['_TOKENTYPE']._serialized_end=3419
108
+ _globals['_TOKENTYPE']._serialized_start=3489
109
+ _globals['_TOKENTYPE']._serialized_end=3569
110
110
  _globals['_TOKEN']._serialized_start=221
111
- _globals['_TOKEN']._serialized_end=1043
112
- _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=838
113
- _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=933
114
- _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=935
115
- _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=1028
116
- _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=1046
117
- _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=1802
118
- _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_start=838
119
- _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_end=933
120
- _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_start=935
121
- _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_end=1028
122
- _globals['_METHODPERMISSION']._serialized_start=1804
123
- _globals['_METHODPERMISSION']._serialized_end=1897
124
- _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=1899
125
- _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=1999
126
- _globals['_TOKENSERVICELISTREQUEST']._serialized_start=2001
127
- _globals['_TOKENSERVICELISTREQUEST']._serialized_end=2026
128
- _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=2028
129
- _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=2104
130
- _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=2106
131
- _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=2163
132
- _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=2165
133
- _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=2193
134
- _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_start=2196
135
- _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_end=2992
136
- _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_start=838
137
- _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_end=933
138
- _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_start=935
139
- _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_end=1028
140
- _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_start=2994
141
- _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_end=3070
142
- _globals['_TOKENSERVICEGETREQUEST']._serialized_start=3072
143
- _globals['_TOKENSERVICEGETREQUEST']._serialized_end=3126
144
- _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=3128
145
- _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=3201
146
- _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_start=3203
147
- _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_end=3231
148
- _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_start=3233
149
- _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_end=3334
150
- _globals['_TOKENSERVICE']._serialized_start=3422
151
- _globals['_TOKENSERVICE']._serialized_end=4078
111
+ _globals['_TOKEN']._serialized_end=1088
112
+ _globals['_TOKEN_PROJECTROLESENTRY']._serialized_start=883
113
+ _globals['_TOKEN_PROJECTROLESENTRY']._serialized_end=978
114
+ _globals['_TOKEN_TENANTROLESENTRY']._serialized_start=980
115
+ _globals['_TOKEN_TENANTROLESENTRY']._serialized_end=1073
116
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=1091
117
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=1898
118
+ _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_start=883
119
+ _globals['_TOKENSERVICECREATEREQUEST_PROJECTROLESENTRY']._serialized_end=978
120
+ _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_start=980
121
+ _globals['_TOKENSERVICECREATEREQUEST_TENANTROLESENTRY']._serialized_end=1073
122
+ _globals['_METHODPERMISSION']._serialized_start=1900
123
+ _globals['_METHODPERMISSION']._serialized_end=1993
124
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=1995
125
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=2095
126
+ _globals['_TOKENSERVICELISTREQUEST']._serialized_start=2097
127
+ _globals['_TOKENSERVICELISTREQUEST']._serialized_end=2122
128
+ _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=2124
129
+ _globals['_TOKENSERVICELISTRESPONSE']._serialized_end=2200
130
+ _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_start=2202
131
+ _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=2259
132
+ _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=2261
133
+ _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=2289
134
+ _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_start=2292
135
+ _globals['_TOKENSERVICEUPDATEREQUEST']._serialized_end=3145
136
+ _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_start=883
137
+ _globals['_TOKENSERVICEUPDATEREQUEST_PROJECTROLESENTRY']._serialized_end=978
138
+ _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_start=980
139
+ _globals['_TOKENSERVICEUPDATEREQUEST_TENANTROLESENTRY']._serialized_end=1073
140
+ _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_start=3147
141
+ _globals['_TOKENSERVICEUPDATERESPONSE']._serialized_end=3223
142
+ _globals['_TOKENSERVICEGETREQUEST']._serialized_start=3225
143
+ _globals['_TOKENSERVICEGETREQUEST']._serialized_end=3279
144
+ _globals['_TOKENSERVICEGETRESPONSE']._serialized_start=3281
145
+ _globals['_TOKENSERVICEGETRESPONSE']._serialized_end=3354
146
+ _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_start=3356
147
+ _globals['_TOKENSERVICEREFRESHREQUEST']._serialized_end=3384
148
+ _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_start=3386
149
+ _globals['_TOKENSERVICEREFRESHRESPONSE']._serialized_end=3487
150
+ _globals['_TOKENSERVICE']._serialized_start=3572
151
+ _globals['_TOKENSERVICE']._serialized_end=4228
152
152
  # @@protoc_insertion_point(module_scope)
@@ -18,13 +18,13 @@ class TokenType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
18
18
  __slots__ = ()
19
19
  TOKEN_TYPE_UNSPECIFIED: _ClassVar[TokenType]
20
20
  TOKEN_TYPE_API: _ClassVar[TokenType]
21
- TOKEN_TYPE_CONSOLE: _ClassVar[TokenType]
21
+ TOKEN_TYPE_USER: _ClassVar[TokenType]
22
22
  TOKEN_TYPE_UNSPECIFIED: TokenType
23
23
  TOKEN_TYPE_API: TokenType
24
- TOKEN_TYPE_CONSOLE: TokenType
24
+ TOKEN_TYPE_USER: TokenType
25
25
 
26
26
  class Token(_message.Message):
27
- __slots__ = ("uuid", "user", "description", "permissions", "expires", "issued_at", "token_type", "project_roles", "tenant_roles", "admin_role")
27
+ __slots__ = ("uuid", "user", "meta", "description", "permissions", "expires", "issued_at", "token_type", "project_roles", "tenant_roles", "admin_role")
28
28
  class ProjectRolesEntry(_message.Message):
29
29
  __slots__ = ("key", "value")
30
30
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -41,6 +41,7 @@ class Token(_message.Message):
41
41
  def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.TenantRole, str]] = ...) -> None: ...
42
42
  UUID_FIELD_NUMBER: _ClassVar[int]
43
43
  USER_FIELD_NUMBER: _ClassVar[int]
44
+ META_FIELD_NUMBER: _ClassVar[int]
44
45
  DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
45
46
  PERMISSIONS_FIELD_NUMBER: _ClassVar[int]
46
47
  EXPIRES_FIELD_NUMBER: _ClassVar[int]
@@ -51,6 +52,7 @@ class Token(_message.Message):
51
52
  ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int]
52
53
  uuid: str
53
54
  user: str
55
+ meta: _common_pb2.Meta
54
56
  description: str
55
57
  permissions: _containers.RepeatedCompositeFieldContainer[MethodPermission]
56
58
  expires: _timestamp_pb2.Timestamp
@@ -59,10 +61,10 @@ class Token(_message.Message):
59
61
  project_roles: _containers.ScalarMap[str, _common_pb2.ProjectRole]
60
62
  tenant_roles: _containers.ScalarMap[str, _common_pb2.TenantRole]
61
63
  admin_role: _common_pb2.AdminRole
62
- def __init__(self, uuid: _Optional[str] = ..., user: _Optional[str] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., issued_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., token_type: _Optional[_Union[TokenType, str]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ...) -> None: ...
64
+ def __init__(self, uuid: _Optional[str] = ..., user: _Optional[str] = ..., meta: _Optional[_Union[_common_pb2.Meta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., issued_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., token_type: _Optional[_Union[TokenType, str]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ...) -> None: ...
63
65
 
64
66
  class TokenServiceCreateRequest(_message.Message):
65
- __slots__ = ("description", "permissions", "expires", "project_roles", "tenant_roles", "admin_role")
67
+ __slots__ = ("description", "permissions", "expires", "project_roles", "tenant_roles", "admin_role", "labels")
66
68
  class ProjectRolesEntry(_message.Message):
67
69
  __slots__ = ("key", "value")
68
70
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -83,13 +85,15 @@ class TokenServiceCreateRequest(_message.Message):
83
85
  PROJECT_ROLES_FIELD_NUMBER: _ClassVar[int]
84
86
  TENANT_ROLES_FIELD_NUMBER: _ClassVar[int]
85
87
  ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int]
88
+ LABELS_FIELD_NUMBER: _ClassVar[int]
86
89
  description: str
87
90
  permissions: _containers.RepeatedCompositeFieldContainer[MethodPermission]
88
91
  expires: _duration_pb2.Duration
89
92
  project_roles: _containers.ScalarMap[str, _common_pb2.ProjectRole]
90
93
  tenant_roles: _containers.ScalarMap[str, _common_pb2.TenantRole]
91
94
  admin_role: _common_pb2.AdminRole
92
- def __init__(self, description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ...) -> None: ...
95
+ labels: _common_pb2.Labels
96
+ def __init__(self, description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., expires: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ...
93
97
 
94
98
  class MethodPermission(_message.Message):
95
99
  __slots__ = ("subject", "methods")
@@ -128,7 +132,7 @@ class TokenServiceRevokeResponse(_message.Message):
128
132
  def __init__(self) -> None: ...
129
133
 
130
134
  class TokenServiceUpdateRequest(_message.Message):
131
- __slots__ = ("uuid", "update_meta", "description", "permissions", "project_roles", "tenant_roles", "admin_role")
135
+ __slots__ = ("uuid", "update_meta", "description", "permissions", "project_roles", "tenant_roles", "admin_role", "labels")
132
136
  class ProjectRolesEntry(_message.Message):
133
137
  __slots__ = ("key", "value")
134
138
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -150,6 +154,7 @@ class TokenServiceUpdateRequest(_message.Message):
150
154
  PROJECT_ROLES_FIELD_NUMBER: _ClassVar[int]
151
155
  TENANT_ROLES_FIELD_NUMBER: _ClassVar[int]
152
156
  ADMIN_ROLE_FIELD_NUMBER: _ClassVar[int]
157
+ LABELS_FIELD_NUMBER: _ClassVar[int]
153
158
  uuid: str
154
159
  update_meta: _common_pb2.UpdateMeta
155
160
  description: str
@@ -157,7 +162,8 @@ class TokenServiceUpdateRequest(_message.Message):
157
162
  project_roles: _containers.ScalarMap[str, _common_pb2.ProjectRole]
158
163
  tenant_roles: _containers.ScalarMap[str, _common_pb2.TenantRole]
159
164
  admin_role: _common_pb2.AdminRole
160
- def __init__(self, uuid: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ...) -> None: ...
165
+ labels: _common_pb2.UpdateLabels
166
+ def __init__(self, uuid: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., description: _Optional[str] = ..., permissions: _Optional[_Iterable[_Union[MethodPermission, _Mapping]]] = ..., project_roles: _Optional[_Mapping[str, _common_pb2.ProjectRole]] = ..., tenant_roles: _Optional[_Mapping[str, _common_pb2.TenantRole]] = ..., admin_role: _Optional[_Union[_common_pb2.AdminRole, str]] = ..., labels: _Optional[_Union[_common_pb2.UpdateLabels, _Mapping]] = ...) -> None: ...
161
167
 
162
168
  class TokenServiceUpdateResponse(_message.Message):
163
169
  __slots__ = ("token",)
@@ -16,6 +16,9 @@ import metalstack.infra.v2.switch_pb2 as metalstack_dot_infra_dot_v2_dot_switch_
16
16
 
17
17
 
18
18
  class SwitchService(Protocol):
19
+ async def get(self, request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse:
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
+
19
22
  async def register(self, request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterResponse:
20
23
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
24
 
@@ -27,6 +30,16 @@ class SwitchServiceASGIApplication(ConnectASGIApplication):
27
30
  def __init__(self, service: SwitchService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
31
  super().__init__(
29
32
  endpoints={
33
+ "/metalstack.infra.v2.SwitchService/Get": Endpoint.unary(
34
+ method=MethodInfo(
35
+ name="Get",
36
+ service_name="metalstack.infra.v2.SwitchService",
37
+ input=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
38
+ output=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse,
39
+ idempotency_level=IdempotencyLevel.UNKNOWN,
40
+ ),
41
+ function=service.get,
42
+ ),
30
43
  "/metalstack.infra.v2.SwitchService/Register": Endpoint.unary(
31
44
  method=MethodInfo(
32
45
  name="Register",
@@ -59,6 +72,26 @@ class SwitchServiceASGIApplication(ConnectASGIApplication):
59
72
 
60
73
 
61
74
  class SwitchServiceClient(ConnectClient):
75
+ async def get(
76
+ self,
77
+ request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
78
+ *,
79
+ headers: Headers | Mapping[str, str] | None = None,
80
+ timeout_ms: int | None = None,
81
+ ) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse:
82
+ return await self.execute_unary(
83
+ request=request,
84
+ method=MethodInfo(
85
+ name="Get",
86
+ service_name="metalstack.infra.v2.SwitchService",
87
+ input=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
88
+ output=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse,
89
+ idempotency_level=IdempotencyLevel.UNKNOWN,
90
+ ),
91
+ headers=headers,
92
+ timeout_ms=timeout_ms,
93
+ )
94
+
62
95
  async def register(
63
96
  self,
64
97
  request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterRequest,
@@ -101,6 +134,8 @@ class SwitchServiceClient(ConnectClient):
101
134
 
102
135
 
103
136
  class SwitchServiceSync(Protocol):
137
+ def get(self, request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse:
138
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
104
139
  def register(self, request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterResponse:
105
140
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
141
  def heartbeat(self, request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceHeartbeatRequest, ctx: RequestContext) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceHeartbeatResponse:
@@ -111,6 +146,16 @@ class SwitchServiceWSGIApplication(ConnectWSGIApplication):
111
146
  def __init__(self, service: SwitchServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
112
147
  super().__init__(
113
148
  endpoints={
149
+ "/metalstack.infra.v2.SwitchService/Get": EndpointSync.unary(
150
+ method=MethodInfo(
151
+ name="Get",
152
+ service_name="metalstack.infra.v2.SwitchService",
153
+ input=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
154
+ output=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse,
155
+ idempotency_level=IdempotencyLevel.UNKNOWN,
156
+ ),
157
+ function=service.get,
158
+ ),
114
159
  "/metalstack.infra.v2.SwitchService/Register": EndpointSync.unary(
115
160
  method=MethodInfo(
116
161
  name="Register",
@@ -143,6 +188,26 @@ class SwitchServiceWSGIApplication(ConnectWSGIApplication):
143
188
 
144
189
 
145
190
  class SwitchServiceClientSync(ConnectClientSync):
191
+ def get(
192
+ self,
193
+ request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
194
+ *,
195
+ headers: Headers | Mapping[str, str] | None = None,
196
+ timeout_ms: int | None = None,
197
+ ) -> metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse:
198
+ return self.execute_unary(
199
+ request=request,
200
+ method=MethodInfo(
201
+ name="Get",
202
+ service_name="metalstack.infra.v2.SwitchService",
203
+ input=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetRequest,
204
+ output=metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceGetResponse,
205
+ idempotency_level=IdempotencyLevel.UNKNOWN,
206
+ ),
207
+ headers=headers,
208
+ timeout_ms=timeout_ms,
209
+ )
210
+
146
211
  def register(
147
212
  self,
148
213
  request: metalstack_dot_infra_dot_v2_dot_switch__pb2.SwitchServiceRegisterRequest,
@@ -22,13 +22,15 @@ _runtime_version.ValidateProtobufRuntimeVersion(
22
22
  _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
25
26
  from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
26
27
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
27
28
  from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
29
+ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
28
30
  from metalstack.api.v2 import switch_pb2 as metalstack_dot_api_dot_v2_dot_switch__pb2
29
31
 
30
32
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/infra/v2/switch.proto\x12\x13metalstack.infra.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1emetalstack/api/v2/switch.proto\"Q\n\x1cSwitchServiceRegisterRequest\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"R\n\x1dSwitchServiceRegisterResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\x9c\x04\n\x1dSwitchServiceHeartbeatRequest\x12\x35\n\x08\x64uration\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x02 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x12\x63\n\x0bport_states\x18\x03 \x03(\x0b\x32\x42.metalstack.infra.v2.SwitchServiceHeartbeatRequest.PortStatesEntryR\nportStates\x12m\n\x0f\x62gp_port_states\x18\x04 \x03(\x0b\x32\x45.metalstack.infra.v2.SwitchServiceHeartbeatRequest.BgpPortStatesEntryR\rbgpPortStates\x1a\x62\n\x0fPortStatesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusR\x05value:\x02\x38\x01\x1ag\n\x12\x42gpPortStatesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12;\n\x05value\x18\x02 \x01(\x0b\x32%.metalstack.api.v2.SwitchBGPPortStateR\x05value:\x02\x38\x01\x42\x08\n\x06_error\"\xb7\x01\n\x1eSwitchServiceHeartbeatResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\tlast_sync\x18\x02 \x01(\x0b\x32\x1f.metalstack.infra.v2.SwitchSyncR\x08lastSync\x12G\n\x0flast_sync_error\x18\x03 \x01(\x0b\x32\x1f.metalstack.infra.v2.SwitchSyncR\rlastSyncError\"\x98\x01\n\nSwitchSync\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x35\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error2\x8e\x02\n\rSwitchService\x12|\n\x08Register\x12\x31.metalstack.infra.v2.SwitchServiceRegisterRequest\x1a\x32.metalstack.infra.v2.SwitchServiceRegisterResponse\"\t\xe0\xf3\x18\x02\xea\xf3\x18\x01\x01\x12\x7f\n\tHeartbeat\x12\x32.metalstack.infra.v2.SwitchServiceHeartbeatRequest\x1a\x33.metalstack.infra.v2.SwitchServiceHeartbeatResponse\"\t\xe0\xf3\x18\x02\xea\xf3\x18\x01\x01\x42\xcf\x01\n\x17\x63om.metalstack.infra.v2B\x0bSwitchProtoP\x01Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\xa2\x02\x03MIX\xaa\x02\x13Metalstack.Infra.V2\xca\x02\x13Metalstack\\Infra\\V2\xe2\x02\x1fMetalstack\\Infra\\V2\\GPBMetadata\xea\x02\x15Metalstack::Infra::V2b\x06proto3')
33
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/infra/v2/switch.proto\x12\x13metalstack.infra.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"8\n\x17SwitchServiceGetRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\"M\n\x18SwitchServiceGetResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"Q\n\x1cSwitchServiceRegisterRequest\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"R\n\x1dSwitchServiceRegisterResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xbb\x04\n\x1dSwitchServiceHeartbeatRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\x35\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x12\x63\n\x0bport_states\x18\x04 \x03(\x0b\x32\x42.metalstack.infra.v2.SwitchServiceHeartbeatRequest.PortStatesEntryR\nportStates\x12m\n\x0f\x62gp_port_states\x18\x05 \x03(\x0b\x32\x45.metalstack.infra.v2.SwitchServiceHeartbeatRequest.BgpPortStatesEntryR\rbgpPortStates\x1a\x62\n\x0fPortStatesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x39\n\x05value\x18\x02 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusR\x05value:\x02\x38\x01\x1ag\n\x12\x42gpPortStatesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12;\n\x05value\x18\x02 \x01(\x0b\x32%.metalstack.api.v2.SwitchBGPPortStateR\x05value:\x02\x38\x01\x42\x08\n\x06_error\"\xb7\x01\n\x1eSwitchServiceHeartbeatResponse\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\tlast_sync\x18\x02 \x01(\x0b\x32\x1f.metalstack.infra.v2.SwitchSyncR\x08lastSync\x12G\n\x0flast_sync_error\x18\x03 \x01(\x0b\x32\x1f.metalstack.infra.v2.SwitchSyncR\rlastSyncError\"\x98\x01\n\nSwitchSync\x12.\n\x04time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x04time\x12\x35\n\x08\x64uration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR\x08\x64uration\x12\x19\n\x05\x65rror\x18\x03 \x01(\tH\x00R\x05\x65rror\x88\x01\x01\x42\x08\n\x06_error2\xfd\x02\n\rSwitchService\x12m\n\x03Get\x12,.metalstack.infra.v2.SwitchServiceGetRequest\x1a-.metalstack.infra.v2.SwitchServiceGetResponse\"\t\xe0\xf3\x18\x02\xea\xf3\x18\x01\x01\x12|\n\x08Register\x12\x31.metalstack.infra.v2.SwitchServiceRegisterRequest\x1a\x32.metalstack.infra.v2.SwitchServiceRegisterResponse\"\t\xe0\xf3\x18\x02\xea\xf3\x18\x01\x01\x12\x7f\n\tHeartbeat\x12\x32.metalstack.infra.v2.SwitchServiceHeartbeatRequest\x1a\x33.metalstack.infra.v2.SwitchServiceHeartbeatResponse\"\t\xe0\xf3\x18\x02\xea\xf3\x18\x01\x01\x42\xcf\x01\n\x17\x63om.metalstack.infra.v2B\x0bSwitchProtoP\x01Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\xa2\x02\x03MIX\xaa\x02\x13Metalstack.Infra.V2\xca\x02\x13Metalstack\\Infra\\V2\xe2\x02\x1fMetalstack\\Infra\\V2\\GPBMetadata\xea\x02\x15Metalstack::Infra::V2b\x06proto3')
32
34
 
33
35
  _globals = globals()
34
36
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,28 +38,38 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.infra.v2.switch_
36
38
  if not _descriptor._USE_C_DESCRIPTORS:
37
39
  _globals['DESCRIPTOR']._loaded_options = None
38
40
  _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.infra.v2B\013SwitchProtoP\001Z9github.com/metal-stack/api/go/metalstack/infra/v2;infrav2\242\002\003MIX\252\002\023Metalstack.Infra.V2\312\002\023Metalstack\\Infra\\V2\342\002\037Metalstack\\Infra\\V2\\GPBMetadata\352\002\025Metalstack::Infra::V2'
41
+ _globals['_SWITCHSERVICEGETREQUEST'].fields_by_name['id']._loaded_options = None
42
+ _globals['_SWITCHSERVICEGETREQUEST'].fields_by_name['id']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
39
43
  _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._loaded_options = None
40
44
  _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._serialized_options = b'8\001'
41
45
  _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._loaded_options = None
42
46
  _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._serialized_options = b'8\001'
47
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST'].fields_by_name['id']._loaded_options = None
48
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST'].fields_by_name['id']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
49
+ _globals['_SWITCHSERVICE'].methods_by_name['Get']._loaded_options = None
50
+ _globals['_SWITCHSERVICE'].methods_by_name['Get']._serialized_options = b'\340\363\030\002\352\363\030\001\001'
43
51
  _globals['_SWITCHSERVICE'].methods_by_name['Register']._loaded_options = None
44
52
  _globals['_SWITCHSERVICE'].methods_by_name['Register']._serialized_options = b'\340\363\030\002\352\363\030\001\001'
45
53
  _globals['_SWITCHSERVICE'].methods_by_name['Heartbeat']._loaded_options = None
46
54
  _globals['_SWITCHSERVICE'].methods_by_name['Heartbeat']._serialized_options = b'\340\363\030\002\352\363\030\001\001'
47
- _globals['_SWITCHSERVICEREGISTERREQUEST']._serialized_start=186
48
- _globals['_SWITCHSERVICEREGISTERREQUEST']._serialized_end=267
49
- _globals['_SWITCHSERVICEREGISTERRESPONSE']._serialized_start=269
50
- _globals['_SWITCHSERVICEREGISTERRESPONSE']._serialized_end=351
51
- _globals['_SWITCHSERVICEHEARTBEATREQUEST']._serialized_start=354
52
- _globals['_SWITCHSERVICEHEARTBEATREQUEST']._serialized_end=894
53
- _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._serialized_start=681
54
- _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._serialized_end=779
55
- _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._serialized_start=781
56
- _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._serialized_end=884
57
- _globals['_SWITCHSERVICEHEARTBEATRESPONSE']._serialized_start=897
58
- _globals['_SWITCHSERVICEHEARTBEATRESPONSE']._serialized_end=1080
59
- _globals['_SWITCHSYNC']._serialized_start=1083
60
- _globals['_SWITCHSYNC']._serialized_end=1235
61
- _globals['_SWITCHSERVICE']._serialized_start=1238
62
- _globals['_SWITCHSERVICE']._serialized_end=1508
55
+ _globals['_SWITCHSERVICEGETREQUEST']._serialized_start=257
56
+ _globals['_SWITCHSERVICEGETREQUEST']._serialized_end=313
57
+ _globals['_SWITCHSERVICEGETRESPONSE']._serialized_start=315
58
+ _globals['_SWITCHSERVICEGETRESPONSE']._serialized_end=392
59
+ _globals['_SWITCHSERVICEREGISTERREQUEST']._serialized_start=394
60
+ _globals['_SWITCHSERVICEREGISTERREQUEST']._serialized_end=475
61
+ _globals['_SWITCHSERVICEREGISTERRESPONSE']._serialized_start=477
62
+ _globals['_SWITCHSERVICEREGISTERRESPONSE']._serialized_end=559
63
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST']._serialized_start=562
64
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST']._serialized_end=1133
65
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._serialized_start=920
66
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST_PORTSTATESENTRY']._serialized_end=1018
67
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._serialized_start=1020
68
+ _globals['_SWITCHSERVICEHEARTBEATREQUEST_BGPPORTSTATESENTRY']._serialized_end=1123
69
+ _globals['_SWITCHSERVICEHEARTBEATRESPONSE']._serialized_start=1136
70
+ _globals['_SWITCHSERVICEHEARTBEATRESPONSE']._serialized_end=1319
71
+ _globals['_SWITCHSYNC']._serialized_start=1322
72
+ _globals['_SWITCHSYNC']._serialized_end=1474
73
+ _globals['_SWITCHSERVICE']._serialized_start=1477
74
+ _globals['_SWITCHSERVICE']._serialized_end=1858
63
75
  # @@protoc_insertion_point(module_scope)
@@ -1,8 +1,10 @@
1
1
  import datetime
2
2
 
3
+ from buf.validate import validate_pb2 as _validate_pb2
3
4
  from google.protobuf import duration_pb2 as _duration_pb2
4
5
  from google.protobuf import timestamp_pb2 as _timestamp_pb2
5
6
  from metalstack.api.v2 import common_pb2 as _common_pb2
7
+ from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
6
8
  from metalstack.api.v2 import switch_pb2 as _switch_pb2
7
9
  from google.protobuf.internal import containers as _containers
8
10
  from google.protobuf import descriptor as _descriptor
@@ -12,6 +14,18 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
12
14
 
13
15
  DESCRIPTOR: _descriptor.FileDescriptor
14
16
 
17
+ class SwitchServiceGetRequest(_message.Message):
18
+ __slots__ = ("id",)
19
+ ID_FIELD_NUMBER: _ClassVar[int]
20
+ id: str
21
+ def __init__(self, id: _Optional[str] = ...) -> None: ...
22
+
23
+ class SwitchServiceGetResponse(_message.Message):
24
+ __slots__ = ("switch",)
25
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
26
+ switch: _switch_pb2.Switch
27
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
28
+
15
29
  class SwitchServiceRegisterRequest(_message.Message):
16
30
  __slots__ = ("switch",)
17
31
  SWITCH_FIELD_NUMBER: _ClassVar[int]
@@ -25,7 +39,7 @@ class SwitchServiceRegisterResponse(_message.Message):
25
39
  def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
26
40
 
27
41
  class SwitchServiceHeartbeatRequest(_message.Message):
28
- __slots__ = ("duration", "error", "port_states", "bgp_port_states")
42
+ __slots__ = ("id", "duration", "error", "port_states", "bgp_port_states")
29
43
  class PortStatesEntry(_message.Message):
30
44
  __slots__ = ("key", "value")
31
45
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -40,15 +54,17 @@ class SwitchServiceHeartbeatRequest(_message.Message):
40
54
  key: str
41
55
  value: _switch_pb2.SwitchBGPPortState
42
56
  def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_switch_pb2.SwitchBGPPortState, _Mapping]] = ...) -> None: ...
57
+ ID_FIELD_NUMBER: _ClassVar[int]
43
58
  DURATION_FIELD_NUMBER: _ClassVar[int]
44
59
  ERROR_FIELD_NUMBER: _ClassVar[int]
45
60
  PORT_STATES_FIELD_NUMBER: _ClassVar[int]
46
61
  BGP_PORT_STATES_FIELD_NUMBER: _ClassVar[int]
62
+ id: str
47
63
  duration: _duration_pb2.Duration
48
64
  error: str
49
65
  port_states: _containers.ScalarMap[str, _switch_pb2.SwitchPortStatus]
50
66
  bgp_port_states: _containers.MessageMap[str, _switch_pb2.SwitchBGPPortState]
51
- def __init__(self, duration: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., error: _Optional[str] = ..., port_states: _Optional[_Mapping[str, _switch_pb2.SwitchPortStatus]] = ..., bgp_port_states: _Optional[_Mapping[str, _switch_pb2.SwitchBGPPortState]] = ...) -> None: ...
67
+ def __init__(self, id: _Optional[str] = ..., duration: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ..., error: _Optional[str] = ..., port_states: _Optional[_Mapping[str, _switch_pb2.SwitchPortStatus]] = ..., bgp_port_states: _Optional[_Mapping[str, _switch_pb2.SwitchBGPPortState]] = ...) -> None: ...
52
68
 
53
69
  class SwitchServiceHeartbeatResponse(_message.Message):
54
70
  __slots__ = ("id", "last_sync", "last_sync_error")