metal-stack-api 0.5.0__tar.gz → 0.5.2__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 (156) hide show
  1. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/PKG-INFO +1 -1
  2. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metal_stack_api.egg-info/PKG-INFO +1 -1
  3. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/network_connect.py +195 -0
  4. metal_stack_api-0.5.2/metalstack/admin/v2/network_pb2.py +144 -0
  5. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/network_pb2.pyi +43 -0
  6. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/network_pb2.py +27 -15
  7. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/network_pb2.pyi +16 -0
  8. metal_stack_api-0.5.0/metalstack/admin/v2/network_pb2.py +0 -115
  9. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/README.md +0 -0
  10. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/buf/__init__.py +0 -0
  11. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/buf/validate/__init__.py +0 -0
  12. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/buf/validate/validate_pb2.py +0 -0
  13. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metal_stack_api.egg-info/SOURCES.txt +0 -0
  14. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metal_stack_api.egg-info/dependency_links.txt +0 -0
  15. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metal_stack_api.egg-info/requires.txt +0 -0
  16. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metal_stack_api.egg-info/top_level.txt +0 -0
  17. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/__init__.py +0 -0
  18. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/__init__.py +0 -0
  19. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/__init__.py +0 -0
  20. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/audit_connect.py +0 -0
  21. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/audit_pb2.py +0 -0
  22. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/audit_pb2.pyi +0 -0
  23. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/component_connect.py +0 -0
  24. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/component_pb2.py +0 -0
  25. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/component_pb2.pyi +0 -0
  26. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/filesystem_connect.py +0 -0
  27. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/filesystem_pb2.py +0 -0
  28. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/filesystem_pb2.pyi +0 -0
  29. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/image_connect.py +0 -0
  30. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/image_pb2.py +0 -0
  31. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/image_pb2.pyi +0 -0
  32. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/ip_connect.py +0 -0
  33. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/ip_pb2.py +0 -0
  34. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/ip_pb2.pyi +0 -0
  35. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/machine_connect.py +0 -0
  36. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/machine_pb2.py +0 -0
  37. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/machine_pb2.pyi +0 -0
  38. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/partition_connect.py +0 -0
  39. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/partition_pb2.py +0 -0
  40. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/partition_pb2.pyi +0 -0
  41. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/project_connect.py +0 -0
  42. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/project_pb2.py +0 -0
  43. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/project_pb2.pyi +0 -0
  44. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_connect.py +0 -0
  45. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_imageconstraint_connect.py +0 -0
  46. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_imageconstraint_pb2.py +0 -0
  47. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_imageconstraint_pb2.pyi +0 -0
  48. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_pb2.py +0 -0
  49. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_pb2.pyi +0 -0
  50. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_reservation_connect.py +0 -0
  51. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_reservation_pb2.py +0 -0
  52. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/size_reservation_pb2.pyi +0 -0
  53. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/switch_connect.py +0 -0
  54. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/switch_pb2.py +0 -0
  55. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/switch_pb2.pyi +0 -0
  56. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/task_connect.py +0 -0
  57. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/task_pb2.py +0 -0
  58. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/task_pb2.pyi +0 -0
  59. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/tenant_connect.py +0 -0
  60. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/tenant_pb2.py +0 -0
  61. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/tenant_pb2.pyi +0 -0
  62. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/token_connect.py +0 -0
  63. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/token_pb2.py +0 -0
  64. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/token_pb2.pyi +0 -0
  65. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/vpn_connect.py +0 -0
  66. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/vpn_pb2.py +0 -0
  67. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/admin/v2/vpn_pb2.pyi +0 -0
  68. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/__init__.py +0 -0
  69. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/__init__.py +0 -0
  70. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/audit_connect.py +0 -0
  71. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/audit_pb2.py +0 -0
  72. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/audit_pb2.pyi +0 -0
  73. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/common_pb2.py +0 -0
  74. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/common_pb2.pyi +0 -0
  75. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/component_pb2.py +0 -0
  76. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/component_pb2.pyi +0 -0
  77. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/filesystem_connect.py +0 -0
  78. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/filesystem_pb2.py +0 -0
  79. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/filesystem_pb2.pyi +0 -0
  80. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/health_connect.py +0 -0
  81. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/health_pb2.py +0 -0
  82. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/health_pb2.pyi +0 -0
  83. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/image_connect.py +0 -0
  84. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/image_pb2.py +0 -0
  85. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/image_pb2.pyi +0 -0
  86. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/ip_connect.py +0 -0
  87. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/ip_pb2.py +0 -0
  88. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/ip_pb2.pyi +0 -0
  89. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/machine_connect.py +0 -0
  90. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/machine_pb2.py +0 -0
  91. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/machine_pb2.pyi +0 -0
  92. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/method_connect.py +0 -0
  93. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/method_pb2.py +0 -0
  94. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/method_pb2.pyi +0 -0
  95. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/network_connect.py +0 -0
  96. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/partition_connect.py +0 -0
  97. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/partition_pb2.py +0 -0
  98. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/partition_pb2.pyi +0 -0
  99. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/predefined_rules_pb2.py +0 -0
  100. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/predefined_rules_pb2.pyi +0 -0
  101. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/project_connect.py +0 -0
  102. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/project_pb2.py +0 -0
  103. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/project_pb2.pyi +0 -0
  104. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_connect.py +0 -0
  105. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_imageconstraint_connect.py +0 -0
  106. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_imageconstraint_pb2.py +0 -0
  107. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_imageconstraint_pb2.pyi +0 -0
  108. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_pb2.py +0 -0
  109. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_pb2.pyi +0 -0
  110. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_reservation_connect.py +0 -0
  111. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_reservation_pb2.py +0 -0
  112. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/size_reservation_pb2.pyi +0 -0
  113. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/switch_pb2.py +0 -0
  114. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/switch_pb2.pyi +0 -0
  115. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/tenant_connect.py +0 -0
  116. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/tenant_pb2.py +0 -0
  117. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/tenant_pb2.pyi +0 -0
  118. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/token_connect.py +0 -0
  119. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/token_pb2.py +0 -0
  120. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/token_pb2.pyi +0 -0
  121. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/user_connect.py +0 -0
  122. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/user_pb2.py +0 -0
  123. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/user_pb2.pyi +0 -0
  124. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/version_connect.py +0 -0
  125. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/version_pb2.py +0 -0
  126. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/version_pb2.pyi +0 -0
  127. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/vpn_pb2.py +0 -0
  128. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/api/v2/vpn_pb2.pyi +0 -0
  129. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/__init__.py +0 -0
  130. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/client.py +0 -0
  131. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/test_interceptor.py +0 -0
  132. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/__init__.py +0 -0
  133. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/conftest.py +0 -0
  134. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/test_client.py +0 -0
  135. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/test_interceptor.py +0 -0
  136. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/test_ping.py +0 -0
  137. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/client/tests/test_token_persistent.py +0 -0
  138. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/__init__.py +0 -0
  139. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/__init__.py +0 -0
  140. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/bmc_connect.py +0 -0
  141. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/bmc_pb2.py +0 -0
  142. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/bmc_pb2.pyi +0 -0
  143. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/boot_connect.py +0 -0
  144. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/boot_pb2.py +0 -0
  145. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/boot_pb2.pyi +0 -0
  146. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/component_connect.py +0 -0
  147. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/component_pb2.py +0 -0
  148. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/component_pb2.pyi +0 -0
  149. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/event_connect.py +0 -0
  150. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/event_pb2.py +0 -0
  151. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/event_pb2.pyi +0 -0
  152. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/switch_connect.py +0 -0
  153. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/switch_pb2.py +0 -0
  154. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/metalstack/infra/v2/switch_pb2.pyi +0 -0
  155. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/setup.cfg +0 -0
  156. {metal_stack_api-0.5.0 → metal_stack_api-0.5.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metal-stack-api
3
- Version: 0.5.0
3
+ Version: 0.5.2
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metal-stack-api
3
- Version: 0.5.0
3
+ Version: 0.5.2
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
@@ -33,6 +33,15 @@ class NetworkService(Protocol):
33
33
  async def list(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListResponse:
34
34
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
35
35
 
36
+ async def list_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
37
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
38
+
39
+ async def add_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
40
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
41
+
42
+ async def remove_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
43
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
44
+
36
45
 
37
46
  class NetworkServiceASGIApplication(ConnectASGIApplication[NetworkService]):
38
47
  def __init__(self, service: NetworkService | AsyncGenerator[NetworkService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None, codecs: Iterable[Codec] | None = None) -> None:
@@ -89,6 +98,36 @@ class NetworkServiceASGIApplication(ConnectASGIApplication[NetworkService]):
89
98
  ),
90
99
  function=svc.list,
91
100
  ),
101
+ "/metalstack.admin.v2.NetworkService/ListExternalMembers": Endpoint.unary(
102
+ method=MethodInfo(
103
+ name="ListExternalMembers",
104
+ service_name="metalstack.admin.v2.NetworkService",
105
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
106
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
107
+ idempotency_level=IdempotencyLevel.UNKNOWN,
108
+ ),
109
+ function=svc.list_external_members,
110
+ ),
111
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": Endpoint.unary(
112
+ method=MethodInfo(
113
+ name="AddExternalMember",
114
+ service_name="metalstack.admin.v2.NetworkService",
115
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
116
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
117
+ idempotency_level=IdempotencyLevel.UNKNOWN,
118
+ ),
119
+ function=svc.add_external_member,
120
+ ),
121
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": Endpoint.unary(
122
+ method=MethodInfo(
123
+ name="RemoveExternalMember",
124
+ service_name="metalstack.admin.v2.NetworkService",
125
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
126
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
127
+ idempotency_level=IdempotencyLevel.UNKNOWN,
128
+ ),
129
+ function=svc.remove_external_member,
130
+ ),
92
131
  },
93
132
  interceptors=interceptors,
94
133
  read_max_bytes=read_max_bytes,
@@ -203,6 +242,66 @@ class NetworkServiceClient(ConnectClient):
203
242
  timeout_ms=timeout_ms,
204
243
  )
205
244
 
245
+ async def list_external_members(
246
+ self,
247
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
248
+ *,
249
+ headers: Headers | Mapping[str, str] | None = None,
250
+ timeout_ms: int | None = None,
251
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
252
+ return await self.execute_unary(
253
+ request=request,
254
+ method=MethodInfo(
255
+ name="ListExternalMembers",
256
+ service_name="metalstack.admin.v2.NetworkService",
257
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
258
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
259
+ idempotency_level=IdempotencyLevel.UNKNOWN,
260
+ ),
261
+ headers=headers,
262
+ timeout_ms=timeout_ms,
263
+ )
264
+
265
+ async def add_external_member(
266
+ self,
267
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
268
+ *,
269
+ headers: Headers | Mapping[str, str] | None = None,
270
+ timeout_ms: int | None = None,
271
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
272
+ return await self.execute_unary(
273
+ request=request,
274
+ method=MethodInfo(
275
+ name="AddExternalMember",
276
+ service_name="metalstack.admin.v2.NetworkService",
277
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
278
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
279
+ idempotency_level=IdempotencyLevel.UNKNOWN,
280
+ ),
281
+ headers=headers,
282
+ timeout_ms=timeout_ms,
283
+ )
284
+
285
+ async def remove_external_member(
286
+ self,
287
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
288
+ *,
289
+ headers: Headers | Mapping[str, str] | None = None,
290
+ timeout_ms: int | None = None,
291
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
292
+ return await self.execute_unary(
293
+ request=request,
294
+ method=MethodInfo(
295
+ name="RemoveExternalMember",
296
+ service_name="metalstack.admin.v2.NetworkService",
297
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
298
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
299
+ idempotency_level=IdempotencyLevel.UNKNOWN,
300
+ ),
301
+ headers=headers,
302
+ timeout_ms=timeout_ms,
303
+ )
304
+
206
305
 
207
306
 
208
307
 
@@ -218,6 +317,12 @@ class NetworkServiceSync(Protocol):
218
317
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
219
318
  def list(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListResponse:
220
319
  raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
320
+ def list_external_members(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
321
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
322
+ def add_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
323
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
324
+ def remove_external_member(self, request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
325
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
221
326
 
222
327
 
223
328
  class NetworkServiceWSGIApplication(ConnectWSGIApplication):
@@ -274,6 +379,36 @@ class NetworkServiceWSGIApplication(ConnectWSGIApplication):
274
379
  ),
275
380
  function=service.list,
276
381
  ),
382
+ "/metalstack.admin.v2.NetworkService/ListExternalMembers": EndpointSync.unary(
383
+ method=MethodInfo(
384
+ name="ListExternalMembers",
385
+ service_name="metalstack.admin.v2.NetworkService",
386
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
387
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
388
+ idempotency_level=IdempotencyLevel.UNKNOWN,
389
+ ),
390
+ function=service.list_external_members,
391
+ ),
392
+ "/metalstack.admin.v2.NetworkService/AddExternalMember": EndpointSync.unary(
393
+ method=MethodInfo(
394
+ name="AddExternalMember",
395
+ service_name="metalstack.admin.v2.NetworkService",
396
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
397
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
398
+ idempotency_level=IdempotencyLevel.UNKNOWN,
399
+ ),
400
+ function=service.add_external_member,
401
+ ),
402
+ "/metalstack.admin.v2.NetworkService/RemoveExternalMember": EndpointSync.unary(
403
+ method=MethodInfo(
404
+ name="RemoveExternalMember",
405
+ service_name="metalstack.admin.v2.NetworkService",
406
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
407
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
408
+ idempotency_level=IdempotencyLevel.UNKNOWN,
409
+ ),
410
+ function=service.remove_external_member,
411
+ ),
277
412
  },
278
413
  interceptors=interceptors,
279
414
  read_max_bytes=read_max_bytes,
@@ -388,4 +523,64 @@ class NetworkServiceClientSync(ConnectClientSync):
388
523
  timeout_ms=timeout_ms,
389
524
  )
390
525
 
526
+ def list_external_members(
527
+ self,
528
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
529
+ *,
530
+ headers: Headers | Mapping[str, str] | None = None,
531
+ timeout_ms: int | None = None,
532
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse:
533
+ return self.execute_unary(
534
+ request=request,
535
+ method=MethodInfo(
536
+ name="ListExternalMembers",
537
+ service_name="metalstack.admin.v2.NetworkService",
538
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersRequest,
539
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceListExternalMembersResponse,
540
+ idempotency_level=IdempotencyLevel.UNKNOWN,
541
+ ),
542
+ headers=headers,
543
+ timeout_ms=timeout_ms,
544
+ )
545
+
546
+ def add_external_member(
547
+ self,
548
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
549
+ *,
550
+ headers: Headers | Mapping[str, str] | None = None,
551
+ timeout_ms: int | None = None,
552
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse:
553
+ return self.execute_unary(
554
+ request=request,
555
+ method=MethodInfo(
556
+ name="AddExternalMember",
557
+ service_name="metalstack.admin.v2.NetworkService",
558
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberRequest,
559
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceAddExternalMemberResponse,
560
+ idempotency_level=IdempotencyLevel.UNKNOWN,
561
+ ),
562
+ headers=headers,
563
+ timeout_ms=timeout_ms,
564
+ )
565
+
566
+ def remove_external_member(
567
+ self,
568
+ request: metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
569
+ *,
570
+ headers: Headers | Mapping[str, str] | None = None,
571
+ timeout_ms: int | None = None,
572
+ ) -> metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse:
573
+ return self.execute_unary(
574
+ request=request,
575
+ method=MethodInfo(
576
+ name="RemoveExternalMember",
577
+ service_name="metalstack.admin.v2.NetworkService",
578
+ input=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberRequest,
579
+ output=metalstack_dot_admin_dot_v2_dot_network__pb2.NetworkServiceRemoveExternalMemberResponse,
580
+ idempotency_level=IdempotencyLevel.UNKNOWN,
581
+ ),
582
+ headers=headers,
583
+ timeout_ms=timeout_ms,
584
+ )
585
+
391
586
 
@@ -0,0 +1,144 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: metalstack/admin/v2/network.proto
5
+ # Protobuf Python Version: 7.35.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
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'metalstack/admin/v2/network.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
+ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
27
+ from metalstack.api.v2 import network_pb2 as metalstack_dot_api_dot_v2_dot_network__pb2
28
+ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
29
+ from metalstack.api.v2 import switch_pb2 as metalstack_dot_api_dot_v2_dot_switch__pb2
30
+
31
+
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!metalstack/admin/v2/network.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1fmetalstack/api/v2/network.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"7\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa8\t\n\x1bNetworkServiceCreateRequest\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\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\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12<\n\x04type\x18\x06 \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12\x36\n\x06labels\x18\x07 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x05R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12\x44\n\x08nat_type\x18\x0c \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x06R\x07natType\x88\x01\x01\x12\x15\n\x03vrf\x18\r \x01(\rH\x07R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0e \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x08R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0f \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x41\n\x06length\x18\x10 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\tR\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x11 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\raddressFamily\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\t\n\x07_labelsB\x0b\n\t_nat_typeB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"\xea\x06\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\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<\n\x06labels\x18\x05 \x01(\x0b\x32\x1f.metalstack.api.v2.UpdateLabelsH\x02R\x06labels\x88\x01\x01\x12(\n\x08prefixes\x18\x06 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12h\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\x08 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x03R\x18\x64\x65\x66\x61ultChildPrefixLength\x88\x01\x01\x12`\n\x17min_child_prefix_length\x18\t \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x14minChildPrefixLength\x88\x01\x01\x12\x44\n\x08nat_type\x18\n \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\x07natType\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x0b \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12\x14\n\x05\x66orce\x18\x0c \x01(\x08R\x05\x66orceB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\t\n\x07_labelsB\x1e\n\x1c_default_child_prefix_lengthB\x1a\n\x18_min_child_prefix_lengthB\x0b\n\t_nat_type\":\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\"R\n\x19NetworkServiceListRequest\x12\x35\n\x05query\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"\x96\x01\n(NetworkServiceListExternalMembersRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12\x43\n\x05query\x18\x02 \x01(\x0b\x32-.metalstack.api.v2.ExternalNetworkMemberQueryR\x05query\"\xa6\x01\n&NetworkServiceAddExternalMemberRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12U\n\x0cswitch_ports\x18\x02 \x03(\x0b\x32(.metalstack.api.v2.ExternalNetworkMemberB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0bswitchPorts\"\xa9\x01\n)NetworkServiceRemoveExternalMemberRequest\x12%\n\x07network\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07network\x12U\n\x0cswitch_ports\x18\x02 \x03(\x0b\x32(.metalstack.api.v2.ExternalNetworkMemberB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0bswitchPorts\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"o\n)NetworkServiceListExternalMembersResponse\x12\x42\n\x07members\x18\x01 \x03(\x0b\x32(.metalstack.api.v2.ExternalNetworkMemberR\x07members\"\\\n\'NetworkServiceAddExternalMemberResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"_\n*NetworkServiceRemoveExternalMemberResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch2\xc9\x08\n\x0eNetworkService\x12p\n\x03Get\x12-.metalstack.admin.v2.NetworkServiceGetRequest\x1a..metalstack.admin.v2.NetworkServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12x\n\x06\x43reate\x12\x30.metalstack.admin.v2.NetworkServiceCreateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceCreateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06Update\x12\x30.metalstack.admin.v2.NetworkServiceUpdateRequest\x1a\x31.metalstack.admin.v2.NetworkServiceUpdateResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12x\n\x06\x44\x65lete\x12\x30.metalstack.admin.v2.NetworkServiceDeleteRequest\x1a\x31.metalstack.admin.v2.NetworkServiceDeleteResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12s\n\x04List\x12..metalstack.admin.v2.NetworkServiceListRequest\x1a/.metalstack.admin.v2.NetworkServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\xa0\x01\n\x13ListExternalMembers\x12=.metalstack.admin.v2.NetworkServiceListExternalMembersRequest\x1a>.metalstack.admin.v2.NetworkServiceListExternalMembersResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12\x99\x01\n\x11\x41\x64\x64\x45xternalMember\x12;.metalstack.admin.v2.NetworkServiceAddExternalMemberRequest\x1a<.metalstack.admin.v2.NetworkServiceAddExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x12\xa2\x01\n\x14RemoveExternalMember\x12>.metalstack.admin.v2.NetworkServiceRemoveExternalMemberRequest\x1a?.metalstack.admin.v2.NetworkServiceRemoveExternalMemberResponse\"\t\xd2\xf3\x18\x01\x01\xe0\xf3\x18\x01\x42\xd0\x01\n\x17\x63om.metalstack.admin.v2B\x0cNetworkProtoP\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')
33
+
34
+ _globals = globals()
35
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
36
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.admin.v2.network_pb2', _globals)
37
+ if not _descriptor._USE_C_DESCRIPTORS:
38
+ _globals['DESCRIPTOR']._loaded_options = None
39
+ _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\014NetworkProtoP\001Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\242\002\003MAX\252\002\023Metalstack.Admin.V2\312\002\023Metalstack\\Admin\\V2\342\002\037Metalstack\\Admin\\V2\\GPBMetadata\352\002\025Metalstack::Admin::V2'
40
+ _globals['_NETWORKSERVICEGETREQUEST'].fields_by_name['id']._loaded_options = None
41
+ _globals['_NETWORKSERVICEGETREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
42
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['id']._loaded_options = None
43
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
44
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['name']._loaded_options = None
45
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
46
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['description']._loaded_options = None
47
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001'
48
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['partition']._loaded_options = None
49
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['partition']._serialized_options = b'\272H\010r\006\320\263\256\261\002\001'
50
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['project']._loaded_options = None
51
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
52
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['type']._loaded_options = None
53
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['type']._serialized_options = b'\272H\005\202\001\002\020\001'
54
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['prefixes']._loaded_options = None
55
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['prefixes']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
56
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['destination_prefixes']._loaded_options = None
57
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['destination_prefixes']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
58
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['nat_type']._loaded_options = None
59
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['nat_type']._serialized_options = b'\272H\005\202\001\002\020\001'
60
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['parent_network']._loaded_options = None
61
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['parent_network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
62
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['additional_announcable_cidrs']._loaded_options = None
63
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['additional_announcable_cidrs']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
64
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['address_family']._loaded_options = None
65
+ _globals['_NETWORKSERVICECREATEREQUEST'].fields_by_name['address_family']._serialized_options = b'\272H\005\202\001\002\020\001'
66
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['id']._loaded_options = None
67
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
68
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._loaded_options = None
69
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['update_meta']._serialized_options = b'\272H\003\310\001\001'
70
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['name']._loaded_options = None
71
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['name']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
72
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['description']._loaded_options = None
73
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['description']._serialized_options = b'\272H\010r\006\310\263\256\261\002\001'
74
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['prefixes']._loaded_options = None
75
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['prefixes']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
76
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['destination_prefixes']._loaded_options = None
77
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['destination_prefixes']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
78
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['nat_type']._loaded_options = None
79
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['nat_type']._serialized_options = b'\272H\005\202\001\002\020\001'
80
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['additional_announcable_cidrs']._loaded_options = None
81
+ _globals['_NETWORKSERVICEUPDATEREQUEST'].fields_by_name['additional_announcable_cidrs']._serialized_options = b'\272H\t\222\001\006\270\244\263\261\002\001'
82
+ _globals['_NETWORKSERVICEDELETEREQUEST'].fields_by_name['id']._loaded_options = None
83
+ _globals['_NETWORKSERVICEDELETEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
84
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST'].fields_by_name['network']._loaded_options = None
85
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
86
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['network']._loaded_options = None
87
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
88
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._loaded_options = None
89
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._serialized_options = b'\272H\005\222\001\002\020\010'
90
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['network']._loaded_options = None
91
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['network']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
92
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._loaded_options = None
93
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST'].fields_by_name['switch_ports']._serialized_options = b'\272H\005\222\001\002\020\010'
94
+ _globals['_NETWORKSERVICE'].methods_by_name['Get']._loaded_options = None
95
+ _globals['_NETWORKSERVICE'].methods_by_name['Get']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
96
+ _globals['_NETWORKSERVICE'].methods_by_name['Create']._loaded_options = None
97
+ _globals['_NETWORKSERVICE'].methods_by_name['Create']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
98
+ _globals['_NETWORKSERVICE'].methods_by_name['Update']._loaded_options = None
99
+ _globals['_NETWORKSERVICE'].methods_by_name['Update']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
100
+ _globals['_NETWORKSERVICE'].methods_by_name['Delete']._loaded_options = None
101
+ _globals['_NETWORKSERVICE'].methods_by_name['Delete']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
102
+ _globals['_NETWORKSERVICE'].methods_by_name['List']._loaded_options = None
103
+ _globals['_NETWORKSERVICE'].methods_by_name['List']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
104
+ _globals['_NETWORKSERVICE'].methods_by_name['ListExternalMembers']._loaded_options = None
105
+ _globals['_NETWORKSERVICE'].methods_by_name['ListExternalMembers']._serialized_options = b'\322\363\030\002\001\002\340\363\030\002'
106
+ _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMember']._loaded_options = None
107
+ _globals['_NETWORKSERVICE'].methods_by_name['AddExternalMember']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
108
+ _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMember']._loaded_options = None
109
+ _globals['_NETWORKSERVICE'].methods_by_name['RemoveExternalMember']._serialized_options = b'\322\363\030\001\001\340\363\030\001'
110
+ _globals['_NETWORKSERVICEGETREQUEST']._serialized_start=226
111
+ _globals['_NETWORKSERVICEGETREQUEST']._serialized_end=281
112
+ _globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=283
113
+ _globals['_NETWORKSERVICEGETRESPONSE']._serialized_end=364
114
+ _globals['_NETWORKSERVICECREATEREQUEST']._serialized_start=367
115
+ _globals['_NETWORKSERVICECREATEREQUEST']._serialized_end=1559
116
+ _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_start=1562
117
+ _globals['_NETWORKSERVICEUPDATEREQUEST']._serialized_end=2436
118
+ _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_start=2438
119
+ _globals['_NETWORKSERVICEDELETEREQUEST']._serialized_end=2496
120
+ _globals['_NETWORKSERVICELISTREQUEST']._serialized_start=2498
121
+ _globals['_NETWORKSERVICELISTREQUEST']._serialized_end=2580
122
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST']._serialized_start=2583
123
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSREQUEST']._serialized_end=2733
124
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST']._serialized_start=2736
125
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERREQUEST']._serialized_end=2902
126
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST']._serialized_start=2905
127
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERREQUEST']._serialized_end=3074
128
+ _globals['_NETWORKSERVICECREATERESPONSE']._serialized_start=3076
129
+ _globals['_NETWORKSERVICECREATERESPONSE']._serialized_end=3160
130
+ _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_start=3162
131
+ _globals['_NETWORKSERVICEUPDATERESPONSE']._serialized_end=3246
132
+ _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_start=3248
133
+ _globals['_NETWORKSERVICEDELETERESPONSE']._serialized_end=3332
134
+ _globals['_NETWORKSERVICELISTRESPONSE']._serialized_start=3334
135
+ _globals['_NETWORKSERVICELISTRESPONSE']._serialized_end=3418
136
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSRESPONSE']._serialized_start=3420
137
+ _globals['_NETWORKSERVICELISTEXTERNALMEMBERSRESPONSE']._serialized_end=3531
138
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERRESPONSE']._serialized_start=3533
139
+ _globals['_NETWORKSERVICEADDEXTERNALMEMBERRESPONSE']._serialized_end=3625
140
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERRESPONSE']._serialized_start=3627
141
+ _globals['_NETWORKSERVICEREMOVEEXTERNALMEMBERRESPONSE']._serialized_end=3722
142
+ _globals['_NETWORKSERVICE']._serialized_start=3725
143
+ _globals['_NETWORKSERVICE']._serialized_end=4822
144
+ # @@protoc_insertion_point(module_scope)
@@ -2,6 +2,7 @@ from buf.validate import validate_pb2 as _validate_pb2
2
2
  from metalstack.api.v2 import common_pb2 as _common_pb2
3
3
  from metalstack.api.v2 import network_pb2 as _network_pb2
4
4
  from metalstack.api.v2 import predefined_rules_pb2 as _predefined_rules_pb2
5
+ from metalstack.api.v2 import switch_pb2 as _switch_pb2
5
6
  from google.protobuf.internal import containers as _containers
6
7
  from google.protobuf import descriptor as _descriptor
7
8
  from google.protobuf import message as _message
@@ -100,6 +101,30 @@ class NetworkServiceListRequest(_message.Message):
100
101
  query: _network_pb2.NetworkQuery
101
102
  def __init__(self, query: _Optional[_Union[_network_pb2.NetworkQuery, _Mapping]] = ...) -> None: ...
102
103
 
104
+ class NetworkServiceListExternalMembersRequest(_message.Message):
105
+ __slots__ = ("network", "query")
106
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
107
+ QUERY_FIELD_NUMBER: _ClassVar[int]
108
+ network: str
109
+ query: _network_pb2.ExternalNetworkMemberQuery
110
+ def __init__(self, network: _Optional[str] = ..., query: _Optional[_Union[_network_pb2.ExternalNetworkMemberQuery, _Mapping]] = ...) -> None: ...
111
+
112
+ class NetworkServiceAddExternalMemberRequest(_message.Message):
113
+ __slots__ = ("network", "switch_ports")
114
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
115
+ SWITCH_PORTS_FIELD_NUMBER: _ClassVar[int]
116
+ network: str
117
+ switch_ports: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMember]
118
+ def __init__(self, network: _Optional[str] = ..., switch_ports: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMember, _Mapping]]] = ...) -> None: ...
119
+
120
+ class NetworkServiceRemoveExternalMemberRequest(_message.Message):
121
+ __slots__ = ("network", "switch_ports")
122
+ NETWORK_FIELD_NUMBER: _ClassVar[int]
123
+ SWITCH_PORTS_FIELD_NUMBER: _ClassVar[int]
124
+ network: str
125
+ switch_ports: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMember]
126
+ def __init__(self, network: _Optional[str] = ..., switch_ports: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMember, _Mapping]]] = ...) -> None: ...
127
+
103
128
  class NetworkServiceCreateResponse(_message.Message):
104
129
  __slots__ = ("network",)
105
130
  NETWORK_FIELD_NUMBER: _ClassVar[int]
@@ -123,3 +148,21 @@ class NetworkServiceListResponse(_message.Message):
123
148
  NETWORKS_FIELD_NUMBER: _ClassVar[int]
124
149
  networks: _containers.RepeatedCompositeFieldContainer[_network_pb2.Network]
125
150
  def __init__(self, networks: _Optional[_Iterable[_Union[_network_pb2.Network, _Mapping]]] = ...) -> None: ...
151
+
152
+ class NetworkServiceListExternalMembersResponse(_message.Message):
153
+ __slots__ = ("members",)
154
+ MEMBERS_FIELD_NUMBER: _ClassVar[int]
155
+ members: _containers.RepeatedCompositeFieldContainer[_network_pb2.ExternalNetworkMember]
156
+ def __init__(self, members: _Optional[_Iterable[_Union[_network_pb2.ExternalNetworkMember, _Mapping]]] = ...) -> None: ...
157
+
158
+ class NetworkServiceAddExternalMemberResponse(_message.Message):
159
+ __slots__ = ("switch",)
160
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
161
+ switch: _switch_pb2.Switch
162
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
163
+
164
+ class NetworkServiceRemoveExternalMemberResponse(_message.Message):
165
+ __slots__ = ("switch",)
166
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
167
+ switch: _switch_pb2.Switch
168
+ def __init__(self, switch: _Optional[_Union[_switch_pb2.Switch, _Mapping]] = ...) -> None: ...
@@ -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 predefined_rules_pb2 as metalstack_dot_api_dot_v2_dot_predefined__rules__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/network.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"^\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12%\n\x07project\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xb1\x04\n\x1bNetworkServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\x37\n\x0eparent_network\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\rparentNetwork\x88\x01\x01\x12\x41\n\x06length\x18\x07 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x08 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\raddressFamily\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xe2\x02\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\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\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\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\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"y\n\x19NetworkServiceListRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"\x85\x01\n%NetworkServiceListBaseNetworksRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"`\n&NetworkServiceListBaseNetworksResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"^\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa4\x08\n\x07Network\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\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\tpartition\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x03R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12<\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12?\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x15\n\x03vrf\x18\x0e \x01(\rH\x05R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0f \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x06R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x10 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12G\n\x0b\x63onsumption\x18\x11 \x01(\x0b\x32%.metalstack.api.v2.NetworkConsumptionR\x0b\x63onsumptionB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_network\"\x82\x07\n\x0cNetworkQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\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\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x15\n\x03vrf\x18\t \x01(\rH\x06R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\n \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x07R\rparentNetwork\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x0b \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x08R\raddressFamily\x88\x01\x01\x12\x41\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\tR\x04type\x88\x01\x01\x12\x44\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x07natType\x88\x01\x01\x12\x36\n\x06labels\x18\x0e \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x0bR\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\x11\n\x0f_address_familyB\x07\n\x05_typeB\x0b\n\t_nat_typeB\t\n\x07_labels\"n\n\x11\x43hildPrefixLength\x12\"\n\x04ipv4\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x18 \x00H\x00R\x04ipv4\x88\x01\x01\x12#\n\x04ipv6\x18\x02 \x01(\rB\n\xbaH\x07*\x05\x18\x80\x01 \x00H\x01R\x04ipv6\x88\x01\x01\x42\x07\n\x05_ipv4B\x07\n\x05_ipv6\"~\n\x12NetworkConsumption\x12\x33\n\x04ipv4\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv4\x12\x33\n\x04ipv6\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv6\"\xa2\x01\n\x0cNetworkUsage\x12#\n\ravailable_ips\x18\x01 \x01(\x04R\x0c\x61vailableIps\x12\x19\n\x08used_ips\x18\x02 \x01(\x04R\x07usedIps\x12-\n\x12\x61vailable_prefixes\x18\x03 \x01(\x04R\x11\x61vailablePrefixes\x12#\n\rused_prefixes\x18\x04 \x01(\x04R\x0cusedPrefixes*m\n\x07NATType\x12\x18\n\x14NAT_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\rNAT_TYPE_NONE\x10\x01\x1a\x08\x82\xb2\x19\x04none\x12+\n\x18NAT_TYPE_IPV4_MASQUERADE\x10\x02\x1a\r\x82\xb2\x19\tipv4-masq*\xad\x02\n\x0bNetworkType\x12\x1c\n\x18NETWORK_TYPE_UNSPECIFIED\x10\x00\x12\'\n\x15NETWORK_TYPE_EXTERNAL\x10\x01\x1a\x0c\x82\xb2\x19\x08\x65xternal\x12\'\n\x15NETWORK_TYPE_UNDERLAY\x10\x02\x1a\x0c\x82\xb2\x19\x08underlay\x12!\n\x12NETWORK_TYPE_SUPER\x10\x03\x1a\t\x82\xb2\x19\x05super\x12\x37\n\x1dNETWORK_TYPE_SUPER_NAMESPACED\x10\x04\x1a\x14\x82\xb2\x19\x10super-namespaced\x12!\n\x12NETWORK_TYPE_CHILD\x10\x05\x1a\t\x82\xb2\x19\x05\x63hild\x12/\n\x19NETWORK_TYPE_CHILD_SHARED\x10\x06\x1a\x10\x82\xb2\x19\x0c\x63hild-shared*\xc7\x01\n\x14NetworkAddressFamily\x12&\n\"NETWORK_ADDRESS_FAMILY_UNSPECIFIED\x10\x00\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V4\x10\x01\x1a\x08\x82\xb2\x19\x04ipv4\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V6\x10\x02\x1a\x08\x82\xb2\x19\x04ipv6\x12\x35\n!NETWORK_ADDRESS_FAMILY_DUAL_STACK\x10\x03\x1a\x0e\x82\xb2\x19\ndual-stack2\xed\x05\n\x0eNetworkService\x12m\n\x03Get\x12+.metalstack.api.v2.NetworkServiceGetRequest\x1a,.metalstack.api.v2.NetworkServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.NetworkServiceCreateRequest\x1a/.metalstack.api.v2.NetworkServiceCreateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.NetworkServiceUpdateRequest\x1a/.metalstack.api.v2.NetworkServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12p\n\x04List\x12,.metalstack.api.v2.NetworkServiceListRequest\x1a-.metalstack.api.v2.NetworkServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12\x94\x01\n\x10ListBaseNetworks\x12\x38.metalstack.api.v2.NetworkServiceListBaseNetworksRequest\x1a\x39.metalstack.api.v2.NetworkServiceListBaseNetworksResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x44\x65lete\x12..metalstack.api.v2.NetworkServiceDeleteRequest\x1a/.metalstack.api.v2.NetworkServiceDeleteResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cNetworkProtoP\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')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1fmetalstack/api/v2/network.proto\x12\x11metalstack.api.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\"^\n\x18NetworkServiceGetRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12%\n\x07project\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\"Q\n\x19NetworkServiceGetResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xb1\x04\n\x1bNetworkServiceCreateRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\x31\n\x06labels\x18\x05 \x01(\x0b\x32\x19.metalstack.api.v2.LabelsR\x06labels\x12\x37\n\x0eparent_network\x18\x06 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\rparentNetwork\x88\x01\x01\x12\x41\n\x06length\x18\x07 \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthH\x04R\x06length\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x08 \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x05R\raddressFamily\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\x11\n\x0f_parent_networkB\t\n\x07_lengthB\x11\n\x0f_address_family\"T\n\x1cNetworkServiceCreateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xe2\x02\n\x1bNetworkServiceUpdateRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\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\x07project\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12$\n\x04name\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x00R\x04name\x88\x01\x01\x12\x32\n\x0b\x64\x65scription\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\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\"T\n\x1cNetworkServiceUpdateResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"y\n\x19NetworkServiceListRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"T\n\x1aNetworkServiceListResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"\x85\x01\n%NetworkServiceListBaseNetworksRequest\x12%\n\x07project\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x07project\x12\x35\n\x05query\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkQueryR\x05query\"`\n&NetworkServiceListBaseNetworksResponse\x12\x36\n\x08networks\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x08networks\"^\n\x1bNetworkServiceDeleteRequest\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\"\n\x07project\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\"T\n\x1cNetworkServiceDeleteResponse\x12\x34\n\x07network\x18\x01 \x01(\x0b\x32\x1a.metalstack.api.v2.NetworkR\x07network\"\xa4\x08\n\x07Network\x12\x1b\n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x02id\x12+\n\x04meta\x18\x02 \x01(\x0b\x32\x17.metalstack.api.v2.MetaR\x04meta\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\tpartition\x18\x05 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x02R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x03R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\t \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x63\n\x1b\x64\x65\x66\x61ult_child_prefix_length\x18\n \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x18\x64\x65\x66\x61ultChildPrefixLength\x12[\n\x17min_child_prefix_length\x18\x0b \x01(\x0b\x32$.metalstack.api.v2.ChildPrefixLengthR\x14minChildPrefixLength\x12<\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12?\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07natType\x12\x15\n\x03vrf\x18\x0e \x01(\rH\x05R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\x0f \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x06R\rparentNetwork\x88\x01\x01\x12N\n\x1c\x61\x64\x64itional_announcable_cidrs\x18\x10 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x1a\x61\x64\x64itionalAnnouncableCidrs\x12G\n\x0b\x63onsumption\x18\x11 \x01(\x0b\x32%.metalstack.api.v2.NetworkConsumptionR\x0b\x63onsumptionB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_network\"\x82\x07\n\x0cNetworkQuery\x12 \n\x02id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\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\x32\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x02R\x0b\x64\x65scription\x88\x01\x01\x12.\n\tpartition\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xd0\xb3\xae\xb1\x02\x01H\x03R\tpartition\x88\x01\x01\x12\'\n\x07project\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x04R\x07project\x88\x01\x01\x12+\n\tnamespace\x18\x06 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x05R\tnamespace\x88\x01\x01\x12(\n\x08prefixes\x18\x07 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x08prefixes\x12?\n\x14\x64\x65stination_prefixes\x18\x08 \x03(\tB\x0c\xbaH\t\x92\x01\x06\xb8\xa4\xb3\xb1\x02\x01R\x13\x64\x65stinationPrefixes\x12\x15\n\x03vrf\x18\t \x01(\rH\x06R\x03vrf\x88\x01\x01\x12\x37\n\x0eparent_network\x18\n \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x07R\rparentNetwork\x88\x01\x01\x12]\n\x0e\x61\x64\x64ress_family\x18\x0b \x01(\x0e\x32\'.metalstack.api.v2.NetworkAddressFamilyB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x08R\raddressFamily\x88\x01\x01\x12\x41\n\x04type\x18\x0c \x01(\x0e\x32\x1e.metalstack.api.v2.NetworkTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\tR\x04type\x88\x01\x01\x12\x44\n\x08nat_type\x18\r \x01(\x0e\x32\x1a.metalstack.api.v2.NATTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\nR\x07natType\x88\x01\x01\x12\x36\n\x06labels\x18\x0e \x01(\x0b\x32\x19.metalstack.api.v2.LabelsH\x0bR\x06labels\x88\x01\x01\x42\x05\n\x03_idB\x07\n\x05_nameB\x0e\n\x0c_descriptionB\x0c\n\n_partitionB\n\n\x08_projectB\x0c\n\n_namespaceB\x06\n\x04_vrfB\x11\n\x0f_parent_networkB\x11\n\x0f_address_familyB\x07\n\x05_typeB\x0b\n\t_nat_typeB\t\n\x07_labels\"\x82\x01\n\x1a\x45xternalNetworkMemberQuery\x12*\n\x06switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01H\x00R\x06switch\x88\x01\x01\x12$\n\x04rack\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x01R\x04rack\x88\x01\x01\x42\t\n\x07_switchB\x07\n\x05_rack\"n\n\x11\x43hildPrefixLength\x12\"\n\x04ipv4\x18\x01 \x01(\rB\t\xbaH\x06*\x04\x18 \x00H\x00R\x04ipv4\x88\x01\x01\x12#\n\x04ipv6\x18\x02 \x01(\rB\n\xbaH\x07*\x05\x18\x80\x01 \x00H\x01R\x04ipv6\x88\x01\x01\x42\x07\n\x05_ipv4B\x07\n\x05_ipv6\"~\n\x12NetworkConsumption\x12\x33\n\x04ipv4\x18\x01 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv4\x12\x33\n\x04ipv6\x18\x02 \x01(\x0b\x32\x1f.metalstack.api.v2.NetworkUsageR\x04ipv6\"\xa2\x01\n\x0cNetworkUsage\x12#\n\ravailable_ips\x18\x01 \x01(\x04R\x0c\x61vailableIps\x12\x19\n\x08used_ips\x18\x02 \x01(\x04R\x07usedIps\x12-\n\x12\x61vailable_prefixes\x18\x03 \x01(\x04R\x11\x61vailablePrefixes\x12#\n\rused_prefixes\x18\x04 \x01(\x04R\x0cusedPrefixes\"c\n\x15\x45xternalNetworkMember\x12#\n\x06switch\x18\x01 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x06switch\x12%\n\x05ports\x18\x02 \x03(\tB\x0f\xbaH\x0c\x92\x01\t\x10\x80\x10\xd0\xa4\xb3\xb1\x02\x01R\x05ports*m\n\x07NATType\x12\x18\n\x14NAT_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\rNAT_TYPE_NONE\x10\x01\x1a\x08\x82\xb2\x19\x04none\x12+\n\x18NAT_TYPE_IPV4_MASQUERADE\x10\x02\x1a\r\x82\xb2\x19\tipv4-masq*\xad\x02\n\x0bNetworkType\x12\x1c\n\x18NETWORK_TYPE_UNSPECIFIED\x10\x00\x12\'\n\x15NETWORK_TYPE_EXTERNAL\x10\x01\x1a\x0c\x82\xb2\x19\x08\x65xternal\x12\'\n\x15NETWORK_TYPE_UNDERLAY\x10\x02\x1a\x0c\x82\xb2\x19\x08underlay\x12!\n\x12NETWORK_TYPE_SUPER\x10\x03\x1a\t\x82\xb2\x19\x05super\x12\x37\n\x1dNETWORK_TYPE_SUPER_NAMESPACED\x10\x04\x1a\x14\x82\xb2\x19\x10super-namespaced\x12!\n\x12NETWORK_TYPE_CHILD\x10\x05\x1a\t\x82\xb2\x19\x05\x63hild\x12/\n\x19NETWORK_TYPE_CHILD_SHARED\x10\x06\x1a\x10\x82\xb2\x19\x0c\x63hild-shared*\xc7\x01\n\x14NetworkAddressFamily\x12&\n\"NETWORK_ADDRESS_FAMILY_UNSPECIFIED\x10\x00\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V4\x10\x01\x1a\x08\x82\xb2\x19\x04ipv4\x12\'\n\x19NETWORK_ADDRESS_FAMILY_V6\x10\x02\x1a\x08\x82\xb2\x19\x04ipv6\x12\x35\n!NETWORK_ADDRESS_FAMILY_DUAL_STACK\x10\x03\x1a\x0e\x82\xb2\x19\ndual-stack2\xed\x05\n\x0eNetworkService\x12m\n\x03Get\x12+.metalstack.api.v2.NetworkServiceGetRequest\x1a,.metalstack.api.v2.NetworkServiceGetResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x43reate\x12..metalstack.api.v2.NetworkServiceCreateRequest\x1a/.metalstack.api.v2.NetworkServiceCreateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12u\n\x06Update\x12..metalstack.api.v2.NetworkServiceUpdateRequest\x1a/.metalstack.api.v2.NetworkServiceUpdateResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x12p\n\x04List\x12,.metalstack.api.v2.NetworkServiceListRequest\x1a-.metalstack.api.v2.NetworkServiceListResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12\x94\x01\n\x10ListBaseNetworks\x12\x38.metalstack.api.v2.NetworkServiceListBaseNetworksRequest\x1a\x39.metalstack.api.v2.NetworkServiceListBaseNetworksResponse\"\x0b\xca\xf3\x18\x03\x01\x02\x03\xe0\xf3\x18\x02\x12u\n\x06\x44\x65lete\x12..metalstack.api.v2.NetworkServiceDeleteRequest\x1a/.metalstack.api.v2.NetworkServiceDeleteResponse\"\n\xca\xf3\x18\x02\x01\x02\xe0\xf3\x18\x01\x42\xc2\x01\n\x15\x63om.metalstack.api.v2B\x0cNetworkProtoP\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
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -139,10 +139,18 @@ if not _descriptor._USE_C_DESCRIPTORS:
139
139
  _globals['_NETWORKQUERY'].fields_by_name['type']._serialized_options = b'\272H\005\202\001\002\020\001'
140
140
  _globals['_NETWORKQUERY'].fields_by_name['nat_type']._loaded_options = None
141
141
  _globals['_NETWORKQUERY'].fields_by_name['nat_type']._serialized_options = b'\272H\005\202\001\002\020\001'
142
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['switch']._loaded_options = None
143
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['switch']._serialized_options = b'\272H\nr\010h\001\300\263\256\261\002\001'
144
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['rack']._loaded_options = None
145
+ _globals['_EXTERNALNETWORKMEMBERQUERY'].fields_by_name['rack']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
142
146
  _globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv4']._loaded_options = None
143
147
  _globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv4']._serialized_options = b'\272H\006*\004\030 \000'
144
148
  _globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv6']._loaded_options = None
145
149
  _globals['_CHILDPREFIXLENGTH'].fields_by_name['ipv6']._serialized_options = b'\272H\007*\005\030\200\001 \000'
150
+ _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['switch']._loaded_options = None
151
+ _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['switch']._serialized_options = b'\272H\010r\006\300\263\256\261\002\001'
152
+ _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['ports']._loaded_options = None
153
+ _globals['_EXTERNALNETWORKMEMBER'].fields_by_name['ports']._serialized_options = b'\272H\014\222\001\t\020\200\020\320\244\263\261\002\001'
146
154
  _globals['_NETWORKSERVICE'].methods_by_name['Get']._loaded_options = None
147
155
  _globals['_NETWORKSERVICE'].methods_by_name['Get']._serialized_options = b'\312\363\030\003\001\002\003\340\363\030\002'
148
156
  _globals['_NETWORKSERVICE'].methods_by_name['Create']._loaded_options = None
@@ -155,12 +163,12 @@ if not _descriptor._USE_C_DESCRIPTORS:
155
163
  _globals['_NETWORKSERVICE'].methods_by_name['ListBaseNetworks']._serialized_options = b'\312\363\030\003\001\002\003\340\363\030\002'
156
164
  _globals['_NETWORKSERVICE'].methods_by_name['Delete']._loaded_options = None
157
165
  _globals['_NETWORKSERVICE'].methods_by_name['Delete']._serialized_options = b'\312\363\030\002\001\002\340\363\030\001'
158
- _globals['_NATTYPE']._serialized_start=4423
159
- _globals['_NATTYPE']._serialized_end=4532
160
- _globals['_NETWORKTYPE']._serialized_start=4535
161
- _globals['_NETWORKTYPE']._serialized_end=4836
162
- _globals['_NETWORKADDRESSFAMILY']._serialized_start=4839
163
- _globals['_NETWORKADDRESSFAMILY']._serialized_end=5038
166
+ _globals['_NATTYPE']._serialized_start=4657
167
+ _globals['_NATTYPE']._serialized_end=4766
168
+ _globals['_NETWORKTYPE']._serialized_start=4769
169
+ _globals['_NETWORKTYPE']._serialized_end=5070
170
+ _globals['_NETWORKADDRESSFAMILY']._serialized_start=5073
171
+ _globals['_NETWORKADDRESSFAMILY']._serialized_end=5272
164
172
  _globals['_NETWORKSERVICEGETREQUEST']._serialized_start=157
165
173
  _globals['_NETWORKSERVICEGETREQUEST']._serialized_end=251
166
174
  _globals['_NETWORKSERVICEGETRESPONSE']._serialized_start=253
@@ -189,12 +197,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
189
197
  _globals['_NETWORK']._serialized_end=3115
190
198
  _globals['_NETWORKQUERY']._serialized_start=3118
191
199
  _globals['_NETWORKQUERY']._serialized_end=4016
192
- _globals['_CHILDPREFIXLENGTH']._serialized_start=4018
193
- _globals['_CHILDPREFIXLENGTH']._serialized_end=4128
194
- _globals['_NETWORKCONSUMPTION']._serialized_start=4130
195
- _globals['_NETWORKCONSUMPTION']._serialized_end=4256
196
- _globals['_NETWORKUSAGE']._serialized_start=4259
197
- _globals['_NETWORKUSAGE']._serialized_end=4421
198
- _globals['_NETWORKSERVICE']._serialized_start=5041
199
- _globals['_NETWORKSERVICE']._serialized_end=5790
200
+ _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_start=4019
201
+ _globals['_EXTERNALNETWORKMEMBERQUERY']._serialized_end=4149
202
+ _globals['_CHILDPREFIXLENGTH']._serialized_start=4151
203
+ _globals['_CHILDPREFIXLENGTH']._serialized_end=4261
204
+ _globals['_NETWORKCONSUMPTION']._serialized_start=4263
205
+ _globals['_NETWORKCONSUMPTION']._serialized_end=4389
206
+ _globals['_NETWORKUSAGE']._serialized_start=4392
207
+ _globals['_NETWORKUSAGE']._serialized_end=4554
208
+ _globals['_EXTERNALNETWORKMEMBER']._serialized_start=4556
209
+ _globals['_EXTERNALNETWORKMEMBER']._serialized_end=4655
210
+ _globals['_NETWORKSERVICE']._serialized_start=5275
211
+ _globals['_NETWORKSERVICE']._serialized_end=6024
200
212
  # @@protoc_insertion_point(module_scope)
@@ -221,6 +221,14 @@ class NetworkQuery(_message.Message):
221
221
  labels: _common_pb2.Labels
222
222
  def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., partition: _Optional[str] = ..., project: _Optional[str] = ..., namespace: _Optional[str] = ..., prefixes: _Optional[_Iterable[str]] = ..., destination_prefixes: _Optional[_Iterable[str]] = ..., vrf: _Optional[int] = ..., parent_network: _Optional[str] = ..., address_family: _Optional[_Union[NetworkAddressFamily, str]] = ..., type: _Optional[_Union[NetworkType, str]] = ..., nat_type: _Optional[_Union[NATType, str]] = ..., labels: _Optional[_Union[_common_pb2.Labels, _Mapping]] = ...) -> None: ...
223
223
 
224
+ class ExternalNetworkMemberQuery(_message.Message):
225
+ __slots__ = ("switch", "rack")
226
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
227
+ RACK_FIELD_NUMBER: _ClassVar[int]
228
+ switch: str
229
+ rack: str
230
+ def __init__(self, switch: _Optional[str] = ..., rack: _Optional[str] = ...) -> None: ...
231
+
224
232
  class ChildPrefixLength(_message.Message):
225
233
  __slots__ = ("ipv4", "ipv6")
226
234
  IPV4_FIELD_NUMBER: _ClassVar[int]
@@ -248,3 +256,11 @@ class NetworkUsage(_message.Message):
248
256
  available_prefixes: int
249
257
  used_prefixes: int
250
258
  def __init__(self, available_ips: _Optional[int] = ..., used_ips: _Optional[int] = ..., available_prefixes: _Optional[int] = ..., used_prefixes: _Optional[int] = ...) -> None: ...
259
+
260
+ class ExternalNetworkMember(_message.Message):
261
+ __slots__ = ("switch", "ports")
262
+ SWITCH_FIELD_NUMBER: _ClassVar[int]
263
+ PORTS_FIELD_NUMBER: _ClassVar[int]
264
+ switch: str
265
+ ports: _containers.RepeatedScalarFieldContainer[str]
266
+ def __init__(self, switch: _Optional[str] = ..., ports: _Optional[_Iterable[str]] = ...) -> None: ...