boxd 0.2.0.dev40__tar.gz → 0.2.2.dev43__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 (41) hide show
  1. {boxd-0.2.0.dev40/src/boxd.egg-info → boxd-0.2.2.dev43}/PKG-INFO +1 -1
  2. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/pyproject.toml +1 -1
  3. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/__init__.py +2 -0
  4. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_credentials.py +15 -16
  5. boxd-0.2.2.dev43/src/boxd/_generated/api_pb2.py +362 -0
  6. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_generated/api_pb2_grpc.py +46 -0
  7. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_mappers.py +7 -0
  8. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_requests.py +17 -2
  9. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/models.py +26 -0
  10. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/machines.py +93 -4
  11. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43/src/boxd.egg-info}/PKG-INFO +1 -1
  12. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_credentials.py +16 -36
  13. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_mappers.py +29 -0
  14. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_namespaces.py +21 -0
  15. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_requests.py +73 -1
  16. boxd-0.2.0.dev40/src/boxd/_generated/api_pb2.py +0 -358
  17. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/LICENSE +0 -0
  18. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/README.md +0 -0
  19. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/setup.cfg +0 -0
  20. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_client.py +0 -0
  21. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_generated/__init__.py +0 -0
  22. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_streaming.py +0 -0
  23. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_transport.py +0 -0
  24. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_urls.py +0 -0
  25. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/_version_check.py +0 -0
  26. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/errors.py +0 -0
  27. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/__init__.py +0 -0
  28. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/account.py +0 -0
  29. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/credentials.py +0 -0
  30. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/disks.py +0 -0
  31. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/orgs.py +0 -0
  32. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/snapshots.py +0 -0
  33. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd/resources/vars.py +0 -0
  34. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd.egg-info/SOURCES.txt +0 -0
  35. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd.egg-info/dependency_links.txt +0 -0
  36. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd.egg-info/requires.txt +0 -0
  37. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/src/boxd.egg-info/top_level.txt +0 -0
  38. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_streaming.py +0 -0
  39. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_transport.py +0 -0
  40. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_urls.py +0 -0
  41. {boxd-0.2.0.dev40 → boxd-0.2.2.dev43}/tests/test_version_check.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boxd
3
- Version: 0.2.0.dev40
3
+ Version: 0.2.2.dev43
4
4
  Summary: Python SDK for the boxd cloud VM platform
5
5
  Author: Azin
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "boxd"
3
- version = "0.2.0.dev40"
3
+ version = "0.2.2.dev43"
4
4
  description = "Python SDK for the boxd cloud VM platform"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -50,6 +50,7 @@ from .models import (
50
50
  Machine,
51
51
  MachineAccess,
52
52
  MachineIdle,
53
+ MachineNetworking,
53
54
  MachineResources,
54
55
  MachineSource,
55
56
  MachineSourceKind,
@@ -103,6 +104,7 @@ __all__ = [
103
104
  "Machine",
104
105
  "MachineAccess",
105
106
  "MachineIdle",
107
+ "MachineNetworking",
106
108
  "MachineResources",
107
109
  "MachineSource",
108
110
  "MachineSourceKind",
@@ -35,7 +35,6 @@ METADATA_TOKEN_PATH = "/v1/auth/token"
35
35
  # Proxy-minted, HMAC-signed identity token exposed to every guest process by
36
36
  # takeoff. Forwarded verbatim so the worker attributes the call to the acting
37
37
  # user rather than the VM owner.
38
- IDENTITY_HEADER = "X-Boxd-Identity"
39
38
 
40
39
  # Re-exchange an API-key JWT this long before it expires.
41
40
  EXCHANGE_SKEW_SECS = 300
@@ -78,16 +77,19 @@ def detect_gateway() -> str | None:
78
77
  return None
79
78
 
80
79
 
81
- def vm_id() -> str | None:
82
- """`BOXD_VM_ID`, injected by takeoff at PID 1 present in every guest process."""
83
- value = os.environ.get("BOXD_VM_ID")
84
- return value or None
80
+ # Only a hint: it skips the probe in the common case of running on a laptop.
81
+ # Deliberately permissive which of these a shell actually has depends on how
82
+ # the session was opened and on how old the machine is, so gating on any single
83
+ # one silently disables in-VM auth on machines that are otherwise fine. The
84
+ # metadata probe is the real test: nothing outside a boxd machine answers it.
85
+ _VM_HINTS = ("BOXD_VM_ID", "BOXD_VM_NAME", "BOXD_PROXY_ENDPOINT")
86
+
87
+
88
+ def looks_like_a_machine() -> bool:
89
+ """True when the environment hints we may be inside a boxd machine."""
90
+ return any(os.environ.get(v) for v in _VM_HINTS)
85
91
 
86
92
 
87
- def identity_token() -> str | None:
88
- """`BOXD_IDENTITY`, the session's signed identity token (already base64)."""
89
- value = os.environ.get("BOXD_IDENTITY")
90
- return value or None
91
93
 
92
94
 
93
95
  def probe(host: str, port: int, timeout: float = _PROBE_TIMEOUT_SECS) -> bool:
@@ -185,9 +187,6 @@ class _CredentialsBase:
185
187
  return "exchange"
186
188
  return "auto"
187
189
 
188
- def _headers(self) -> dict[str, str]:
189
- identity = identity_token()
190
- return {IDENTITY_HEADER: identity} if identity else {}
191
190
 
192
191
 
193
192
  class SyncCredentials(_CredentialsBase):
@@ -222,7 +221,7 @@ class SyncCredentials(_CredentialsBase):
222
221
  base = self._metadata_base()
223
222
  try:
224
223
  with httpx.Client(timeout=_HTTP_TIMEOUT_SECS) as client:
225
- resp = client.get(base + METADATA_TOKEN_PATH, headers=self._headers())
224
+ resp = client.get(base + METADATA_TOKEN_PATH)
226
225
  except httpx.HTTPError as e:
227
226
  raise AuthenticationError(f"in-VM token request failed: {e}") from e
228
227
  token, expires_at, api_url = parse_vm_token(
@@ -234,7 +233,7 @@ class SyncCredentials(_CredentialsBase):
234
233
 
235
234
  def _metadata_base(self) -> str:
236
235
  """Detection needs BOTH signals — neither alone is sufficient."""
237
- if not vm_id():
236
+ if not looks_like_a_machine():
238
237
  raise AuthenticationError(_NO_CREDENTIALS)
239
238
  gateway = detect_gateway()
240
239
  if not gateway or not probe(gateway, METADATA_PORT):
@@ -277,7 +276,7 @@ class AsyncCredentials(_CredentialsBase):
277
276
  try:
278
277
  async with httpx.AsyncClient(timeout=_HTTP_TIMEOUT_SECS) as client:
279
278
  resp = await client.get(
280
- base + METADATA_TOKEN_PATH, headers=self._headers()
279
+ base + METADATA_TOKEN_PATH
281
280
  )
282
281
  except httpx.HTTPError as e:
283
282
  raise AuthenticationError(f"in-VM token request failed: {e}") from e
@@ -289,7 +288,7 @@ class AsyncCredentials(_CredentialsBase):
289
288
  self.discovered_base_url = api_url
290
289
 
291
290
  async def _metadata_base(self) -> str:
292
- if not vm_id():
291
+ if not looks_like_a_machine():
293
292
  raise AuthenticationError(_NO_CREDENTIALS)
294
293
  gateway = detect_gateway()
295
294
  if not gateway or not await probe_async(gateway, METADATA_PORT):
@@ -0,0 +1,362 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: api.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
+ 'api.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\tapi.proto\x12\x0b\x62oxd.api.v1\"\xbf\x01\n\x08VmConfig\x12\x0c\n\x04vcpu\x18\x01 \x01(\r\x12\x14\n\x0cmemory_bytes\x18\x02 \x01(\x04\x12\x12\n\ndisk_bytes\x18\x03 \x01(\x04\x12#\n\x03srf\x18\x04 \x01(\x0b\x32\x16.boxd.api.v1.SrfConfig\x12+\n\x07network\x18\x05 \x01(\x0b\x32\x1a.boxd.api.v1.NetworkConfig\x12)\n\x07volumes\x18\x06 \x03(\x0b\x32\x18.boxd.api.v1.VolumeMount\"t\n\tSrfConfig\x12&\n\x19\x61uto_suspend_timeout_secs\x18\x01 \x01(\rH\x00\x88\x01\x01\x12!\n\x19\x61uto_destroy_timeout_secs\x18\x02 \x01(\rB\x1c\n\x1a_auto_suspend_timeout_secs\"F\n\rNetworkConfig\x12\x0b\n\x03ssh\x18\x01 \x01(\x08\x12(\n\x07proxies\x18\x02 \x03(\x0b\x32\x17.boxd.api.v1.ProxyEntry\"(\n\nProxyEntry\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\"E\n\x0bVolumeMount\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\x12\x12\n\nmount_path\x18\x02 \x01(\t\x12\x11\n\tread_only\x18\x03 \x01(\x08\"\xed\x01\n\x0f\x43reateVmRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\timage_ref\x18\x02 \x01(\t\x12 \n\x03\x65nv\x18\x05 \x03(\x0b\x32\x13.boxd.api.v1.EnvVar\x12\x0b\n\x03\x63md\x18\x06 \x03(\t\x12\x16\n\x0erestart_policy\x18\x07 \x01(\t\x12%\n\x06\x63onfig\x18\x08 \x01(\x0b\x32\x15.boxd.api.v1.VmConfig\x12\x0b\n\x03org\x18\t \x01(\t\x12\x0e\n\x06shared\x18\n \x01(\x08\x12\x10\n\x08networks\x18\x0b \x03(\t\x12\x10\n\x08isolated\x18\x0c \x01(\x08J\x04\x08\x03\x10\x04J\x04\x08\x04\x10\x05\"$\n\x06\x45nvVar\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x84\x01\n\x10\x43reateVmResponse\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tpublic_ip\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\r\n\x05image\x18\x05 \x01(\t\x12\x0e\n\x06status\x18\x06 \x01(\t\x12\x14\n\x0c\x62oot_time_ms\x18\x07 \x01(\x04\"!\n\x10\x44\x65stroyVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x13\n\x11\x44\x65stroyVmResponse\"\x16\n\x14SuggestVmNameRequest\"%\n\x15SuggestVmNameResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\"2\n\x0fRenameVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x10\n\x08new_name\x18\x02 \x01(\t\" \n\x10RenameVmResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\"7\n\x14SetVmNetworksRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x10\n\x08networks\x18\x02 \x03(\t\")\n\x15SetVmNetworksResponse\x12\x10\n\x08networks\x18\x01 \x03(\t\"U\n\x11\x45xposePortRequest\x12\x11\n\x05vm_id\x18\x01 \x01(\tB\x02\x18\x01\x12\x0f\n\x07vm_port\x18\x02 \x01(\r\x12\x10\n\x08protocol\x18\x03 \x01(\t\x12\n\n\x02vm\x18\x04 \x01(\t\"y\n\x12\x45xposePortResponse\x12\x0f\n\x07vm_name\x18\x01 \x01(\t\x12\x0b\n\x03\x64ns\x18\x02 \x01(\t\x12\x13\n\x0bpublic_port\x18\x03 \x01(\r\x12\x0f\n\x07vm_port\x18\x04 \x01(\r\x12\x10\n\x08protocol\x18\x05 \x01(\t\x12\r\n\x05vm_id\x18\x06 \x01(\t\"E\n\x13UnexposePortRequest\x12\x11\n\x05vm_id\x18\x01 \x01(\tB\x02\x18\x01\x12\x0f\n\x07vm_port\x18\x02 \x01(\r\x12\n\n\x02vm\x18\x03 \x01(\t\"H\n\x14UnexposePortResponse\x12\x30\n\x07\x66orward\x18\x01 \x01(\x0b\x32\x1f.boxd.api.v1.ExposePortResponse\"%\n\x17ListExposedPortsRequest\x12\n\n\x02vm\x18\x01 \x01(\t\"M\n\x18ListExposedPortsResponse\x12\x31\n\x08\x66orwards\x18\x01 \x03(\x0b\x32\x1f.boxd.api.v1.ExposePortResponse\"\\\n\rSetVarRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05value\x18\x04 \x01(\t\x12\r\n\x05scope\x18\x05 \x01(\tJ\x04\x08\x06\x10\x07\"\x1b\n\x08VarReply\x12\x0f\n\x07message\x18\x01 \x01(\t\",\n\x0fListVarsRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\"O\n\x07VarItem\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\r\n\x05scope\x18\x03 \x01(\t\x12\r\n\x05value\x18\x04 \x01(\tJ\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07\"2\n\x0cVarListReply\x12\"\n\x04vars\x18\x01 \x03(\x0b\x32\x14.boxd.api.v1.VarItem\"J\n\x10RemoveVarRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\x12\x0c\n\x04kind\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05scope\x18\x04 \x01(\t\"L\n\x15SetSecretScopeRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04\x66rom\x18\x03 \x01(\t\x12\n\n\x02to\x18\x04 \x01(\t\"\x1f\n\x0eStartVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x11\n\x0fStartVmResponse\"\x1e\n\rStopVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x10\n\x0eStopVmResponse\" \n\x0fRebootVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x12\n\x10RebootVmResponse\"!\n\x10SuspendVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\'\n\x11SuspendVmResponse\x12\x12\n\nsuspend_us\x18\x01 \x01(\x04\" \n\x0fResumeVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"%\n\x10ResumeVmResponse\x12\x11\n\tresume_us\x18\x01 \x01(\x04\"#\n\x12HibernateVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x15\n\x13HibernateVmResponse\"\x1e\n\rWakeVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x10\n\x0eWakeVmResponse\"\x1d\n\x0cGetVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\xcf\x04\n\rGetVmResponse\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\timage_ref\x18\x03 \x01(\t\x12\x11\n\tpublic_ip\x18\x04 \x01(\t\x12\x0e\n\x06status\x18\x05 \x01(\t\x12\x16\n\x0erestart_policy\x18\x06 \x01(\t\x12\x12\n\ndisk_bytes\x18\x07 \x01(\x04\x12!\n\x19\x61uto_suspend_timeout_secs\x18\x08 \x01(\r\x12\x10\n\x08ssh_port\x18\t \x01(\r\x12\x0b\n\x03org\x18\n \x01(\t\x12\x13\n\x0b\x62illing_org\x18\x0b \x01(\t\x12\x15\n\raccess_domain\x18\x0c \x01(\t\x12#\n\x1b\x61uto_hibernate_timeout_secs\x18\r \x01(\r\x12\x0e\n\x06source\x18\x0e \x01(\t\x12\x0c\n\x04vcpu\x18\x0f \x01(\r\x12\x14\n\x0cmemory_bytes\x18\x10 \x01(\x04\x12\x12\n\ncreated_at\x18\x11 \x01(\x03\x12\x18\n\x10hibernated_at_ms\x18\x12 \x01(\x03\x12!\n\x19\x61uto_destroy_timeout_secs\x18\x13 \x01(\r\x12\x14\n\x0c\x62oot_time_ms\x18\x14 \x01(\x03\x12\x19\n\x11last_connected_ms\x18\x15 \x01(\x03\x12\x0e\n\x06org_id\x18\x16 \x01(\t\x12\x16\n\x0e\x62illing_org_id\x18\x17 \x01(\t\x12*\n\x0bsource_info\x18\x18 \x01(\x0b\x32\x15.boxd.api.v1.VmSource\x12\x10\n\x08networks\x18\x19 \x03(\t\x12\x10\n\x08isolated\x18\x1a \x01(\x08\"C\n\x08VmSource\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12\n\n\x02id\x18\x04 \x01(\t\"3\n\x0eListVmsRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\x12\x14\n\x0c\x61ll_contexts\x18\x02 \x01(\x08\"P\n\x0fListVmsResponse\x12\'\n\x03vms\x18\x01 \x03(\x0b\x32\x1a.boxd.api.v1.GetVmResponse\x12\x14\n\x0cssh_host_key\x18\x02 \x01(\t\"2\n\x11StreamLogsRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0e\n\x06\x66ollow\x18\x02 \x01(\x08\"\x18\n\x08LogChunk\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\xc1\x01\n\tExecChunk\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\r\n\x05stdin\x18\x02 \x01(\x08\x12\x0b\n\x03tty\x18\x03 \x01(\x08\x12\x0f\n\x07\x63ommand\x18\x04 \x01(\t\x12\r\n\x05vm_id\x18\x05 \x01(\t\x12\x11\n\texit_code\x18\x06 \x01(\x05\x12\x0c\n\x04\x63ols\x18\x07 \x01(\r\x12\x0c\n\x04rows\x18\x08 \x01(\r\x12\x15\n\rwindow_change\x18\t \x01(\x08\x12\x11\n\tis_stderr\x18\n \x01(\x08\x12\x11\n\tdevice_id\x18\x0b \x01(\t\"$\n\x14\x43reateNetworkRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"+\n\x15\x43reateNetworkResponse\x12\x12\n\nnetwork_id\x18\x01 \x01(\t\"\x15\n\x13ListNetworksRequest\"B\n\x14ListNetworksResponse\x12*\n\x08networks\x18\x01 \x03(\x0b\x32\x18.boxd.api.v1.NetworkInfo\"A\n\x0bNetworkInfo\x12\x12\n\nnetwork_id\x18\x01 \x01(\t\x12\x0e\n\x06subnet\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\"2\n\x11\x42indDomainRequest\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\x12\r\n\x05vm_id\x18\x02 \x01(\t\"\x14\n\x12\x42indDomainResponse\"%\n\x13UnbindDomainRequest\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\"\x16\n\x14UnbindDomainResponse\"\x14\n\x12ListDomainsRequest\"?\n\x13ListDomainsResponse\x12(\n\x07\x64omains\x18\x01 \x03(\x0b\x32\x17.boxd.api.v1.DomainInfo\"+\n\nDomainInfo\x12\x0e\n\x06\x64omain\x18\x01 \x01(\t\x12\r\n\x05vm_id\x18\x02 \x01(\t\"\x12\n\x10GetConfigRequest\"8\n\x11GetConfigResponse\x12\x15\n\rdefault_image\x18\x01 \x01(\t\x12\x0c\n\x04zone\x18\x02 \x01(\t\"\x0f\n\rWhoamiRequest\"\x99\x01\n\x0eWhoamiResponse\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x1b\n\x13pubkey_fingerprints\x18\x02 \x03(\t\x12)\n\x07\x62illing\x18\x04 \x01(\x0b\x32\x18.boxd.api.v1.BillingInfo\x12\x14\n\x0c\x64isplay_name\x18\x05 \x01(\tJ\x04\x08\x03\x10\x04R\x12\x64\x65\x66\x61ult_network_id\"\xc8\x01\n\x0b\x42illingInfo\x12\x1b\n\x13subscription_status\x18\x03 \x01(\t\x12\x16\n\x0epast_due_since\x18\x06 \x01(\x03\x12\x0f\n\x07max_vms\x18\x07 \x01(\r\x12\x0c\n\x04vcpu\x18\x08 \x01(\r\x12\x14\n\x0cmemory_bytes\x18\t \x01(\x04J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03J\x04\x08\x04\x10\x05J\x04\x08\x05\x10\x06R\x04tierR\x05shapeR\x12stripe_customer_idR\x16stripe_subscription_id\"\x12\n\x10ListPlansRequest\"9\n\x11ListPlansResponse\x12$\n\x05plans\x18\x01 \x03(\x0b\x32\x15.boxd.api.v1.PlanInfo\"\x85\x01\n\x08PlanInfo\x12\x13\n\x0bmonthly_eur\x18\x03 \x01(\r\x12\x12\n\nlookup_key\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x0c\n\x04vcpu\x18\x06 \x01(\r\x12\x14\n\x0cmemory_bytes\x18\x07 \x01(\x04J\x04\x08\x01\x10\x02J\x04\x08\x02\x10\x03R\x04tierR\x05shape\"\x13\n\x11GetBillingRequest\"?\n\x12GetBillingResponse\x12)\n\x07\x62illing\x18\x01 \x01(\x0b\x32\x18.boxd.api.v1.BillingInfo\"T\n\x1c\x43reateCheckoutSessionRequest\x12\x13\n\x0bsuccess_url\x18\x02 \x01(\t\x12\x12\n\ncancel_url\x18\x03 \x01(\tJ\x04\x08\x01\x10\x02R\x05shape\"5\n\x1d\x43reateCheckoutSessionResponse\x12\x14\n\x0c\x63heckout_url\x18\x01 \x01(\t\"7\n!CreateBillingPortalSessionRequest\x12\x12\n\nreturn_url\x18\x01 \x01(\t\"8\n\"CreateBillingPortalSessionResponse\x12\x12\n\nportal_url\x18\x01 \x01(\t\"-\n\x12\x43reateTokenRequest\x12\x17\n\x0f\x65xpires_in_secs\x18\x01 \x01(\x04\"8\n\x13\x43reateTokenResponse\x12\r\n\x05token\x18\x01 \x01(\t\x12\x12\n\nexpires_at\x18\x02 \x01(\x03\"\x13\n\x11ListTokensRequest\"<\n\x12ListTokensResponse\x12&\n\x06tokens\x18\x01 \x03(\x0b\x32\x16.boxd.api.v1.TokenInfo\"@\n\tTokenInfo\x12\x0b\n\x03jti\x18\x01 \x01(\t\x12\x12\n\ncreated_at\x18\x02 \x01(\x03\x12\x12\n\nexpires_at\x18\x03 \x01(\x03\"!\n\x12RevokeTokenRequest\x12\x0b\n\x03jti\x18\x01 \x01(\t\"\x15\n\x13RevokeTokenResponse\"E\n\x11LinkSshKeyRequest\x12\x0e\n\x06pubkey\x18\x01 \x01(\t\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\r\n\x05label\x18\x03 \x01(\t\"\x14\n\x12LinkSshKeyResponse\"\x8e\x01\n\rForkVmRequest\x12\x14\n\x0csource_vm_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12%\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x15.boxd.api.v1.VmConfig\x12\x0e\n\x06shared\x18\x04 \x01(\x08\x12\x10\n\x08networks\x18\x05 \x03(\t\x12\x10\n\x08isolated\x18\x06 \x01(\x08\"\x97\x01\n\x0e\x46orkVmResponse\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tpublic_ip\x18\x03 \x01(\t\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\r\n\x05image\x18\x05 \x01(\t\x12\x0e\n\x06status\x18\x06 \x01(\t\x12\x13\n\x0b\x66orked_from\x18\x07 \x01(\t\x12\x14\n\x0c\x62oot_time_ms\x18\x08 \x01(\x04\"5\n\x12ListProxiesRequest\x12\x13\n\x07vm_name\x18\x01 \x01(\tB\x02\x18\x01\x12\n\n\x02vm\x18\x02 \x01(\t\">\n\x13ListProxiesResponse\x12\'\n\x07proxies\x18\x01 \x03(\x0b\x32\x16.boxd.api.v1.ProxyInfo\"\xac\x01\n\tProxyInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\r\x12\x12\n\nis_default\x18\x05 \x01(\x08\x12\x14\n\x0cport_display\x18\x06 \x01(\t\x12\r\n\x05vm_id\x18\x07 \x01(\t\x12\x11\n\tport_mode\x18\x08 \x01(\t\x12\x16\n\x0e\x65\x66\x66\x65\x63tive_port\x18\t \x01(\r\"\x17\n\x15ListProxyNodesRequest\"E\n\x16ListProxyNodesResponse\x12+\n\x07proxies\x18\x01 \x03(\x0b\x32\x1a.boxd.api.v1.ProxyNodeInfo\")\n\rProxyNodeInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04ipv4\x18\x02 \x01(\t\"Q\n\x12\x43reateProxyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x07vm_name\x18\x02 \x01(\tB\x02\x18\x01\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\n\n\x02vm\x18\x04 \x01(\t\"R\n\x13\x43reateProxyResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\x12\x0e\n\x06\x64omain\x18\x03 \x01(\t\x12\x0c\n\x04port\x18\x04 \x01(\r\"C\n\x12\x44\x65leteProxyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x07vm_name\x18\x02 \x01(\tB\x02\x18\x01\x12\n\n\x02vm\x18\x03 \x01(\t\"\x15\n\x13\x44\x65leteProxyResponse\"R\n\x13SetProxyPortRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x07vm_name\x18\x02 \x01(\tB\x02\x18\x01\x12\x0c\n\x04port\x18\x03 \x01(\t\x12\n\n\x02vm\x18\x04 \x01(\t\"\x16\n\x14SetProxyPortResponse\">\n\x11UploadFileRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"+\n\x12UploadFileResponse\x12\x15\n\rbytes_written\x18\x01 \x01(\x04\"P\n\x0fUploadFileChunk\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x12\n\ntotal_size\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"2\n\x13\x44ownloadFileRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"$\n\x14\x44ownloadFileResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"1\n\x15\x43reateSnapshotRequest\x12\n\n\x02vm\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\\\n\x16\x43reateSnapshotResponse\x12\x13\n\x0bsnapshot_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\t\"#\n\x14ListSnapshotsRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\"E\n\x15ListSnapshotsResponse\x12,\n\tsnapshots\x18\x01 \x03(\x0b\x32\x19.boxd.api.v1.SnapshotInfo\"/\n\x12GetSnapshotRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03org\x18\x02 \x01(\t\"B\n\x13GetSnapshotResponse\x12+\n\x08snapshot\x18\x01 \x01(\x0b\x32\x19.boxd.api.v1.SnapshotInfo\"2\n\x15\x44\x65leteSnapshotRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0b\n\x03org\x18\x02 \x01(\t\"\x18\n\x16\x44\x65leteSnapshotResponse\"\x83\x01\n\x1b\x43reateVmFromSnapshotRequest\x12\x10\n\x08snapshot\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12%\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x15.boxd.api.v1.VmConfig\x12\x0b\n\x03org\x18\x04 \x01(\t\x12\x10\n\x08isolated\x18\x05 \x01(\x08\"\xf3\x01\n\x0cSnapshotInfo\x12\x13\n\x0bsnapshot_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x12\n\nsize_bytes\x18\x07 \x01(\x04\x12\x12\n\nupdated_at\x18\x08 \x01(\x03\x12\x0c\n\x04vcpu\x18\t \x01(\r\x12\x14\n\x0cmemory_bytes\x18\n \x01(\x04\x12\x11\n\tuse_count\x18\x0b \x01(\x04\x12\x12\n\ncreated_at\x18\x0c \x01(\x03J\x04\x08\x05\x10\x06J\x04\x08\x06\x10\x07R\x0eready_replicasR\x10\x64\x65sired_replicas\"3\n\x17\x43reateCheckpointRequest\x12\n\n\x02vm\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"O\n\x18\x43reateCheckpointResponse\x12\x15\n\rcheckpoint_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\"$\n\x16ListCheckpointsRequest\x12\n\n\x02vm\x18\x01 \x01(\t\"K\n\x17ListCheckpointsResponse\x12\x30\n\x0b\x63heckpoints\x18\x01 \x03(\x0b\x32\x1b.boxd.api.v1.CheckpointInfo\"3\n\x17\x44\x65leteCheckpointRequest\x12\n\n\x02vm\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x1a\n\x18\x44\x65leteCheckpointResponse\"4\n\x18RestoreCheckpointRequest\x12\n\n\x02vm\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\x1b\n\x19RestoreCheckpointResponse\"\x94\x01\n\x0e\x43heckpointInfo\x12\x15\n\rcheckpoint_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x12\n\nsize_bytes\x18\x04 \x01(\x04\x12\x12\n\ncreated_at\x18\x05 \x01(\x03\x12\x12\n\ncreated_by\x18\x06 \x01(\t\x12\x11\n\tavailable\x18\x07 \x01(\x08\";\n\x11\x43reateDiskRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\x04J\x04\x08\x03\x10\x04\"]\n\x12\x43reateDiskResponse\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nsize_bytes\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\tJ\x04\x08\x05\x10\x06\"\x12\n\x10ListDisksRequest\"9\n\x11ListDisksResponse\x12$\n\x05\x64isks\x18\x01 \x03(\x0b\x32\x15.boxd.api.v1.DiskInfo\"\xaa\x01\n\x08\x44iskInfo\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nsize_bytes\x18\x03 \x01(\x04\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x30\n\x0b\x61ttachments\x18\x06 \x03(\x0b\x32\x1b.boxd.api.v1.DiskAttachment\x12\x12\n\ncreated_at\x18\x08 \x01(\x03J\x04\x08\x05\x10\x06J\x04\x08\x07\x10\x08R\tworker_id\"X\n\x0e\x44iskAttachment\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\x12\x12\n\nmount_path\x18\x03 \x01(\t\x12\x12\n\nmount_mode\x18\x04 \x01(\t\"Z\n\x11\x41ttachDiskRequest\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\x12\r\n\x05vm_id\x18\x02 \x01(\t\x12\x12\n\nmount_path\x18\x03 \x01(\t\x12\x11\n\tread_only\x18\x04 \x01(\x08\"\x14\n\x12\x41ttachDiskResponse\"3\n\x11\x44\x65tachDiskRequest\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\x12\r\n\x05vm_id\x18\x02 \x01(\t\"\x14\n\x12\x44\x65tachDiskResponse\"%\n\x12\x44\x65stroyDiskRequest\x12\x0f\n\x07\x64isk_id\x18\x01 \x01(\t\"\x15\n\x13\x44\x65stroyDiskResponse\"C\n\x1cSetAutoSuspendTimeoutRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x14\n\x0ctimeout_secs\x18\x02 \x01(\r\"\x1f\n\x1dSetAutoSuspendTimeoutResponse\"E\n\x1eSetAutoHibernateTimeoutRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\x12\x14\n\x0ctimeout_secs\x18\x02 \x01(\r\"!\n\x1fSetAutoHibernateTimeoutResponse\"W\n\x13\x43reateApiKeyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0f\x65xpires_in_secs\x18\x02 \x01(\x04\x12\x0b\n\x03org\x18\x03 \x01(\t\x12\x0c\n\x04kind\x18\x04 \x01(\t\"G\n\x14\x43reateApiKeyResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x61pi_key\x18\x02 \x01(\t\x12\x12\n\nexpires_at\x18\x03 \x01(\x03\"\x14\n\x12ListApiKeysRequest\"<\n\x13ListApiKeysResponse\x12%\n\x04keys\x18\x01 \x03(\x0b\x32\x17.boxd.api.v1.ApiKeyInfo\"\x93\x01\n\nApiKeyInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\nkey_prefix\x18\x03 \x01(\t\x12\x12\n\ncreated_at\x18\x04 \x01(\x03\x12\x14\n\x0clast_used_at\x18\x05 \x01(\x03\x12\x12\n\nexpires_at\x18\x06 \x01(\x03\x12\x0b\n\x03org\x18\x07 \x01(\t\x12\x0c\n\x04kind\x18\x08 \x01(\t\"!\n\x13\x44\x65leteApiKeyRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteApiKeyResponse\"\x1f\n\x0eShareVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x11\n\x0fShareVmResponse\"\x11\n\x0fListOrgsRequest\"W\n\x10ListOrgsResponse\x12%\n\x04orgs\x18\x01 \x03(\x0b\x32\x17.boxd.api.v1.OrgSummary\x12\x16\n\x0e\x64\x65\x66\x61ult_org_id\x18\x03 \x01(\tJ\x04\x08\x02\x10\x03\"F\n\nOrgSummary\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x0c\n\x04slug\x18\x04 \x01(\t\"#\n\x14GetOrgBillingRequest\x12\x0b\n\x03org\x18\x01 \x01(\t\"\xb1\x01\n\x15GetOrgBillingResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08is_admin\x18\x03 \x01(\x08\x12\x0f\n\x07max_vms\x18\x04 \x01(\r\x12\x0c\n\x04vcpu\x18\x05 \x01(\r\x12\x14\n\x0cmemory_bytes\x18\x06 \x01(\x04\x12\x10\n\x08vm_count\x18\x07 \x01(\r\x12%\n\x03vms\x18\x08 \x03(\x0b\x32\x18.boxd.api.v1.OrgBilledVm\"X\n\x0bOrgBilledVm\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12\x0f\n\x07\x62illing\x18\x05 \x01(\tJ\x04\x08\x04\x10\x05R\x05shape\"!\n\x10UnshareVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\x13\n\x11UnshareVmResponse2\xf8,\n\x07\x42oxdApi\x12G\n\x08\x43reateVm\x12\x1c.boxd.api.v1.CreateVmRequest\x1a\x1d.boxd.api.v1.CreateVmResponse\x12J\n\tDestroyVm\x12\x1d.boxd.api.v1.DestroyVmRequest\x1a\x1e.boxd.api.v1.DestroyVmResponse\x12G\n\x08RenameVm\x12\x1c.boxd.api.v1.RenameVmRequest\x1a\x1d.boxd.api.v1.RenameVmResponse\x12V\n\rSetVmNetworks\x12!.boxd.api.v1.SetVmNetworksRequest\x1a\".boxd.api.v1.SetVmNetworksResponse\x12\x44\n\x07StartVm\x12\x1b.boxd.api.v1.StartVmRequest\x1a\x1c.boxd.api.v1.StartVmResponse\x12\x41\n\x06StopVm\x12\x1a.boxd.api.v1.StopVmRequest\x1a\x1b.boxd.api.v1.StopVmResponse\x12G\n\x08RebootVm\x12\x1c.boxd.api.v1.RebootVmRequest\x1a\x1d.boxd.api.v1.RebootVmResponse\x12>\n\x05GetVm\x12\x19.boxd.api.v1.GetVmRequest\x1a\x1a.boxd.api.v1.GetVmResponse\x12\x44\n\x07ListVms\x12\x1b.boxd.api.v1.ListVmsRequest\x1a\x1c.boxd.api.v1.ListVmsResponse\x12V\n\rSuggestVmName\x12!.boxd.api.v1.SuggestVmNameRequest\x1a\".boxd.api.v1.SuggestVmNameResponse\x12M\n\nExposePort\x12\x1e.boxd.api.v1.ExposePortRequest\x1a\x1f.boxd.api.v1.ExposePortResponse\x12S\n\x0cUnexposePort\x12 .boxd.api.v1.UnexposePortRequest\x1a!.boxd.api.v1.UnexposePortResponse\x12_\n\x10ListExposedPorts\x12$.boxd.api.v1.ListExposedPortsRequest\x1a%.boxd.api.v1.ListExposedPortsResponse\x12;\n\x06SetVar\x12\x1a.boxd.api.v1.SetVarRequest\x1a\x15.boxd.api.v1.VarReply\x12\x43\n\x08ListVars\x12\x1c.boxd.api.v1.ListVarsRequest\x1a\x19.boxd.api.v1.VarListReply\x12\x41\n\tRemoveVar\x12\x1d.boxd.api.v1.RemoveVarRequest\x1a\x15.boxd.api.v1.VarReply\x12K\n\x0eSetSecretScope\x12\".boxd.api.v1.SetSecretScopeRequest\x1a\x15.boxd.api.v1.VarReply\x12\x45\n\nStreamLogs\x12\x1e.boxd.api.v1.StreamLogsRequest\x1a\x15.boxd.api.v1.LogChunk0\x01\x12:\n\x04\x45xec\x12\x16.boxd.api.v1.ExecChunk\x1a\x16.boxd.api.v1.ExecChunk(\x01\x30\x01\x12V\n\rCreateNetwork\x12!.boxd.api.v1.CreateNetworkRequest\x1a\".boxd.api.v1.CreateNetworkResponse\x12S\n\x0cListNetworks\x12 .boxd.api.v1.ListNetworksRequest\x1a!.boxd.api.v1.ListNetworksResponse\x12M\n\nBindDomain\x12\x1e.boxd.api.v1.BindDomainRequest\x1a\x1f.boxd.api.v1.BindDomainResponse\x12S\n\x0cUnbindDomain\x12 .boxd.api.v1.UnbindDomainRequest\x1a!.boxd.api.v1.UnbindDomainResponse\x12P\n\x0bListDomains\x12\x1f.boxd.api.v1.ListDomainsRequest\x1a .boxd.api.v1.ListDomainsResponse\x12\x41\n\x06Whoami\x12\x1a.boxd.api.v1.WhoamiRequest\x1a\x1b.boxd.api.v1.WhoamiResponse\x12P\n\x0b\x43reateToken\x12\x1f.boxd.api.v1.CreateTokenRequest\x1a .boxd.api.v1.CreateTokenResponse\x12M\n\nListTokens\x12\x1e.boxd.api.v1.ListTokensRequest\x1a\x1f.boxd.api.v1.ListTokensResponse\x12P\n\x0bRevokeToken\x12\x1f.boxd.api.v1.RevokeTokenRequest\x1a .boxd.api.v1.RevokeTokenResponse\x12M\n\nLinkSshKey\x12\x1e.boxd.api.v1.LinkSshKeyRequest\x1a\x1f.boxd.api.v1.LinkSshKeyResponse\x12J\n\tGetConfig\x12\x1d.boxd.api.v1.GetConfigRequest\x1a\x1e.boxd.api.v1.GetConfigResponse\x12\x41\n\x06\x46orkVm\x12\x1a.boxd.api.v1.ForkVmRequest\x1a\x1b.boxd.api.v1.ForkVmResponse\x12P\n\x0bListProxies\x12\x1f.boxd.api.v1.ListProxiesRequest\x1a .boxd.api.v1.ListProxiesResponse\x12Y\n\x0eListProxyNodes\x12\".boxd.api.v1.ListProxyNodesRequest\x1a#.boxd.api.v1.ListProxyNodesResponse\x12P\n\x0b\x43reateProxy\x12\x1f.boxd.api.v1.CreateProxyRequest\x1a .boxd.api.v1.CreateProxyResponse\x12P\n\x0b\x44\x65leteProxy\x12\x1f.boxd.api.v1.DeleteProxyRequest\x1a .boxd.api.v1.DeleteProxyResponse\x12S\n\x0cSetProxyPort\x12 .boxd.api.v1.SetProxyPortRequest\x1a!.boxd.api.v1.SetProxyPortResponse\x12M\n\nUploadFile\x12\x1e.boxd.api.v1.UploadFileRequest\x1a\x1f.boxd.api.v1.UploadFileResponse\x12S\n\x10UploadFileStream\x12\x1c.boxd.api.v1.UploadFileChunk\x1a\x1f.boxd.api.v1.UploadFileResponse(\x01\x12S\n\x0c\x44ownloadFile\x12 .boxd.api.v1.DownloadFileRequest\x1a!.boxd.api.v1.DownloadFileResponse\x12J\n\tSuspendVm\x12\x1d.boxd.api.v1.SuspendVmRequest\x1a\x1e.boxd.api.v1.SuspendVmResponse\x12G\n\x08ResumeVm\x12\x1c.boxd.api.v1.ResumeVmRequest\x1a\x1d.boxd.api.v1.ResumeVmResponse\x12P\n\x0bHibernateVm\x12\x1f.boxd.api.v1.HibernateVmRequest\x1a .boxd.api.v1.HibernateVmResponse\x12\x41\n\x06WakeVm\x12\x1a.boxd.api.v1.WakeVmRequest\x1a\x1b.boxd.api.v1.WakeVmResponse\x12Y\n\x0e\x43reateSnapshot\x12\".boxd.api.v1.CreateSnapshotRequest\x1a#.boxd.api.v1.CreateSnapshotResponse\x12V\n\rListSnapshots\x12!.boxd.api.v1.ListSnapshotsRequest\x1a\".boxd.api.v1.ListSnapshotsResponse\x12P\n\x0bGetSnapshot\x12\x1f.boxd.api.v1.GetSnapshotRequest\x1a .boxd.api.v1.GetSnapshotResponse\x12Y\n\x0e\x44\x65leteSnapshot\x12\".boxd.api.v1.DeleteSnapshotRequest\x1a#.boxd.api.v1.DeleteSnapshotResponse\x12_\n\x14\x43reateVmFromSnapshot\x12(.boxd.api.v1.CreateVmFromSnapshotRequest\x1a\x1d.boxd.api.v1.CreateVmResponse\x12_\n\x10\x43reateCheckpoint\x12$.boxd.api.v1.CreateCheckpointRequest\x1a%.boxd.api.v1.CreateCheckpointResponse\x12\\\n\x0fListCheckpoints\x12#.boxd.api.v1.ListCheckpointsRequest\x1a$.boxd.api.v1.ListCheckpointsResponse\x12_\n\x10\x44\x65leteCheckpoint\x12$.boxd.api.v1.DeleteCheckpointRequest\x1a%.boxd.api.v1.DeleteCheckpointResponse\x12\x62\n\x11RestoreCheckpoint\x12%.boxd.api.v1.RestoreCheckpointRequest\x1a&.boxd.api.v1.RestoreCheckpointResponse\x12n\n\x15SetAutoSuspendTimeout\x12).boxd.api.v1.SetAutoSuspendTimeoutRequest\x1a*.boxd.api.v1.SetAutoSuspendTimeoutResponse\x12t\n\x17SetAutoHibernateTimeout\x12+.boxd.api.v1.SetAutoHibernateTimeoutRequest\x1a,.boxd.api.v1.SetAutoHibernateTimeoutResponse\x12M\n\nCreateDisk\x12\x1e.boxd.api.v1.CreateDiskRequest\x1a\x1f.boxd.api.v1.CreateDiskResponse\x12J\n\tListDisks\x12\x1d.boxd.api.v1.ListDisksRequest\x1a\x1e.boxd.api.v1.ListDisksResponse\x12M\n\nAttachDisk\x12\x1e.boxd.api.v1.AttachDiskRequest\x1a\x1f.boxd.api.v1.AttachDiskResponse\x12M\n\nDetachDisk\x12\x1e.boxd.api.v1.DetachDiskRequest\x1a\x1f.boxd.api.v1.DetachDiskResponse\x12P\n\x0b\x44\x65stroyDisk\x12\x1f.boxd.api.v1.DestroyDiskRequest\x1a .boxd.api.v1.DestroyDiskResponse\x12S\n\x0c\x43reateApiKey\x12 .boxd.api.v1.CreateApiKeyRequest\x1a!.boxd.api.v1.CreateApiKeyResponse\x12P\n\x0bListApiKeys\x12\x1f.boxd.api.v1.ListApiKeysRequest\x1a .boxd.api.v1.ListApiKeysResponse\x12S\n\x0c\x44\x65leteApiKey\x12 .boxd.api.v1.DeleteApiKeyRequest\x1a!.boxd.api.v1.DeleteApiKeyResponse\x12J\n\tListPlans\x12\x1d.boxd.api.v1.ListPlansRequest\x1a\x1e.boxd.api.v1.ListPlansResponse\x12M\n\nGetBilling\x12\x1e.boxd.api.v1.GetBillingRequest\x1a\x1f.boxd.api.v1.GetBillingResponse\x12n\n\x15\x43reateCheckoutSession\x12).boxd.api.v1.CreateCheckoutSessionRequest\x1a*.boxd.api.v1.CreateCheckoutSessionResponse\x12}\n\x1a\x43reateBillingPortalSession\x12..boxd.api.v1.CreateBillingPortalSessionRequest\x1a/.boxd.api.v1.CreateBillingPortalSessionResponse\x12\x44\n\x07ShareVm\x12\x1b.boxd.api.v1.ShareVmRequest\x1a\x1c.boxd.api.v1.ShareVmResponse\x12J\n\tUnshareVm\x12\x1d.boxd.api.v1.UnshareVmRequest\x1a\x1e.boxd.api.v1.UnshareVmResponse\x12G\n\x08ListOrgs\x12\x1c.boxd.api.v1.ListOrgsRequest\x1a\x1d.boxd.api.v1.ListOrgsResponse\x12V\n\rGetOrgBilling\x12!.boxd.api.v1.GetOrgBillingRequest\x1a\".boxd.api.v1.GetOrgBillingResponseb\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'api_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_EXPOSEPORTREQUEST'].fields_by_name['vm_id']._loaded_options = None
35
+ _globals['_EXPOSEPORTREQUEST'].fields_by_name['vm_id']._serialized_options = b'\030\001'
36
+ _globals['_UNEXPOSEPORTREQUEST'].fields_by_name['vm_id']._loaded_options = None
37
+ _globals['_UNEXPOSEPORTREQUEST'].fields_by_name['vm_id']._serialized_options = b'\030\001'
38
+ _globals['_LISTPROXIESREQUEST'].fields_by_name['vm_name']._loaded_options = None
39
+ _globals['_LISTPROXIESREQUEST'].fields_by_name['vm_name']._serialized_options = b'\030\001'
40
+ _globals['_CREATEPROXYREQUEST'].fields_by_name['vm_name']._loaded_options = None
41
+ _globals['_CREATEPROXYREQUEST'].fields_by_name['vm_name']._serialized_options = b'\030\001'
42
+ _globals['_DELETEPROXYREQUEST'].fields_by_name['vm_name']._loaded_options = None
43
+ _globals['_DELETEPROXYREQUEST'].fields_by_name['vm_name']._serialized_options = b'\030\001'
44
+ _globals['_SETPROXYPORTREQUEST'].fields_by_name['vm_name']._loaded_options = None
45
+ _globals['_SETPROXYPORTREQUEST'].fields_by_name['vm_name']._serialized_options = b'\030\001'
46
+ _globals['_VMCONFIG']._serialized_start=27
47
+ _globals['_VMCONFIG']._serialized_end=218
48
+ _globals['_SRFCONFIG']._serialized_start=220
49
+ _globals['_SRFCONFIG']._serialized_end=336
50
+ _globals['_NETWORKCONFIG']._serialized_start=338
51
+ _globals['_NETWORKCONFIG']._serialized_end=408
52
+ _globals['_PROXYENTRY']._serialized_start=410
53
+ _globals['_PROXYENTRY']._serialized_end=450
54
+ _globals['_VOLUMEMOUNT']._serialized_start=452
55
+ _globals['_VOLUMEMOUNT']._serialized_end=521
56
+ _globals['_CREATEVMREQUEST']._serialized_start=524
57
+ _globals['_CREATEVMREQUEST']._serialized_end=761
58
+ _globals['_ENVVAR']._serialized_start=763
59
+ _globals['_ENVVAR']._serialized_end=799
60
+ _globals['_CREATEVMRESPONSE']._serialized_start=802
61
+ _globals['_CREATEVMRESPONSE']._serialized_end=934
62
+ _globals['_DESTROYVMREQUEST']._serialized_start=936
63
+ _globals['_DESTROYVMREQUEST']._serialized_end=969
64
+ _globals['_DESTROYVMRESPONSE']._serialized_start=971
65
+ _globals['_DESTROYVMRESPONSE']._serialized_end=990
66
+ _globals['_SUGGESTVMNAMEREQUEST']._serialized_start=992
67
+ _globals['_SUGGESTVMNAMEREQUEST']._serialized_end=1014
68
+ _globals['_SUGGESTVMNAMERESPONSE']._serialized_start=1016
69
+ _globals['_SUGGESTVMNAMERESPONSE']._serialized_end=1053
70
+ _globals['_RENAMEVMREQUEST']._serialized_start=1055
71
+ _globals['_RENAMEVMREQUEST']._serialized_end=1105
72
+ _globals['_RENAMEVMRESPONSE']._serialized_start=1107
73
+ _globals['_RENAMEVMRESPONSE']._serialized_end=1139
74
+ _globals['_SETVMNETWORKSREQUEST']._serialized_start=1141
75
+ _globals['_SETVMNETWORKSREQUEST']._serialized_end=1196
76
+ _globals['_SETVMNETWORKSRESPONSE']._serialized_start=1198
77
+ _globals['_SETVMNETWORKSRESPONSE']._serialized_end=1239
78
+ _globals['_EXPOSEPORTREQUEST']._serialized_start=1241
79
+ _globals['_EXPOSEPORTREQUEST']._serialized_end=1326
80
+ _globals['_EXPOSEPORTRESPONSE']._serialized_start=1328
81
+ _globals['_EXPOSEPORTRESPONSE']._serialized_end=1449
82
+ _globals['_UNEXPOSEPORTREQUEST']._serialized_start=1451
83
+ _globals['_UNEXPOSEPORTREQUEST']._serialized_end=1520
84
+ _globals['_UNEXPOSEPORTRESPONSE']._serialized_start=1522
85
+ _globals['_UNEXPOSEPORTRESPONSE']._serialized_end=1594
86
+ _globals['_LISTEXPOSEDPORTSREQUEST']._serialized_start=1596
87
+ _globals['_LISTEXPOSEDPORTSREQUEST']._serialized_end=1633
88
+ _globals['_LISTEXPOSEDPORTSRESPONSE']._serialized_start=1635
89
+ _globals['_LISTEXPOSEDPORTSRESPONSE']._serialized_end=1712
90
+ _globals['_SETVARREQUEST']._serialized_start=1714
91
+ _globals['_SETVARREQUEST']._serialized_end=1806
92
+ _globals['_VARREPLY']._serialized_start=1808
93
+ _globals['_VARREPLY']._serialized_end=1835
94
+ _globals['_LISTVARSREQUEST']._serialized_start=1837
95
+ _globals['_LISTVARSREQUEST']._serialized_end=1881
96
+ _globals['_VARITEM']._serialized_start=1883
97
+ _globals['_VARITEM']._serialized_end=1962
98
+ _globals['_VARLISTREPLY']._serialized_start=1964
99
+ _globals['_VARLISTREPLY']._serialized_end=2014
100
+ _globals['_REMOVEVARREQUEST']._serialized_start=2016
101
+ _globals['_REMOVEVARREQUEST']._serialized_end=2090
102
+ _globals['_SETSECRETSCOPEREQUEST']._serialized_start=2092
103
+ _globals['_SETSECRETSCOPEREQUEST']._serialized_end=2168
104
+ _globals['_STARTVMREQUEST']._serialized_start=2170
105
+ _globals['_STARTVMREQUEST']._serialized_end=2201
106
+ _globals['_STARTVMRESPONSE']._serialized_start=2203
107
+ _globals['_STARTVMRESPONSE']._serialized_end=2220
108
+ _globals['_STOPVMREQUEST']._serialized_start=2222
109
+ _globals['_STOPVMREQUEST']._serialized_end=2252
110
+ _globals['_STOPVMRESPONSE']._serialized_start=2254
111
+ _globals['_STOPVMRESPONSE']._serialized_end=2270
112
+ _globals['_REBOOTVMREQUEST']._serialized_start=2272
113
+ _globals['_REBOOTVMREQUEST']._serialized_end=2304
114
+ _globals['_REBOOTVMRESPONSE']._serialized_start=2306
115
+ _globals['_REBOOTVMRESPONSE']._serialized_end=2324
116
+ _globals['_SUSPENDVMREQUEST']._serialized_start=2326
117
+ _globals['_SUSPENDVMREQUEST']._serialized_end=2359
118
+ _globals['_SUSPENDVMRESPONSE']._serialized_start=2361
119
+ _globals['_SUSPENDVMRESPONSE']._serialized_end=2400
120
+ _globals['_RESUMEVMREQUEST']._serialized_start=2402
121
+ _globals['_RESUMEVMREQUEST']._serialized_end=2434
122
+ _globals['_RESUMEVMRESPONSE']._serialized_start=2436
123
+ _globals['_RESUMEVMRESPONSE']._serialized_end=2473
124
+ _globals['_HIBERNATEVMREQUEST']._serialized_start=2475
125
+ _globals['_HIBERNATEVMREQUEST']._serialized_end=2510
126
+ _globals['_HIBERNATEVMRESPONSE']._serialized_start=2512
127
+ _globals['_HIBERNATEVMRESPONSE']._serialized_end=2533
128
+ _globals['_WAKEVMREQUEST']._serialized_start=2535
129
+ _globals['_WAKEVMREQUEST']._serialized_end=2565
130
+ _globals['_WAKEVMRESPONSE']._serialized_start=2567
131
+ _globals['_WAKEVMRESPONSE']._serialized_end=2583
132
+ _globals['_GETVMREQUEST']._serialized_start=2585
133
+ _globals['_GETVMREQUEST']._serialized_end=2614
134
+ _globals['_GETVMRESPONSE']._serialized_start=2617
135
+ _globals['_GETVMRESPONSE']._serialized_end=3208
136
+ _globals['_VMSOURCE']._serialized_start=3210
137
+ _globals['_VMSOURCE']._serialized_end=3277
138
+ _globals['_LISTVMSREQUEST']._serialized_start=3279
139
+ _globals['_LISTVMSREQUEST']._serialized_end=3330
140
+ _globals['_LISTVMSRESPONSE']._serialized_start=3332
141
+ _globals['_LISTVMSRESPONSE']._serialized_end=3412
142
+ _globals['_STREAMLOGSREQUEST']._serialized_start=3414
143
+ _globals['_STREAMLOGSREQUEST']._serialized_end=3464
144
+ _globals['_LOGCHUNK']._serialized_start=3466
145
+ _globals['_LOGCHUNK']._serialized_end=3490
146
+ _globals['_EXECCHUNK']._serialized_start=3493
147
+ _globals['_EXECCHUNK']._serialized_end=3686
148
+ _globals['_CREATENETWORKREQUEST']._serialized_start=3688
149
+ _globals['_CREATENETWORKREQUEST']._serialized_end=3724
150
+ _globals['_CREATENETWORKRESPONSE']._serialized_start=3726
151
+ _globals['_CREATENETWORKRESPONSE']._serialized_end=3769
152
+ _globals['_LISTNETWORKSREQUEST']._serialized_start=3771
153
+ _globals['_LISTNETWORKSREQUEST']._serialized_end=3792
154
+ _globals['_LISTNETWORKSRESPONSE']._serialized_start=3794
155
+ _globals['_LISTNETWORKSRESPONSE']._serialized_end=3860
156
+ _globals['_NETWORKINFO']._serialized_start=3862
157
+ _globals['_NETWORKINFO']._serialized_end=3927
158
+ _globals['_BINDDOMAINREQUEST']._serialized_start=3929
159
+ _globals['_BINDDOMAINREQUEST']._serialized_end=3979
160
+ _globals['_BINDDOMAINRESPONSE']._serialized_start=3981
161
+ _globals['_BINDDOMAINRESPONSE']._serialized_end=4001
162
+ _globals['_UNBINDDOMAINREQUEST']._serialized_start=4003
163
+ _globals['_UNBINDDOMAINREQUEST']._serialized_end=4040
164
+ _globals['_UNBINDDOMAINRESPONSE']._serialized_start=4042
165
+ _globals['_UNBINDDOMAINRESPONSE']._serialized_end=4064
166
+ _globals['_LISTDOMAINSREQUEST']._serialized_start=4066
167
+ _globals['_LISTDOMAINSREQUEST']._serialized_end=4086
168
+ _globals['_LISTDOMAINSRESPONSE']._serialized_start=4088
169
+ _globals['_LISTDOMAINSRESPONSE']._serialized_end=4151
170
+ _globals['_DOMAININFO']._serialized_start=4153
171
+ _globals['_DOMAININFO']._serialized_end=4196
172
+ _globals['_GETCONFIGREQUEST']._serialized_start=4198
173
+ _globals['_GETCONFIGREQUEST']._serialized_end=4216
174
+ _globals['_GETCONFIGRESPONSE']._serialized_start=4218
175
+ _globals['_GETCONFIGRESPONSE']._serialized_end=4274
176
+ _globals['_WHOAMIREQUEST']._serialized_start=4276
177
+ _globals['_WHOAMIREQUEST']._serialized_end=4291
178
+ _globals['_WHOAMIRESPONSE']._serialized_start=4294
179
+ _globals['_WHOAMIRESPONSE']._serialized_end=4447
180
+ _globals['_BILLINGINFO']._serialized_start=4450
181
+ _globals['_BILLINGINFO']._serialized_end=4650
182
+ _globals['_LISTPLANSREQUEST']._serialized_start=4652
183
+ _globals['_LISTPLANSREQUEST']._serialized_end=4670
184
+ _globals['_LISTPLANSRESPONSE']._serialized_start=4672
185
+ _globals['_LISTPLANSRESPONSE']._serialized_end=4729
186
+ _globals['_PLANINFO']._serialized_start=4732
187
+ _globals['_PLANINFO']._serialized_end=4865
188
+ _globals['_GETBILLINGREQUEST']._serialized_start=4867
189
+ _globals['_GETBILLINGREQUEST']._serialized_end=4886
190
+ _globals['_GETBILLINGRESPONSE']._serialized_start=4888
191
+ _globals['_GETBILLINGRESPONSE']._serialized_end=4951
192
+ _globals['_CREATECHECKOUTSESSIONREQUEST']._serialized_start=4953
193
+ _globals['_CREATECHECKOUTSESSIONREQUEST']._serialized_end=5037
194
+ _globals['_CREATECHECKOUTSESSIONRESPONSE']._serialized_start=5039
195
+ _globals['_CREATECHECKOUTSESSIONRESPONSE']._serialized_end=5092
196
+ _globals['_CREATEBILLINGPORTALSESSIONREQUEST']._serialized_start=5094
197
+ _globals['_CREATEBILLINGPORTALSESSIONREQUEST']._serialized_end=5149
198
+ _globals['_CREATEBILLINGPORTALSESSIONRESPONSE']._serialized_start=5151
199
+ _globals['_CREATEBILLINGPORTALSESSIONRESPONSE']._serialized_end=5207
200
+ _globals['_CREATETOKENREQUEST']._serialized_start=5209
201
+ _globals['_CREATETOKENREQUEST']._serialized_end=5254
202
+ _globals['_CREATETOKENRESPONSE']._serialized_start=5256
203
+ _globals['_CREATETOKENRESPONSE']._serialized_end=5312
204
+ _globals['_LISTTOKENSREQUEST']._serialized_start=5314
205
+ _globals['_LISTTOKENSREQUEST']._serialized_end=5333
206
+ _globals['_LISTTOKENSRESPONSE']._serialized_start=5335
207
+ _globals['_LISTTOKENSRESPONSE']._serialized_end=5395
208
+ _globals['_TOKENINFO']._serialized_start=5397
209
+ _globals['_TOKENINFO']._serialized_end=5461
210
+ _globals['_REVOKETOKENREQUEST']._serialized_start=5463
211
+ _globals['_REVOKETOKENREQUEST']._serialized_end=5496
212
+ _globals['_REVOKETOKENRESPONSE']._serialized_start=5498
213
+ _globals['_REVOKETOKENRESPONSE']._serialized_end=5519
214
+ _globals['_LINKSSHKEYREQUEST']._serialized_start=5521
215
+ _globals['_LINKSSHKEYREQUEST']._serialized_end=5590
216
+ _globals['_LINKSSHKEYRESPONSE']._serialized_start=5592
217
+ _globals['_LINKSSHKEYRESPONSE']._serialized_end=5612
218
+ _globals['_FORKVMREQUEST']._serialized_start=5615
219
+ _globals['_FORKVMREQUEST']._serialized_end=5757
220
+ _globals['_FORKVMRESPONSE']._serialized_start=5760
221
+ _globals['_FORKVMRESPONSE']._serialized_end=5911
222
+ _globals['_LISTPROXIESREQUEST']._serialized_start=5913
223
+ _globals['_LISTPROXIESREQUEST']._serialized_end=5966
224
+ _globals['_LISTPROXIESRESPONSE']._serialized_start=5968
225
+ _globals['_LISTPROXIESRESPONSE']._serialized_end=6030
226
+ _globals['_PROXYINFO']._serialized_start=6033
227
+ _globals['_PROXYINFO']._serialized_end=6205
228
+ _globals['_LISTPROXYNODESREQUEST']._serialized_start=6207
229
+ _globals['_LISTPROXYNODESREQUEST']._serialized_end=6230
230
+ _globals['_LISTPROXYNODESRESPONSE']._serialized_start=6232
231
+ _globals['_LISTPROXYNODESRESPONSE']._serialized_end=6301
232
+ _globals['_PROXYNODEINFO']._serialized_start=6303
233
+ _globals['_PROXYNODEINFO']._serialized_end=6344
234
+ _globals['_CREATEPROXYREQUEST']._serialized_start=6346
235
+ _globals['_CREATEPROXYREQUEST']._serialized_end=6427
236
+ _globals['_CREATEPROXYRESPONSE']._serialized_start=6429
237
+ _globals['_CREATEPROXYRESPONSE']._serialized_end=6511
238
+ _globals['_DELETEPROXYREQUEST']._serialized_start=6513
239
+ _globals['_DELETEPROXYREQUEST']._serialized_end=6580
240
+ _globals['_DELETEPROXYRESPONSE']._serialized_start=6582
241
+ _globals['_DELETEPROXYRESPONSE']._serialized_end=6603
242
+ _globals['_SETPROXYPORTREQUEST']._serialized_start=6605
243
+ _globals['_SETPROXYPORTREQUEST']._serialized_end=6687
244
+ _globals['_SETPROXYPORTRESPONSE']._serialized_start=6689
245
+ _globals['_SETPROXYPORTRESPONSE']._serialized_end=6711
246
+ _globals['_UPLOADFILEREQUEST']._serialized_start=6713
247
+ _globals['_UPLOADFILEREQUEST']._serialized_end=6775
248
+ _globals['_UPLOADFILERESPONSE']._serialized_start=6777
249
+ _globals['_UPLOADFILERESPONSE']._serialized_end=6820
250
+ _globals['_UPLOADFILECHUNK']._serialized_start=6822
251
+ _globals['_UPLOADFILECHUNK']._serialized_end=6902
252
+ _globals['_DOWNLOADFILEREQUEST']._serialized_start=6904
253
+ _globals['_DOWNLOADFILEREQUEST']._serialized_end=6954
254
+ _globals['_DOWNLOADFILERESPONSE']._serialized_start=6956
255
+ _globals['_DOWNLOADFILERESPONSE']._serialized_end=6992
256
+ _globals['_CREATESNAPSHOTREQUEST']._serialized_start=6994
257
+ _globals['_CREATESNAPSHOTREQUEST']._serialized_end=7043
258
+ _globals['_CREATESNAPSHOTRESPONSE']._serialized_start=7045
259
+ _globals['_CREATESNAPSHOTRESPONSE']._serialized_end=7137
260
+ _globals['_LISTSNAPSHOTSREQUEST']._serialized_start=7139
261
+ _globals['_LISTSNAPSHOTSREQUEST']._serialized_end=7174
262
+ _globals['_LISTSNAPSHOTSRESPONSE']._serialized_start=7176
263
+ _globals['_LISTSNAPSHOTSRESPONSE']._serialized_end=7245
264
+ _globals['_GETSNAPSHOTREQUEST']._serialized_start=7247
265
+ _globals['_GETSNAPSHOTREQUEST']._serialized_end=7294
266
+ _globals['_GETSNAPSHOTRESPONSE']._serialized_start=7296
267
+ _globals['_GETSNAPSHOTRESPONSE']._serialized_end=7362
268
+ _globals['_DELETESNAPSHOTREQUEST']._serialized_start=7364
269
+ _globals['_DELETESNAPSHOTREQUEST']._serialized_end=7414
270
+ _globals['_DELETESNAPSHOTRESPONSE']._serialized_start=7416
271
+ _globals['_DELETESNAPSHOTRESPONSE']._serialized_end=7440
272
+ _globals['_CREATEVMFROMSNAPSHOTREQUEST']._serialized_start=7443
273
+ _globals['_CREATEVMFROMSNAPSHOTREQUEST']._serialized_end=7574
274
+ _globals['_SNAPSHOTINFO']._serialized_start=7577
275
+ _globals['_SNAPSHOTINFO']._serialized_end=7820
276
+ _globals['_CREATECHECKPOINTREQUEST']._serialized_start=7822
277
+ _globals['_CREATECHECKPOINTREQUEST']._serialized_end=7873
278
+ _globals['_CREATECHECKPOINTRESPONSE']._serialized_start=7875
279
+ _globals['_CREATECHECKPOINTRESPONSE']._serialized_end=7954
280
+ _globals['_LISTCHECKPOINTSREQUEST']._serialized_start=7956
281
+ _globals['_LISTCHECKPOINTSREQUEST']._serialized_end=7992
282
+ _globals['_LISTCHECKPOINTSRESPONSE']._serialized_start=7994
283
+ _globals['_LISTCHECKPOINTSRESPONSE']._serialized_end=8069
284
+ _globals['_DELETECHECKPOINTREQUEST']._serialized_start=8071
285
+ _globals['_DELETECHECKPOINTREQUEST']._serialized_end=8122
286
+ _globals['_DELETECHECKPOINTRESPONSE']._serialized_start=8124
287
+ _globals['_DELETECHECKPOINTRESPONSE']._serialized_end=8150
288
+ _globals['_RESTORECHECKPOINTREQUEST']._serialized_start=8152
289
+ _globals['_RESTORECHECKPOINTREQUEST']._serialized_end=8204
290
+ _globals['_RESTORECHECKPOINTRESPONSE']._serialized_start=8206
291
+ _globals['_RESTORECHECKPOINTRESPONSE']._serialized_end=8233
292
+ _globals['_CHECKPOINTINFO']._serialized_start=8236
293
+ _globals['_CHECKPOINTINFO']._serialized_end=8384
294
+ _globals['_CREATEDISKREQUEST']._serialized_start=8386
295
+ _globals['_CREATEDISKREQUEST']._serialized_end=8445
296
+ _globals['_CREATEDISKRESPONSE']._serialized_start=8447
297
+ _globals['_CREATEDISKRESPONSE']._serialized_end=8540
298
+ _globals['_LISTDISKSREQUEST']._serialized_start=8542
299
+ _globals['_LISTDISKSREQUEST']._serialized_end=8560
300
+ _globals['_LISTDISKSRESPONSE']._serialized_start=8562
301
+ _globals['_LISTDISKSRESPONSE']._serialized_end=8619
302
+ _globals['_DISKINFO']._serialized_start=8622
303
+ _globals['_DISKINFO']._serialized_end=8792
304
+ _globals['_DISKATTACHMENT']._serialized_start=8794
305
+ _globals['_DISKATTACHMENT']._serialized_end=8882
306
+ _globals['_ATTACHDISKREQUEST']._serialized_start=8884
307
+ _globals['_ATTACHDISKREQUEST']._serialized_end=8974
308
+ _globals['_ATTACHDISKRESPONSE']._serialized_start=8976
309
+ _globals['_ATTACHDISKRESPONSE']._serialized_end=8996
310
+ _globals['_DETACHDISKREQUEST']._serialized_start=8998
311
+ _globals['_DETACHDISKREQUEST']._serialized_end=9049
312
+ _globals['_DETACHDISKRESPONSE']._serialized_start=9051
313
+ _globals['_DETACHDISKRESPONSE']._serialized_end=9071
314
+ _globals['_DESTROYDISKREQUEST']._serialized_start=9073
315
+ _globals['_DESTROYDISKREQUEST']._serialized_end=9110
316
+ _globals['_DESTROYDISKRESPONSE']._serialized_start=9112
317
+ _globals['_DESTROYDISKRESPONSE']._serialized_end=9133
318
+ _globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_start=9135
319
+ _globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_end=9202
320
+ _globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_start=9204
321
+ _globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_end=9235
322
+ _globals['_SETAUTOHIBERNATETIMEOUTREQUEST']._serialized_start=9237
323
+ _globals['_SETAUTOHIBERNATETIMEOUTREQUEST']._serialized_end=9306
324
+ _globals['_SETAUTOHIBERNATETIMEOUTRESPONSE']._serialized_start=9308
325
+ _globals['_SETAUTOHIBERNATETIMEOUTRESPONSE']._serialized_end=9341
326
+ _globals['_CREATEAPIKEYREQUEST']._serialized_start=9343
327
+ _globals['_CREATEAPIKEYREQUEST']._serialized_end=9430
328
+ _globals['_CREATEAPIKEYRESPONSE']._serialized_start=9432
329
+ _globals['_CREATEAPIKEYRESPONSE']._serialized_end=9503
330
+ _globals['_LISTAPIKEYSREQUEST']._serialized_start=9505
331
+ _globals['_LISTAPIKEYSREQUEST']._serialized_end=9525
332
+ _globals['_LISTAPIKEYSRESPONSE']._serialized_start=9527
333
+ _globals['_LISTAPIKEYSRESPONSE']._serialized_end=9587
334
+ _globals['_APIKEYINFO']._serialized_start=9590
335
+ _globals['_APIKEYINFO']._serialized_end=9737
336
+ _globals['_DELETEAPIKEYREQUEST']._serialized_start=9739
337
+ _globals['_DELETEAPIKEYREQUEST']._serialized_end=9772
338
+ _globals['_DELETEAPIKEYRESPONSE']._serialized_start=9774
339
+ _globals['_DELETEAPIKEYRESPONSE']._serialized_end=9796
340
+ _globals['_SHAREVMREQUEST']._serialized_start=9798
341
+ _globals['_SHAREVMREQUEST']._serialized_end=9829
342
+ _globals['_SHAREVMRESPONSE']._serialized_start=9831
343
+ _globals['_SHAREVMRESPONSE']._serialized_end=9848
344
+ _globals['_LISTORGSREQUEST']._serialized_start=9850
345
+ _globals['_LISTORGSREQUEST']._serialized_end=9867
346
+ _globals['_LISTORGSRESPONSE']._serialized_start=9869
347
+ _globals['_LISTORGSRESPONSE']._serialized_end=9956
348
+ _globals['_ORGSUMMARY']._serialized_start=9958
349
+ _globals['_ORGSUMMARY']._serialized_end=10028
350
+ _globals['_GETORGBILLINGREQUEST']._serialized_start=10030
351
+ _globals['_GETORGBILLINGREQUEST']._serialized_end=10065
352
+ _globals['_GETORGBILLINGRESPONSE']._serialized_start=10068
353
+ _globals['_GETORGBILLINGRESPONSE']._serialized_end=10245
354
+ _globals['_ORGBILLEDVM']._serialized_start=10247
355
+ _globals['_ORGBILLEDVM']._serialized_end=10335
356
+ _globals['_UNSHAREVMREQUEST']._serialized_start=10337
357
+ _globals['_UNSHAREVMREQUEST']._serialized_end=10370
358
+ _globals['_UNSHAREVMRESPONSE']._serialized_start=10372
359
+ _globals['_UNSHAREVMRESPONSE']._serialized_end=10391
360
+ _globals['_BOXDAPI']._serialized_start=10394
361
+ _globals['_BOXDAPI']._serialized_end=16146
362
+ # @@protoc_insertion_point(module_scope)
@@ -49,6 +49,11 @@ class BoxdApiStub:
49
49
  request_serializer=api__pb2.RenameVmRequest.SerializeToString,
50
50
  response_deserializer=api__pb2.RenameVmResponse.FromString,
51
51
  _registered_method=True)
52
+ self.SetVmNetworks = channel.unary_unary(
53
+ '/boxd.api.v1.BoxdApi/SetVmNetworks',
54
+ request_serializer=api__pb2.SetVmNetworksRequest.SerializeToString,
55
+ response_deserializer=api__pb2.SetVmNetworksResponse.FromString,
56
+ _registered_method=True)
52
57
  self.StartVm = channel.unary_unary(
53
58
  '/boxd.api.v1.BoxdApi/StartVm',
54
59
  request_serializer=api__pb2.StartVmRequest.SerializeToString,
@@ -402,6 +407,15 @@ class BoxdApiServicer:
402
407
  context.set_details('Method not implemented!')
403
408
  raise NotImplementedError('Method not implemented!')
404
409
 
410
+ def SetVmNetworks(self, request, context):
411
+ """Replaces a VM's whole network-tag set (BOX-41) — not add/remove, the
412
+ caller sends the complete desired set. Networks drive east-west
413
+ reachability within the caller's org; see CreateVmRequest.networks.
414
+ """
415
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
416
+ context.set_details('Method not implemented!')
417
+ raise NotImplementedError('Method not implemented!')
418
+
405
419
  def StartVm(self, request, context):
406
420
  """Missing associated documentation comment in .proto file."""
407
421
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -851,6 +865,11 @@ def add_BoxdApiServicer_to_server(servicer, server):
851
865
  request_deserializer=api__pb2.RenameVmRequest.FromString,
852
866
  response_serializer=api__pb2.RenameVmResponse.SerializeToString,
853
867
  ),
868
+ 'SetVmNetworks': grpc.unary_unary_rpc_method_handler(
869
+ servicer.SetVmNetworks,
870
+ request_deserializer=api__pb2.SetVmNetworksRequest.FromString,
871
+ response_serializer=api__pb2.SetVmNetworksResponse.SerializeToString,
872
+ ),
854
873
  'StartVm': grpc.unary_unary_rpc_method_handler(
855
874
  servicer.StartVm,
856
875
  request_deserializer=api__pb2.StartVmRequest.FromString,
@@ -1273,6 +1292,33 @@ class BoxdApi:
1273
1292
  metadata,
1274
1293
  _registered_method=True)
1275
1294
 
1295
+ @staticmethod
1296
+ def SetVmNetworks(request,
1297
+ target,
1298
+ options=(),
1299
+ channel_credentials=None,
1300
+ call_credentials=None,
1301
+ insecure=False,
1302
+ compression=None,
1303
+ wait_for_ready=None,
1304
+ timeout=None,
1305
+ metadata=None):
1306
+ return grpc.experimental.unary_unary(
1307
+ request,
1308
+ target,
1309
+ '/boxd.api.v1.BoxdApi/SetVmNetworks',
1310
+ api__pb2.SetVmNetworksRequest.SerializeToString,
1311
+ api__pb2.SetVmNetworksResponse.FromString,
1312
+ options,
1313
+ channel_credentials,
1314
+ insecure,
1315
+ call_credentials,
1316
+ compression,
1317
+ wait_for_ready,
1318
+ timeout,
1319
+ metadata,
1320
+ _registered_method=True)
1321
+
1276
1322
  @staticmethod
1277
1323
  def StartVm(request,
1278
1324
  target,
@@ -31,6 +31,7 @@ from .models import (
31
31
  Machine,
32
32
  MachineAccess,
33
33
  MachineIdle,
34
+ MachineNetworking,
34
35
  MachineResources,
35
36
  MachineSource,
36
37
  Org,
@@ -111,6 +112,9 @@ def machine(msg) -> Machine:
111
112
  ),
112
113
  org=org_ref,
113
114
  shared=bool(msg.org or msg.org_id),
115
+ networking=MachineNetworking(
116
+ networks=list(msg.networks), isolated=msg.isolated
117
+ ),
114
118
  access=MachineAccess(
115
119
  # 0 = not yet allocated, never a real port.
116
120
  ssh_port=msg.ssh_port or None,
@@ -148,6 +152,9 @@ def machine_from_created(msg) -> Machine:
148
152
  resources=MachineResources(vcpu=0, memory_bytes=0, disk_bytes=0),
149
153
  org=None,
150
154
  shared=False,
155
+ # Not reported by these responses — `create`/`fork` re-read the
156
+ # machine, so this fallback only shows when that read failed.
157
+ networking=MachineNetworking(networks=[], isolated=False),
151
158
  access=MachineAccess(ssh_port=None, domain="", url=""),
152
159
  idle=MachineIdle(suspend_after=0, hibernate_after=0, destroy_after=0),
153
160
  source=None,