metalstack.cloud 0.15.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. buf/__init__.py +0 -0
  2. buf/validate/__init__.py +0 -0
  3. buf/validate/validate_pb2.py +450 -0
  4. buf/validate/validate_pb2.pyi +631 -0
  5. buf/validate/validate_pb2_grpc.py +4 -0
  6. metalstack_cloud-0.15.2.dist-info/METADATA +26 -0
  7. metalstack_cloud-0.15.2.dist-info/RECORD +111 -0
  8. metalstack_cloud-0.15.2.dist-info/WHEEL +5 -0
  9. metalstack_cloud-0.15.2.dist-info/top_level.txt +2 -0
  10. metalstackcloud/__init__.py +0 -0
  11. metalstackcloud/admin/__init__.py +0 -0
  12. metalstackcloud/admin/v1/__init__.py +0 -0
  13. metalstackcloud/admin/v1/cluster_connecpy.py +214 -0
  14. metalstackcloud/admin/v1/cluster_pb2.py +70 -0
  15. metalstackcloud/admin/v1/cluster_pb2.pyi +93 -0
  16. metalstackcloud/admin/v1/cluster_pb2_grpc.py +169 -0
  17. metalstackcloud/admin/v1/machine_pb2.py +42 -0
  18. metalstackcloud/admin/v1/machine_pb2.pyi +76 -0
  19. metalstackcloud/admin/v1/machine_pb2_grpc.py +4 -0
  20. metalstackcloud/admin/v1/payment_connecpy.py +158 -0
  21. metalstackcloud/admin/v1/payment_pb2.py +51 -0
  22. metalstackcloud/admin/v1/payment_pb2.pyi +33 -0
  23. metalstackcloud/admin/v1/payment_pb2_grpc.py +125 -0
  24. metalstackcloud/admin/v1/project_connecpy.py +102 -0
  25. metalstackcloud/admin/v1/project_pb2.py +49 -0
  26. metalstackcloud/admin/v1/project_pb2.pyi +34 -0
  27. metalstackcloud/admin/v1/project_pb2_grpc.py +81 -0
  28. metalstackcloud/admin/v1/storage_connecpy.py +214 -0
  29. metalstackcloud/admin/v1/storage_pb2.py +75 -0
  30. metalstackcloud/admin/v1/storage_pb2.pyi +149 -0
  31. metalstackcloud/admin/v1/storage_pb2_grpc.py +169 -0
  32. metalstackcloud/admin/v1/tenant_connecpy.py +270 -0
  33. metalstackcloud/admin/v1/tenant_pb2.py +66 -0
  34. metalstackcloud/admin/v1/tenant_pb2.pyi +72 -0
  35. metalstackcloud/admin/v1/tenant_pb2_grpc.py +213 -0
  36. metalstackcloud/admin/v1/token_connecpy.py +158 -0
  37. metalstackcloud/admin/v1/token_pb2.py +56 -0
  38. metalstackcloud/admin/v1/token_pb2.pyi +34 -0
  39. metalstackcloud/admin/v1/token_pb2_grpc.py +125 -0
  40. metalstackcloud/api/__init__.py +0 -0
  41. metalstackcloud/api/v1/__init__.py +0 -0
  42. metalstackcloud/api/v1/asset_connecpy.py +102 -0
  43. metalstackcloud/api/v1/asset_pb2.py +76 -0
  44. metalstackcloud/api/v1/asset_pb2.pyi +132 -0
  45. metalstackcloud/api/v1/asset_pb2_grpc.py +81 -0
  46. metalstackcloud/api/v1/audit_connecpy.py +158 -0
  47. metalstackcloud/api/v1/audit_pb2.py +84 -0
  48. metalstackcloud/api/v1/audit_pb2.pyi +95 -0
  49. metalstackcloud/api/v1/audit_pb2_grpc.py +125 -0
  50. metalstackcloud/api/v1/cluster_connecpy.py +494 -0
  51. metalstackcloud/api/v1/cluster_pb2.py +183 -0
  52. metalstackcloud/api/v1/cluster_pb2.pyi +311 -0
  53. metalstackcloud/api/v1/cluster_pb2_grpc.py +389 -0
  54. metalstackcloud/api/v1/common_pb2.py +52 -0
  55. metalstackcloud/api/v1/common_pb2.pyi +98 -0
  56. metalstackcloud/api/v1/common_pb2_grpc.py +4 -0
  57. metalstackcloud/api/v1/health_connecpy.py +102 -0
  58. metalstackcloud/api/v1/health_pb2.py +58 -0
  59. metalstackcloud/api/v1/health_pb2.pyi +74 -0
  60. metalstackcloud/api/v1/health_pb2_grpc.py +81 -0
  61. metalstackcloud/api/v1/ip_connecpy.py +326 -0
  62. metalstackcloud/api/v1/ip_pb2.py +110 -0
  63. metalstackcloud/api/v1/ip_pb2.pyi +122 -0
  64. metalstackcloud/api/v1/ip_pb2_grpc.py +257 -0
  65. metalstackcloud/api/v1/method_connecpy.py +158 -0
  66. metalstackcloud/api/v1/method_pb2.py +62 -0
  67. metalstackcloud/api/v1/method_pb2.pyi +50 -0
  68. metalstackcloud/api/v1/method_pb2_grpc.py +128 -0
  69. metalstackcloud/api/v1/payment_connecpy.py +550 -0
  70. metalstackcloud/api/v1/payment_pb2.py +134 -0
  71. metalstackcloud/api/v1/payment_pb2.pyi +291 -0
  72. metalstackcloud/api/v1/payment_pb2_grpc.py +433 -0
  73. metalstackcloud/api/v1/project_connecpy.py +718 -0
  74. metalstackcloud/api/v1/project_pb2.py +156 -0
  75. metalstackcloud/api/v1/project_pb2.pyi +234 -0
  76. metalstackcloud/api/v1/project_pb2_grpc.py +565 -0
  77. metalstackcloud/api/v1/snapshot_connecpy.py +214 -0
  78. metalstackcloud/api/v1/snapshot_pb2.py +75 -0
  79. metalstackcloud/api/v1/snapshot_pb2.pyi +109 -0
  80. metalstackcloud/api/v1/snapshot_pb2_grpc.py +169 -0
  81. metalstackcloud/api/v1/tenant_connecpy.py +774 -0
  82. metalstackcloud/api/v1/tenant_pb2.py +159 -0
  83. metalstackcloud/api/v1/tenant_pb2.pyi +305 -0
  84. metalstackcloud/api/v1/tenant_pb2_grpc.py +609 -0
  85. metalstackcloud/api/v1/token_connecpy.py +326 -0
  86. metalstackcloud/api/v1/token_pb2.py +131 -0
  87. metalstackcloud/api/v1/token_pb2.pyi +175 -0
  88. metalstackcloud/api/v1/token_pb2_grpc.py +257 -0
  89. metalstackcloud/api/v1/user_connecpy.py +102 -0
  90. metalstackcloud/api/v1/user_pb2.py +48 -0
  91. metalstackcloud/api/v1/user_pb2.pyi +42 -0
  92. metalstackcloud/api/v1/user_pb2_grpc.py +81 -0
  93. metalstackcloud/api/v1/version_connecpy.py +102 -0
  94. metalstackcloud/api/v1/version_pb2.py +46 -0
  95. metalstackcloud/api/v1/version_pb2.pyi +29 -0
  96. metalstackcloud/api/v1/version_pb2_grpc.py +81 -0
  97. metalstackcloud/api/v1/volume_connecpy.py +270 -0
  98. metalstackcloud/api/v1/volume_pb2.py +91 -0
  99. metalstackcloud/api/v1/volume_pb2.pyi +165 -0
  100. metalstackcloud/api/v1/volume_pb2_grpc.py +213 -0
  101. metalstackcloud/client.py +139 -0
  102. metalstackcloud/status/__init__.py +0 -0
  103. metalstackcloud/status/v1/__init__.py +0 -0
  104. metalstackcloud/status/v1/message_connecpy.py +102 -0
  105. metalstackcloud/status/v1/message_pb2.py +51 -0
  106. metalstackcloud/status/v1/message_pb2.pyi +65 -0
  107. metalstackcloud/status/v1/message_pb2_grpc.py +84 -0
  108. metalstackcloud/status/v1/status_connecpy.py +102 -0
  109. metalstackcloud/status/v1/status_pb2.py +45 -0
  110. metalstackcloud/status/v1/status_pb2.pyi +24 -0
  111. metalstackcloud/status/v1/status_pb2_grpc.py +84 -0
@@ -0,0 +1,149 @@
1
+ from api.v1 import common_pb2 as _common_pb2
2
+ from api.v1 import snapshot_pb2 as _snapshot_pb2
3
+ from api.v1 import volume_pb2 as _volume_pb2
4
+ from buf.validate import validate_pb2 as _validate_pb2
5
+ from google.protobuf.internal import containers as _containers
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import message as _message
8
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
9
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
10
+
11
+ DESCRIPTOR: _descriptor.FileDescriptor
12
+
13
+ class StorageServiceClusterInfoRequest(_message.Message):
14
+ __slots__ = ("partition",)
15
+ PARTITION_FIELD_NUMBER: _ClassVar[int]
16
+ partition: str
17
+ def __init__(self, partition: _Optional[str] = ...) -> None: ...
18
+
19
+ class StorageServiceClusterInfoResponse(_message.Message):
20
+ __slots__ = ("infos",)
21
+ INFOS_FIELD_NUMBER: _ClassVar[int]
22
+ infos: _containers.RepeatedCompositeFieldContainer[StorageClusterInfo]
23
+ def __init__(self, infos: _Optional[_Iterable[_Union[StorageClusterInfo, _Mapping]]] = ...) -> None: ...
24
+
25
+ class StorageClusterInfo(_message.Message):
26
+ __slots__ = ("partition", "uuid", "subsystem_nqn", "current_max_replicas", "supported_max_replicas", "statistics", "health", "min_version_in_cluster", "min_allowed_version", "max_allowed_version", "api_endpoints", "discovery_endpoints", "servers")
27
+ PARTITION_FIELD_NUMBER: _ClassVar[int]
28
+ UUID_FIELD_NUMBER: _ClassVar[int]
29
+ SUBSYSTEM_NQN_FIELD_NUMBER: _ClassVar[int]
30
+ CURRENT_MAX_REPLICAS_FIELD_NUMBER: _ClassVar[int]
31
+ SUPPORTED_MAX_REPLICAS_FIELD_NUMBER: _ClassVar[int]
32
+ STATISTICS_FIELD_NUMBER: _ClassVar[int]
33
+ HEALTH_FIELD_NUMBER: _ClassVar[int]
34
+ MIN_VERSION_IN_CLUSTER_FIELD_NUMBER: _ClassVar[int]
35
+ MIN_ALLOWED_VERSION_FIELD_NUMBER: _ClassVar[int]
36
+ MAX_ALLOWED_VERSION_FIELD_NUMBER: _ClassVar[int]
37
+ API_ENDPOINTS_FIELD_NUMBER: _ClassVar[int]
38
+ DISCOVERY_ENDPOINTS_FIELD_NUMBER: _ClassVar[int]
39
+ SERVERS_FIELD_NUMBER: _ClassVar[int]
40
+ partition: str
41
+ uuid: str
42
+ subsystem_nqn: str
43
+ current_max_replicas: int
44
+ supported_max_replicas: int
45
+ statistics: ClusterStatisticsApi
46
+ health: ClusterHealth
47
+ min_version_in_cluster: str
48
+ min_allowed_version: str
49
+ max_allowed_version: str
50
+ api_endpoints: _containers.RepeatedScalarFieldContainer[str]
51
+ discovery_endpoints: _containers.RepeatedScalarFieldContainer[str]
52
+ servers: _containers.RepeatedCompositeFieldContainer[StorageServerInfo]
53
+ def __init__(self, partition: _Optional[str] = ..., uuid: _Optional[str] = ..., subsystem_nqn: _Optional[str] = ..., current_max_replicas: _Optional[int] = ..., supported_max_replicas: _Optional[int] = ..., statistics: _Optional[_Union[ClusterStatisticsApi, _Mapping]] = ..., health: _Optional[_Union[ClusterHealth, _Mapping]] = ..., min_version_in_cluster: _Optional[str] = ..., min_allowed_version: _Optional[str] = ..., max_allowed_version: _Optional[str] = ..., api_endpoints: _Optional[_Iterable[str]] = ..., discovery_endpoints: _Optional[_Iterable[str]] = ..., servers: _Optional[_Iterable[_Union[StorageServerInfo, _Mapping]]] = ...) -> None: ...
54
+
55
+ class StorageServerInfo(_message.Message):
56
+ __slots__ = ("uuid", "name", "risk_of_service_loss_state", "state", "server_endpoints", "light_os_version")
57
+ UUID_FIELD_NUMBER: _ClassVar[int]
58
+ NAME_FIELD_NUMBER: _ClassVar[int]
59
+ RISK_OF_SERVICE_LOSS_STATE_FIELD_NUMBER: _ClassVar[int]
60
+ STATE_FIELD_NUMBER: _ClassVar[int]
61
+ SERVER_ENDPOINTS_FIELD_NUMBER: _ClassVar[int]
62
+ LIGHT_OS_VERSION_FIELD_NUMBER: _ClassVar[int]
63
+ uuid: str
64
+ name: str
65
+ risk_of_service_loss_state: str
66
+ state: str
67
+ server_endpoints: _containers.RepeatedScalarFieldContainer[str]
68
+ light_os_version: str
69
+ def __init__(self, uuid: _Optional[str] = ..., name: _Optional[str] = ..., risk_of_service_loss_state: _Optional[str] = ..., state: _Optional[str] = ..., server_endpoints: _Optional[_Iterable[str]] = ..., light_os_version: _Optional[str] = ...) -> None: ...
70
+
71
+ class ClusterHealth(_message.Message):
72
+ __slots__ = ("state", "num_degraded_volumes", "num_read_only_volumes", "num_not_available_volumes", "num_inactive_nodes")
73
+ STATE_FIELD_NUMBER: _ClassVar[int]
74
+ NUM_DEGRADED_VOLUMES_FIELD_NUMBER: _ClassVar[int]
75
+ NUM_READ_ONLY_VOLUMES_FIELD_NUMBER: _ClassVar[int]
76
+ NUM_NOT_AVAILABLE_VOLUMES_FIELD_NUMBER: _ClassVar[int]
77
+ NUM_INACTIVE_NODES_FIELD_NUMBER: _ClassVar[int]
78
+ state: str
79
+ num_degraded_volumes: int
80
+ num_read_only_volumes: int
81
+ num_not_available_volumes: int
82
+ num_inactive_nodes: int
83
+ def __init__(self, state: _Optional[str] = ..., num_degraded_volumes: _Optional[int] = ..., num_read_only_volumes: _Optional[int] = ..., num_not_available_volumes: _Optional[int] = ..., num_inactive_nodes: _Optional[int] = ...) -> None: ...
84
+
85
+ class ClusterStatisticsApi(_message.Message):
86
+ __slots__ = ("installed_physical_storage", "managed_physical_storage", "effective_physical_storage", "logical_storage", "logical_used_storage", "physical_used_storage", "physical_used_storage_including_parity", "free_physical_storage", "estimated_free_logical_storage", "estimated_logical_storage", "compression_ratio")
87
+ INSTALLED_PHYSICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
88
+ MANAGED_PHYSICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
89
+ EFFECTIVE_PHYSICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
90
+ LOGICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
91
+ LOGICAL_USED_STORAGE_FIELD_NUMBER: _ClassVar[int]
92
+ PHYSICAL_USED_STORAGE_FIELD_NUMBER: _ClassVar[int]
93
+ PHYSICAL_USED_STORAGE_INCLUDING_PARITY_FIELD_NUMBER: _ClassVar[int]
94
+ FREE_PHYSICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
95
+ ESTIMATED_FREE_LOGICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
96
+ ESTIMATED_LOGICAL_STORAGE_FIELD_NUMBER: _ClassVar[int]
97
+ COMPRESSION_RATIO_FIELD_NUMBER: _ClassVar[int]
98
+ installed_physical_storage: int
99
+ managed_physical_storage: int
100
+ effective_physical_storage: int
101
+ logical_storage: int
102
+ logical_used_storage: int
103
+ physical_used_storage: int
104
+ physical_used_storage_including_parity: int
105
+ free_physical_storage: int
106
+ estimated_free_logical_storage: int
107
+ estimated_logical_storage: int
108
+ compression_ratio: float
109
+ def __init__(self, installed_physical_storage: _Optional[int] = ..., managed_physical_storage: _Optional[int] = ..., effective_physical_storage: _Optional[int] = ..., logical_storage: _Optional[int] = ..., logical_used_storage: _Optional[int] = ..., physical_used_storage: _Optional[int] = ..., physical_used_storage_including_parity: _Optional[int] = ..., free_physical_storage: _Optional[int] = ..., estimated_free_logical_storage: _Optional[int] = ..., estimated_logical_storage: _Optional[int] = ..., compression_ratio: _Optional[float] = ...) -> None: ...
110
+
111
+ class StorageServiceListVolumesRequest(_message.Message):
112
+ __slots__ = ("uuid", "project", "partition", "name", "tenant")
113
+ UUID_FIELD_NUMBER: _ClassVar[int]
114
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
115
+ PARTITION_FIELD_NUMBER: _ClassVar[int]
116
+ NAME_FIELD_NUMBER: _ClassVar[int]
117
+ TENANT_FIELD_NUMBER: _ClassVar[int]
118
+ uuid: str
119
+ project: str
120
+ partition: str
121
+ name: str
122
+ tenant: str
123
+ def __init__(self, uuid: _Optional[str] = ..., project: _Optional[str] = ..., partition: _Optional[str] = ..., name: _Optional[str] = ..., tenant: _Optional[str] = ...) -> None: ...
124
+
125
+ class StorageServiceListVolumesResponse(_message.Message):
126
+ __slots__ = ("volumes",)
127
+ VOLUMES_FIELD_NUMBER: _ClassVar[int]
128
+ volumes: _containers.RepeatedCompositeFieldContainer[_volume_pb2.Volume]
129
+ def __init__(self, volumes: _Optional[_Iterable[_Union[_volume_pb2.Volume, _Mapping]]] = ...) -> None: ...
130
+
131
+ class StorageServiceListSnapshotsRequest(_message.Message):
132
+ __slots__ = ("uuid", "project", "partition", "name", "tenant")
133
+ UUID_FIELD_NUMBER: _ClassVar[int]
134
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
135
+ PARTITION_FIELD_NUMBER: _ClassVar[int]
136
+ NAME_FIELD_NUMBER: _ClassVar[int]
137
+ TENANT_FIELD_NUMBER: _ClassVar[int]
138
+ uuid: str
139
+ project: str
140
+ partition: str
141
+ name: str
142
+ tenant: str
143
+ def __init__(self, uuid: _Optional[str] = ..., project: _Optional[str] = ..., partition: _Optional[str] = ..., name: _Optional[str] = ..., tenant: _Optional[str] = ...) -> None: ...
144
+
145
+ class StorageServiceListSnapshotsResponse(_message.Message):
146
+ __slots__ = ("snapshots",)
147
+ SNAPSHOTS_FIELD_NUMBER: _ClassVar[int]
148
+ snapshots: _containers.RepeatedCompositeFieldContainer[_snapshot_pb2.Snapshot]
149
+ def __init__(self, snapshots: _Optional[_Iterable[_Union[_snapshot_pb2.Snapshot, _Mapping]]] = ...) -> None: ...
@@ -0,0 +1,169 @@
1
+ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
2
+ """Client and server classes corresponding to protobuf-defined services."""
3
+ import grpc
4
+
5
+ from metalstackcloud.admin.v1 import storage_pb2 as admin_dot_v1_dot_storage__pb2
6
+
7
+
8
+ class StorageServiceStub(object):
9
+ """StorageService serves storage related functions
10
+ """
11
+
12
+ def __init__(self, channel):
13
+ """Constructor.
14
+
15
+ Args:
16
+ channel: A grpc.Channel.
17
+ """
18
+ self.ClusterInfo = channel.unary_unary(
19
+ '/admin.v1.StorageService/ClusterInfo',
20
+ request_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoRequest.SerializeToString,
21
+ response_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoResponse.FromString,
22
+ _registered_method=True)
23
+ self.ListVolumes = channel.unary_unary(
24
+ '/admin.v1.StorageService/ListVolumes',
25
+ request_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesRequest.SerializeToString,
26
+ response_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesResponse.FromString,
27
+ _registered_method=True)
28
+ self.ListSnapshots = channel.unary_unary(
29
+ '/admin.v1.StorageService/ListSnapshots',
30
+ request_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsRequest.SerializeToString,
31
+ response_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsResponse.FromString,
32
+ _registered_method=True)
33
+
34
+
35
+ class StorageServiceServicer(object):
36
+ """StorageService serves storage related functions
37
+ """
38
+
39
+ def ClusterInfo(self, request, context):
40
+ """ClusterInfo returns overall statistics of the storage system
41
+ """
42
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
43
+ context.set_details('Method not implemented!')
44
+ raise NotImplementedError('Method not implemented!')
45
+
46
+ def ListVolumes(self, request, context):
47
+ """ListVolumes list all volumes
48
+ """
49
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
50
+ context.set_details('Method not implemented!')
51
+ raise NotImplementedError('Method not implemented!')
52
+
53
+ def ListSnapshots(self, request, context):
54
+ """ListSnapshots list all snapshots
55
+ """
56
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
57
+ context.set_details('Method not implemented!')
58
+ raise NotImplementedError('Method not implemented!')
59
+
60
+
61
+ def add_StorageServiceServicer_to_server(servicer, server):
62
+ rpc_method_handlers = {
63
+ 'ClusterInfo': grpc.unary_unary_rpc_method_handler(
64
+ servicer.ClusterInfo,
65
+ request_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoRequest.FromString,
66
+ response_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoResponse.SerializeToString,
67
+ ),
68
+ 'ListVolumes': grpc.unary_unary_rpc_method_handler(
69
+ servicer.ListVolumes,
70
+ request_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesRequest.FromString,
71
+ response_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesResponse.SerializeToString,
72
+ ),
73
+ 'ListSnapshots': grpc.unary_unary_rpc_method_handler(
74
+ servicer.ListSnapshots,
75
+ request_deserializer=admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsRequest.FromString,
76
+ response_serializer=admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsResponse.SerializeToString,
77
+ ),
78
+ }
79
+ generic_handler = grpc.method_handlers_generic_handler(
80
+ 'admin.v1.StorageService', rpc_method_handlers)
81
+ server.add_generic_rpc_handlers((generic_handler,))
82
+ server.add_registered_method_handlers('admin.v1.StorageService', rpc_method_handlers)
83
+
84
+
85
+ # This class is part of an EXPERIMENTAL API.
86
+ class StorageService(object):
87
+ """StorageService serves storage related functions
88
+ """
89
+
90
+ @staticmethod
91
+ def ClusterInfo(request,
92
+ target,
93
+ options=(),
94
+ channel_credentials=None,
95
+ call_credentials=None,
96
+ insecure=False,
97
+ compression=None,
98
+ wait_for_ready=None,
99
+ timeout=None,
100
+ metadata=None):
101
+ return grpc.experimental.unary_unary(
102
+ request,
103
+ target,
104
+ '/admin.v1.StorageService/ClusterInfo',
105
+ admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoRequest.SerializeToString,
106
+ admin_dot_v1_dot_storage__pb2.StorageServiceClusterInfoResponse.FromString,
107
+ options,
108
+ channel_credentials,
109
+ insecure,
110
+ call_credentials,
111
+ compression,
112
+ wait_for_ready,
113
+ timeout,
114
+ metadata,
115
+ _registered_method=True)
116
+
117
+ @staticmethod
118
+ def ListVolumes(request,
119
+ target,
120
+ options=(),
121
+ channel_credentials=None,
122
+ call_credentials=None,
123
+ insecure=False,
124
+ compression=None,
125
+ wait_for_ready=None,
126
+ timeout=None,
127
+ metadata=None):
128
+ return grpc.experimental.unary_unary(
129
+ request,
130
+ target,
131
+ '/admin.v1.StorageService/ListVolumes',
132
+ admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesRequest.SerializeToString,
133
+ admin_dot_v1_dot_storage__pb2.StorageServiceListVolumesResponse.FromString,
134
+ options,
135
+ channel_credentials,
136
+ insecure,
137
+ call_credentials,
138
+ compression,
139
+ wait_for_ready,
140
+ timeout,
141
+ metadata,
142
+ _registered_method=True)
143
+
144
+ @staticmethod
145
+ def ListSnapshots(request,
146
+ target,
147
+ options=(),
148
+ channel_credentials=None,
149
+ call_credentials=None,
150
+ insecure=False,
151
+ compression=None,
152
+ wait_for_ready=None,
153
+ timeout=None,
154
+ metadata=None):
155
+ return grpc.experimental.unary_unary(
156
+ request,
157
+ target,
158
+ '/admin.v1.StorageService/ListSnapshots',
159
+ admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsRequest.SerializeToString,
160
+ admin_dot_v1_dot_storage__pb2.StorageServiceListSnapshotsResponse.FromString,
161
+ options,
162
+ channel_credentials,
163
+ insecure,
164
+ call_credentials,
165
+ compression,
166
+ wait_for_ready,
167
+ timeout,
168
+ metadata,
169
+ _registered_method=True)
@@ -0,0 +1,270 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/i2y/connecpy/protoc-gen-connecpy. DO NOT EDIT!
3
+ # source: admin/v1/tenant.proto
4
+
5
+ from typing import Optional, Protocol, Union
6
+
7
+ import httpx
8
+
9
+ from connecpy.async_client import AsyncConnecpyClient
10
+ from connecpy.base import Endpoint
11
+ from connecpy.server import ConnecpyServer
12
+ from connecpy.client import ConnecpyClient
13
+ from connecpy.context import ClientContext, ServiceContext
14
+ import metalstackcloud.admin.v1.tenant_pb2 as admin_dot_v1_dot_tenant__pb2
15
+
16
+
17
+ class TenantService(Protocol):
18
+ async def List(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse: ...
19
+ async def Admit(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse: ...
20
+ async def Revoke(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse: ...
21
+ async def AddMember(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse: ...
22
+
23
+
24
+ class TenantServiceServer(ConnecpyServer):
25
+ def __init__(self, *, service: TenantService, server_path_prefix=""):
26
+ super().__init__()
27
+ self._prefix = f"{server_path_prefix}/admin.v1.TenantService"
28
+ self._endpoints = {
29
+ "List": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse](
30
+ service_name="TenantService",
31
+ name="List",
32
+ function=getattr(service, "List"),
33
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest,
34
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse,
35
+ allowed_methods=("POST",),
36
+ ),
37
+ "Admit": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse](
38
+ service_name="TenantService",
39
+ name="Admit",
40
+ function=getattr(service, "Admit"),
41
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest,
42
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse,
43
+ allowed_methods=("POST",),
44
+ ),
45
+ "Revoke": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse](
46
+ service_name="TenantService",
47
+ name="Revoke",
48
+ function=getattr(service, "Revoke"),
49
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest,
50
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse,
51
+ allowed_methods=("POST",),
52
+ ),
53
+ "AddMember": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse](
54
+ service_name="TenantService",
55
+ name="AddMember",
56
+ function=getattr(service, "AddMember"),
57
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest,
58
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse,
59
+ allowed_methods=("POST",),
60
+ ),
61
+ }
62
+
63
+ def serviceName(self):
64
+ return "admin.v1.TenantService"
65
+
66
+
67
+ class TenantServiceSync(Protocol):
68
+ def List(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse: ...
69
+ def Admit(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse: ...
70
+ def Revoke(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse: ...
71
+ def AddMember(self, req: admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest, ctx: ServiceContext) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse: ...
72
+
73
+
74
+ class TenantServiceServerSync(ConnecpyServer):
75
+ def __init__(self, *, service: TenantServiceSync, server_path_prefix=""):
76
+ super().__init__()
77
+ self._prefix = f"{server_path_prefix}/admin.v1.TenantService"
78
+ self._endpoints = {
79
+ "List": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse](
80
+ service_name="TenantService",
81
+ name="List",
82
+ function=getattr(service, "List"),
83
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest,
84
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse,
85
+ allowed_methods=("POST",),
86
+ ),
87
+ "Admit": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse](
88
+ service_name="TenantService",
89
+ name="Admit",
90
+ function=getattr(service, "Admit"),
91
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest,
92
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse,
93
+ allowed_methods=("POST",),
94
+ ),
95
+ "Revoke": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse](
96
+ service_name="TenantService",
97
+ name="Revoke",
98
+ function=getattr(service, "Revoke"),
99
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest,
100
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse,
101
+ allowed_methods=("POST",),
102
+ ),
103
+ "AddMember": Endpoint[admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest, admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse](
104
+ service_name="TenantService",
105
+ name="AddMember",
106
+ function=getattr(service, "AddMember"),
107
+ input=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest,
108
+ output=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse,
109
+ allowed_methods=("POST",),
110
+ ),
111
+ }
112
+
113
+ def serviceName(self):
114
+ return "admin.v1.TenantService"
115
+
116
+
117
+ class TenantServiceClient(ConnecpyClient):
118
+ def List(
119
+ self,
120
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest,
121
+ *,
122
+ ctx: Optional[ClientContext] = None,
123
+ server_path_prefix: str = "",
124
+ **kwargs,
125
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse:
126
+ method = "POST"
127
+ return self._make_request(
128
+ url=f"{server_path_prefix}/admin.v1.TenantService/List",
129
+ ctx=ctx,
130
+ request=request,
131
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse,
132
+ method=method,
133
+ **kwargs,
134
+ )
135
+
136
+ def Admit(
137
+ self,
138
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest,
139
+ *,
140
+ ctx: Optional[ClientContext] = None,
141
+ server_path_prefix: str = "",
142
+ **kwargs,
143
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse:
144
+ method = "POST"
145
+ return self._make_request(
146
+ url=f"{server_path_prefix}/admin.v1.TenantService/Admit",
147
+ ctx=ctx,
148
+ request=request,
149
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse,
150
+ method=method,
151
+ **kwargs,
152
+ )
153
+
154
+ def Revoke(
155
+ self,
156
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest,
157
+ *,
158
+ ctx: Optional[ClientContext] = None,
159
+ server_path_prefix: str = "",
160
+ **kwargs,
161
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse:
162
+ method = "POST"
163
+ return self._make_request(
164
+ url=f"{server_path_prefix}/admin.v1.TenantService/Revoke",
165
+ ctx=ctx,
166
+ request=request,
167
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse,
168
+ method=method,
169
+ **kwargs,
170
+ )
171
+
172
+ def AddMember(
173
+ self,
174
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest,
175
+ *,
176
+ ctx: Optional[ClientContext] = None,
177
+ server_path_prefix: str = "",
178
+ **kwargs,
179
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse:
180
+ method = "POST"
181
+ return self._make_request(
182
+ url=f"{server_path_prefix}/admin.v1.TenantService/AddMember",
183
+ ctx=ctx,
184
+ request=request,
185
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse,
186
+ method=method,
187
+ **kwargs,
188
+ )
189
+
190
+
191
+ class AsyncTenantServiceClient(AsyncConnecpyClient):
192
+ async def List(
193
+ self,
194
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceListRequest,
195
+ *,
196
+ ctx: Optional[ClientContext] = None,
197
+ server_path_prefix: str = "",
198
+ session: Union[httpx.AsyncClient, None] = None,
199
+ **kwargs,
200
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse:
201
+ method = "POST"
202
+ return await self._make_request(
203
+ url=f"{server_path_prefix}/admin.v1.TenantService/List",
204
+ ctx=ctx,
205
+ request=request,
206
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceListResponse,
207
+ method=method,
208
+ session=session,
209
+ **kwargs,
210
+ )
211
+
212
+ async def Admit(
213
+ self,
214
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitRequest,
215
+ *,
216
+ ctx: Optional[ClientContext] = None,
217
+ server_path_prefix: str = "",
218
+ session: Union[httpx.AsyncClient, None] = None,
219
+ **kwargs,
220
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse:
221
+ method = "POST"
222
+ return await self._make_request(
223
+ url=f"{server_path_prefix}/admin.v1.TenantService/Admit",
224
+ ctx=ctx,
225
+ request=request,
226
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceAdmitResponse,
227
+ method=method,
228
+ session=session,
229
+ **kwargs,
230
+ )
231
+
232
+ async def Revoke(
233
+ self,
234
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeRequest,
235
+ *,
236
+ ctx: Optional[ClientContext] = None,
237
+ server_path_prefix: str = "",
238
+ session: Union[httpx.AsyncClient, None] = None,
239
+ **kwargs,
240
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse:
241
+ method = "POST"
242
+ return await self._make_request(
243
+ url=f"{server_path_prefix}/admin.v1.TenantService/Revoke",
244
+ ctx=ctx,
245
+ request=request,
246
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceRevokeResponse,
247
+ method=method,
248
+ session=session,
249
+ **kwargs,
250
+ )
251
+
252
+ async def AddMember(
253
+ self,
254
+ request: admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberRequest,
255
+ *,
256
+ ctx: Optional[ClientContext] = None,
257
+ server_path_prefix: str = "",
258
+ session: Union[httpx.AsyncClient, None] = None,
259
+ **kwargs,
260
+ ) -> admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse:
261
+ method = "POST"
262
+ return await self._make_request(
263
+ url=f"{server_path_prefix}/admin.v1.TenantService/AddMember",
264
+ ctx=ctx,
265
+ request=request,
266
+ response_class=admin_dot_v1_dot_tenant__pb2.TenantServiceAddMemberResponse,
267
+ method=method,
268
+ session=session,
269
+ **kwargs,
270
+ )
@@ -0,0 +1,66 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: admin/v1/tenant.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'admin/v1/tenant.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from metalstackcloud.api.v1 import common_pb2 as api_dot_v1_dot_common__pb2
26
+ from metalstackcloud.api.v1 import tenant_pb2 as api_dot_v1_dot_tenant__pb2
27
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
28
+
29
+
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x61\x64min/v1/tenant.proto\x12\x08\x61\x64min.v1\x1a\x13\x61pi/v1/common.proto\x1a\x13\x61pi/v1/tenant.proto\x1a\x1b\x62uf/validate/validate.proto\"\xe5\x02\n\x18TenantServiceListRequest\x12\x1b\n\x06tenant\x18\t \x01(\tH\x00R\x06tenant\x88\x01\x01\x12\x17\n\x04name\x18\x02 \x01(\tH\x01R\x04name\x88\x01\x01\x12\x19\n\x05\x65mail\x18\x03 \x01(\tH\x02R\x05\x65mail\x88\x01\x01\x12\x41\n\x0eoauth_provider\x18\x05 \x01(\x0e\x32\x15.api.v1.OAuthProviderH\x03R\roauthProvider\x88\x01\x01\x12\x1f\n\x08\x61\x64mitted\x18\x06 \x01(\x08H\x04R\x08\x61\x64mitted\x88\x01\x01\x12&\n\x06paging\x18\x07 \x01(\x0b\x32\x0e.api.v1.PagingR\x06pagingB\t\n\x07_tenantB\x07\n\x05_nameB\x08\n\x06_emailB\x11\n\x0f_oauth_providerB\x0b\n\t_admittedJ\x04\x08\x01\x10\x02J\x04\x08\x04\x10\x05J\x04\x08\x08\x10\tR\x05loginR\x0forganisation_idR\x04uuid\"u\n\x19TenantServiceListResponse\x12(\n\x07tenants\x18\x01 \x03(\x0b\x32\x0e.api.v1.TenantR\x07tenants\x12 \n\tnext_page\x18\x02 \x01(\x04H\x00R\x08nextPage\x88\x01\x01\x42\x0c\n\n_next_page\"8\n\x19TenantServiceAdmitRequest\x12\x1b\n\ttenant_id\x18\x01 \x01(\tR\x08tenantId\"D\n\x1aTenantServiceAdmitResponse\x12&\n\x06tenant\x18\x01 \x01(\x0b\x32\x0e.api.v1.TenantR\x06tenant\"9\n\x1aTenantServiceRevokeRequest\x12\x1b\n\ttenant_id\x18\x01 \x01(\tR\x08tenantId\"E\n\x1bTenantServiceRevokeResponse\x12&\n\x06tenant\x18\x01 \x01(\x0b\x32\x0e.api.v1.TenantR\x06tenant\"\x8b\x01\n\x1dTenantServiceAddMemberRequest\x12\x1b\n\ttenant_id\x18\x01 \x01(\tR\x08tenantId\x12\x1b\n\tmember_id\x18\x02 \x01(\tR\x08memberId\x12\x30\n\x04role\x18\x03 \x01(\x0e\x32\x12.api.v1.TenantRoleB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04role\" \n\x1eTenantServiceAddMemberResponse2\x88\x03\n\rTenantService\x12W\n\x04List\x12\".admin.v1.TenantServiceListRequest\x1a#.admin.v1.TenantServiceListResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x12Y\n\x05\x41\x64mit\x12#.admin.v1.TenantServiceAdmitRequest\x1a$.admin.v1.TenantServiceAdmitResponse\"\x05\xd2\xf3\x18\x01\x01\x12\\\n\x06Revoke\x12$.admin.v1.TenantServiceRevokeRequest\x1a%.admin.v1.TenantServiceRevokeResponse\"\x05\xd2\xf3\x18\x01\x01\x12\x65\n\tAddMember\x12\'.admin.v1.TenantServiceAddMemberRequest\x1a(.admin.v1.TenantServiceAddMemberResponse\"\x05\xd2\xf3\x18\x01\x01\x42\x92\x01\n\x0c\x63om.admin.v1B\x0bTenantProtoP\x01Z4github.com/metal-stack-cloud/api/go/admin/v1;adminv1\xa2\x02\x03\x41XX\xaa\x02\x08\x41\x64min.V1\xca\x02\x08\x41\x64min\\V1\xe2\x02\x14\x41\x64min\\V1\\GPBMetadata\xea\x02\tAdmin::V1b\x06proto3')
31
+
32
+ _globals = globals()
33
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'admin.v1.tenant_pb2', _globals)
35
+ if not _descriptor._USE_C_DESCRIPTORS:
36
+ _globals['DESCRIPTOR']._loaded_options = None
37
+ _globals['DESCRIPTOR']._serialized_options = b'\n\014com.admin.v1B\013TenantProtoP\001Z4github.com/metal-stack-cloud/api/go/admin/v1;adminv1\242\002\003AXX\252\002\010Admin.V1\312\002\010Admin\\V1\342\002\024Admin\\V1\\GPBMetadata\352\002\tAdmin::V1'
38
+ _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._loaded_options = None
39
+ _globals['_TENANTSERVICEADDMEMBERREQUEST'].fields_by_name['role']._serialized_options = b'\272H\005\202\001\002\020\001'
40
+ _globals['_TENANTSERVICE'].methods_by_name['List']._loaded_options = None
41
+ _globals['_TENANTSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002'
42
+ _globals['_TENANTSERVICE'].methods_by_name['Admit']._loaded_options = None
43
+ _globals['_TENANTSERVICE'].methods_by_name['Admit']._serialized_options = b'\322\363\030\001\001'
44
+ _globals['_TENANTSERVICE'].methods_by_name['Revoke']._loaded_options = None
45
+ _globals['_TENANTSERVICE'].methods_by_name['Revoke']._serialized_options = b'\322\363\030\001\001'
46
+ _globals['_TENANTSERVICE'].methods_by_name['AddMember']._loaded_options = None
47
+ _globals['_TENANTSERVICE'].methods_by_name['AddMember']._serialized_options = b'\322\363\030\001\001'
48
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_start=107
49
+ _globals['_TENANTSERVICELISTREQUEST']._serialized_end=464
50
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_start=466
51
+ _globals['_TENANTSERVICELISTRESPONSE']._serialized_end=583
52
+ _globals['_TENANTSERVICEADMITREQUEST']._serialized_start=585
53
+ _globals['_TENANTSERVICEADMITREQUEST']._serialized_end=641
54
+ _globals['_TENANTSERVICEADMITRESPONSE']._serialized_start=643
55
+ _globals['_TENANTSERVICEADMITRESPONSE']._serialized_end=711
56
+ _globals['_TENANTSERVICEREVOKEREQUEST']._serialized_start=713
57
+ _globals['_TENANTSERVICEREVOKEREQUEST']._serialized_end=770
58
+ _globals['_TENANTSERVICEREVOKERESPONSE']._serialized_start=772
59
+ _globals['_TENANTSERVICEREVOKERESPONSE']._serialized_end=841
60
+ _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_start=844
61
+ _globals['_TENANTSERVICEADDMEMBERREQUEST']._serialized_end=983
62
+ _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_start=985
63
+ _globals['_TENANTSERVICEADDMEMBERRESPONSE']._serialized_end=1017
64
+ _globals['_TENANTSERVICE']._serialized_start=1020
65
+ _globals['_TENANTSERVICE']._serialized_end=1412
66
+ # @@protoc_insertion_point(module_scope)