boxd 0.1.2.dev13__tar.gz → 0.1.4__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 (44) hide show
  1. {boxd-0.1.2.dev13/src/boxd.egg-info → boxd-0.1.4}/PKG-INFO +68 -9
  2. {boxd-0.1.2.dev13 → boxd-0.1.4}/README.md +67 -8
  3. {boxd-0.1.2.dev13 → boxd-0.1.4}/pyproject.toml +1 -1
  4. boxd-0.1.4/src/boxd/_generated/api_pb2.py +256 -0
  5. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/_generated/api_pb2_grpc.py +307 -0
  6. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/_sync.py +32 -0
  7. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/box.py +102 -11
  8. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/exec.py +30 -3
  9. {boxd-0.1.2.dev13 → boxd-0.1.4/src/boxd.egg-info}/PKG-INFO +68 -9
  10. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_e2e.py +4 -8
  11. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_e2e_v2.py +3 -7
  12. boxd-0.1.4/tests/test_exec.py +139 -0
  13. boxd-0.1.2.dev13/src/boxd/_generated/api_pb2.py +0 -226
  14. boxd-0.1.2.dev13/tests/test_exec.py +0 -21
  15. {boxd-0.1.2.dev13 → boxd-0.1.4}/LICENSE +0 -0
  16. {boxd-0.1.2.dev13 → boxd-0.1.4}/setup.cfg +0 -0
  17. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/__init__.py +0 -0
  18. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/_generated/__init__.py +0 -0
  19. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/_utils.py +0 -0
  20. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/_version_check.py +0 -0
  21. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/aio.py +0 -0
  22. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/auth.py +0 -0
  23. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/billing.py +0 -0
  24. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/boxes.py +0 -0
  25. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/client.py +0 -0
  26. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/disks.py +0 -0
  27. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/domains.py +0 -0
  28. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/errors.py +0 -0
  29. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/networks.py +0 -0
  30. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/templates.py +0 -0
  31. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/tokens.py +0 -0
  32. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd/types.py +0 -0
  33. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd.egg-info/SOURCES.txt +0 -0
  34. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd.egg-info/dependency_links.txt +0 -0
  35. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd.egg-info/requires.txt +0 -0
  36. {boxd-0.1.2.dev13 → boxd-0.1.4}/src/boxd.egg-info/top_level.txt +0 -0
  37. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_auth.py +0 -0
  38. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_boxes.py +0 -0
  39. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_files.py +0 -0
  40. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_lifecycle.py +0 -0
  41. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_proxies.py +0 -0
  42. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_utils.py +0 -0
  43. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_v2.py +0 -0
  44. {boxd-0.1.2.dev13 → boxd-0.1.4}/tests/test_version_check.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boxd
3
- Version: 0.1.2.dev13
3
+ Version: 0.1.4
4
4
  Summary: Python SDK for the boxd cloud VM platform
5
5
  Author: Azin
6
6
  License-Expression: MIT
@@ -159,30 +159,89 @@ box = c.box.create(name="my-vm", config=config)
159
159
  ```python
160
160
  # Simple — collect all output
161
161
  r = box.exec("python", "script.py")
162
- r.stdout # str
163
- r.stderr # str
162
+ r.stdout # str (subprocess fd 1)
163
+ r.stderr # str (subprocess fd 2)
164
164
  r.exit_code # int
165
165
  r.success # bool — exit_code == 0
166
166
 
167
167
  # With env vars and timeout
168
168
  box.exec("sh", "-c", "echo $FOO", env={"FOO": "bar"}, timeout=30)
169
169
 
170
- # Streaming — proc is an ExecProcess. Use iter_stdout / iter_stderr
171
- # (sync generators that block until the next chunk arrives), then wait()
172
- # for the exit code. close() force-terminates the stream.
173
- proc = box.exec("tail", "-f", "/var/log/syslog", stream=True)
170
+ # Streaming — proc is an ExecProcess. iter_stdout / iter_stderr are
171
+ # separate sync generators. wait() returns the exit code; close() force-
172
+ # terminates (idempotent).
173
+ proc = box.exec("cargo", "build", stream=True)
174
174
  for chunk in proc.iter_stdout():
175
175
  print(chunk.decode(), end="")
176
+ # (read iter_stderr concurrently in another thread if you want warnings live)
176
177
  exit_code = proc.wait()
177
- proc.close() # idempotent
178
+ proc.close()
178
179
 
179
- # Interactive (PTY + stdin) write to proc.stdin, end with write_eof
180
+ # Headless one-shotclose stdin immediately so commands like
181
+ # `claude -p`, `jq`, `cat file` see EOF and don't hang waiting for input.
182
+ r2 = box.exec(
183
+ "claude", "-p", "summarize this PR",
184
+ stream=True, close_stdin=True,
185
+ )
186
+
187
+ # Interactive (PTY + stdin) — stdin must stay open for user input.
188
+ # close_stdin=True is REJECTED with this combination (ValueError).
180
189
  sh = box.exec("bash", interactive=True) # interactive implies pty
181
190
  sh.stdin.write(b"echo hello\n")
182
191
  sh.stdin.write_eof()
183
192
  print(sh.wait())
184
193
  ```
185
194
 
195
+ ### Streams: stdout vs stderr
196
+
197
+ `r.stderr` / `proc.iter_stderr()` is populated for **non-PTY** execs. The
198
+ subprocess's fd 2 is delivered separately from fd 1 — useful when a tool's
199
+ progress lives on stderr while the answer is on stdout (e.g. `codex exec`,
200
+ `cargo build`).
201
+
202
+ Under `pty=True` / `interactive=True`, the kernel TTY layer merges stderr
203
+ into stdout (that's how terminals work), so everything arrives on `stdout`
204
+ and the stderr side stays empty. Set `pty=False` if you need the split.
205
+
206
+ ### `close_stdin`
207
+
208
+ Pass `close_stdin=True` (only valid with `stream=True` on a non-PTY exec)
209
+ to have the SDK close the client send half of the bidi stream right after
210
+ the command starts. Headless one-shots that read stdin (`claude -p`, `jq`,
211
+ `cat file`) see EOF immediately and proceed; without it they hang for
212
+ several seconds (or forever) waiting on stdin. Passing it together with
213
+ `pty=True` or `interactive=True` raises `ValueError` rather than silently
214
+ dropping the flag — a PTY shell needs stdin open for user input.
215
+
216
+ ### PTY size + resize
217
+
218
+ For PTY/interactive execs, pass ``cols`` and ``rows`` to set the initial
219
+ terminal geometry, and call ``proc.resize(cols, rows)`` to update it
220
+ mid-session when the local terminal changes size. This is what makes TUI
221
+ apps like ``claude``, ``vim``, ``htop`` render at the right width.
222
+
223
+ ```python
224
+ import os
225
+ import signal
226
+ import shutil
227
+
228
+ cols, rows = shutil.get_terminal_size()
229
+ proc = box.exec("claude", stream=True, pty=True, cols=cols, rows=rows)
230
+
231
+ # Forward local SIGWINCH so resize propagates into the VM's PTY.
232
+ def _on_resize(_signum, _frame):
233
+ c, r = shutil.get_terminal_size()
234
+ proc.resize(c, r)
235
+ signal.signal(signal.SIGWINCH, _on_resize)
236
+
237
+ # Forward raw bytes; the local terminal renders the ANSI escapes.
238
+ for chunk in proc.iter_stdout():
239
+ os.write(1, chunk)
240
+ ```
241
+
242
+ Zero / unset ``cols`` and ``rows`` fall back to the server default of
243
+ 80×24. ``resize()`` on a non-PTY exec is a harmless no-op.
244
+
186
245
  ## Files
187
246
 
188
247
  ```python
@@ -128,30 +128,89 @@ box = c.box.create(name="my-vm", config=config)
128
128
  ```python
129
129
  # Simple — collect all output
130
130
  r = box.exec("python", "script.py")
131
- r.stdout # str
132
- r.stderr # str
131
+ r.stdout # str (subprocess fd 1)
132
+ r.stderr # str (subprocess fd 2)
133
133
  r.exit_code # int
134
134
  r.success # bool — exit_code == 0
135
135
 
136
136
  # With env vars and timeout
137
137
  box.exec("sh", "-c", "echo $FOO", env={"FOO": "bar"}, timeout=30)
138
138
 
139
- # Streaming — proc is an ExecProcess. Use iter_stdout / iter_stderr
140
- # (sync generators that block until the next chunk arrives), then wait()
141
- # for the exit code. close() force-terminates the stream.
142
- proc = box.exec("tail", "-f", "/var/log/syslog", stream=True)
139
+ # Streaming — proc is an ExecProcess. iter_stdout / iter_stderr are
140
+ # separate sync generators. wait() returns the exit code; close() force-
141
+ # terminates (idempotent).
142
+ proc = box.exec("cargo", "build", stream=True)
143
143
  for chunk in proc.iter_stdout():
144
144
  print(chunk.decode(), end="")
145
+ # (read iter_stderr concurrently in another thread if you want warnings live)
145
146
  exit_code = proc.wait()
146
- proc.close() # idempotent
147
+ proc.close()
147
148
 
148
- # Interactive (PTY + stdin) write to proc.stdin, end with write_eof
149
+ # Headless one-shotclose stdin immediately so commands like
150
+ # `claude -p`, `jq`, `cat file` see EOF and don't hang waiting for input.
151
+ r2 = box.exec(
152
+ "claude", "-p", "summarize this PR",
153
+ stream=True, close_stdin=True,
154
+ )
155
+
156
+ # Interactive (PTY + stdin) — stdin must stay open for user input.
157
+ # close_stdin=True is REJECTED with this combination (ValueError).
149
158
  sh = box.exec("bash", interactive=True) # interactive implies pty
150
159
  sh.stdin.write(b"echo hello\n")
151
160
  sh.stdin.write_eof()
152
161
  print(sh.wait())
153
162
  ```
154
163
 
164
+ ### Streams: stdout vs stderr
165
+
166
+ `r.stderr` / `proc.iter_stderr()` is populated for **non-PTY** execs. The
167
+ subprocess's fd 2 is delivered separately from fd 1 — useful when a tool's
168
+ progress lives on stderr while the answer is on stdout (e.g. `codex exec`,
169
+ `cargo build`).
170
+
171
+ Under `pty=True` / `interactive=True`, the kernel TTY layer merges stderr
172
+ into stdout (that's how terminals work), so everything arrives on `stdout`
173
+ and the stderr side stays empty. Set `pty=False` if you need the split.
174
+
175
+ ### `close_stdin`
176
+
177
+ Pass `close_stdin=True` (only valid with `stream=True` on a non-PTY exec)
178
+ to have the SDK close the client send half of the bidi stream right after
179
+ the command starts. Headless one-shots that read stdin (`claude -p`, `jq`,
180
+ `cat file`) see EOF immediately and proceed; without it they hang for
181
+ several seconds (or forever) waiting on stdin. Passing it together with
182
+ `pty=True` or `interactive=True` raises `ValueError` rather than silently
183
+ dropping the flag — a PTY shell needs stdin open for user input.
184
+
185
+ ### PTY size + resize
186
+
187
+ For PTY/interactive execs, pass ``cols`` and ``rows`` to set the initial
188
+ terminal geometry, and call ``proc.resize(cols, rows)`` to update it
189
+ mid-session when the local terminal changes size. This is what makes TUI
190
+ apps like ``claude``, ``vim``, ``htop`` render at the right width.
191
+
192
+ ```python
193
+ import os
194
+ import signal
195
+ import shutil
196
+
197
+ cols, rows = shutil.get_terminal_size()
198
+ proc = box.exec("claude", stream=True, pty=True, cols=cols, rows=rows)
199
+
200
+ # Forward local SIGWINCH so resize propagates into the VM's PTY.
201
+ def _on_resize(_signum, _frame):
202
+ c, r = shutil.get_terminal_size()
203
+ proc.resize(c, r)
204
+ signal.signal(signal.SIGWINCH, _on_resize)
205
+
206
+ # Forward raw bytes; the local terminal renders the ANSI escapes.
207
+ for chunk in proc.iter_stdout():
208
+ os.write(1, chunk)
209
+ ```
210
+
211
+ Zero / unset ``cols`` and ``rows`` fall back to the server default of
212
+ 80×24. ``resize()`` on a non-PTY exec is a harmless no-op.
213
+
155
214
  ## Files
156
215
 
157
216
  ```python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "boxd"
3
- version = "0.1.2.dev13"
3
+ version = "0.1.4"
4
4
  description = "Python SDK for the boxd cloud VM platform"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -0,0 +1,256 @@
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: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ '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\"\xac\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.VmConfigJ\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\"\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\"\x1d\n\x0cGetVmRequest\x12\r\n\x05vm_id\x18\x01 \x01(\t\"\xb1\x01\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\"\x10\n\x0eListVmsRequest\":\n\x0fListVmsResponse\x12\'\n\x03vms\x18\x01 \x03(\x0b\x32\x1a.boxd.api.v1.GetVmResponse\"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\"\xae\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\"$\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\"\x85\x01\n\x0eWhoamiResponse\x12\x0f\n\x07user_id\x18\x01 \x01(\t\x12\x1b\n\x13pubkey_fingerprints\x18\x02 \x03(\t\x12\x1a\n\x12\x64\x65\x66\x61ult_network_id\x18\x03 \x01(\t\x12)\n\x07\x62illing\x18\x04 \x01(\x0b\x32\x18.boxd.api.v1.BillingInfo\"\xac\x01\n\x0b\x42illingInfo\x12\x0c\n\x04tier\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x01(\t\x12\x1b\n\x13subscription_status\x18\x03 \x01(\t\x12\x1a\n\x12stripe_customer_id\x18\x04 \x01(\t\x12\x1e\n\x16stripe_subscription_id\x18\x05 \x01(\t\x12\x16\n\x0epast_due_since\x18\x06 \x01(\x03\x12\x0f\n\x07max_vms\x18\x07 \x01(\r\"\x12\n\x10ListPlansRequest\"9\n\x11ListPlansResponse\x12$\n\x05plans\x18\x01 \x03(\x0b\x32\x15.boxd.api.v1.PlanInfo\"\x89\x01\n\x08PlanInfo\x12\x0c\n\x04tier\x18\x01 \x01(\t\x12\r\n\x05shape\x18\x02 \x01(\t\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(\x04\"\x13\n\x11GetBillingRequest\"?\n\x12GetBillingResponse\x12)\n\x07\x62illing\x18\x01 \x01(\x0b\x32\x18.boxd.api.v1.BillingInfo\"V\n\x1c\x43reateCheckoutSessionRequest\x12\r\n\x05shape\x18\x01 \x01(\t\x12\x13\n\x0bsuccess_url\x18\x02 \x01(\t\x12\x12\n\ncancel_url\x18\x03 \x01(\t\"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\x43hangeShapeRequest\x12\r\n\x05shape\x18\x01 \x01(\t\"4\n\x13\x43hangeShapeResponse\x12\r\n\x05shape\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \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\"Z\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\"\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\"%\n\x12ListProxiesRequest\x12\x0f\n\x07vm_name\x18\x01 \x01(\t\">\n\x13ListProxiesResponse\x12\'\n\x07proxies\x18\x01 \x03(\x0b\x32\x16.boxd.api.v1.ProxyInfo\"r\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\"A\n\x12\x43reateProxyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"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\"3\n\x12\x44\x65leteProxyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\"\x15\n\x13\x44\x65leteProxyResponse\"B\n\x13SetProxyPortRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07vm_name\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \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\"_\n\x15\x43reateTemplateRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\timage_ref\x18\x02 \x01(\t\x12%\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\x15.boxd.api.v1.VmConfig\"K\n\x16\x43reateTemplateResponse\x12\x13\n\x0btemplate_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\"\x16\n\x14ListTemplatesRequest\"E\n\x15ListTemplatesResponse\x12,\n\ttemplates\x18\x01 \x03(\x0b\x32\x19.boxd.api.v1.TemplateInfo\"x\n\x0cTemplateInfo\x12\x13\n\x0btemplate_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\timage_ref\x18\x03 \x01(\t\x12\x0e\n\x06status\x18\x04 \x01(\t\x12\x0c\n\x04vcpu\x18\x05 \x01(\r\x12\x14\n\x0cmemory_bytes\x18\x06 \x01(\x04\",\n\x15\x44\x65leteTemplateRequest\x12\x13\n\x0btemplate_id\x18\x01 \x01(\t\"\x18\n\x16\x44\x65leteTemplateResponse\"g\n\x1b\x43reateVmFromTemplateRequest\x12\x13\n\x0btemplate_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\"\x81\x01\n\x1c\x43reateVmFromTemplateResponse\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\x0e\n\x06status\x18\x05 \x01(\t\x12\x14\n\x0c\x62oot_time_ms\x18\x06 \x01(\x04\"5\n\x11\x43reateDiskRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nsize_bytes\x18\x02 \x01(\x04\"W\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(\t\"\x12\n\x10ListDisksRequest\"9\n\x11ListDisksResponse\x12$\n\x05\x64isks\x18\x01 \x03(\x0b\x32\x15.boxd.api.v1.DiskInfo\"\x92\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\x11\n\tworker_id\x18\x05 \x01(\t\x12\x30\n\x0b\x61ttachments\x18\x06 \x03(\x0b\x32\x1b.boxd.api.v1.DiskAttachment\"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\"<\n\x13\x43reateApiKeyRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0f\x65xpires_in_secs\x18\x02 \x01(\x04\"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\"x\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\"!\n\x13\x44\x65leteApiKeyRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteApiKeyResponse2\xfe\x1e\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\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\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\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\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\x12Y\n\x0e\x43reateTemplate\x12\".boxd.api.v1.CreateTemplateRequest\x1a#.boxd.api.v1.CreateTemplateResponse\x12V\n\rListTemplates\x12!.boxd.api.v1.ListTemplatesRequest\x1a\".boxd.api.v1.ListTemplatesResponse\x12Y\n\x0e\x44\x65leteTemplate\x12\".boxd.api.v1.DeleteTemplateRequest\x1a#.boxd.api.v1.DeleteTemplateResponse\x12k\n\x14\x43reateVmFromTemplate\x12(.boxd.api.v1.CreateVmFromTemplateRequest\x1a).boxd.api.v1.CreateVmFromTemplateResponse\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\x12P\n\x0b\x43hangeShape\x12\x1f.boxd.api.v1.ChangeShapeRequest\x1a .boxd.api.v1.ChangeShapeResponseb\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['_VMCONFIG']._serialized_start=27
35
+ _globals['_VMCONFIG']._serialized_end=218
36
+ _globals['_SRFCONFIG']._serialized_start=220
37
+ _globals['_SRFCONFIG']._serialized_end=336
38
+ _globals['_NETWORKCONFIG']._serialized_start=338
39
+ _globals['_NETWORKCONFIG']._serialized_end=408
40
+ _globals['_PROXYENTRY']._serialized_start=410
41
+ _globals['_PROXYENTRY']._serialized_end=450
42
+ _globals['_VOLUMEMOUNT']._serialized_start=452
43
+ _globals['_VOLUMEMOUNT']._serialized_end=521
44
+ _globals['_CREATEVMREQUEST']._serialized_start=524
45
+ _globals['_CREATEVMREQUEST']._serialized_end=696
46
+ _globals['_ENVVAR']._serialized_start=698
47
+ _globals['_ENVVAR']._serialized_end=734
48
+ _globals['_CREATEVMRESPONSE']._serialized_start=737
49
+ _globals['_CREATEVMRESPONSE']._serialized_end=869
50
+ _globals['_DESTROYVMREQUEST']._serialized_start=871
51
+ _globals['_DESTROYVMREQUEST']._serialized_end=904
52
+ _globals['_DESTROYVMRESPONSE']._serialized_start=906
53
+ _globals['_DESTROYVMRESPONSE']._serialized_end=925
54
+ _globals['_STARTVMREQUEST']._serialized_start=927
55
+ _globals['_STARTVMREQUEST']._serialized_end=958
56
+ _globals['_STARTVMRESPONSE']._serialized_start=960
57
+ _globals['_STARTVMRESPONSE']._serialized_end=977
58
+ _globals['_STOPVMREQUEST']._serialized_start=979
59
+ _globals['_STOPVMREQUEST']._serialized_end=1009
60
+ _globals['_STOPVMRESPONSE']._serialized_start=1011
61
+ _globals['_STOPVMRESPONSE']._serialized_end=1027
62
+ _globals['_REBOOTVMREQUEST']._serialized_start=1029
63
+ _globals['_REBOOTVMREQUEST']._serialized_end=1061
64
+ _globals['_REBOOTVMRESPONSE']._serialized_start=1063
65
+ _globals['_REBOOTVMRESPONSE']._serialized_end=1081
66
+ _globals['_SUSPENDVMREQUEST']._serialized_start=1083
67
+ _globals['_SUSPENDVMREQUEST']._serialized_end=1116
68
+ _globals['_SUSPENDVMRESPONSE']._serialized_start=1118
69
+ _globals['_SUSPENDVMRESPONSE']._serialized_end=1157
70
+ _globals['_RESUMEVMREQUEST']._serialized_start=1159
71
+ _globals['_RESUMEVMREQUEST']._serialized_end=1191
72
+ _globals['_RESUMEVMRESPONSE']._serialized_start=1193
73
+ _globals['_RESUMEVMRESPONSE']._serialized_end=1230
74
+ _globals['_GETVMREQUEST']._serialized_start=1232
75
+ _globals['_GETVMREQUEST']._serialized_end=1261
76
+ _globals['_GETVMRESPONSE']._serialized_start=1264
77
+ _globals['_GETVMRESPONSE']._serialized_end=1441
78
+ _globals['_LISTVMSREQUEST']._serialized_start=1443
79
+ _globals['_LISTVMSREQUEST']._serialized_end=1459
80
+ _globals['_LISTVMSRESPONSE']._serialized_start=1461
81
+ _globals['_LISTVMSRESPONSE']._serialized_end=1519
82
+ _globals['_STREAMLOGSREQUEST']._serialized_start=1521
83
+ _globals['_STREAMLOGSREQUEST']._serialized_end=1571
84
+ _globals['_LOGCHUNK']._serialized_start=1573
85
+ _globals['_LOGCHUNK']._serialized_end=1597
86
+ _globals['_EXECCHUNK']._serialized_start=1600
87
+ _globals['_EXECCHUNK']._serialized_end=1774
88
+ _globals['_CREATENETWORKREQUEST']._serialized_start=1776
89
+ _globals['_CREATENETWORKREQUEST']._serialized_end=1812
90
+ _globals['_CREATENETWORKRESPONSE']._serialized_start=1814
91
+ _globals['_CREATENETWORKRESPONSE']._serialized_end=1857
92
+ _globals['_LISTNETWORKSREQUEST']._serialized_start=1859
93
+ _globals['_LISTNETWORKSREQUEST']._serialized_end=1880
94
+ _globals['_LISTNETWORKSRESPONSE']._serialized_start=1882
95
+ _globals['_LISTNETWORKSRESPONSE']._serialized_end=1948
96
+ _globals['_NETWORKINFO']._serialized_start=1950
97
+ _globals['_NETWORKINFO']._serialized_end=2015
98
+ _globals['_BINDDOMAINREQUEST']._serialized_start=2017
99
+ _globals['_BINDDOMAINREQUEST']._serialized_end=2067
100
+ _globals['_BINDDOMAINRESPONSE']._serialized_start=2069
101
+ _globals['_BINDDOMAINRESPONSE']._serialized_end=2089
102
+ _globals['_UNBINDDOMAINREQUEST']._serialized_start=2091
103
+ _globals['_UNBINDDOMAINREQUEST']._serialized_end=2128
104
+ _globals['_UNBINDDOMAINRESPONSE']._serialized_start=2130
105
+ _globals['_UNBINDDOMAINRESPONSE']._serialized_end=2152
106
+ _globals['_LISTDOMAINSREQUEST']._serialized_start=2154
107
+ _globals['_LISTDOMAINSREQUEST']._serialized_end=2174
108
+ _globals['_LISTDOMAINSRESPONSE']._serialized_start=2176
109
+ _globals['_LISTDOMAINSRESPONSE']._serialized_end=2239
110
+ _globals['_DOMAININFO']._serialized_start=2241
111
+ _globals['_DOMAININFO']._serialized_end=2284
112
+ _globals['_GETCONFIGREQUEST']._serialized_start=2286
113
+ _globals['_GETCONFIGREQUEST']._serialized_end=2304
114
+ _globals['_GETCONFIGRESPONSE']._serialized_start=2306
115
+ _globals['_GETCONFIGRESPONSE']._serialized_end=2362
116
+ _globals['_WHOAMIREQUEST']._serialized_start=2364
117
+ _globals['_WHOAMIREQUEST']._serialized_end=2379
118
+ _globals['_WHOAMIRESPONSE']._serialized_start=2382
119
+ _globals['_WHOAMIRESPONSE']._serialized_end=2515
120
+ _globals['_BILLINGINFO']._serialized_start=2518
121
+ _globals['_BILLINGINFO']._serialized_end=2690
122
+ _globals['_LISTPLANSREQUEST']._serialized_start=2692
123
+ _globals['_LISTPLANSREQUEST']._serialized_end=2710
124
+ _globals['_LISTPLANSRESPONSE']._serialized_start=2712
125
+ _globals['_LISTPLANSRESPONSE']._serialized_end=2769
126
+ _globals['_PLANINFO']._serialized_start=2772
127
+ _globals['_PLANINFO']._serialized_end=2909
128
+ _globals['_GETBILLINGREQUEST']._serialized_start=2911
129
+ _globals['_GETBILLINGREQUEST']._serialized_end=2930
130
+ _globals['_GETBILLINGRESPONSE']._serialized_start=2932
131
+ _globals['_GETBILLINGRESPONSE']._serialized_end=2995
132
+ _globals['_CREATECHECKOUTSESSIONREQUEST']._serialized_start=2997
133
+ _globals['_CREATECHECKOUTSESSIONREQUEST']._serialized_end=3083
134
+ _globals['_CREATECHECKOUTSESSIONRESPONSE']._serialized_start=3085
135
+ _globals['_CREATECHECKOUTSESSIONRESPONSE']._serialized_end=3138
136
+ _globals['_CREATEBILLINGPORTALSESSIONREQUEST']._serialized_start=3140
137
+ _globals['_CREATEBILLINGPORTALSESSIONREQUEST']._serialized_end=3195
138
+ _globals['_CREATEBILLINGPORTALSESSIONRESPONSE']._serialized_start=3197
139
+ _globals['_CREATEBILLINGPORTALSESSIONRESPONSE']._serialized_end=3253
140
+ _globals['_CHANGESHAPEREQUEST']._serialized_start=3255
141
+ _globals['_CHANGESHAPEREQUEST']._serialized_end=3290
142
+ _globals['_CHANGESHAPERESPONSE']._serialized_start=3292
143
+ _globals['_CHANGESHAPERESPONSE']._serialized_end=3344
144
+ _globals['_CREATETOKENREQUEST']._serialized_start=3346
145
+ _globals['_CREATETOKENREQUEST']._serialized_end=3391
146
+ _globals['_CREATETOKENRESPONSE']._serialized_start=3393
147
+ _globals['_CREATETOKENRESPONSE']._serialized_end=3449
148
+ _globals['_LISTTOKENSREQUEST']._serialized_start=3451
149
+ _globals['_LISTTOKENSREQUEST']._serialized_end=3470
150
+ _globals['_LISTTOKENSRESPONSE']._serialized_start=3472
151
+ _globals['_LISTTOKENSRESPONSE']._serialized_end=3532
152
+ _globals['_TOKENINFO']._serialized_start=3534
153
+ _globals['_TOKENINFO']._serialized_end=3598
154
+ _globals['_REVOKETOKENREQUEST']._serialized_start=3600
155
+ _globals['_REVOKETOKENREQUEST']._serialized_end=3633
156
+ _globals['_REVOKETOKENRESPONSE']._serialized_start=3635
157
+ _globals['_REVOKETOKENRESPONSE']._serialized_end=3656
158
+ _globals['_FORKVMREQUEST']._serialized_start=3658
159
+ _globals['_FORKVMREQUEST']._serialized_end=3748
160
+ _globals['_FORKVMRESPONSE']._serialized_start=3751
161
+ _globals['_FORKVMRESPONSE']._serialized_end=3902
162
+ _globals['_LISTPROXIESREQUEST']._serialized_start=3904
163
+ _globals['_LISTPROXIESREQUEST']._serialized_end=3941
164
+ _globals['_LISTPROXIESRESPONSE']._serialized_start=3943
165
+ _globals['_LISTPROXIESRESPONSE']._serialized_end=4005
166
+ _globals['_PROXYINFO']._serialized_start=4007
167
+ _globals['_PROXYINFO']._serialized_end=4121
168
+ _globals['_CREATEPROXYREQUEST']._serialized_start=4123
169
+ _globals['_CREATEPROXYREQUEST']._serialized_end=4188
170
+ _globals['_CREATEPROXYRESPONSE']._serialized_start=4190
171
+ _globals['_CREATEPROXYRESPONSE']._serialized_end=4272
172
+ _globals['_DELETEPROXYREQUEST']._serialized_start=4274
173
+ _globals['_DELETEPROXYREQUEST']._serialized_end=4325
174
+ _globals['_DELETEPROXYRESPONSE']._serialized_start=4327
175
+ _globals['_DELETEPROXYRESPONSE']._serialized_end=4348
176
+ _globals['_SETPROXYPORTREQUEST']._serialized_start=4350
177
+ _globals['_SETPROXYPORTREQUEST']._serialized_end=4416
178
+ _globals['_SETPROXYPORTRESPONSE']._serialized_start=4418
179
+ _globals['_SETPROXYPORTRESPONSE']._serialized_end=4440
180
+ _globals['_UPLOADFILEREQUEST']._serialized_start=4442
181
+ _globals['_UPLOADFILEREQUEST']._serialized_end=4504
182
+ _globals['_UPLOADFILERESPONSE']._serialized_start=4506
183
+ _globals['_UPLOADFILERESPONSE']._serialized_end=4549
184
+ _globals['_UPLOADFILECHUNK']._serialized_start=4551
185
+ _globals['_UPLOADFILECHUNK']._serialized_end=4631
186
+ _globals['_DOWNLOADFILEREQUEST']._serialized_start=4633
187
+ _globals['_DOWNLOADFILEREQUEST']._serialized_end=4683
188
+ _globals['_DOWNLOADFILERESPONSE']._serialized_start=4685
189
+ _globals['_DOWNLOADFILERESPONSE']._serialized_end=4721
190
+ _globals['_CREATETEMPLATEREQUEST']._serialized_start=4723
191
+ _globals['_CREATETEMPLATEREQUEST']._serialized_end=4818
192
+ _globals['_CREATETEMPLATERESPONSE']._serialized_start=4820
193
+ _globals['_CREATETEMPLATERESPONSE']._serialized_end=4895
194
+ _globals['_LISTTEMPLATESREQUEST']._serialized_start=4897
195
+ _globals['_LISTTEMPLATESREQUEST']._serialized_end=4919
196
+ _globals['_LISTTEMPLATESRESPONSE']._serialized_start=4921
197
+ _globals['_LISTTEMPLATESRESPONSE']._serialized_end=4990
198
+ _globals['_TEMPLATEINFO']._serialized_start=4992
199
+ _globals['_TEMPLATEINFO']._serialized_end=5112
200
+ _globals['_DELETETEMPLATEREQUEST']._serialized_start=5114
201
+ _globals['_DELETETEMPLATEREQUEST']._serialized_end=5158
202
+ _globals['_DELETETEMPLATERESPONSE']._serialized_start=5160
203
+ _globals['_DELETETEMPLATERESPONSE']._serialized_end=5184
204
+ _globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_start=5186
205
+ _globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_end=5289
206
+ _globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_start=5292
207
+ _globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_end=5421
208
+ _globals['_CREATEDISKREQUEST']._serialized_start=5423
209
+ _globals['_CREATEDISKREQUEST']._serialized_end=5476
210
+ _globals['_CREATEDISKRESPONSE']._serialized_start=5478
211
+ _globals['_CREATEDISKRESPONSE']._serialized_end=5565
212
+ _globals['_LISTDISKSREQUEST']._serialized_start=5567
213
+ _globals['_LISTDISKSREQUEST']._serialized_end=5585
214
+ _globals['_LISTDISKSRESPONSE']._serialized_start=5587
215
+ _globals['_LISTDISKSRESPONSE']._serialized_end=5644
216
+ _globals['_DISKINFO']._serialized_start=5647
217
+ _globals['_DISKINFO']._serialized_end=5793
218
+ _globals['_DISKATTACHMENT']._serialized_start=5795
219
+ _globals['_DISKATTACHMENT']._serialized_end=5883
220
+ _globals['_ATTACHDISKREQUEST']._serialized_start=5885
221
+ _globals['_ATTACHDISKREQUEST']._serialized_end=5975
222
+ _globals['_ATTACHDISKRESPONSE']._serialized_start=5977
223
+ _globals['_ATTACHDISKRESPONSE']._serialized_end=5997
224
+ _globals['_DETACHDISKREQUEST']._serialized_start=5999
225
+ _globals['_DETACHDISKREQUEST']._serialized_end=6050
226
+ _globals['_DETACHDISKRESPONSE']._serialized_start=6052
227
+ _globals['_DETACHDISKRESPONSE']._serialized_end=6072
228
+ _globals['_DESTROYDISKREQUEST']._serialized_start=6074
229
+ _globals['_DESTROYDISKREQUEST']._serialized_end=6111
230
+ _globals['_DESTROYDISKRESPONSE']._serialized_start=6113
231
+ _globals['_DESTROYDISKRESPONSE']._serialized_end=6134
232
+ _globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_start=6136
233
+ _globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_end=6203
234
+ _globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_start=6205
235
+ _globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_end=6236
236
+ _globals['_SETAUTOHIBERNATETIMEOUTREQUEST']._serialized_start=6238
237
+ _globals['_SETAUTOHIBERNATETIMEOUTREQUEST']._serialized_end=6307
238
+ _globals['_SETAUTOHIBERNATETIMEOUTRESPONSE']._serialized_start=6309
239
+ _globals['_SETAUTOHIBERNATETIMEOUTRESPONSE']._serialized_end=6342
240
+ _globals['_CREATEAPIKEYREQUEST']._serialized_start=6344
241
+ _globals['_CREATEAPIKEYREQUEST']._serialized_end=6404
242
+ _globals['_CREATEAPIKEYRESPONSE']._serialized_start=6406
243
+ _globals['_CREATEAPIKEYRESPONSE']._serialized_end=6477
244
+ _globals['_LISTAPIKEYSREQUEST']._serialized_start=6479
245
+ _globals['_LISTAPIKEYSREQUEST']._serialized_end=6499
246
+ _globals['_LISTAPIKEYSRESPONSE']._serialized_start=6501
247
+ _globals['_LISTAPIKEYSRESPONSE']._serialized_end=6561
248
+ _globals['_APIKEYINFO']._serialized_start=6563
249
+ _globals['_APIKEYINFO']._serialized_end=6683
250
+ _globals['_DELETEAPIKEYREQUEST']._serialized_start=6685
251
+ _globals['_DELETEAPIKEYREQUEST']._serialized_end=6718
252
+ _globals['_DELETEAPIKEYRESPONSE']._serialized_start=6720
253
+ _globals['_DELETEAPIKEYRESPONSE']._serialized_end=6742
254
+ _globals['_BOXDAPI']._serialized_start=6745
255
+ _globals['_BOXDAPI']._serialized_end=10711
256
+ # @@protoc_insertion_point(module_scope)