metal-stack-api 0.0.35__tar.gz → 0.0.37__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 (113) hide show
  1. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/PKG-INFO +1 -1
  2. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metal_stack_api.egg-info/PKG-INFO +1 -1
  3. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metal_stack_api.egg-info/SOURCES.txt +8 -0
  4. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/switch_pb2.py +18 -18
  5. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/switch_pb2.pyi +4 -2
  6. metal_stack_api-0.0.37/metalstack/admin/v2/vpn_connect.py +184 -0
  7. metal_stack_api-0.0.37/metalstack/admin/v2/vpn_pb2.py +55 -0
  8. metal_stack_api-0.0.37/metalstack/admin/v2/vpn_pb2.pyi +43 -0
  9. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/machine_pb2.py +46 -44
  10. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/machine_pb2.pyi +12 -6
  11. metal_stack_api-0.0.37/metalstack/api/v2/vpn_pb2.py +38 -0
  12. metal_stack_api-0.0.37/metalstack/api/v2/vpn_pb2.pyi +26 -0
  13. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/client/client.py +8 -0
  14. metal_stack_api-0.0.37/metalstack/infra/v2/event_connect.py +119 -0
  15. metal_stack_api-0.0.37/metalstack/infra/v2/event_pb2.py +78 -0
  16. metal_stack_api-0.0.37/metalstack/infra/v2/event_pb2.pyi +71 -0
  17. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/README.md +0 -0
  18. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metal_stack_api.egg-info/dependency_links.txt +0 -0
  19. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metal_stack_api.egg-info/requires.txt +0 -0
  20. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metal_stack_api.egg-info/top_level.txt +0 -0
  21. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/__init__.py +0 -0
  22. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/__init__.py +0 -0
  23. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/__init__.py +0 -0
  24. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/filesystem_connect.py +0 -0
  25. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/filesystem_pb2.py +0 -0
  26. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/filesystem_pb2.pyi +0 -0
  27. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/image_connect.py +0 -0
  28. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/image_pb2.py +0 -0
  29. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/image_pb2.pyi +0 -0
  30. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/ip_connect.py +0 -0
  31. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/ip_pb2.py +0 -0
  32. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/ip_pb2.pyi +0 -0
  33. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/machine_connect.py +0 -0
  34. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/machine_pb2.py +0 -0
  35. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/machine_pb2.pyi +0 -0
  36. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/network_connect.py +0 -0
  37. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/network_pb2.py +0 -0
  38. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/network_pb2.pyi +0 -0
  39. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/partition_connect.py +0 -0
  40. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/partition_pb2.py +0 -0
  41. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/partition_pb2.pyi +0 -0
  42. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/project_connect.py +0 -0
  43. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/project_pb2.py +0 -0
  44. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/project_pb2.pyi +0 -0
  45. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/size_connect.py +0 -0
  46. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/size_pb2.py +0 -0
  47. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/size_pb2.pyi +0 -0
  48. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/switch_connect.py +0 -0
  49. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/tenant_connect.py +0 -0
  50. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/tenant_pb2.py +0 -0
  51. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/tenant_pb2.pyi +0 -0
  52. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/token_connect.py +0 -0
  53. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/token_pb2.py +0 -0
  54. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/admin/v2/token_pb2.pyi +0 -0
  55. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/__init__.py +0 -0
  56. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/__init__.py +0 -0
  57. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/common_pb2.py +0 -0
  58. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/common_pb2.pyi +0 -0
  59. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/filesystem_connect.py +0 -0
  60. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/filesystem_pb2.py +0 -0
  61. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/filesystem_pb2.pyi +0 -0
  62. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/health_connect.py +0 -0
  63. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/health_pb2.py +0 -0
  64. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/health_pb2.pyi +0 -0
  65. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/image_connect.py +0 -0
  66. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/image_pb2.py +0 -0
  67. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/image_pb2.pyi +0 -0
  68. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/ip_connect.py +0 -0
  69. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/ip_pb2.py +0 -0
  70. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/ip_pb2.pyi +0 -0
  71. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/machine_connect.py +0 -0
  72. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/method_connect.py +0 -0
  73. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/method_pb2.py +0 -0
  74. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/method_pb2.pyi +0 -0
  75. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/network_connect.py +0 -0
  76. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/network_pb2.py +0 -0
  77. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/network_pb2.pyi +0 -0
  78. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/partition_connect.py +0 -0
  79. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/partition_pb2.py +0 -0
  80. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/partition_pb2.pyi +0 -0
  81. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/predefined_rules_pb2.py +0 -0
  82. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/predefined_rules_pb2.pyi +0 -0
  83. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/project_connect.py +0 -0
  84. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/project_pb2.py +0 -0
  85. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/project_pb2.pyi +0 -0
  86. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/size_connect.py +0 -0
  87. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/size_pb2.py +0 -0
  88. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/size_pb2.pyi +0 -0
  89. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/switch_pb2.py +0 -0
  90. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/switch_pb2.pyi +0 -0
  91. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/tenant_connect.py +0 -0
  92. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/tenant_pb2.py +0 -0
  93. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/tenant_pb2.pyi +0 -0
  94. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/token_connect.py +0 -0
  95. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/token_pb2.py +0 -0
  96. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/token_pb2.pyi +0 -0
  97. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/user_connect.py +0 -0
  98. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/user_pb2.py +0 -0
  99. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/user_pb2.pyi +0 -0
  100. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/version_connect.py +0 -0
  101. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/version_pb2.py +0 -0
  102. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/api/v2/version_pb2.pyi +0 -0
  103. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/client/__init__.py +0 -0
  104. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/__init__.py +0 -0
  105. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/__init__.py +0 -0
  106. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/bmc_connect.py +0 -0
  107. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/bmc_pb2.py +0 -0
  108. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/bmc_pb2.pyi +0 -0
  109. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/switch_connect.py +0 -0
  110. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/switch_pb2.py +0 -0
  111. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/metalstack/infra/v2/switch_pb2.pyi +0 -0
  112. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/setup.cfg +0 -0
  113. {metal_stack_api-0.0.35 → metal_stack_api-0.0.37}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metal-stack-api
3
- Version: 0.0.35
3
+ Version: 0.0.37
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.0.35
3
+ Version: 0.0.37
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
@@ -41,6 +41,9 @@ metalstack/admin/v2/tenant_pb2.pyi
41
41
  metalstack/admin/v2/token_connect.py
42
42
  metalstack/admin/v2/token_pb2.py
43
43
  metalstack/admin/v2/token_pb2.pyi
44
+ metalstack/admin/v2/vpn_connect.py
45
+ metalstack/admin/v2/vpn_pb2.py
46
+ metalstack/admin/v2/vpn_pb2.pyi
44
47
  metalstack/api/__init__.py
45
48
  metalstack/api/v2/__init__.py
46
49
  metalstack/api/v2/common_pb2.py
@@ -91,6 +94,8 @@ metalstack/api/v2/user_pb2.pyi
91
94
  metalstack/api/v2/version_connect.py
92
95
  metalstack/api/v2/version_pb2.py
93
96
  metalstack/api/v2/version_pb2.pyi
97
+ metalstack/api/v2/vpn_pb2.py
98
+ metalstack/api/v2/vpn_pb2.pyi
94
99
  metalstack/client/__init__.py
95
100
  metalstack/client/client.py
96
101
  metalstack/infra/__init__.py
@@ -98,6 +103,9 @@ metalstack/infra/v2/__init__.py
98
103
  metalstack/infra/v2/bmc_connect.py
99
104
  metalstack/infra/v2/bmc_pb2.py
100
105
  metalstack/infra/v2/bmc_pb2.pyi
106
+ metalstack/infra/v2/event_connect.py
107
+ metalstack/infra/v2/event_pb2.py
108
+ metalstack/infra/v2/event_pb2.pyi
101
109
  metalstack/infra/v2/switch_connect.py
102
110
  metalstack/infra/v2/switch_pb2.py
103
111
  metalstack/infra/v2/switch_pb2.pyi
@@ -29,7 +29,7 @@ from metalstack.api.v2 import predefined_rules_pb2 as metalstack_dot_api_dot_v2_
29
29
  from metalstack.api.v2 import switch_pb2 as metalstack_dot_api_dot_v2_dot_switch__pb2
30
30
 
31
31
 
32
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/switch.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"8\n\x17SwitchServiceGetRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\"M\n\x18SwitchServiceGetResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"P\n\x18SwitchServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\"R\n\x19SwitchServiceListResponse\x12\x35\n\x08switches\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches\"\xb9\x05\n\x1aSwitchServiceUpdateRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\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\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12V\n\x0creplace_mode\x18\x05 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x0breplaceMode\x88\x01\x01\x12\x31\n\rmanagement_ip\x18\x06 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x02R\x0cmanagementIp\x88\x01\x01\x12\x39\n\x0fmanagement_user\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x0emanagementUser\x88\x01\x01\x12\x39\n\x0f\x63onsole_command\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\t \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12\x30\n\x02os\x18\n \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSH\x05R\x02os\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0f\n\r_replace_modeB\x10\n\x0e_management_ipB\x12\n\x10_management_userB\x12\n\x10_console_commandB\x05\n\x03_os\"P\n\x1bSwitchServiceUpdateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"Q\n\x1aSwitchServiceDeleteRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\x14\n\x05\x66orce\x18\x02 \x01(\x08R\x05\x66orce\"P\n\x1bSwitchServiceDeleteResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"y\n\x1bSwitchServiceMigrateRequest\x12,\n\nold_switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\toldSwitch\x12,\n\nnew_switch\x18\x02 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\tnewSwitch\"Q\n\x1cSwitchServiceMigrateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xa8\x01\n\x18SwitchServicePortRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12&\n\x08nic_name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07nicName\x12\x45\n\x06status\x18\x03 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06status\"N\n\x19SwitchServicePortResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch2\xbf\x05\n\rSwitchService\x12n\n\x03Get\x12,.metalstack.admin.v2.SwitchServiceGetRequest\x1a-.metalstack.admin.v2.SwitchServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12q\n\x04List\x12-.metalstack.admin.v2.SwitchServiceListRequest\x1a..metalstack.admin.v2.SwitchServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12r\n\x06Update\x12/.metalstack.admin.v2.SwitchServiceUpdateRequest\x1a\x30.metalstack.admin.v2.SwitchServiceUpdateResponse\"\x05\xd2\xf3\x18\x01\x01\x12r\n\x06\x44\x65lete\x12/.metalstack.admin.v2.SwitchServiceDeleteRequest\x1a\x30.metalstack.admin.v2.SwitchServiceDeleteResponse\"\x05\xd2\xf3\x18\x01\x01\x12u\n\x07Migrate\x12\x30.metalstack.admin.v2.SwitchServiceMigrateRequest\x1a\x31.metalstack.admin.v2.SwitchServiceMigrateResponse\"\x05\xd2\xf3\x18\x01\x01\x12l\n\x04Port\x12-.metalstack.admin.v2.SwitchServicePortRequest\x1a..metalstack.admin.v2.SwitchServicePortResponse\"\x05\xd2\xf3\x18\x01\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bSwitchProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
32
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n metalstack/admin/v2/switch.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1emetalstack/api/v2/common.proto\x1a(metalstack/api/v2/predefined_rules.proto\x1a\x1emetalstack/api/v2/switch.proto\"8\n\x17SwitchServiceGetRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\"M\n\x18SwitchServiceGetResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"P\n\x18SwitchServiceListRequest\x12\x34\n\x05query\x18\x01 \x01(\x0b\x32\x1e.metalstack.api.v2.SwitchQueryR\x05query\"R\n\x19SwitchServiceListResponse\x12\x35\n\x08switches\x18\x01 \x03(\x0b\x32\x19.metalstack.api.v2.SwitchR\x08switches\"\x90\x06\n\x1aSwitchServiceUpdateRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\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\x39\n\nupdated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x32\n\x0b\x64\x65scription\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x00R\x0b\x64\x65scription\x88\x01\x01\x12V\n\x0creplace_mode\x18\x05 \x01(\x0e\x32$.metalstack.api.v2.SwitchReplaceModeB\x08\xbaH\x05\x82\x01\x02\x10\x01H\x01R\x0breplaceMode\x88\x01\x01\x12\x31\n\rmanagement_ip\x18\x06 \x01(\tB\x07\xbaH\x04r\x02p\x01H\x02R\x0cmanagementIp\x88\x01\x01\x12\x39\n\x0fmanagement_user\x18\x07 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01H\x03R\x0emanagementUser\x88\x01\x01\x12\x39\n\x0f\x63onsole_command\x18\x08 \x01(\tB\x0b\xbaH\x08r\x06\xc8\xb3\xae\xb1\x02\x01H\x04R\x0e\x63onsoleCommand\x88\x01\x01\x12\x30\n\x04nics\x18\t \x03(\x0b\x32\x1c.metalstack.api.v2.SwitchNicR\x04nics\x12\x30\n\x02os\x18\n \x01(\x0b\x32\x1b.metalstack.api.v2.SwitchOSH\x05R\x02os\x88\x01\x01\x12U\n\x13machine_connections\x18\x0b \x03(\x0b\x32$.metalstack.api.v2.MachineConnectionR\x12machineConnectionsB\x0e\n\x0c_descriptionB\x0f\n\r_replace_modeB\x10\n\x0e_management_ipB\x12\n\x10_management_userB\x12\n\x10_console_commandB\x05\n\x03_os\"P\n\x1bSwitchServiceUpdateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"Q\n\x1aSwitchServiceDeleteRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12\x14\n\x05\x66orce\x18\x02 \x01(\x08R\x05\x66orce\"P\n\x1bSwitchServiceDeleteResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"y\n\x1bSwitchServiceMigrateRequest\x12,\n\nold_switch\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\toldSwitch\x12,\n\nnew_switch\x18\x02 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\tnewSwitch\"Q\n\x1cSwitchServiceMigrateResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch\"\xa8\x01\n\x18SwitchServicePortRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\xbaH\nr\x08h\x01\xc0\xb3\xae\xb1\x02\x01R\x02id\x12&\n\x08nic_name\x18\x02 \x01(\tB\x0b\xbaH\x08r\x06\xc0\xb3\xae\xb1\x02\x01R\x07nicName\x12\x45\n\x06status\x18\x03 \x01(\x0e\x32#.metalstack.api.v2.SwitchPortStatusB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x06status\"N\n\x19SwitchServicePortResponse\x12\x31\n\x06switch\x18\x01 \x01(\x0b\x32\x19.metalstack.api.v2.SwitchR\x06switch2\xbf\x05\n\rSwitchService\x12n\n\x03Get\x12,.metalstack.admin.v2.SwitchServiceGetRequest\x1a-.metalstack.admin.v2.SwitchServiceGetResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12q\n\x04List\x12-.metalstack.admin.v2.SwitchServiceListRequest\x1a..metalstack.admin.v2.SwitchServiceListResponse\"\n\xd2\xf3\x18\x02\x01\x02\xe0\xf3\x18\x02\x12r\n\x06Update\x12/.metalstack.admin.v2.SwitchServiceUpdateRequest\x1a\x30.metalstack.admin.v2.SwitchServiceUpdateResponse\"\x05\xd2\xf3\x18\x01\x01\x12r\n\x06\x44\x65lete\x12/.metalstack.admin.v2.SwitchServiceDeleteRequest\x1a\x30.metalstack.admin.v2.SwitchServiceDeleteResponse\"\x05\xd2\xf3\x18\x01\x01\x12u\n\x07Migrate\x12\x30.metalstack.admin.v2.SwitchServiceMigrateRequest\x1a\x31.metalstack.admin.v2.SwitchServiceMigrateResponse\"\x05\xd2\xf3\x18\x01\x01\x12l\n\x04Port\x12-.metalstack.admin.v2.SwitchServicePortRequest\x1a..metalstack.admin.v2.SwitchServicePortResponse\"\x05\xd2\xf3\x18\x01\x01\x42\xcf\x01\n\x17\x63om.metalstack.admin.v2B\x0bSwitchProtoP\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
33
 
34
34
  _globals = globals()
35
35
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -86,21 +86,21 @@ if not _descriptor._USE_C_DESCRIPTORS:
86
86
  _globals['_SWITCHSERVICELISTRESPONSE']._serialized_start=444
87
87
  _globals['_SWITCHSERVICELISTRESPONSE']._serialized_end=526
88
88
  _globals['_SWITCHSERVICEUPDATEREQUEST']._serialized_start=529
89
- _globals['_SWITCHSERVICEUPDATEREQUEST']._serialized_end=1226
90
- _globals['_SWITCHSERVICEUPDATERESPONSE']._serialized_start=1228
91
- _globals['_SWITCHSERVICEUPDATERESPONSE']._serialized_end=1308
92
- _globals['_SWITCHSERVICEDELETEREQUEST']._serialized_start=1310
93
- _globals['_SWITCHSERVICEDELETEREQUEST']._serialized_end=1391
94
- _globals['_SWITCHSERVICEDELETERESPONSE']._serialized_start=1393
95
- _globals['_SWITCHSERVICEDELETERESPONSE']._serialized_end=1473
96
- _globals['_SWITCHSERVICEMIGRATEREQUEST']._serialized_start=1475
97
- _globals['_SWITCHSERVICEMIGRATEREQUEST']._serialized_end=1596
98
- _globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_start=1598
99
- _globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_end=1679
100
- _globals['_SWITCHSERVICEPORTREQUEST']._serialized_start=1682
101
- _globals['_SWITCHSERVICEPORTREQUEST']._serialized_end=1850
102
- _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_start=1852
103
- _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_end=1930
104
- _globals['_SWITCHSERVICE']._serialized_start=1933
105
- _globals['_SWITCHSERVICE']._serialized_end=2636
89
+ _globals['_SWITCHSERVICEUPDATEREQUEST']._serialized_end=1313
90
+ _globals['_SWITCHSERVICEUPDATERESPONSE']._serialized_start=1315
91
+ _globals['_SWITCHSERVICEUPDATERESPONSE']._serialized_end=1395
92
+ _globals['_SWITCHSERVICEDELETEREQUEST']._serialized_start=1397
93
+ _globals['_SWITCHSERVICEDELETEREQUEST']._serialized_end=1478
94
+ _globals['_SWITCHSERVICEDELETERESPONSE']._serialized_start=1480
95
+ _globals['_SWITCHSERVICEDELETERESPONSE']._serialized_end=1560
96
+ _globals['_SWITCHSERVICEMIGRATEREQUEST']._serialized_start=1562
97
+ _globals['_SWITCHSERVICEMIGRATEREQUEST']._serialized_end=1683
98
+ _globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_start=1685
99
+ _globals['_SWITCHSERVICEMIGRATERESPONSE']._serialized_end=1766
100
+ _globals['_SWITCHSERVICEPORTREQUEST']._serialized_start=1769
101
+ _globals['_SWITCHSERVICEPORTREQUEST']._serialized_end=1937
102
+ _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_start=1939
103
+ _globals['_SWITCHSERVICEPORTRESPONSE']._serialized_end=2017
104
+ _globals['_SWITCHSERVICE']._serialized_start=2020
105
+ _globals['_SWITCHSERVICE']._serialized_end=2723
106
106
  # @@protoc_insertion_point(module_scope)
@@ -38,7 +38,7 @@ class SwitchServiceListResponse(_message.Message):
38
38
  def __init__(self, switches: _Optional[_Iterable[_Union[_switch_pb2.Switch, _Mapping]]] = ...) -> None: ...
39
39
 
40
40
  class SwitchServiceUpdateRequest(_message.Message):
41
- __slots__ = ("id", "update_meta", "updated_at", "description", "replace_mode", "management_ip", "management_user", "console_command", "nics", "os")
41
+ __slots__ = ("id", "update_meta", "updated_at", "description", "replace_mode", "management_ip", "management_user", "console_command", "nics", "os", "machine_connections")
42
42
  ID_FIELD_NUMBER: _ClassVar[int]
43
43
  UPDATE_META_FIELD_NUMBER: _ClassVar[int]
44
44
  UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
@@ -49,6 +49,7 @@ class SwitchServiceUpdateRequest(_message.Message):
49
49
  CONSOLE_COMMAND_FIELD_NUMBER: _ClassVar[int]
50
50
  NICS_FIELD_NUMBER: _ClassVar[int]
51
51
  OS_FIELD_NUMBER: _ClassVar[int]
52
+ MACHINE_CONNECTIONS_FIELD_NUMBER: _ClassVar[int]
52
53
  id: str
53
54
  update_meta: _common_pb2.UpdateMeta
54
55
  updated_at: _timestamp_pb2.Timestamp
@@ -59,7 +60,8 @@ class SwitchServiceUpdateRequest(_message.Message):
59
60
  console_command: str
60
61
  nics: _containers.RepeatedCompositeFieldContainer[_switch_pb2.SwitchNic]
61
62
  os: _switch_pb2.SwitchOS
62
- def __init__(self, id: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., description: _Optional[str] = ..., replace_mode: _Optional[_Union[_switch_pb2.SwitchReplaceMode, str]] = ..., management_ip: _Optional[str] = ..., management_user: _Optional[str] = ..., console_command: _Optional[str] = ..., nics: _Optional[_Iterable[_Union[_switch_pb2.SwitchNic, _Mapping]]] = ..., os: _Optional[_Union[_switch_pb2.SwitchOS, _Mapping]] = ...) -> None: ...
63
+ machine_connections: _containers.RepeatedCompositeFieldContainer[_switch_pb2.MachineConnection]
64
+ def __init__(self, id: _Optional[str] = ..., update_meta: _Optional[_Union[_common_pb2.UpdateMeta, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., description: _Optional[str] = ..., replace_mode: _Optional[_Union[_switch_pb2.SwitchReplaceMode, str]] = ..., management_ip: _Optional[str] = ..., management_user: _Optional[str] = ..., console_command: _Optional[str] = ..., nics: _Optional[_Iterable[_Union[_switch_pb2.SwitchNic, _Mapping]]] = ..., os: _Optional[_Union[_switch_pb2.SwitchOS, _Mapping]] = ..., machine_connections: _Optional[_Iterable[_Union[_switch_pb2.MachineConnection, _Mapping]]] = ...) -> None: ...
63
65
 
64
66
  class SwitchServiceUpdateResponse(_message.Message):
65
67
  __slots__ = ("switch",)
@@ -0,0 +1,184 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
+ # source: metalstack/admin/v2/vpn.proto
4
+
5
+ from collections.abc import AsyncIterator, Iterable, Iterator, Mapping
6
+ from typing import Protocol
7
+
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
+ import metalstack.admin.v2.vpn_pb2 as metalstack_dot_admin_dot_v2_dot_vpn__pb2
16
+
17
+
18
+ class VPNService(Protocol):
19
+ async def auth_key(self, request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse:
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
+
22
+ async def list_nodes(self, request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse:
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
+
25
+
26
+ class VPNServiceASGIApplication(ConnectASGIApplication):
27
+ def __init__(self, service: VPNService, *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
+ super().__init__(
29
+ endpoints={
30
+ "/metalstack.admin.v2.VPNService/AuthKey": Endpoint.unary(
31
+ method=MethodInfo(
32
+ name="AuthKey",
33
+ service_name="metalstack.admin.v2.VPNService",
34
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
35
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse,
36
+ idempotency_level=IdempotencyLevel.UNKNOWN,
37
+ ),
38
+ function=service.auth_key,
39
+ ),
40
+ "/metalstack.admin.v2.VPNService/ListNodes": Endpoint.unary(
41
+ method=MethodInfo(
42
+ name="ListNodes",
43
+ service_name="metalstack.admin.v2.VPNService",
44
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
45
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse,
46
+ idempotency_level=IdempotencyLevel.UNKNOWN,
47
+ ),
48
+ function=service.list_nodes,
49
+ ),
50
+ },
51
+ interceptors=interceptors,
52
+ read_max_bytes=read_max_bytes,
53
+ )
54
+
55
+ @property
56
+ def path(self) -> str:
57
+ """Returns the URL path to mount the application to when serving multiple applications."""
58
+ return "/metalstack.admin.v2.VPNService"
59
+
60
+
61
+ class VPNServiceClient(ConnectClient):
62
+ async def auth_key(
63
+ self,
64
+ request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
65
+ *,
66
+ headers: Headers | Mapping[str, str] | None = None,
67
+ timeout_ms: int | None = None,
68
+ ) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse:
69
+ return await self.execute_unary(
70
+ request=request,
71
+ method=MethodInfo(
72
+ name="AuthKey",
73
+ service_name="metalstack.admin.v2.VPNService",
74
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
75
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse,
76
+ idempotency_level=IdempotencyLevel.UNKNOWN,
77
+ ),
78
+ headers=headers,
79
+ timeout_ms=timeout_ms,
80
+ )
81
+
82
+ async def list_nodes(
83
+ self,
84
+ request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
85
+ *,
86
+ headers: Headers | Mapping[str, str] | None = None,
87
+ timeout_ms: int | None = None,
88
+ ) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse:
89
+ return await self.execute_unary(
90
+ request=request,
91
+ method=MethodInfo(
92
+ name="ListNodes",
93
+ service_name="metalstack.admin.v2.VPNService",
94
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
95
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse,
96
+ idempotency_level=IdempotencyLevel.UNKNOWN,
97
+ ),
98
+ headers=headers,
99
+ timeout_ms=timeout_ms,
100
+ )
101
+
102
+
103
+ class VPNServiceSync(Protocol):
104
+ def auth_key(self, request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse:
105
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
106
+ def list_nodes(self, request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest, ctx: RequestContext) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse:
107
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
108
+
109
+
110
+ class VPNServiceWSGIApplication(ConnectWSGIApplication):
111
+ def __init__(self, service: VPNServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
112
+ super().__init__(
113
+ endpoints={
114
+ "/metalstack.admin.v2.VPNService/AuthKey": EndpointSync.unary(
115
+ method=MethodInfo(
116
+ name="AuthKey",
117
+ service_name="metalstack.admin.v2.VPNService",
118
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
119
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse,
120
+ idempotency_level=IdempotencyLevel.UNKNOWN,
121
+ ),
122
+ function=service.auth_key,
123
+ ),
124
+ "/metalstack.admin.v2.VPNService/ListNodes": EndpointSync.unary(
125
+ method=MethodInfo(
126
+ name="ListNodes",
127
+ service_name="metalstack.admin.v2.VPNService",
128
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
129
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse,
130
+ idempotency_level=IdempotencyLevel.UNKNOWN,
131
+ ),
132
+ function=service.list_nodes,
133
+ ),
134
+ },
135
+ interceptors=interceptors,
136
+ read_max_bytes=read_max_bytes,
137
+ )
138
+
139
+ @property
140
+ def path(self) -> str:
141
+ """Returns the URL path to mount the application to when serving multiple applications."""
142
+ return "/metalstack.admin.v2.VPNService"
143
+
144
+
145
+ class VPNServiceClientSync(ConnectClientSync):
146
+ def auth_key(
147
+ self,
148
+ request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
149
+ *,
150
+ headers: Headers | Mapping[str, str] | None = None,
151
+ timeout_ms: int | None = None,
152
+ ) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse:
153
+ return self.execute_unary(
154
+ request=request,
155
+ method=MethodInfo(
156
+ name="AuthKey",
157
+ service_name="metalstack.admin.v2.VPNService",
158
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyRequest,
159
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceAuthKeyResponse,
160
+ idempotency_level=IdempotencyLevel.UNKNOWN,
161
+ ),
162
+ headers=headers,
163
+ timeout_ms=timeout_ms,
164
+ )
165
+
166
+ def list_nodes(
167
+ self,
168
+ request: metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
169
+ *,
170
+ headers: Headers | Mapping[str, str] | None = None,
171
+ timeout_ms: int | None = None,
172
+ ) -> metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse:
173
+ return self.execute_unary(
174
+ request=request,
175
+ method=MethodInfo(
176
+ name="ListNodes",
177
+ service_name="metalstack.admin.v2.VPNService",
178
+ input=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesRequest,
179
+ output=metalstack_dot_admin_dot_v2_dot_vpn__pb2.VPNServiceListNodesResponse,
180
+ idempotency_level=IdempotencyLevel.UNKNOWN,
181
+ ),
182
+ headers=headers,
183
+ timeout_ms=timeout_ms,
184
+ )
@@ -0,0 +1,55 @@
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/vpn.proto
5
+ # Protobuf Python Version: 6.32.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
+ 32,
16
+ 1,
17
+ '',
18
+ 'metalstack/admin/v2/vpn.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 google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
27
+ from metalstack.api.v2 import common_pb2 as metalstack_dot_api_dot_v2_dot_common__pb2
28
+ from metalstack.api.v2 import vpn_pb2 as metalstack_dot_api_dot_v2_dot_vpn__pb2
29
+
30
+
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dmetalstack/admin/v2/vpn.proto\x12\x13metalstack.admin.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1emetalstack/api/v2/common.proto\x1a\x1bmetalstack/api/v2/vpn.proto\"\x91\x01\n\x18VPNServiceAuthKeyRequest\x12\"\n\x07project\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07project\x12\x1c\n\tephemeral\x18\x02 \x01(\x08R\tephemeral\x12\x33\n\x07\x65xpires\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x07\x65xpires\"P\n\x19VPNServiceAuthKeyResponse\x12\x18\n\x07\x61\x64\x64ress\x18\x01 \x01(\tR\x07\x61\x64\x64ress\x12\x19\n\x08\x61uth_key\x18\x02 \x01(\tR\x07\x61uthKey\"G\n\x1aVPNServiceListNodesRequest\x12\x1d\n\x07project\x18\x01 \x01(\tH\x00R\x07project\x88\x01\x01\x42\n\n\x08_project\"O\n\x1bVPNServiceListNodesResponse\x12\x30\n\x05nodes\x18\x01 \x03(\x0b\x32\x1a.metalstack.api.v2.VPNNodeR\x05nodes2\xf5\x01\n\nVPNService\x12o\n\x07\x41uthKey\x12-.metalstack.admin.v2.VPNServiceAuthKeyRequest\x1a..metalstack.admin.v2.VPNServiceAuthKeyResponse\"\x05\xd2\xf3\x18\x01\x01\x12v\n\tListNodes\x12/.metalstack.admin.v2.VPNServiceListNodesRequest\x1a\x30.metalstack.admin.v2.VPNServiceListNodesResponse\"\x06\xd2\xf3\x18\x02\x01\x02\x42\xcc\x01\n\x17\x63om.metalstack.admin.v2B\x08VpnProtoP\x01Z9github.com/metal-stack/api/go/metalstack/admin/v2;adminv2\xa2\x02\x03MAX\xaa\x02\x13Metalstack.Admin.V2\xca\x02\x13Metalstack\\Admin\\V2\xe2\x02\x1fMetalstack\\Admin\\V2\\GPBMetadata\xea\x02\x15Metalstack::Admin::V2b\x06proto3')
32
+
33
+ _globals = globals()
34
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
35
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'metalstack.admin.v2.vpn_pb2', _globals)
36
+ if not _descriptor._USE_C_DESCRIPTORS:
37
+ _globals['DESCRIPTOR']._loaded_options = None
38
+ _globals['DESCRIPTOR']._serialized_options = b'\n\027com.metalstack.admin.v2B\010VpnProtoP\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'
39
+ _globals['_VPNSERVICEAUTHKEYREQUEST'].fields_by_name['project']._loaded_options = None
40
+ _globals['_VPNSERVICEAUTHKEYREQUEST'].fields_by_name['project']._serialized_options = b'\272H\005r\003\260\001\001'
41
+ _globals['_VPNSERVICE'].methods_by_name['AuthKey']._loaded_options = None
42
+ _globals['_VPNSERVICE'].methods_by_name['AuthKey']._serialized_options = b'\322\363\030\001\001'
43
+ _globals['_VPNSERVICE'].methods_by_name['ListNodes']._loaded_options = None
44
+ _globals['_VPNSERVICE'].methods_by_name['ListNodes']._serialized_options = b'\322\363\030\002\001\002'
45
+ _globals['_VPNSERVICEAUTHKEYREQUEST']._serialized_start=177
46
+ _globals['_VPNSERVICEAUTHKEYREQUEST']._serialized_end=322
47
+ _globals['_VPNSERVICEAUTHKEYRESPONSE']._serialized_start=324
48
+ _globals['_VPNSERVICEAUTHKEYRESPONSE']._serialized_end=404
49
+ _globals['_VPNSERVICELISTNODESREQUEST']._serialized_start=406
50
+ _globals['_VPNSERVICELISTNODESREQUEST']._serialized_end=477
51
+ _globals['_VPNSERVICELISTNODESRESPONSE']._serialized_start=479
52
+ _globals['_VPNSERVICELISTNODESRESPONSE']._serialized_end=558
53
+ _globals['_VPNSERVICE']._serialized_start=561
54
+ _globals['_VPNSERVICE']._serialized_end=806
55
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,43 @@
1
+ import datetime
2
+
3
+ from buf.validate import validate_pb2 as _validate_pb2
4
+ from google.protobuf import duration_pb2 as _duration_pb2
5
+ from metalstack.api.v2 import common_pb2 as _common_pb2
6
+ from metalstack.api.v2 import vpn_pb2 as _vpn_pb2
7
+ from google.protobuf.internal import containers as _containers
8
+ from google.protobuf import descriptor as _descriptor
9
+ from google.protobuf import message as _message
10
+ from collections.abc import Iterable as _Iterable, Mapping as _Mapping
11
+ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
12
+
13
+ DESCRIPTOR: _descriptor.FileDescriptor
14
+
15
+ class VPNServiceAuthKeyRequest(_message.Message):
16
+ __slots__ = ("project", "ephemeral", "expires")
17
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
18
+ EPHEMERAL_FIELD_NUMBER: _ClassVar[int]
19
+ EXPIRES_FIELD_NUMBER: _ClassVar[int]
20
+ project: str
21
+ ephemeral: bool
22
+ expires: _duration_pb2.Duration
23
+ def __init__(self, project: _Optional[str] = ..., ephemeral: _Optional[bool] = ..., expires: _Optional[_Union[datetime.timedelta, _duration_pb2.Duration, _Mapping]] = ...) -> None: ...
24
+
25
+ class VPNServiceAuthKeyResponse(_message.Message):
26
+ __slots__ = ("address", "auth_key")
27
+ ADDRESS_FIELD_NUMBER: _ClassVar[int]
28
+ AUTH_KEY_FIELD_NUMBER: _ClassVar[int]
29
+ address: str
30
+ auth_key: str
31
+ def __init__(self, address: _Optional[str] = ..., auth_key: _Optional[str] = ...) -> None: ...
32
+
33
+ class VPNServiceListNodesRequest(_message.Message):
34
+ __slots__ = ("project",)
35
+ PROJECT_FIELD_NUMBER: _ClassVar[int]
36
+ project: str
37
+ def __init__(self, project: _Optional[str] = ...) -> None: ...
38
+
39
+ class VPNServiceListNodesResponse(_message.Message):
40
+ __slots__ = ("nodes",)
41
+ NODES_FIELD_NUMBER: _ClassVar[int]
42
+ nodes: _containers.RepeatedCompositeFieldContainer[_vpn_pb2.VPNNode]
43
+ def __init__(self, nodes: _Optional[_Iterable[_Union[_vpn_pb2.VPNNode, _Mapping]]] = ...) -> None: ...