mergetbapi 1.3.20__tar.gz → 1.3.22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/PKG-INFO +1 -1
  2. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/portal/v1/__init__.py +451 -1
  3. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/xir/__init__.py +40 -0
  4. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/PKG-INFO +1 -1
  5. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/LICENSE.md +0 -0
  6. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/README.md +0 -0
  7. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/__init__.py +0 -0
  8. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/google/__init__.py +0 -0
  9. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/google/api/__init__.py +0 -0
  10. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/grpc/__init__.py +0 -0
  11. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/grpc/gateway/__init__.py +0 -0
  12. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/grpc/gateway/protoc_gen_openapiv2/__init__.py +0 -0
  13. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/grpc/gateway/protoc_gen_openapiv2/options/__init__.py +0 -0
  14. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/portal/__init__.py +0 -0
  15. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/reconcile/__init__.py +0 -0
  16. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi/validator/__init__.py +0 -0
  17. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/SOURCES.txt +0 -0
  18. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/dependency_links.txt +0 -0
  19. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/not-zip-safe +0 -0
  20. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/requires.txt +0 -0
  21. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/mergetbapi.egg-info/top_level.txt +0 -0
  22. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/setup.cfg +0 -0
  23. {mergetbapi-1.3.20 → mergetbapi-1.3.22}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mergetbapi
3
- Version: 1.3.20
3
+ Version: 1.3.22
4
4
  Summary: Client interface to the MergeTB API
5
5
  Home-page: https://gitlab.com/mergetb/api
6
6
  Author: Brian Kocoloski
@@ -1,5 +1,5 @@
1
1
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
- # sources: portal/v1/alloc_types.proto, portal/v1/commission_types.proto, portal/v1/communications_types.proto, portal/v1/cred_types.proto, portal/v1/identity_types.proto, portal/v1/internal.proto, portal/v1/materialize_types.proto, portal/v1/model_types.proto, portal/v1/patch_types.proto, portal/v1/realize_types.proto, portal/v1/status_types.proto, portal/v1/wg_types.proto, portal/v1/workspace_types.proto, portal/v1/xdc_types.proto, proto/portal/v1/portal.proto
2
+ # sources: portal/v1/alloc_types.proto, portal/v1/artifact_types.proto, portal/v1/commission_types.proto, portal/v1/communications_types.proto, portal/v1/cred_types.proto, portal/v1/identity_types.proto, portal/v1/internal.proto, portal/v1/materialize_types.proto, portal/v1/model_types.proto, portal/v1/patch_types.proto, portal/v1/realize_types.proto, portal/v1/status_types.proto, portal/v1/wg_types.proto, portal/v1/workspace_types.proto, portal/v1/xdc_types.proto, proto/portal/v1/portal.proto
3
3
  # plugin: python-betterproto
4
4
  # This file has been @generated
5
5
  import warnings
@@ -7,9 +7,13 @@ from dataclasses import dataclass
7
7
  from datetime import datetime
8
8
  from typing import (
9
9
  TYPE_CHECKING,
10
+ AsyncIterable,
11
+ AsyncIterator,
10
12
  Dict,
13
+ Iterable,
11
14
  List,
12
15
  Optional,
16
+ Union,
13
17
  )
14
18
 
15
19
  import betterproto
@@ -120,6 +124,19 @@ class GetRevisionRequestEncoding(betterproto.Enum):
120
124
  DOT = 2
121
125
 
122
126
 
127
+ class ArtifactChecksumType(betterproto.Enum):
128
+ """supported checksums, just for generated maps"""
129
+
130
+ SHA1 = 0
131
+ SHA256 = 1
132
+
133
+
134
+ class ArtifactGetDetail(betterproto.Enum):
135
+ All = 0
136
+ ReadmeAndMeta = 1
137
+ MetaOnly = 2
138
+
139
+
123
140
  class DiagnosticLevel(betterproto.Enum):
124
141
  DiagUnspec = 0
125
142
  Error = 1
@@ -1304,6 +1321,128 @@ class HealthResponse(betterproto.Message):
1304
1321
  status: str = betterproto.string_field(1)
1305
1322
 
1306
1323
 
1324
+ @dataclass(eq=False, repr=False)
1325
+ class ArtifactReadme(betterproto.Message):
1326
+ """
1327
+ xxx depending on if there is a limit on values in attributes, (readme, readme_type) could be just a couple of attributes
1328
+ """
1329
+
1330
+ name: str = betterproto.string_field(1)
1331
+ content: bytes = betterproto.bytes_field(2)
1332
+ """@gotags: mask:"len"""
1333
+
1334
+
1335
+ @dataclass(eq=False, repr=False)
1336
+ class ArtifactId(betterproto.Message):
1337
+ uuid: str = betterproto.string_field(1)
1338
+
1339
+
1340
+ @dataclass(eq=False, repr=False)
1341
+ class ArtifactMetadata(betterproto.Message):
1342
+ id: "ArtifactId" = betterproto.message_field(1)
1343
+ name: str = betterproto.string_field(2)
1344
+ creator: str = betterproto.string_field(3)
1345
+ access_mode: "AccessMode" = betterproto.enum_field(4)
1346
+ readme: "ArtifactReadme" = betterproto.message_field(5)
1347
+ size: int = betterproto.int64_field(6)
1348
+ checksum: str = betterproto.string_field(7)
1349
+ description: str = betterproto.string_field(8)
1350
+ project: str = betterproto.string_field(9)
1351
+ organization: str = betterproto.string_field(10)
1352
+ keywords: List[str] = betterproto.string_field(11)
1353
+
1354
+
1355
+ @dataclass(eq=False, repr=False)
1356
+ class ArtifactListRequest(betterproto.Message):
1357
+ username: str = betterproto.string_field(1)
1358
+ keywords: List[str] = betterproto.string_field(2)
1359
+
1360
+
1361
+ @dataclass(eq=False, repr=False)
1362
+ class ArtifactListResponse(betterproto.Message):
1363
+ metadata: List["ArtifactMetadata"] = betterproto.message_field(1)
1364
+ """@gotags: mask:"zero"""
1365
+
1366
+
1367
+ @dataclass(eq=False, repr=False)
1368
+ class ArtifactPutRequest(betterproto.Message):
1369
+ metadata: "ArtifactMetadata" = betterproto.message_field(1)
1370
+ chunk: bytes = betterproto.bytes_field(2)
1371
+ """@gotags: mask:"zero"""
1372
+
1373
+
1374
+ @dataclass(eq=False, repr=False)
1375
+ class ArtifactPutResponse(betterproto.Message):
1376
+ metadata: "ArtifactMetadata" = betterproto.message_field(2)
1377
+
1378
+
1379
+ @dataclass(eq=False, repr=False)
1380
+ class ArtifactGetRequest(betterproto.Message):
1381
+ id: "ArtifactId" = betterproto.message_field(1)
1382
+ detail_level: "ArtifactGetDetail" = betterproto.enum_field(2)
1383
+
1384
+
1385
+ @dataclass(eq=False, repr=False)
1386
+ class ArtifactGetResponse(betterproto.Message):
1387
+ metadata: "ArtifactMetadata" = betterproto.message_field(1)
1388
+ chunk: bytes = betterproto.bytes_field(2)
1389
+ """@gotags: mask:"zero"""
1390
+
1391
+
1392
+ @dataclass(eq=False, repr=False)
1393
+ class ArtifactDelRequest(betterproto.Message):
1394
+ id: "ArtifactId" = betterproto.message_field(1)
1395
+
1396
+
1397
+ @dataclass(eq=False, repr=False)
1398
+ class ArtifactDelResponse(betterproto.Message):
1399
+ pass
1400
+
1401
+
1402
+ @dataclass(eq=False, repr=False)
1403
+ class ArtifactQuota(betterproto.Message):
1404
+ """Quotas"""
1405
+
1406
+ username: str = betterproto.string_field(1)
1407
+ limit: int = betterproto.int64_field(2)
1408
+ usage: int = betterproto.int64_field(3)
1409
+
1410
+
1411
+ @dataclass(eq=False, repr=False)
1412
+ class ArtifactQuotas(betterproto.Message):
1413
+ quotas: List["ArtifactQuota"] = betterproto.message_field(1)
1414
+
1415
+
1416
+ @dataclass(eq=False, repr=False)
1417
+ class ArtifactQuotaGetRequest(betterproto.Message):
1418
+ username: str = betterproto.string_field(1)
1419
+
1420
+
1421
+ @dataclass(eq=False, repr=False)
1422
+ class ArtifactQuotaGetResponse(betterproto.Message):
1423
+ quota: "ArtifactQuota" = betterproto.message_field(1)
1424
+
1425
+
1426
+ @dataclass(eq=False, repr=False)
1427
+ class ArtifactQuotaSetRequest(betterproto.Message):
1428
+ quota: "ArtifactQuota" = betterproto.message_field(1)
1429
+
1430
+
1431
+ @dataclass(eq=False, repr=False)
1432
+ class ArtifactQuotaSetResponse(betterproto.Message):
1433
+ quota: "ArtifactQuota" = betterproto.message_field(1)
1434
+
1435
+
1436
+ @dataclass(eq=False, repr=False)
1437
+ class ArtifactQuotaListRequest(betterproto.Message):
1438
+ pass
1439
+
1440
+
1441
+ @dataclass(eq=False, repr=False)
1442
+ class ArtifactQuotaListResponse(betterproto.Message):
1443
+ quotas: List["ArtifactQuota"] = betterproto.message_field(1)
1444
+
1445
+
1307
1446
  @dataclass(eq=False, repr=False)
1308
1447
  class Facility(betterproto.Message):
1309
1448
  name: str = betterproto.string_field(1)
@@ -1774,6 +1913,7 @@ class InfrapodConfig(betterproto.Message):
1774
1913
  vid: int = betterproto.uint32_field(5)
1775
1914
  mgmt_phy: str = betterproto.string_field(6)
1776
1915
  vni: int = betterproto.uint32_field(7)
1916
+ endpoint: "Endpoint" = betterproto.message_field(8)
1777
1917
 
1778
1918
 
1779
1919
  @dataclass(eq=False, repr=False)
@@ -1859,6 +1999,7 @@ class Endpoint(betterproto.Message):
1859
1999
  vtep: "Vtep" = betterproto.message_field(8, group="interface")
1860
2000
  vf: "VfInterface" = betterproto.message_field(12, group="interface")
1861
2001
  trunk: "VlanTrunkPort" = betterproto.message_field(13, group="interface")
2002
+ veth: "Veth" = betterproto.message_field(14, group="interface")
1862
2003
  evpn: "Evpn" = betterproto.message_field(9)
1863
2004
  mtu: int = betterproto.uint32_field(10)
1864
2005
  virtual: bool = betterproto.bool_field(11)
@@ -1965,6 +2106,15 @@ class VlanTrunkPort(betterproto.Message):
1965
2106
  vids: List[int] = betterproto.uint32_field(2)
1966
2107
 
1967
2108
 
2109
+ @dataclass(eq=False, repr=False)
2110
+ class Veth(betterproto.Message):
2111
+ name_a: str = betterproto.string_field(1)
2112
+ name_b: str = betterproto.string_field(2)
2113
+ """the frontend, NameA, uses the endpoint bridge as the bridge"""
2114
+
2115
+ bridge_b: "BridgeMember" = betterproto.message_field(3)
2116
+
2117
+
1968
2118
  @dataclass(eq=False, repr=False)
1969
2119
  class VlanTapPort(betterproto.Message):
1970
2120
  """A VLAN access port in the form of a TAP device"""
@@ -4806,6 +4956,148 @@ class CommunicationsStub(betterproto.ServiceStub):
4806
4956
  )
4807
4957
 
4808
4958
 
4959
+ class ArtifactStub(betterproto.ServiceStub):
4960
+ async def artifact_list(
4961
+ self,
4962
+ artifact_list_request: "ArtifactListRequest",
4963
+ *,
4964
+ timeout: Optional[float] = None,
4965
+ deadline: Optional["Deadline"] = None,
4966
+ metadata: Optional["MetadataLike"] = None
4967
+ ) -> "ArtifactListResponse":
4968
+ return await self._unary_unary(
4969
+ "/portal.v1.Artifact/ArtifactList",
4970
+ artifact_list_request,
4971
+ ArtifactListResponse,
4972
+ timeout=timeout,
4973
+ deadline=deadline,
4974
+ metadata=metadata,
4975
+ )
4976
+
4977
+ async def artifact_new(
4978
+ self,
4979
+ artifact_put_request_iterator: Union[
4980
+ AsyncIterable[ArtifactPutRequest], Iterable[ArtifactPutRequest]
4981
+ ],
4982
+ *,
4983
+ timeout: Optional[float] = None,
4984
+ deadline: Optional["Deadline"] = None,
4985
+ metadata: Optional["MetadataLike"] = None
4986
+ ) -> "ArtifactPutResponse":
4987
+ return await self._stream_unary(
4988
+ "/portal.v1.Artifact/ArtifactNew",
4989
+ artifact_put_request_iterator,
4990
+ ArtifactPutRequest,
4991
+ ArtifactPutResponse,
4992
+ timeout=timeout,
4993
+ deadline=deadline,
4994
+ metadata=metadata,
4995
+ )
4996
+
4997
+ async def artifact_get(
4998
+ self,
4999
+ artifact_get_request: "ArtifactGetRequest",
5000
+ *,
5001
+ timeout: Optional[float] = None,
5002
+ deadline: Optional["Deadline"] = None,
5003
+ metadata: Optional["MetadataLike"] = None
5004
+ ) -> AsyncIterator[ArtifactGetResponse]:
5005
+ async for response in self._unary_stream(
5006
+ "/portal.v1.Artifact/ArtifactGet",
5007
+ artifact_get_request,
5008
+ ArtifactGetResponse,
5009
+ timeout=timeout,
5010
+ deadline=deadline,
5011
+ metadata=metadata,
5012
+ ):
5013
+ yield response
5014
+
5015
+ async def artifact_update_metadata(
5016
+ self,
5017
+ artifact_put_request: "ArtifactPutRequest",
5018
+ *,
5019
+ timeout: Optional[float] = None,
5020
+ deadline: Optional["Deadline"] = None,
5021
+ metadata: Optional["MetadataLike"] = None
5022
+ ) -> "ArtifactPutResponse":
5023
+ return await self._unary_unary(
5024
+ "/portal.v1.Artifact/ArtifactUpdateMetadata",
5025
+ artifact_put_request,
5026
+ ArtifactPutResponse,
5027
+ timeout=timeout,
5028
+ deadline=deadline,
5029
+ metadata=metadata,
5030
+ )
5031
+
5032
+ async def artifact_delete(
5033
+ self,
5034
+ artifact_del_request: "ArtifactDelRequest",
5035
+ *,
5036
+ timeout: Optional[float] = None,
5037
+ deadline: Optional["Deadline"] = None,
5038
+ metadata: Optional["MetadataLike"] = None
5039
+ ) -> "ArtifactDelResponse":
5040
+ return await self._unary_unary(
5041
+ "/portal.v1.Artifact/ArtifactDelete",
5042
+ artifact_del_request,
5043
+ ArtifactDelResponse,
5044
+ timeout=timeout,
5045
+ deadline=deadline,
5046
+ metadata=metadata,
5047
+ )
5048
+
5049
+ async def artifact_quota_get(
5050
+ self,
5051
+ artifact_quota_get_request: "ArtifactQuotaGetRequest",
5052
+ *,
5053
+ timeout: Optional[float] = None,
5054
+ deadline: Optional["Deadline"] = None,
5055
+ metadata: Optional["MetadataLike"] = None
5056
+ ) -> "ArtifactQuotaGetResponse":
5057
+ return await self._unary_unary(
5058
+ "/portal.v1.Artifact/ArtifactQuotaGet",
5059
+ artifact_quota_get_request,
5060
+ ArtifactQuotaGetResponse,
5061
+ timeout=timeout,
5062
+ deadline=deadline,
5063
+ metadata=metadata,
5064
+ )
5065
+
5066
+ async def artifact_quota_set(
5067
+ self,
5068
+ artifact_quota_set_request: "ArtifactQuotaSetRequest",
5069
+ *,
5070
+ timeout: Optional[float] = None,
5071
+ deadline: Optional["Deadline"] = None,
5072
+ metadata: Optional["MetadataLike"] = None
5073
+ ) -> "ArtifactQuotaSetResponse":
5074
+ return await self._unary_unary(
5075
+ "/portal.v1.Artifact/ArtifactQuotaSet",
5076
+ artifact_quota_set_request,
5077
+ ArtifactQuotaSetResponse,
5078
+ timeout=timeout,
5079
+ deadline=deadline,
5080
+ metadata=metadata,
5081
+ )
5082
+
5083
+ async def artifact_quota_list(
5084
+ self,
5085
+ artifact_quota_list_request: "ArtifactQuotaListRequest",
5086
+ *,
5087
+ timeout: Optional[float] = None,
5088
+ deadline: Optional["Deadline"] = None,
5089
+ metadata: Optional["MetadataLike"] = None
5090
+ ) -> "ArtifactQuotaListResponse":
5091
+ return await self._unary_unary(
5092
+ "/portal.v1.Artifact/ArtifactQuotaList",
5093
+ artifact_quota_list_request,
5094
+ ArtifactQuotaListResponse,
5095
+ timeout=timeout,
5096
+ deadline=deadline,
5097
+ metadata=metadata,
5098
+ )
5099
+
5100
+
4809
5101
  class WorkspaceBase(ServiceBase):
4810
5102
 
4811
5103
  async def activate_user(
@@ -7059,3 +7351,161 @@ class CommunicationsBase(ServiceBase):
7059
7351
  DeleteEMailResponse,
7060
7352
  ),
7061
7353
  }
7354
+
7355
+
7356
+ class ArtifactBase(ServiceBase):
7357
+
7358
+ async def artifact_list(
7359
+ self, artifact_list_request: "ArtifactListRequest"
7360
+ ) -> "ArtifactListResponse":
7361
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7362
+
7363
+ async def artifact_new(
7364
+ self, artifact_put_request_iterator: AsyncIterator[ArtifactPutRequest]
7365
+ ) -> "ArtifactPutResponse":
7366
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7367
+
7368
+ async def artifact_get(
7369
+ self, artifact_get_request: "ArtifactGetRequest"
7370
+ ) -> AsyncIterator[ArtifactGetResponse]:
7371
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7372
+ yield ArtifactGetResponse()
7373
+
7374
+ async def artifact_update_metadata(
7375
+ self, artifact_put_request: "ArtifactPutRequest"
7376
+ ) -> "ArtifactPutResponse":
7377
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7378
+
7379
+ async def artifact_delete(
7380
+ self, artifact_del_request: "ArtifactDelRequest"
7381
+ ) -> "ArtifactDelResponse":
7382
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7383
+
7384
+ async def artifact_quota_get(
7385
+ self, artifact_quota_get_request: "ArtifactQuotaGetRequest"
7386
+ ) -> "ArtifactQuotaGetResponse":
7387
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7388
+
7389
+ async def artifact_quota_set(
7390
+ self, artifact_quota_set_request: "ArtifactQuotaSetRequest"
7391
+ ) -> "ArtifactQuotaSetResponse":
7392
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7393
+
7394
+ async def artifact_quota_list(
7395
+ self, artifact_quota_list_request: "ArtifactQuotaListRequest"
7396
+ ) -> "ArtifactQuotaListResponse":
7397
+ raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
7398
+
7399
+ async def __rpc_artifact_list(
7400
+ self, stream: "grpclib.server.Stream[ArtifactListRequest, ArtifactListResponse]"
7401
+ ) -> None:
7402
+ request = await stream.recv_message()
7403
+ response = await self.artifact_list(request)
7404
+ await stream.send_message(response)
7405
+
7406
+ async def __rpc_artifact_new(
7407
+ self, stream: "grpclib.server.Stream[ArtifactPutRequest, ArtifactPutResponse]"
7408
+ ) -> None:
7409
+ request = stream.__aiter__()
7410
+ response = await self.artifact_new(request)
7411
+ await stream.send_message(response)
7412
+
7413
+ async def __rpc_artifact_get(
7414
+ self, stream: "grpclib.server.Stream[ArtifactGetRequest, ArtifactGetResponse]"
7415
+ ) -> None:
7416
+ request = await stream.recv_message()
7417
+ await self._call_rpc_handler_server_stream(
7418
+ self.artifact_get,
7419
+ stream,
7420
+ request,
7421
+ )
7422
+
7423
+ async def __rpc_artifact_update_metadata(
7424
+ self, stream: "grpclib.server.Stream[ArtifactPutRequest, ArtifactPutResponse]"
7425
+ ) -> None:
7426
+ request = await stream.recv_message()
7427
+ response = await self.artifact_update_metadata(request)
7428
+ await stream.send_message(response)
7429
+
7430
+ async def __rpc_artifact_delete(
7431
+ self, stream: "grpclib.server.Stream[ArtifactDelRequest, ArtifactDelResponse]"
7432
+ ) -> None:
7433
+ request = await stream.recv_message()
7434
+ response = await self.artifact_delete(request)
7435
+ await stream.send_message(response)
7436
+
7437
+ async def __rpc_artifact_quota_get(
7438
+ self,
7439
+ stream: "grpclib.server.Stream[ArtifactQuotaGetRequest, ArtifactQuotaGetResponse]",
7440
+ ) -> None:
7441
+ request = await stream.recv_message()
7442
+ response = await self.artifact_quota_get(request)
7443
+ await stream.send_message(response)
7444
+
7445
+ async def __rpc_artifact_quota_set(
7446
+ self,
7447
+ stream: "grpclib.server.Stream[ArtifactQuotaSetRequest, ArtifactQuotaSetResponse]",
7448
+ ) -> None:
7449
+ request = await stream.recv_message()
7450
+ response = await self.artifact_quota_set(request)
7451
+ await stream.send_message(response)
7452
+
7453
+ async def __rpc_artifact_quota_list(
7454
+ self,
7455
+ stream: "grpclib.server.Stream[ArtifactQuotaListRequest, ArtifactQuotaListResponse]",
7456
+ ) -> None:
7457
+ request = await stream.recv_message()
7458
+ response = await self.artifact_quota_list(request)
7459
+ await stream.send_message(response)
7460
+
7461
+ def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
7462
+ return {
7463
+ "/portal.v1.Artifact/ArtifactList": grpclib.const.Handler(
7464
+ self.__rpc_artifact_list,
7465
+ grpclib.const.Cardinality.UNARY_UNARY,
7466
+ ArtifactListRequest,
7467
+ ArtifactListResponse,
7468
+ ),
7469
+ "/portal.v1.Artifact/ArtifactNew": grpclib.const.Handler(
7470
+ self.__rpc_artifact_new,
7471
+ grpclib.const.Cardinality.STREAM_UNARY,
7472
+ ArtifactPutRequest,
7473
+ ArtifactPutResponse,
7474
+ ),
7475
+ "/portal.v1.Artifact/ArtifactGet": grpclib.const.Handler(
7476
+ self.__rpc_artifact_get,
7477
+ grpclib.const.Cardinality.UNARY_STREAM,
7478
+ ArtifactGetRequest,
7479
+ ArtifactGetResponse,
7480
+ ),
7481
+ "/portal.v1.Artifact/ArtifactUpdateMetadata": grpclib.const.Handler(
7482
+ self.__rpc_artifact_update_metadata,
7483
+ grpclib.const.Cardinality.UNARY_UNARY,
7484
+ ArtifactPutRequest,
7485
+ ArtifactPutResponse,
7486
+ ),
7487
+ "/portal.v1.Artifact/ArtifactDelete": grpclib.const.Handler(
7488
+ self.__rpc_artifact_delete,
7489
+ grpclib.const.Cardinality.UNARY_UNARY,
7490
+ ArtifactDelRequest,
7491
+ ArtifactDelResponse,
7492
+ ),
7493
+ "/portal.v1.Artifact/ArtifactQuotaGet": grpclib.const.Handler(
7494
+ self.__rpc_artifact_quota_get,
7495
+ grpclib.const.Cardinality.UNARY_UNARY,
7496
+ ArtifactQuotaGetRequest,
7497
+ ArtifactQuotaGetResponse,
7498
+ ),
7499
+ "/portal.v1.Artifact/ArtifactQuotaSet": grpclib.const.Handler(
7500
+ self.__rpc_artifact_quota_set,
7501
+ grpclib.const.Cardinality.UNARY_UNARY,
7502
+ ArtifactQuotaSetRequest,
7503
+ ArtifactQuotaSetResponse,
7504
+ ),
7505
+ "/portal.v1.Artifact/ArtifactQuotaList": grpclib.const.Handler(
7506
+ self.__rpc_artifact_quota_list,
7507
+ grpclib.const.Cardinality.UNARY_UNARY,
7508
+ ArtifactQuotaListRequest,
7509
+ ArtifactQuotaListResponse,
7510
+ ),
7511
+ }
@@ -297,6 +297,18 @@ class Role(betterproto.Enum):
297
297
  OpsServer = 29
298
298
 
299
299
 
300
+ class Capability(betterproto.Enum):
301
+ Unknown = 0
302
+ GatewayCapability = 1
303
+ MgmtCapability = 2
304
+ InfranetCapability = 3
305
+ XpnetCapability = 4
306
+ VXLANCapability = 5
307
+ ControllablePowerCapability = 6
308
+ XpImagableCapability = 7
309
+ XpConfigurableCapability = 8
310
+
311
+
300
312
  class LinkRole(betterproto.Enum):
301
313
  LinkRole_Unspecified = 0
302
314
  InfraLink = 1
@@ -364,6 +376,7 @@ class Facility(betterproto.Message):
364
376
  fqdn: str = betterproto.string_field(2)
365
377
  resources: List["Resource"] = betterproto.message_field(3)
366
378
  cables: List["Cable"] = betterproto.message_field(4)
379
+ properties: "FacilityProperties" = betterproto.message_field(5)
367
380
 
368
381
 
369
382
  @dataclass(eq=False, repr=False)
@@ -415,6 +428,7 @@ class Node(betterproto.Message):
415
428
  """Run time and post-publish properties"""
416
429
 
417
430
  host: "StringConstraint" = betterproto.message_field(14)
431
+ tags: "SetConstraint" = betterproto.message_field(15)
418
432
 
419
433
 
420
434
  @dataclass(eq=False, repr=False)
@@ -558,6 +572,8 @@ class Resource(betterproto.Message):
558
572
  infranet_addr: Dict[str, "AddressList"] = betterproto.map_field(
559
573
  18, betterproto.TYPE_STRING, betterproto.TYPE_MESSAGE
560
574
  )
575
+ realization_tags: List[str] = betterproto.string_field(19)
576
+ capabilities: List["Capability"] = betterproto.enum_field(20)
561
577
 
562
578
 
563
579
  @dataclass(eq=False, repr=False)
@@ -815,6 +831,17 @@ class ConnectorSpec(betterproto.Message):
815
831
  capacity: int = betterproto.uint64_field(3)
816
832
 
817
833
 
834
+ @dataclass(eq=False, repr=False)
835
+ class FacilityProperties(betterproto.Message):
836
+ keyvalue: "Properties" = betterproto.message_field(1)
837
+ """generic catch all for future work"""
838
+
839
+ default_tags_constraint: "SetConstraint" = betterproto.message_field(2)
840
+ """
841
+ what the default rlz tag constraint should be when using the facility
842
+ """
843
+
844
+
818
845
  @dataclass(eq=False, repr=False)
819
846
  class Proc(betterproto.Message):
820
847
  isa: "Isa" = betterproto.enum_field(1)
@@ -1030,3 +1057,16 @@ class AddressingConstraint(betterproto.Message):
1030
1057
  class EmulationConstraint(betterproto.Message):
1031
1058
  op: "Operator" = betterproto.enum_field(1)
1032
1059
  value: "Emulation" = betterproto.enum_field(2)
1060
+
1061
+
1062
+ @dataclass(eq=False, repr=False)
1063
+ class SetConstraint(betterproto.Message):
1064
+ """
1065
+ ==: Exactly match everything (contains_exact)
1066
+ !=: Cannot contain anything listed (contacts_none)
1067
+ >=: The resource has at least these tags (contains_all)
1068
+ <=: The resource has at least one of these tags (contains_any)
1069
+ """
1070
+
1071
+ op: "Operator" = betterproto.enum_field(1)
1072
+ value: List[str] = betterproto.string_field(2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mergetbapi
3
- Version: 1.3.20
3
+ Version: 1.3.22
4
4
  Summary: Client interface to the MergeTB API
5
5
  Home-page: https://gitlab.com/mergetb/api
6
6
  Author: Brian Kocoloski
File without changes
File without changes
File without changes
File without changes