metal-stack-api 0.0.31__py3-none-any.whl → 0.0.32__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.31
3
+ Version: 0.0.32
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
@@ -20,7 +20,7 @@ metalstack/admin/v2/partition_connect.py,sha256=k9JOkdrQY0Qci0w125mgTYRY6CMKrBRw
20
20
  metalstack/admin/v2/partition_pb2.py,sha256=BXOx8EsPfIs6Yxk3YhT-IfF6P8XTgfKlJfN4Vndtza4,9956
21
21
  metalstack/admin/v2/partition_pb2.pyi,sha256=lBAmofSPCNOI07dbaQ3Huo3PJJA2zzFQ62WxQB-LDLY,5740
22
22
  metalstack/admin/v2/size_connect.py,sha256=EeDMcsNDo9nN7LetIkaB5sxGMk1CqZGfFtWzabgi_gg,12009
23
- metalstack/admin/v2/size_pb2.py,sha256=doH58QNktnMSAQWlehmeT3VmsHaj5A7DYAzU8bzWiik,6481
23
+ metalstack/admin/v2/size_pb2.py,sha256=RfNZRLJZy_fQ9LU9I5I6L5MWylPzPDrl2m8q9VQ1Kow,6457
24
24
  metalstack/admin/v2/size_pb2.pyi,sha256=xMbYS7HghgaPMCOpAwmdadGBOp_BU7TvF4QTJuMaMMs,2664
25
25
  metalstack/admin/v2/switch_connect.py,sha256=c_xsfMKHL-K9QLTQr5ApKU5WOaqErTGDVyF2l2dIUFE,22352
26
26
  metalstack/admin/v2/switch_pb2.py,sha256=GPVgs04bfWy2t6u7bnXSB1yBqPI5310JZI_GMrxjghI,12168
@@ -28,9 +28,9 @@ metalstack/admin/v2/switch_pb2.pyi,sha256=7llyR9m7oMugurT1FADS35BpMSAN-K4ErWYHPV
28
28
  metalstack/admin/v2/tenant_connect.py,sha256=yxL56ifI-VSE1O-We4V8naqc0QXKhlkqZaGOm_f1n0c,8788
29
29
  metalstack/admin/v2/tenant_pb2.py,sha256=LbMSxlil9NdM20e2Cg1q8Edd2PGdvf8lXSt8sqZpQnQ,5680
30
30
  metalstack/admin/v2/tenant_pb2.pyi,sha256=ZI3HryRUf7bWAwKMWsfDa55fS6FVrsxStMyV4sU3cz0,2303
31
- metalstack/admin/v2/token_connect.py,sha256=7V2QBVXSvYEi1H_UMJIsPy4yliTkAYBL9URoI8Av1IU,8699
32
- metalstack/admin/v2/token_pb2.py,sha256=gN6Q4hTwROS-rnUXiTOFMigXC3elbgRPaXZkG3MlMBI,4290
33
- metalstack/admin/v2/token_pb2.pyi,sha256=IjgXx9wFTf5l-W-5OCeifWmqOXWDEEK4_foLQ_V5tAk,1404
31
+ metalstack/admin/v2/token_connect.py,sha256=h547_mZfaAbloKf-WmNdTIbGjJnlLMLy7Rtl_vAk4K8,12080
32
+ metalstack/admin/v2/token_pb2.py,sha256=dv1Q-CxVBylMHP29JPJTH35QMvh24aKqLHreiwm8dKA,5455
33
+ metalstack/admin/v2/token_pb2.pyi,sha256=bQghe_a-MPvBlR1Rkh09Apk5uflNaRwFkgempZYVr70,2071
34
34
  metalstack/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  metalstack/api/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  metalstack/api/v2/common_pb2.py,sha256=YUozzWnuUgW4HQsiZlnoOd700wG69pKU06Lo3oJb9YA,7319
@@ -61,17 +61,17 @@ metalstack/api/v2/partition_pb2.py,sha256=7GyiNVkU3b35fFq83fXfzmLNWQj7Kcl2EHy5eh
61
61
  metalstack/api/v2/partition_pb2.pyi,sha256=UELvmtz63crXaH1t5Sdgk-EMTa4c1vKF7EBcqK-rgMY,3878
62
62
  metalstack/api/v2/predefined_rules_pb2.py,sha256=JUJzTJPfbf-fJdYJJQ0LbWh29YrARsV-UGMivLz61Xw,5157
63
63
  metalstack/api/v2/predefined_rules_pb2.pyi,sha256=KErj-giMZ-k5c8stW3Z_YI1p0wXxklY7N150bnR2IK8,808
64
- metalstack/api/v2/project_connect.py,sha256=VTvTnX80WMzR6xiWaHzdCW9VfqEHymNfQbHtWyUyrsQ,43757
65
- metalstack/api/v2/project_pb2.py,sha256=euk_azbv3bAXl7_GQRtzziiW3C_FgKexonZSlYDCG5M,21047
66
- metalstack/api/v2/project_pb2.pyi,sha256=qVE5ydDVQEbT3ZVQaUdWgXBJ3PplHiVxPohdrnO5Rf0,10818
64
+ metalstack/api/v2/project_connect.py,sha256=7tjiII2_Kol_U2o1vcRBPSFYmNOsFzbXKUD6s-EF8iI,47142
65
+ metalstack/api/v2/project_pb2.py,sha256=hvrB3G36vJ4XD4_1TbxAnvpOyvqyrE2cPEjnvYjXCOQ,22020
66
+ metalstack/api/v2/project_pb2.pyi,sha256=eXMPrsbYVzWmnBhwAh-jtAmUxjFtJnO29QsMUTsI9tI,11134
67
67
  metalstack/api/v2/size_connect.py,sha256=E5eeRVtJBtYPXTfxD9brW8nlRyReWyrYg2Nkf18havc,8428
68
68
  metalstack/api/v2/size_pb2.py,sha256=7j7lP7V1euX7jG-S31wcvzxqGYHSxHbx8syzr6pL2gY,8598
69
69
  metalstack/api/v2/size_pb2.pyi,sha256=DfGRiWwmqSs9C_UP20quu0zVTw3bhUPd6Zsr4OwJIe8,3901
70
70
  metalstack/api/v2/switch_pb2.py,sha256=fNW5CIXluGqOd1bTAqS4q51ZcneZpLLeldEhh1-p5IM,17509
71
71
  metalstack/api/v2/switch_pb2.pyi,sha256=-PRJ0p6OqeJ0ssEqthkrWgtsTaCBvvoqju7KIEqieQY,8664
72
- metalstack/api/v2/tenant_connect.py,sha256=uzhCOeURjHqdoBwJJPr8tyS-uPapLEBfy1ppWSYrZmA,43288
73
- metalstack/api/v2/tenant_pb2.py,sha256=qXx8jxNzWpPLFy6A0QpGay-WVs23OJaerEBa9KkafRY,18910
74
- metalstack/api/v2/tenant_pb2.pyi,sha256=prHKgu4r4r1jFb5nSrTRdn2Q7C8iCBd7l5sPMMs6W3o,10822
72
+ metalstack/api/v2/tenant_connect.py,sha256=mNezBaubV6HuCXbLGuzCPr4nuDam6LY9wkVUuuKW7uU,46635
73
+ metalstack/api/v2/tenant_pb2.py,sha256=HqPDWwnTS51GAe6jb2JRI4jnOeBreK1kGTgoXtm2rI8,19629
74
+ metalstack/api/v2/tenant_pb2.pyi,sha256=kDqFMIecnoaBqbJyfN5aQWch7iapYjiBuKs8gx7sLHs,11128
75
75
  metalstack/api/v2/token_connect.py,sha256=eeWuMi194zSJ2w8kNq0p25PTAaGxvENttZtG-7lW1q0,21893
76
76
  metalstack/api/v2/token_pb2.py,sha256=6SnWtIpbS3euvqyweeIw0cu_fko9m22niZZ4OePsGZM,18368
77
77
  metalstack/api/v2/token_pb2.pyi,sha256=JRjKXbJRBHvalqEuQAb9i31ShpcltdRNmuyggtB4Wro,10123
@@ -91,7 +91,7 @@ metalstack/infra/v2/bmc_pb2.pyi,sha256=e4FGBnDQhg6K_zlhoC170lw-0OSlSdHK3So6r3Reh
91
91
  metalstack/infra/v2/switch_connect.py,sha256=TftYMAVcYhwFaenInmBK21CnGTyN5pXNDrKQLDWFTz4,12319
92
92
  metalstack/infra/v2/switch_pb2.py,sha256=ZoVTK-bwTP33GOKvK3-GlphfHaYmmVmS8_ZrKloFB-o,7728
93
93
  metalstack/infra/v2/switch_pb2.pyi,sha256=SSUHCM5ImRTV1U1X_uEA51qWZYtEd-_ZesVESiKeWNw,4309
94
- metal_stack_api-0.0.31.dist-info/METADATA,sha256=y8KReVqUSoxdgxVg6pYNHYbhU5iY6zEA2VQSQzj_Ovs,874
95
- metal_stack_api-0.0.31.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
- metal_stack_api-0.0.31.dist-info/top_level.txt,sha256=OqZoCBTOYMgPJJ3GbO1ZfY7eRpW9Ljc5g3Ajlu44n2I,11
97
- metal_stack_api-0.0.31.dist-info/RECORD,,
94
+ metal_stack_api-0.0.32.dist-info/METADATA,sha256=VUwO8dF-I_fBl8326yuJvYl5QRbTrShfTqEfoqyWCmc,874
95
+ metal_stack_api-0.0.32.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
96
+ metal_stack_api-0.0.32.dist-info/top_level.txt,sha256=OqZoCBTOYMgPJJ3GbO1ZfY7eRpW9Ljc5g3Ajlu44n2I,11
97
+ metal_stack_api-0.0.32.dist-info/RECORD,,
@@ -28,7 +28,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_
28
28
  from metalstack.api.v2 import size_pb2 as metalstack_dot_api_dot_v2_dot_size__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/admin/v2/size.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\x1cmetalstack/api/v2/size.proto\"G\n\x18SizeServiceCreateRequest\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"H\n\x19SizeServiceCreateResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"\xff\x02\n\x18SizeServiceUpdateRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x02id\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x43\n\x0b\x63onstraints\x18\x05 \x03(\x0b\x32!.metalstack.api.v2.SizeConstraintR\x0b\x63onstraints\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels\"H\n\x19SizeServiceUpdateResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"6\n\x18SizeServiceDeleteRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x02id\"H\n\x19SizeServiceDeleteResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size2\xe0\x02\n\x0bSizeService\x12o\n\x06\x43reate\x12-.metalstack.admin.v2.SizeServiceCreateRequest\x1a..metalstack.admin.v2.SizeServiceCreateResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x12o\n\x06Update\x12-.metalstack.admin.v2.SizeServiceUpdateRequest\x1a..metalstack.admin.v2.SizeServiceUpdateResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x12o\n\x06\x44\x65lete\x12-.metalstack.admin.v2.SizeServiceDeleteRequest\x1a..metalstack.admin.v2.SizeServiceDeleteResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x42\xcd\x01\n\x17\x63om.metalstack.admin.v2B\tSizeProtoP\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\x1emetalstack/admin/v2/size.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\x1cmetalstack/api/v2/size.proto\"G\n\x18SizeServiceCreateRequest\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"H\n\x19SizeServiceCreateResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"\xff\x02\n\x18SizeServiceUpdateRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x02id\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\x43\n\x0b\x63onstraints\x18\x05 \x03(\x0b\x32!.metalstack.api.v2.SizeConstraintR\x0b\x63onstraints\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labels\"H\n\x19SizeServiceUpdateResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size\"6\n\x18SizeServiceDeleteRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x02id\"H\n\x19SizeServiceDeleteResponse\x12+\n\x04size\x18\x01 \x01(\x0b\x32\x17.metalstack.api.v2.SizeR\x04size2\xdd\x02\n\x0bSizeService\x12n\n\x06\x43reate\x12-.metalstack.admin.v2.SizeServiceCreateRequest\x1a..metalstack.admin.v2.SizeServiceCreateResponse\"\x05\xd2\xf3\x18\x01\x01\x12n\n\x06Update\x12-.metalstack.admin.v2.SizeServiceUpdateRequest\x1a..metalstack.admin.v2.SizeServiceUpdateResponse\"\x05\xd2\xf3\x18\x01\x01\x12n\n\x06\x44\x65lete\x12-.metalstack.admin.v2.SizeServiceDeleteRequest\x1a..metalstack.admin.v2.SizeServiceDeleteResponse\"\x05\xd2\xf3\x18\x01\x01\x42\xcd\x01\n\x17\x63om.metalstack.admin.v2B\tSizeProtoP\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')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -47,11 +47,11 @@ if not _descriptor._USE_C_DESCRIPTORS:
47
47
  _globals['_SIZESERVICEDELETEREQUEST'].fields_by_name['id']._loaded_options = None
48
48
  _globals['_SIZESERVICEDELETEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\007r\005\020\002\030\200\001'
49
49
  _globals['_SIZESERVICE'].methods_by_name['Create']._loaded_options = None
50
- _globals['_SIZESERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\002\001\002'
50
+ _globals['_SIZESERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001'
51
51
  _globals['_SIZESERVICE'].methods_by_name['Update']._loaded_options = None
52
- _globals['_SIZESERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\002\001\002'
52
+ _globals['_SIZESERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\001\001'
53
53
  _globals['_SIZESERVICE'].methods_by_name['Delete']._loaded_options = None
54
- _globals['_SIZESERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\002\001\002'
54
+ _globals['_SIZESERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001'
55
55
  _globals['_SIZESERVICECREATEREQUEST']._serialized_start=188
56
56
  _globals['_SIZESERVICECREATEREQUEST']._serialized_end=259
57
57
  _globals['_SIZESERVICECREATERESPONSE']._serialized_start=261
@@ -65,5 +65,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
65
65
  _globals['_SIZESERVICEDELETERESPONSE']._serialized_start=851
66
66
  _globals['_SIZESERVICEDELETERESPONSE']._serialized_end=923
67
67
  _globals['_SIZESERVICE']._serialized_start=926
68
- _globals['_SIZESERVICE']._serialized_end=1278
68
+ _globals['_SIZESERVICE']._serialized_end=1275
69
69
  # @@protoc_insertion_point(module_scope)
@@ -22,6 +22,9 @@ class TokenService(Protocol):
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
23
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
24
 
25
+ async def create(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse:
26
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
27
+
25
28
 
26
29
  class TokenServiceASGIApplication(ConnectASGIApplication):
27
30
  def __init__(self, service: TokenService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
@@ -47,6 +50,16 @@ class TokenServiceASGIApplication(ConnectASGIApplication):
47
50
  ),
48
51
  function=service.revoke,
49
52
  ),
53
+ "/metalstack.admin.v2.TokenService/Create": Endpoint.unary(
54
+ method=MethodInfo(
55
+ name="Create",
56
+ service_name="metalstack.admin.v2.TokenService",
57
+ input=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
58
+ output=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse,
59
+ idempotency_level=IdempotencyLevel.UNKNOWN,
60
+ ),
61
+ function=service.create,
62
+ ),
50
63
  },
51
64
  interceptors=interceptors,
52
65
  read_max_bytes=read_max_bytes,
@@ -99,12 +112,34 @@ class TokenServiceClient(ConnectClient):
99
112
  timeout_ms=timeout_ms,
100
113
  )
101
114
 
115
+ async def create(
116
+ self,
117
+ request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
118
+ *,
119
+ headers: Headers | Mapping[str, str] | None = None,
120
+ timeout_ms: int | None = None,
121
+ ) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse:
122
+ return await self.execute_unary(
123
+ request=request,
124
+ method=MethodInfo(
125
+ name="Create",
126
+ service_name="metalstack.admin.v2.TokenService",
127
+ input=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
128
+ output=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse,
129
+ idempotency_level=IdempotencyLevel.UNKNOWN,
130
+ ),
131
+ headers=headers,
132
+ timeout_ms=timeout_ms,
133
+ )
134
+
102
135
 
103
136
  class TokenServiceSync(Protocol):
104
137
  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
138
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
139
  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
140
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
141
+ def create(self, request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse:
142
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
108
143
 
109
144
 
110
145
  class TokenServiceWSGIApplication(ConnectWSGIApplication):
@@ -131,6 +166,16 @@ class TokenServiceWSGIApplication(ConnectWSGIApplication):
131
166
  ),
132
167
  function=service.revoke,
133
168
  ),
169
+ "/metalstack.admin.v2.TokenService/Create": EndpointSync.unary(
170
+ method=MethodInfo(
171
+ name="Create",
172
+ service_name="metalstack.admin.v2.TokenService",
173
+ input=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
174
+ output=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse,
175
+ idempotency_level=IdempotencyLevel.UNKNOWN,
176
+ ),
177
+ function=service.create,
178
+ ),
134
179
  },
135
180
  interceptors=interceptors,
136
181
  read_max_bytes=read_max_bytes,
@@ -182,3 +227,23 @@ class TokenServiceClientSync(ConnectClientSync):
182
227
  headers=headers,
183
228
  timeout_ms=timeout_ms,
184
229
  )
230
+
231
+ def create(
232
+ self,
233
+ request: metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
234
+ *,
235
+ headers: Headers | Mapping[str, str] | None = None,
236
+ timeout_ms: int | None = None,
237
+ ) -> metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse:
238
+ return self.execute_unary(
239
+ request=request,
240
+ method=MethodInfo(
241
+ name="Create",
242
+ service_name="metalstack.admin.v2.TokenService",
243
+ input=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateRequest,
244
+ output=metalstack_dot_admin_dot_v2_dot_token__pb2.TokenServiceCreateResponse,
245
+ idempotency_level=IdempotencyLevel.UNKNOWN,
246
+ ),
247
+ headers=headers,
248
+ timeout_ms=timeout_ms,
249
+ )
@@ -27,7 +27,7 @@ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common
27
27
  from metalstack.api.v2 import token_pb2 as metalstack_dot_api_dot_v2_dot_token__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/admin/v2/token.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1dmetalstack/api/v2/token.proto\";\n\x17TokenServiceListRequest\x12\x17\n\x04user\x18\x01 \x01(\tH\x00R\x04user\x88\x01\x01\x42\x07\n\x05_user\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"Y\n\x19TokenServiceRevokeRequest\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\"\x1c\n\x1aTokenServiceRevokeResponse2\xed\x01\n\x0cTokenService\x12k\n\x04List\x12,.metalstack.admin.v2.TokenServiceListRequest\x1a-.metalstack.admin.v2.TokenServiceListResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x12p\n\x06Revoke\x12..metalstack.admin.v2.TokenServiceRevokeRequest\x1a/.metalstack.admin.v2.TokenServiceRevokeResponse\"\x05\xd2\xf3\x18\x01\x01\x42\xce\x01\n\x17\x63om.metalstack.admin.v2B\nTokenProtoP\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
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/admin/v2/token.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1dmetalstack/api/v2/token.proto\";\n\x17TokenServiceListRequest\x12\x17\n\x04user\x18\x01 \x01(\tH\x00R\x04user\x88\x01\x01\x42\x07\n\x05_user\"L\n\x18TokenServiceListResponse\x12\x30\n\x06tokens\x18\x01 \x03(\x0b\x32\x18.metalstack.api.v2.TokenR\x06tokens\"Y\n\x19TokenServiceRevokeRequest\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\"\x1c\n\x1aTokenServiceRevokeResponse\"y\n\x19TokenServiceCreateRequest\x12#\n\x04user\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x04H\x00R\x04user\x88\x01\x01\x12.\n\x05token\x18\x02 \x01(\x0b\x32\x18.metalstack.api.v2.TokenR\x05tokenB\x07\n\x05_user\"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\x06secret2\xdf\x02\n\x0cTokenService\x12k\n\x04List\x12,.metalstack.admin.v2.TokenServiceListRequest\x1a-.metalstack.admin.v2.TokenServiceListResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x12p\n\x06Revoke\x12..metalstack.admin.v2.TokenServiceRevokeRequest\x1a/.metalstack.admin.v2.TokenServiceRevokeResponse\"\x05\xd2\xf3\x18\x01\x01\x12p\n\x06\x43reate\x12..metalstack.admin.v2.TokenServiceCreateRequest\x1a/.metalstack.admin.v2.TokenServiceCreateResponse\"\x05\xd2\xf3\x18\x01\x01\x42\xce\x01\n\x17\x63om.metalstack.admin.v2B\nTokenProtoP\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
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -39,10 +39,14 @@ if not _descriptor._USE_C_DESCRIPTORS:
39
39
  _globals['_TOKENSERVICEREVOKEREQUEST'].fields_by_name['uuid']._serialized_options = b'\272H\005r\003\260\001\001'
40
40
  _globals['_TOKENSERVICEREVOKEREQUEST'].fields_by_name['user']._loaded_options = None
41
41
  _globals['_TOKENSERVICEREVOKEREQUEST'].fields_by_name['user']._serialized_options = b'\272H\007r\005\020\002\030\200\004'
42
+ _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['user']._loaded_options = None
43
+ _globals['_TOKENSERVICECREATEREQUEST'].fields_by_name['user']._serialized_options = b'\272H\007r\005\020\002\030\200\004'
42
44
  _globals['_TOKENSERVICE'].methods_by_name['List']._loaded_options = None
43
45
  _globals['_TOKENSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002'
44
46
  _globals['_TOKENSERVICE'].methods_by_name['Revoke']._loaded_options = None
45
47
  _globals['_TOKENSERVICE'].methods_by_name['Revoke']._serialized_options = b'\322\363\030\001\001'
48
+ _globals['_TOKENSERVICE'].methods_by_name['Create']._loaded_options = None
49
+ _globals['_TOKENSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001'
46
50
  _globals['_TOKENSERVICELISTREQUEST']._serialized_start=148
47
51
  _globals['_TOKENSERVICELISTREQUEST']._serialized_end=207
48
52
  _globals['_TOKENSERVICELISTRESPONSE']._serialized_start=209
@@ -51,6 +55,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
51
55
  _globals['_TOKENSERVICEREVOKEREQUEST']._serialized_end=376
52
56
  _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_start=378
53
57
  _globals['_TOKENSERVICEREVOKERESPONSE']._serialized_end=406
54
- _globals['_TOKENSERVICE']._serialized_start=409
55
- _globals['_TOKENSERVICE']._serialized_end=646
58
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_start=408
59
+ _globals['_TOKENSERVICECREATEREQUEST']._serialized_end=529
60
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_start=531
61
+ _globals['_TOKENSERVICECREATERESPONSE']._serialized_end=631
62
+ _globals['_TOKENSERVICE']._serialized_start=634
63
+ _globals['_TOKENSERVICE']._serialized_end=985
56
64
  # @@protoc_insertion_point(module_scope)
@@ -32,3 +32,19 @@ class TokenServiceRevokeRequest(_message.Message):
32
32
  class TokenServiceRevokeResponse(_message.Message):
33
33
  __slots__ = ()
34
34
  def __init__(self) -> None: ...
35
+
36
+ class TokenServiceCreateRequest(_message.Message):
37
+ __slots__ = ("user", "token")
38
+ USER_FIELD_NUMBER: _ClassVar[int]
39
+ TOKEN_FIELD_NUMBER: _ClassVar[int]
40
+ user: str
41
+ token: _token_pb2.Token
42
+ def __init__(self, user: _Optional[str] = ..., token: _Optional[_Union[_token_pb2.Token, _Mapping]] = ...) -> None: ...
43
+
44
+ class TokenServiceCreateResponse(_message.Message):
45
+ __slots__ = ("token", "secret")
46
+ TOKEN_FIELD_NUMBER: _ClassVar[int]
47
+ SECRET_FIELD_NUMBER: _ClassVar[int]
48
+ token: _token_pb2.Token
49
+ secret: str
50
+ def __init__(self, token: _Optional[_Union[_token_pb2.Token, _Mapping]] = ..., secret: _Optional[str] = ...) -> None: ...
@@ -31,6 +31,9 @@ class ProjectService(Protocol):
31
31
  async def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateResponse:
32
32
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
33
33
 
34
+ async def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse:
35
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
36
+
34
37
  async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse:
35
38
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
36
39
 
@@ -107,6 +110,16 @@ class ProjectServiceASGIApplication(ConnectASGIApplication):
107
110
  ),
108
111
  function=service.update,
109
112
  ),
113
+ "/metalstack.api.v2.ProjectService/Leave": Endpoint.unary(
114
+ method=MethodInfo(
115
+ name="Leave",
116
+ service_name="metalstack.api.v2.ProjectService",
117
+ input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
118
+ output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse,
119
+ idempotency_level=IdempotencyLevel.UNKNOWN,
120
+ ),
121
+ function=service.leave,
122
+ ),
110
123
  "/metalstack.api.v2.ProjectService/RemoveMember": Endpoint.unary(
111
124
  method=MethodInfo(
112
125
  name="RemoveMember",
@@ -289,6 +302,26 @@ class ProjectServiceClient(ConnectClient):
289
302
  timeout_ms=timeout_ms,
290
303
  )
291
304
 
305
+ async def leave(
306
+ self,
307
+ request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
308
+ *,
309
+ headers: Headers | Mapping[str, str] | None = None,
310
+ timeout_ms: int | None = None,
311
+ ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse:
312
+ return await self.execute_unary(
313
+ request=request,
314
+ method=MethodInfo(
315
+ name="Leave",
316
+ service_name="metalstack.api.v2.ProjectService",
317
+ input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
318
+ output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse,
319
+ idempotency_level=IdempotencyLevel.UNKNOWN,
320
+ ),
321
+ headers=headers,
322
+ timeout_ms=timeout_ms,
323
+ )
324
+
292
325
  async def remove_member(
293
326
  self,
294
327
  request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest,
@@ -441,6 +474,8 @@ class ProjectServiceSync(Protocol):
441
474
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
442
475
  def update(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateResponse:
443
476
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
477
+ def leave(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse:
478
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
444
479
  def remove_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberResponse:
445
480
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
446
481
  def update_member(self, request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceUpdateMemberResponse:
@@ -511,6 +546,16 @@ class ProjectServiceWSGIApplication(ConnectWSGIApplication):
511
546
  ),
512
547
  function=service.update,
513
548
  ),
549
+ "/metalstack.api.v2.ProjectService/Leave": EndpointSync.unary(
550
+ method=MethodInfo(
551
+ name="Leave",
552
+ service_name="metalstack.api.v2.ProjectService",
553
+ input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
554
+ output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse,
555
+ idempotency_level=IdempotencyLevel.UNKNOWN,
556
+ ),
557
+ function=service.leave,
558
+ ),
514
559
  "/metalstack.api.v2.ProjectService/RemoveMember": EndpointSync.unary(
515
560
  method=MethodInfo(
516
561
  name="RemoveMember",
@@ -693,6 +738,26 @@ class ProjectServiceClientSync(ConnectClientSync):
693
738
  timeout_ms=timeout_ms,
694
739
  )
695
740
 
741
+ def leave(
742
+ self,
743
+ request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
744
+ *,
745
+ headers: Headers | Mapping[str, str] | None = None,
746
+ timeout_ms: int | None = None,
747
+ ) -> metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse:
748
+ return self.execute_unary(
749
+ request=request,
750
+ method=MethodInfo(
751
+ name="Leave",
752
+ service_name="metalstack.api.v2.ProjectService",
753
+ input=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveRequest,
754
+ output=metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceLeaveResponse,
755
+ idempotency_level=IdempotencyLevel.UNKNOWN,
756
+ ),
757
+ headers=headers,
758
+ timeout_ms=timeout_ms,
759
+ )
760
+
696
761
  def remove_member(
697
762
  self,
698
763
  request: metalstack_dot_api_dot_v2_dot_project__pb2.ProjectServiceRemoveMemberRequest,
@@ -28,7 +28,7 @@ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common
28
28
  from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe5\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12\"\n\navatar_url\x18\x06 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xcb\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xdd\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\'\n\x06tenant\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\xf5\x01\n\x1bProjectServiceCreateRequest\x12 \n\x05login\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\"\n\navatar_url\x18\x04 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\xf8\x02\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x05 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xef\x0b\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\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')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/project.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xe5\x01\n\x07Project\x12\x12\n\x04uuid\x18\x01 \x01(\tR\x04uuid\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x16\n\x06tenant\x18\x05 \x01(\tR\x06tenant\x12\"\n\navatar_url\x18\x06 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x42\r\n\x0b_avatar_url\"\xcb\x01\n\rProjectMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12<\n\x04role\x18\x02 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x31\n\x14inherited_membership\x18\x03 \x01(\x08R\x13inheritedMembership\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xe7\x02\n\rProjectInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12\x18\n\x07project\x18\x02 \x01(\tR\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12!\n\x0cproject_name\x18\x05 \x01(\tR\x0bprojectName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xdd\x01\n\x19ProjectServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\'\n\x06tenant\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01H\x02R\x06tenant\x88\x01\x01\x12\x36\n\x06labels\x18\x06 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x03R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_tenantB\t\n\x07_labels\"T\n\x1aProjectServiceListResponse\x12\x36\n\x08projects\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x08projects\">\n\x18ProjectServiceGetRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x9c\x01\n\x19ProjectServiceGetResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\x12I\n\x0fproject_members\x18\x02 \x03(\x0b\x32 .metalstack.api.v2.ProjectMemberR\x0eprojectMembers\"\xf5\x01\n\x1bProjectServiceCreateRequest\x12 \n\x05login\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x02\x18\x80\x01R\x05login\x12\x1f\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12-\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\"\n\navatar_url\x18\x04 \x01(\tH\x00R\tavatarUrl\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\r\n\x0b_avatar_url\"T\n\x1cProjectServiceCreateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"A\n\x1bProjectServiceDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cProjectServiceDeleteResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\xf8\x02\n\x1bProjectServiceUpdateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x05 \x01(\tH\x02R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x06 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x03R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"T\n\x1cProjectServiceUpdateResponse\x12\x34\n\x07project\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.ProjectR\x07project\"\x7f\n\x1bProjectServiceInviteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"X\n\x1cProjectServiceInviteResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"F\n ProjectServiceInvitesListRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"_\n!ProjectServiceInvitesListResponse\x12:\n\x07invites\x18\x01 \x03(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x07invites\"8\n\x1eProjectServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"[\n\x1fProjectServiceInviteGetResponse\x12\x38\n\x06invite\x18\x01 \x01(\x0b\x32 .metalstack.api.v2.ProjectInviteR\x06invite\"@\n\x1aProjectServiceLeaveRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"\x1d\n\x1bProjectServiceLeaveResponse\"_\n!ProjectServiceRemoveMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"$\n\"ProjectServiceRemoveMemberResponse\"\x9d\x01\n!ProjectServiceUpdateMemberRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12<\n\x04role\x18\x03 \x01(\x0e\x32\x1e.metalstack.api.v2.ProjectRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"m\n\"ProjectServiceUpdateMemberResponse\x12G\n\x0eproject_member\x18\x05 \x01(\x0b\x32 .metalstack.api.v2.ProjectMemberR\rprojectMember\";\n!ProjectServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"a\n\"ProjectServiceInviteAcceptResponse\x12\x18\n\x07project\x18\x01 \x01(\tR\x07project\x12!\n\x0cproject_name\x18\x02 \x01(\tR\x0bprojectName\"_\n!ProjectServiceInviteDeleteRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"$\n\"ProjectServiceInviteDeleteResponse2\xe2\x0c\n\x0eProjectService\x12m\n\x04List\x12,.metalstack.api.v2.ProjectServiceListRequest\x1a-.metalstack.api.v2.ProjectServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12m\n\x03Get\x12+.metalstack.api.v2.ProjectServiceGetRequest\x1a,.metalstack.api.v2.ProjectServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.ProjectServiceCreateRequest\x1a/.metalstack.api.v2.ProjectServiceCreateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12t\n\x06\x44\x65lete\x12..metalstack.api.v2.ProjectServiceDeleteRequest\x1a/.metalstack.api.v2.ProjectServiceDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.ProjectServiceUpdateRequest\x1a/.metalstack.api.v2.ProjectServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12q\n\x05Leave\x12-.metalstack.api.v2.ProjectServiceLeaveRequest\x1a..metalstack.api.v2.ProjectServiceLeaveResponse\"\t\xca\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cRemoveMember\x12\x34.metalstack.api.v2.ProjectServiceRemoveMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceRemoveMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x86\x01\n\x0cUpdateMember\x12\x34.metalstack.api.v2.ProjectServiceUpdateMemberRequest\x1a\x35.metalstack.api.v2.ProjectServiceUpdateMemberResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12t\n\x06Invite\x12..metalstack.api.v2.ProjectServiceInviteRequest\x1a/.metalstack.api.v2.ProjectServiceInviteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x85\x01\n\x0cInviteAccept\x12\x34.metalstack.api.v2.ProjectServiceInviteAcceptRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x86\x01\n\x0cInviteDelete\x12\x34.metalstack.api.v2.ProjectServiceInviteDeleteRequest\x1a\x35.metalstack.api.v2.ProjectServiceInviteDeleteResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0bInvitesList\x12\x33.metalstack.api.v2.ProjectServiceInvitesListRequest\x1a\x34.metalstack.api.v2.ProjectServiceInvitesListResponse\"\t\xca\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12|\n\tInviteGet\x12\x31.metalstack.api.v2.ProjectServiceInviteGetRequest\x1a\x32.metalstack.api.v2.ProjectServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cProjectProtoP\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
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -72,6 +72,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
72
72
  _globals['_PROJECTSERVICEINVITEREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001'
73
73
  _globals['_PROJECTSERVICEINVITESLISTREQUEST'].fields_by_name['project']._loaded_options = None
74
74
  _globals['_PROJECTSERVICEINVITESLISTREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
75
+ _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._loaded_options = None
76
+ _globals['_PROJECTSERVICELEAVEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
75
77
  _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None
76
78
  _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
77
79
  _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST'].fields_by_name['project']._loaded_options = None
@@ -90,6 +92,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
90
92
  _globals['_PROJECTSERVICE'].methods_by_name['Delete']._serialized_options = b'\312\363\030\001\001\340\363\030\001'
91
93
  _globals['_PROJECTSERVICE'].methods_by_name['Update']._loaded_options = None
92
94
  _globals['_PROJECTSERVICE'].methods_by_name['Update']._serialized_options = b'\312\363\030\002\001\002\340\363\030\001'
95
+ _globals['_PROJECTSERVICE'].methods_by_name['Leave']._loaded_options = None
96
+ _globals['_PROJECTSERVICE'].methods_by_name['Leave']._serialized_options = b'\312\363\030\001\003\340\363\030\001'
93
97
  _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None
94
98
  _globals['_PROJECTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\312\363\030\001\001\340\363\030\001'
95
99
  _globals['_PROJECTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None
@@ -142,22 +146,26 @@ if not _descriptor._USE_C_DESCRIPTORS:
142
146
  _globals['_PROJECTSERVICEINVITEGETREQUEST']._serialized_end=2919
143
147
  _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_start=2921
144
148
  _globals['_PROJECTSERVICEINVITEGETRESPONSE']._serialized_end=3012
145
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3014
146
- _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3109
147
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3111
148
- _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3147
149
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3150
150
- _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3307
151
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3309
152
- _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3418
153
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3420
154
- _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3479
155
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3481
156
- _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3578
157
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3580
158
- _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3675
159
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3677
160
- _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3713
161
- _globals['_PROJECTSERVICE']._serialized_start=3716
162
- _globals['_PROJECTSERVICE']._serialized_end=5235
149
+ _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_start=3014
150
+ _globals['_PROJECTSERVICELEAVEREQUEST']._serialized_end=3078
151
+ _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_start=3080
152
+ _globals['_PROJECTSERVICELEAVERESPONSE']._serialized_end=3109
153
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_start=3111
154
+ _globals['_PROJECTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3206
155
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3208
156
+ _globals['_PROJECTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3244
157
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3247
158
+ _globals['_PROJECTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3404
159
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3406
160
+ _globals['_PROJECTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3515
161
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_start=3517
162
+ _globals['_PROJECTSERVICEINVITEACCEPTREQUEST']._serialized_end=3576
163
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3578
164
+ _globals['_PROJECTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3675
165
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_start=3677
166
+ _globals['_PROJECTSERVICEINVITEDELETEREQUEST']._serialized_end=3772
167
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_start=3774
168
+ _globals['_PROJECTSERVICEINVITEDELETERESPONSE']._serialized_end=3810
169
+ _globals['_PROJECTSERVICE']._serialized_start=3813
170
+ _globals['_PROJECTSERVICE']._serialized_end=5447
163
171
  # @@protoc_insertion_point(module_scope)
@@ -186,6 +186,16 @@ class ProjectServiceInviteGetResponse(_message.Message):
186
186
  invite: ProjectInvite
187
187
  def __init__(self, invite: _Optional[_Union[ProjectInvite, _Mapping]] = ...) -> None: ...
188
188
 
189
+ class ProjectServiceLeaveRequest(_message.Message):
190
+ __slots__ = ("project",)
191
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
192
+ project: str
193
+ def __init__(self, project: _Optional[str] = ...) -> None: ...
194
+
195
+ class ProjectServiceLeaveResponse(_message.Message):
196
+ __slots__ = ()
197
+ def __init__(self) -> None: ...
198
+
189
199
  class ProjectServiceRemoveMemberRequest(_message.Message):
190
200
  __slots__ = ("project", "member")
191
201
  PROJECT_FIELD_NUMBER: _ClassVar[int]
@@ -31,6 +31,9 @@ class TenantService(Protocol):
31
31
  async def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteResponse:
32
32
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
33
33
 
34
+ async def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse:
35
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
36
+
34
37
  async def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse:
35
38
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
36
39
 
@@ -107,6 +110,16 @@ class TenantServiceASGIApplication(ConnectASGIApplication):
107
110
  ),
108
111
  function=service.delete,
109
112
  ),
113
+ "/metalstack.api.v2.TenantService/Leave": Endpoint.unary(
114
+ method=MethodInfo(
115
+ name="Leave",
116
+ service_name="metalstack.api.v2.TenantService",
117
+ input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
118
+ output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse,
119
+ idempotency_level=IdempotencyLevel.UNKNOWN,
120
+ ),
121
+ function=service.leave,
122
+ ),
110
123
  "/metalstack.api.v2.TenantService/RemoveMember": Endpoint.unary(
111
124
  method=MethodInfo(
112
125
  name="RemoveMember",
@@ -289,6 +302,26 @@ class TenantServiceClient(ConnectClient):
289
302
  timeout_ms=timeout_ms,
290
303
  )
291
304
 
305
+ async def leave(
306
+ self,
307
+ request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
308
+ *,
309
+ headers: Headers | Mapping[str, str] | None = None,
310
+ timeout_ms: int | None = None,
311
+ ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse:
312
+ return await self.execute_unary(
313
+ request=request,
314
+ method=MethodInfo(
315
+ name="Leave",
316
+ service_name="metalstack.api.v2.TenantService",
317
+ input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
318
+ output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse,
319
+ idempotency_level=IdempotencyLevel.UNKNOWN,
320
+ ),
321
+ headers=headers,
322
+ timeout_ms=timeout_ms,
323
+ )
324
+
292
325
  async def remove_member(
293
326
  self,
294
327
  request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest,
@@ -441,6 +474,8 @@ class TenantServiceSync(Protocol):
441
474
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
442
475
  def delete(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceDeleteResponse:
443
476
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
477
+ def leave(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse:
478
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
444
479
  def remove_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberResponse:
445
480
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
446
481
  def update_member(self, request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberRequest, ctx: RequestContext) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceUpdateMemberResponse:
@@ -511,6 +546,16 @@ class TenantServiceWSGIApplication(ConnectWSGIApplication):
511
546
  ),
512
547
  function=service.delete,
513
548
  ),
549
+ "/metalstack.api.v2.TenantService/Leave": EndpointSync.unary(
550
+ method=MethodInfo(
551
+ name="Leave",
552
+ service_name="metalstack.api.v2.TenantService",
553
+ input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
554
+ output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse,
555
+ idempotency_level=IdempotencyLevel.UNKNOWN,
556
+ ),
557
+ function=service.leave,
558
+ ),
514
559
  "/metalstack.api.v2.TenantService/RemoveMember": EndpointSync.unary(
515
560
  method=MethodInfo(
516
561
  name="RemoveMember",
@@ -693,6 +738,26 @@ class TenantServiceClientSync(ConnectClientSync):
693
738
  timeout_ms=timeout_ms,
694
739
  )
695
740
 
741
+ def leave(
742
+ self,
743
+ request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
744
+ *,
745
+ headers: Headers | Mapping[str, str] | None = None,
746
+ timeout_ms: int | None = None,
747
+ ) -> metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse:
748
+ return self.execute_unary(
749
+ request=request,
750
+ method=MethodInfo(
751
+ name="Leave",
752
+ service_name="metalstack.api.v2.TenantService",
753
+ input=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveRequest,
754
+ output=metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceLeaveResponse,
755
+ idempotency_level=IdempotencyLevel.UNKNOWN,
756
+ ),
757
+ headers=headers,
758
+ timeout_ms=timeout_ms,
759
+ )
760
+
696
761
  def remove_member(
697
762
  self,
698
763
  request: metalstack_dot_api_dot_v2_dot_tenant__pb2.TenantServiceRemoveMemberRequest,
@@ -28,7 +28,7 @@ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common
28
28
  from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/tenant.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x0f \x01(\tR\tcreatedBy\"\xb2\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x04 \x03(\tR\x08projects\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x02\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\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xd6\x0b\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\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')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1emetalstack/api/v2/tenant.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"\xef\x01\n\x06Tenant\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\x12\x1f\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x04name\x12\x14\n\x05\x65mail\x18\x04 \x01(\tR\x05\x65mail\x12-\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01R\x0b\x64\x65scription\x12\x1d\n\navatar_url\x18\x06 \x01(\tR\tavatarUrl\x12\x1d\n\ncreated_by\x18\x0f \x01(\tR\tcreatedBy\"\xb2\x01\n\x0cTenantMember\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x1a\n\x08projects\x18\x04 \x03(\tR\x08projects\x12\x39\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\"\xfb\x02\n\x0cTenantInvite\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\x12#\n\rtarget_tenant\x18\x02 \x01(\tR\x0ctargetTenant\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\x12\x16\n\x06joined\x18\x04 \x01(\x08R\x06joined\x12,\n\x12target_tenant_name\x18\x05 \x01(\tR\x10targetTenantName\x12\x16\n\x06tenant\x18\x06 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x07 \x01(\tR\ntenantName\x12\x39\n\nexpires_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\texpiresAt\x12\x37\n\tjoined_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x08joinedAt\"\xa8\x01\n\x18TenantServiceListRequest\x12\x13\n\x02id\x18\x01 \x01(\tH\x00R\x02id\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\x36\n\x06labels\x18\x03 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x02R\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\t\n\x07_labels\"/\n\x17TenantServiceGetRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x02\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\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labelsB\x0e\n\x0c_descriptionB\x08\n\x06_emailB\r\n\x0b_avatar_url\"\x97\x03\n\x1aTenantServiceUpdateRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x46\n\x0bupdate_meta\x18\x02 \x01(\x0b\x32\x1d.metalstack.api.v2.UpdateMetaB\x06\xbaH\x03\xc8\x01\x01R\nupdateMeta\x12$\n\x04name\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\"\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01H\x01R\x05\x65mail\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12\"\n\navatar_url\x18\x06 \x01(\tH\x03R\tavatarUrl\x88\x01\x01\x12<\n\x06labels\x18\x07 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x04R\x06labels\x88\x01\x01\x42\x07\n\x05_nameB\x08\n\x06_emailB\x0e\n\x0c_descriptionB\r\n\x0b_avatar_urlB\t\n\x07_labels\"2\n\x1aTenantServiceDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x95\x01\n\x18TenantServiceGetResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\x12\x46\n\x0etenant_members\x18\x02 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\rtenantMembers\"P\n\x19TenantServiceListResponse\x12\x33\n\x07tenants\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.TenantR\x07tenants\"P\n\x1bTenantServiceCreateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceUpdateResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"P\n\x1bTenantServiceDeleteResponse\x12\x31\n\x06tenant\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.TenantR\x06tenant\"o\n\x1aTenantServiceInviteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12;\n\x04role\x18\x02 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"V\n\x1bTenantServiceInviteResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"7\n\x1fTenantServiceInvitesListRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"]\n TenantServiceInvitesListResponse\x12\x39\n\x07invites\x18\x01 \x03(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x07invites\"7\n\x1dTenantServiceInviteGetRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"Y\n\x1eTenantServiceInviteGetResponse\x12\x37\n\x06invite\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantInviteR\x06invite\"P\n TenantServiceRemoveMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\"1\n\x19TenantServiceLeaveRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\"\x1c\n\x1aTenantServiceLeaveResponse\"#\n!TenantServiceRemoveMemberResponse\":\n TenantServiceInviteAcceptRequest\x12\x16\n\x06secret\x18\x01 \x01(\tR\x06secret\"\\\n!TenantServiceInviteAcceptResponse\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1f\n\x0btenant_name\x18\x02 \x01(\tR\ntenantName\"P\n TenantServiceInviteDeleteRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06secret\x18\x02 \x01(\tR\x06secret\"#\n!TenantServiceInviteDeleteResponse\"\x8d\x01\n TenantServiceUpdateMemberRequest\x12\x14\n\x05login\x18\x01 \x01(\tR\x05login\x12\x16\n\x06member\x18\x02 \x01(\tR\x06member\x12;\n\x04role\x18\x03 \x01(\x0e\x32\x1d.metalstack.api.v2.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\"i\n!TenantServiceUpdateMemberResponse\x12\x44\n\rtenant_member\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.TenantMemberR\x0ctenantMember2\xc7\x0c\n\rTenantService\x12q\n\x06\x43reate\x12-.metalstack.api.v2.TenantServiceCreateRequest\x1a..metalstack.api.v2.TenantServiceCreateResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12k\n\x04List\x12+.metalstack.api.v2.TenantServiceListRequest\x1a,.metalstack.api.v2.TenantServiceListResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x12l\n\x03Get\x12*.metalstack.api.v2.TenantServiceGetRequest\x1a+.metalstack.api.v2.TenantServiceGetResponse\"\x0c\xc2\xf3\x18\x04\x01\x02\x03\x04\xe0\xf3\x18\x02\x12s\n\x06Update\x12-.metalstack.api.v2.TenantServiceUpdateRequest\x1a..metalstack.api.v2.TenantServiceUpdateResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12s\n\x06\x44\x65lete\x12-.metalstack.api.v2.TenantServiceDeleteRequest\x1a..metalstack.api.v2.TenantServiceDeleteResponse\"\n\xc2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12o\n\x05Leave\x12,.metalstack.api.v2.TenantServiceLeaveRequest\x1a-.metalstack.api.v2.TenantServiceLeaveResponse\"\t\xc2\xf3\x18\x01\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cRemoveMember\x12\x33.metalstack.api.v2.TenantServiceRemoveMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceRemoveMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x84\x01\n\x0cUpdateMember\x12\x33.metalstack.api.v2.TenantServiceUpdateMemberRequest\x1a\x34.metalstack.api.v2.TenantServiceUpdateMemberResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12r\n\x06Invite\x12-.metalstack.api.v2.TenantServiceInviteRequest\x1a..metalstack.api.v2.TenantServiceInviteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x83\x01\n\x0cInviteAccept\x12\x33.metalstack.api.v2.TenantServiceInviteAcceptRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteAcceptResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x01\x12\x84\x01\n\x0cInviteDelete\x12\x33.metalstack.api.v2.TenantServiceInviteDeleteRequest\x1a\x34.metalstack.api.v2.TenantServiceInviteDeleteResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\x81\x01\n\x0bInvitesList\x12\x32.metalstack.api.v2.TenantServiceInvitesListRequest\x1a\x33.metalstack.api.v2.TenantServiceInvitesListResponse\"\t\xc2\xf3\x18\x01\x01\xe0\xf3\x18\x02\x12z\n\tInviteGet\x12\x30.metalstack.api.v2.TenantServiceInviteGetRequest\x1a\x31.metalstack.api.v2.TenantServiceInviteGetResponse\"\x08\xd8\xf3\x18\x03\xe0\xf3\x18\x02\x42\xc1\x01\n\x15\x63om.metalstack.api.v2B\x0bTenantProtoP\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
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -74,6 +74,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
74
74
  _globals['_TENANTSERVICE'].methods_by_name['Update']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001'
75
75
  _globals['_TENANTSERVICE'].methods_by_name['Delete']._loaded_options = None
76
76
  _globals['_TENANTSERVICE'].methods_by_name['Delete']._serialized_options = b'\302\363\030\002\001\002\340\363\030\001'
77
+ _globals['_TENANTSERVICE'].methods_by_name['Leave']._loaded_options = None
78
+ _globals['_TENANTSERVICE'].methods_by_name['Leave']._serialized_options = b'\302\363\030\001\003\340\363\030\001'
77
79
  _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._loaded_options = None
78
80
  _globals['_TENANTSERVICE'].methods_by_name['RemoveMember']._serialized_options = b'\302\363\030\001\001\340\363\030\001'
79
81
  _globals['_TENANTSERVICE'].methods_by_name['UpdateMember']._loaded_options = None
@@ -128,20 +130,24 @@ if not _descriptor._USE_C_DESCRIPTORS:
128
130
  _globals['_TENANTSERVICEINVITEGETRESPONSE']._serialized_end=2935
129
131
  _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_start=2937
130
132
  _globals['_TENANTSERVICEREMOVEMEMBERREQUEST']._serialized_end=3017
131
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3019
132
- _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3054
133
- _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3056
134
- _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3114
135
- _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3116
136
- _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3208
137
- _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3210
138
- _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3290
139
- _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3292
140
- _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3327
141
- _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3330
142
- _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3471
143
- _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3473
144
- _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3578
145
- _globals['_TENANTSERVICE']._serialized_start=3581
146
- _globals['_TENANTSERVICE']._serialized_end=5075
133
+ _globals['_TENANTSERVICELEAVEREQUEST']._serialized_start=3019
134
+ _globals['_TENANTSERVICELEAVEREQUEST']._serialized_end=3068
135
+ _globals['_TENANTSERVICELEAVERESPONSE']._serialized_start=3070
136
+ _globals['_TENANTSERVICELEAVERESPONSE']._serialized_end=3098
137
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_start=3100
138
+ _globals['_TENANTSERVICEREMOVEMEMBERRESPONSE']._serialized_end=3135
139
+ _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_start=3137
140
+ _globals['_TENANTSERVICEINVITEACCEPTREQUEST']._serialized_end=3195
141
+ _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_start=3197
142
+ _globals['_TENANTSERVICEINVITEACCEPTRESPONSE']._serialized_end=3289
143
+ _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_start=3291
144
+ _globals['_TENANTSERVICEINVITEDELETEREQUEST']._serialized_end=3371
145
+ _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_start=3373
146
+ _globals['_TENANTSERVICEINVITEDELETERESPONSE']._serialized_end=3408
147
+ _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_start=3411
148
+ _globals['_TENANTSERVICEUPDATEMEMBERREQUEST']._serialized_end=3552
149
+ _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_start=3554
150
+ _globals['_TENANTSERVICEUPDATEMEMBERRESPONSE']._serialized_end=3659
151
+ _globals['_TENANTSERVICE']._serialized_start=3662
152
+ _globals['_TENANTSERVICE']._serialized_end=5269
147
153
  # @@protoc_insertion_point(module_scope)
@@ -196,6 +196,16 @@ class TenantServiceRemoveMemberRequest(_message.Message):
196
196
  member: str
197
197
  def __init__(self, login: _Optional[str] = ..., member: _Optional[str] = ...) -> None: ...
198
198
 
199
+ class TenantServiceLeaveRequest(_message.Message):
200
+ __slots__ = ("login",)
201
+ LOGIN_FIELD_NUMBER: _ClassVar[int]
202
+ login: str
203
+ def __init__(self, login: _Optional[str] = ...) -> None: ...
204
+
205
+ class TenantServiceLeaveResponse(_message.Message):
206
+ __slots__ = ()
207
+ def __init__(self) -> None: ...
208
+
199
209
  class TenantServiceRemoveMemberResponse(_message.Message):
200
210
  __slots__ = ()
201
211
  def __init__(self) -> None: ...