boxd 0.1.1.dev4__tar.gz → 0.1.1.dev6__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.
- {boxd-0.1.1.dev4/src/boxd.egg-info → boxd-0.1.1.dev6}/PKG-INFO +1 -1
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/pyproject.toml +1 -1
- boxd-0.1.1.dev6/src/boxd/_generated/api_pb2.py +226 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/_generated/api_pb2_grpc.py +43 -0
- boxd-0.1.1.dev6/src/boxd/_version_check.py +130 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/client.py +4 -3
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6/src/boxd.egg-info}/PKG-INFO +1 -1
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd.egg-info/SOURCES.txt +3 -1
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_e2e.py +10 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_v2.py +4 -2
- boxd-0.1.1.dev6/tests/test_version_check.py +178 -0
- boxd-0.1.1.dev4/src/boxd/_generated/api_pb2.py +0 -222
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/LICENSE +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/README.md +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/setup.cfg +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/__init__.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/_generated/__init__.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/_sync.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/_utils.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/aio.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/auth.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/box.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/boxes.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/disks.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/domains.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/errors.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/exec.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/networks.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/templates.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/tokens.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd/types.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd.egg-info/dependency_links.txt +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd.egg-info/requires.txt +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/src/boxd.egg-info/top_level.txt +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_auth.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_boxes.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_e2e_v2.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_exec.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_files.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_lifecycle.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_proxies.py +0 -0
- {boxd-0.1.1.dev4 → boxd-0.1.1.dev6}/tests/test_utils.py +0 -0
|
@@ -0,0 +1,226 @@
|
|
|
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\"h\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\"$\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\"Z\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\"-\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\"\x14\n\x12UploadFileResponse\"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\"<\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\xd7\x19\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\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\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.DeleteApiKeyResponseb\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=1599
|
|
87
|
+
_globals['_EXECCHUNK']._serialized_end=1703
|
|
88
|
+
_globals['_CREATENETWORKREQUEST']._serialized_start=1705
|
|
89
|
+
_globals['_CREATENETWORKREQUEST']._serialized_end=1741
|
|
90
|
+
_globals['_CREATENETWORKRESPONSE']._serialized_start=1743
|
|
91
|
+
_globals['_CREATENETWORKRESPONSE']._serialized_end=1786
|
|
92
|
+
_globals['_LISTNETWORKSREQUEST']._serialized_start=1788
|
|
93
|
+
_globals['_LISTNETWORKSREQUEST']._serialized_end=1809
|
|
94
|
+
_globals['_LISTNETWORKSRESPONSE']._serialized_start=1811
|
|
95
|
+
_globals['_LISTNETWORKSRESPONSE']._serialized_end=1877
|
|
96
|
+
_globals['_NETWORKINFO']._serialized_start=1879
|
|
97
|
+
_globals['_NETWORKINFO']._serialized_end=1944
|
|
98
|
+
_globals['_BINDDOMAINREQUEST']._serialized_start=1946
|
|
99
|
+
_globals['_BINDDOMAINREQUEST']._serialized_end=1996
|
|
100
|
+
_globals['_BINDDOMAINRESPONSE']._serialized_start=1998
|
|
101
|
+
_globals['_BINDDOMAINRESPONSE']._serialized_end=2018
|
|
102
|
+
_globals['_UNBINDDOMAINREQUEST']._serialized_start=2020
|
|
103
|
+
_globals['_UNBINDDOMAINREQUEST']._serialized_end=2057
|
|
104
|
+
_globals['_UNBINDDOMAINRESPONSE']._serialized_start=2059
|
|
105
|
+
_globals['_UNBINDDOMAINRESPONSE']._serialized_end=2081
|
|
106
|
+
_globals['_LISTDOMAINSREQUEST']._serialized_start=2083
|
|
107
|
+
_globals['_LISTDOMAINSREQUEST']._serialized_end=2103
|
|
108
|
+
_globals['_LISTDOMAINSRESPONSE']._serialized_start=2105
|
|
109
|
+
_globals['_LISTDOMAINSRESPONSE']._serialized_end=2168
|
|
110
|
+
_globals['_DOMAININFO']._serialized_start=2170
|
|
111
|
+
_globals['_DOMAININFO']._serialized_end=2213
|
|
112
|
+
_globals['_GETCONFIGREQUEST']._serialized_start=2215
|
|
113
|
+
_globals['_GETCONFIGREQUEST']._serialized_end=2233
|
|
114
|
+
_globals['_GETCONFIGRESPONSE']._serialized_start=2235
|
|
115
|
+
_globals['_GETCONFIGRESPONSE']._serialized_end=2291
|
|
116
|
+
_globals['_WHOAMIREQUEST']._serialized_start=2293
|
|
117
|
+
_globals['_WHOAMIREQUEST']._serialized_end=2308
|
|
118
|
+
_globals['_WHOAMIRESPONSE']._serialized_start=2310
|
|
119
|
+
_globals['_WHOAMIRESPONSE']._serialized_end=2400
|
|
120
|
+
_globals['_CREATETOKENREQUEST']._serialized_start=2402
|
|
121
|
+
_globals['_CREATETOKENREQUEST']._serialized_end=2447
|
|
122
|
+
_globals['_CREATETOKENRESPONSE']._serialized_start=2449
|
|
123
|
+
_globals['_CREATETOKENRESPONSE']._serialized_end=2505
|
|
124
|
+
_globals['_LISTTOKENSREQUEST']._serialized_start=2507
|
|
125
|
+
_globals['_LISTTOKENSREQUEST']._serialized_end=2526
|
|
126
|
+
_globals['_LISTTOKENSRESPONSE']._serialized_start=2528
|
|
127
|
+
_globals['_LISTTOKENSRESPONSE']._serialized_end=2588
|
|
128
|
+
_globals['_TOKENINFO']._serialized_start=2590
|
|
129
|
+
_globals['_TOKENINFO']._serialized_end=2654
|
|
130
|
+
_globals['_REVOKETOKENREQUEST']._serialized_start=2656
|
|
131
|
+
_globals['_REVOKETOKENREQUEST']._serialized_end=2689
|
|
132
|
+
_globals['_REVOKETOKENRESPONSE']._serialized_start=2691
|
|
133
|
+
_globals['_REVOKETOKENRESPONSE']._serialized_end=2712
|
|
134
|
+
_globals['_FORKVMREQUEST']._serialized_start=2714
|
|
135
|
+
_globals['_FORKVMREQUEST']._serialized_end=2804
|
|
136
|
+
_globals['_FORKVMRESPONSE']._serialized_start=2807
|
|
137
|
+
_globals['_FORKVMRESPONSE']._serialized_end=2958
|
|
138
|
+
_globals['_LISTPROXIESREQUEST']._serialized_start=2960
|
|
139
|
+
_globals['_LISTPROXIESREQUEST']._serialized_end=2997
|
|
140
|
+
_globals['_LISTPROXIESRESPONSE']._serialized_start=2999
|
|
141
|
+
_globals['_LISTPROXIESRESPONSE']._serialized_end=3061
|
|
142
|
+
_globals['_PROXYINFO']._serialized_start=3063
|
|
143
|
+
_globals['_PROXYINFO']._serialized_end=3177
|
|
144
|
+
_globals['_CREATEPROXYREQUEST']._serialized_start=3179
|
|
145
|
+
_globals['_CREATEPROXYREQUEST']._serialized_end=3244
|
|
146
|
+
_globals['_CREATEPROXYRESPONSE']._serialized_start=3246
|
|
147
|
+
_globals['_CREATEPROXYRESPONSE']._serialized_end=3328
|
|
148
|
+
_globals['_DELETEPROXYREQUEST']._serialized_start=3330
|
|
149
|
+
_globals['_DELETEPROXYREQUEST']._serialized_end=3381
|
|
150
|
+
_globals['_DELETEPROXYRESPONSE']._serialized_start=3383
|
|
151
|
+
_globals['_DELETEPROXYRESPONSE']._serialized_end=3404
|
|
152
|
+
_globals['_SETPROXYPORTREQUEST']._serialized_start=3406
|
|
153
|
+
_globals['_SETPROXYPORTREQUEST']._serialized_end=3472
|
|
154
|
+
_globals['_SETPROXYPORTRESPONSE']._serialized_start=3474
|
|
155
|
+
_globals['_SETPROXYPORTRESPONSE']._serialized_end=3496
|
|
156
|
+
_globals['_UPLOADFILEREQUEST']._serialized_start=3498
|
|
157
|
+
_globals['_UPLOADFILEREQUEST']._serialized_end=3560
|
|
158
|
+
_globals['_UPLOADFILERESPONSE']._serialized_start=3562
|
|
159
|
+
_globals['_UPLOADFILERESPONSE']._serialized_end=3582
|
|
160
|
+
_globals['_DOWNLOADFILEREQUEST']._serialized_start=3584
|
|
161
|
+
_globals['_DOWNLOADFILEREQUEST']._serialized_end=3634
|
|
162
|
+
_globals['_DOWNLOADFILERESPONSE']._serialized_start=3636
|
|
163
|
+
_globals['_DOWNLOADFILERESPONSE']._serialized_end=3672
|
|
164
|
+
_globals['_CREATETEMPLATEREQUEST']._serialized_start=3674
|
|
165
|
+
_globals['_CREATETEMPLATEREQUEST']._serialized_end=3769
|
|
166
|
+
_globals['_CREATETEMPLATERESPONSE']._serialized_start=3771
|
|
167
|
+
_globals['_CREATETEMPLATERESPONSE']._serialized_end=3846
|
|
168
|
+
_globals['_LISTTEMPLATESREQUEST']._serialized_start=3848
|
|
169
|
+
_globals['_LISTTEMPLATESREQUEST']._serialized_end=3870
|
|
170
|
+
_globals['_LISTTEMPLATESRESPONSE']._serialized_start=3872
|
|
171
|
+
_globals['_LISTTEMPLATESRESPONSE']._serialized_end=3941
|
|
172
|
+
_globals['_TEMPLATEINFO']._serialized_start=3943
|
|
173
|
+
_globals['_TEMPLATEINFO']._serialized_end=4063
|
|
174
|
+
_globals['_DELETETEMPLATEREQUEST']._serialized_start=4065
|
|
175
|
+
_globals['_DELETETEMPLATEREQUEST']._serialized_end=4109
|
|
176
|
+
_globals['_DELETETEMPLATERESPONSE']._serialized_start=4111
|
|
177
|
+
_globals['_DELETETEMPLATERESPONSE']._serialized_end=4135
|
|
178
|
+
_globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_start=4137
|
|
179
|
+
_globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_end=4240
|
|
180
|
+
_globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_start=4243
|
|
181
|
+
_globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_end=4372
|
|
182
|
+
_globals['_CREATEDISKREQUEST']._serialized_start=4374
|
|
183
|
+
_globals['_CREATEDISKREQUEST']._serialized_end=4427
|
|
184
|
+
_globals['_CREATEDISKRESPONSE']._serialized_start=4429
|
|
185
|
+
_globals['_CREATEDISKRESPONSE']._serialized_end=4516
|
|
186
|
+
_globals['_LISTDISKSREQUEST']._serialized_start=4518
|
|
187
|
+
_globals['_LISTDISKSREQUEST']._serialized_end=4536
|
|
188
|
+
_globals['_LISTDISKSRESPONSE']._serialized_start=4538
|
|
189
|
+
_globals['_LISTDISKSRESPONSE']._serialized_end=4595
|
|
190
|
+
_globals['_DISKINFO']._serialized_start=4598
|
|
191
|
+
_globals['_DISKINFO']._serialized_end=4744
|
|
192
|
+
_globals['_DISKATTACHMENT']._serialized_start=4746
|
|
193
|
+
_globals['_DISKATTACHMENT']._serialized_end=4834
|
|
194
|
+
_globals['_ATTACHDISKREQUEST']._serialized_start=4836
|
|
195
|
+
_globals['_ATTACHDISKREQUEST']._serialized_end=4926
|
|
196
|
+
_globals['_ATTACHDISKRESPONSE']._serialized_start=4928
|
|
197
|
+
_globals['_ATTACHDISKRESPONSE']._serialized_end=4948
|
|
198
|
+
_globals['_DETACHDISKREQUEST']._serialized_start=4950
|
|
199
|
+
_globals['_DETACHDISKREQUEST']._serialized_end=5001
|
|
200
|
+
_globals['_DETACHDISKRESPONSE']._serialized_start=5003
|
|
201
|
+
_globals['_DETACHDISKRESPONSE']._serialized_end=5023
|
|
202
|
+
_globals['_DESTROYDISKREQUEST']._serialized_start=5025
|
|
203
|
+
_globals['_DESTROYDISKREQUEST']._serialized_end=5062
|
|
204
|
+
_globals['_DESTROYDISKRESPONSE']._serialized_start=5064
|
|
205
|
+
_globals['_DESTROYDISKRESPONSE']._serialized_end=5085
|
|
206
|
+
_globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_start=5087
|
|
207
|
+
_globals['_SETAUTOSUSPENDTIMEOUTREQUEST']._serialized_end=5154
|
|
208
|
+
_globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_start=5156
|
|
209
|
+
_globals['_SETAUTOSUSPENDTIMEOUTRESPONSE']._serialized_end=5187
|
|
210
|
+
_globals['_CREATEAPIKEYREQUEST']._serialized_start=5189
|
|
211
|
+
_globals['_CREATEAPIKEYREQUEST']._serialized_end=5249
|
|
212
|
+
_globals['_CREATEAPIKEYRESPONSE']._serialized_start=5251
|
|
213
|
+
_globals['_CREATEAPIKEYRESPONSE']._serialized_end=5322
|
|
214
|
+
_globals['_LISTAPIKEYSREQUEST']._serialized_start=5324
|
|
215
|
+
_globals['_LISTAPIKEYSREQUEST']._serialized_end=5344
|
|
216
|
+
_globals['_LISTAPIKEYSRESPONSE']._serialized_start=5346
|
|
217
|
+
_globals['_LISTAPIKEYSRESPONSE']._serialized_end=5406
|
|
218
|
+
_globals['_APIKEYINFO']._serialized_start=5408
|
|
219
|
+
_globals['_APIKEYINFO']._serialized_end=5528
|
|
220
|
+
_globals['_DELETEAPIKEYREQUEST']._serialized_start=5530
|
|
221
|
+
_globals['_DELETEAPIKEYREQUEST']._serialized_end=5563
|
|
222
|
+
_globals['_DELETEAPIKEYRESPONSE']._serialized_start=5565
|
|
223
|
+
_globals['_DELETEAPIKEYRESPONSE']._serialized_end=5587
|
|
224
|
+
_globals['_BOXDAPI']._serialized_start=5590
|
|
225
|
+
_globals['_BOXDAPI']._serialized_end=8877
|
|
226
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -194,6 +194,11 @@ class BoxdApiStub(object):
|
|
|
194
194
|
request_serializer=api__pb2.CreateVmFromTemplateRequest.SerializeToString,
|
|
195
195
|
response_deserializer=api__pb2.CreateVmFromTemplateResponse.FromString,
|
|
196
196
|
_registered_method=True)
|
|
197
|
+
self.SetAutoSuspendTimeout = channel.unary_unary(
|
|
198
|
+
'/boxd.api.v1.BoxdApi/SetAutoSuspendTimeout',
|
|
199
|
+
request_serializer=api__pb2.SetAutoSuspendTimeoutRequest.SerializeToString,
|
|
200
|
+
response_deserializer=api__pb2.SetAutoSuspendTimeoutResponse.FromString,
|
|
201
|
+
_registered_method=True)
|
|
197
202
|
self.CreateDisk = channel.unary_unary(
|
|
198
203
|
'/boxd.api.v1.BoxdApi/CreateDisk',
|
|
199
204
|
request_serializer=api__pb2.CreateDiskRequest.SerializeToString,
|
|
@@ -431,6 +436,12 @@ class BoxdApiServicer(object):
|
|
|
431
436
|
context.set_details('Method not implemented!')
|
|
432
437
|
raise NotImplementedError('Method not implemented!')
|
|
433
438
|
|
|
439
|
+
def SetAutoSuspendTimeout(self, request, context):
|
|
440
|
+
"""Missing associated documentation comment in .proto file."""
|
|
441
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
442
|
+
context.set_details('Method not implemented!')
|
|
443
|
+
raise NotImplementedError('Method not implemented!')
|
|
444
|
+
|
|
434
445
|
def CreateDisk(self, request, context):
|
|
435
446
|
"""Disks
|
|
436
447
|
"""
|
|
@@ -644,6 +655,11 @@ def add_BoxdApiServicer_to_server(servicer, server):
|
|
|
644
655
|
request_deserializer=api__pb2.CreateVmFromTemplateRequest.FromString,
|
|
645
656
|
response_serializer=api__pb2.CreateVmFromTemplateResponse.SerializeToString,
|
|
646
657
|
),
|
|
658
|
+
'SetAutoSuspendTimeout': grpc.unary_unary_rpc_method_handler(
|
|
659
|
+
servicer.SetAutoSuspendTimeout,
|
|
660
|
+
request_deserializer=api__pb2.SetAutoSuspendTimeoutRequest.FromString,
|
|
661
|
+
response_serializer=api__pb2.SetAutoSuspendTimeoutResponse.SerializeToString,
|
|
662
|
+
),
|
|
647
663
|
'CreateDisk': grpc.unary_unary_rpc_method_handler(
|
|
648
664
|
servicer.CreateDisk,
|
|
649
665
|
request_deserializer=api__pb2.CreateDiskRequest.FromString,
|
|
@@ -1559,6 +1575,33 @@ class BoxdApi(object):
|
|
|
1559
1575
|
metadata,
|
|
1560
1576
|
_registered_method=True)
|
|
1561
1577
|
|
|
1578
|
+
@staticmethod
|
|
1579
|
+
def SetAutoSuspendTimeout(request,
|
|
1580
|
+
target,
|
|
1581
|
+
options=(),
|
|
1582
|
+
channel_credentials=None,
|
|
1583
|
+
call_credentials=None,
|
|
1584
|
+
insecure=False,
|
|
1585
|
+
compression=None,
|
|
1586
|
+
wait_for_ready=None,
|
|
1587
|
+
timeout=None,
|
|
1588
|
+
metadata=None):
|
|
1589
|
+
return grpc.experimental.unary_unary(
|
|
1590
|
+
request,
|
|
1591
|
+
target,
|
|
1592
|
+
'/boxd.api.v1.BoxdApi/SetAutoSuspendTimeout',
|
|
1593
|
+
api__pb2.SetAutoSuspendTimeoutRequest.SerializeToString,
|
|
1594
|
+
api__pb2.SetAutoSuspendTimeoutResponse.FromString,
|
|
1595
|
+
options,
|
|
1596
|
+
channel_credentials,
|
|
1597
|
+
insecure,
|
|
1598
|
+
call_credentials,
|
|
1599
|
+
compression,
|
|
1600
|
+
wait_for_ready,
|
|
1601
|
+
timeout,
|
|
1602
|
+
metadata,
|
|
1603
|
+
_registered_method=True)
|
|
1604
|
+
|
|
1562
1605
|
@staticmethod
|
|
1563
1606
|
def CreateDisk(request,
|
|
1564
1607
|
target,
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""SDK update notice — piggybacks on every gRPC call's metadata.
|
|
2
|
+
|
|
3
|
+
The proxy attaches `x-boxd-py-sdk-latest` to response initial metadata when
|
|
4
|
+
a newer SDK version is available. We send `x-boxd-py-sdk-version` outbound
|
|
5
|
+
so the server can log who's calling. On the first response that carries a
|
|
6
|
+
strictly-newer latest version, we print a one-time stderr nag.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
import sys
|
|
13
|
+
|
|
14
|
+
import grpc
|
|
15
|
+
import grpc.aio
|
|
16
|
+
|
|
17
|
+
REQ_HEADER = "x-boxd-py-sdk-version"
|
|
18
|
+
RESP_HEADER = "x-boxd-py-sdk-latest"
|
|
19
|
+
UPGRADE_CMD = "pip install --upgrade boxd"
|
|
20
|
+
|
|
21
|
+
_notified = False
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _current_version() -> str:
|
|
25
|
+
# Late import so this module is importable from inside the package
|
|
26
|
+
# without circular-import drama (boxd/__init__.py imports a lot).
|
|
27
|
+
from . import __version__
|
|
28
|
+
|
|
29
|
+
return __version__
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class VersionCheckInterceptor(
|
|
33
|
+
grpc.aio.UnaryUnaryClientInterceptor,
|
|
34
|
+
grpc.aio.UnaryStreamClientInterceptor,
|
|
35
|
+
grpc.aio.StreamUnaryClientInterceptor,
|
|
36
|
+
grpc.aio.StreamStreamClientInterceptor,
|
|
37
|
+
):
|
|
38
|
+
"""Adds outbound SDK-version header, watches inbound for an upgrade hint."""
|
|
39
|
+
|
|
40
|
+
def _add_version(self, client_call_details):
|
|
41
|
+
metadata = list(client_call_details.metadata or [])
|
|
42
|
+
metadata.append((REQ_HEADER, _current_version()))
|
|
43
|
+
return client_call_details._replace(metadata=metadata)
|
|
44
|
+
|
|
45
|
+
async def _maybe_notify_from_call(self, call):
|
|
46
|
+
global _notified
|
|
47
|
+
if _notified:
|
|
48
|
+
return
|
|
49
|
+
try:
|
|
50
|
+
md = await call.initial_metadata()
|
|
51
|
+
except Exception:
|
|
52
|
+
return
|
|
53
|
+
if md is None:
|
|
54
|
+
return
|
|
55
|
+
latest = None
|
|
56
|
+
for key, value in md:
|
|
57
|
+
if key.lower() == RESP_HEADER:
|
|
58
|
+
latest = value.strip() if isinstance(value, str) else None
|
|
59
|
+
break
|
|
60
|
+
if not latest:
|
|
61
|
+
return
|
|
62
|
+
current = _current_version()
|
|
63
|
+
if _compare_semver(latest, current) <= 0:
|
|
64
|
+
return
|
|
65
|
+
_notified = True
|
|
66
|
+
print(file=sys.stderr)
|
|
67
|
+
print(
|
|
68
|
+
f" A new version of boxd is available (v{latest}, you have v{current}). Update with:",
|
|
69
|
+
file=sys.stderr,
|
|
70
|
+
)
|
|
71
|
+
print(f" {UPGRADE_CMD}", file=sys.stderr)
|
|
72
|
+
|
|
73
|
+
async def intercept_unary_unary(self, continuation, client_call_details, request):
|
|
74
|
+
new_details = self._add_version(client_call_details)
|
|
75
|
+
call = await continuation(new_details, request)
|
|
76
|
+
await self._maybe_notify_from_call(call)
|
|
77
|
+
return call
|
|
78
|
+
|
|
79
|
+
async def intercept_unary_stream(self, continuation, client_call_details, request):
|
|
80
|
+
new_details = self._add_version(client_call_details)
|
|
81
|
+
call = await continuation(new_details, request)
|
|
82
|
+
await self._maybe_notify_from_call(call)
|
|
83
|
+
return call
|
|
84
|
+
|
|
85
|
+
async def intercept_stream_unary(
|
|
86
|
+
self, continuation, client_call_details, request_iterator
|
|
87
|
+
):
|
|
88
|
+
new_details = self._add_version(client_call_details)
|
|
89
|
+
call = await continuation(new_details, request_iterator)
|
|
90
|
+
await self._maybe_notify_from_call(call)
|
|
91
|
+
return call
|
|
92
|
+
|
|
93
|
+
async def intercept_stream_stream(
|
|
94
|
+
self, continuation, client_call_details, request_iterator
|
|
95
|
+
):
|
|
96
|
+
new_details = self._add_version(client_call_details)
|
|
97
|
+
call = await continuation(new_details, request_iterator)
|
|
98
|
+
await self._maybe_notify_from_call(call)
|
|
99
|
+
return call
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
_SEMVER_RE = re.compile(r"^(\d+)\.(\d+)\.(\d+)(.*)$")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _compare_semver(a: str, b: str) -> int:
|
|
106
|
+
"""Return >0 if a > b, <0 if a < b, 0 if equal/unparseable.
|
|
107
|
+
|
|
108
|
+
Handles pre-release suffixes ("0.1.1-dev.4", "0.1.1.dev4") by
|
|
109
|
+
treating numeric-prefix ties as: release > pre-release, otherwise
|
|
110
|
+
lexicographic suffix order. Unparseable input returns 0 — never nag
|
|
111
|
+
on garbage.
|
|
112
|
+
"""
|
|
113
|
+
pa = _SEMVER_RE.match(a.strip())
|
|
114
|
+
pb = _SEMVER_RE.match(b.strip())
|
|
115
|
+
if not pa or not pb:
|
|
116
|
+
return 0
|
|
117
|
+
for i in range(1, 4):
|
|
118
|
+
ai, bi = int(pa.group(i)), int(pb.group(i))
|
|
119
|
+
if ai != bi:
|
|
120
|
+
return ai - bi
|
|
121
|
+
sa, sb = pa.group(4) or "", pb.group(4) or ""
|
|
122
|
+
if sa == "" and sb != "":
|
|
123
|
+
return 1
|
|
124
|
+
if sa != "" and sb == "":
|
|
125
|
+
return -1
|
|
126
|
+
if sa < sb:
|
|
127
|
+
return -1
|
|
128
|
+
if sa > sb:
|
|
129
|
+
return 1
|
|
130
|
+
return 0
|
|
@@ -9,6 +9,7 @@ import grpc.aio
|
|
|
9
9
|
|
|
10
10
|
from ._generated import api_pb2, api_pb2_grpc
|
|
11
11
|
from ._utils import resolve_endpoint
|
|
12
|
+
from ._version_check import VersionCheckInterceptor
|
|
12
13
|
from .auth import TokenAuth
|
|
13
14
|
from .boxes import BoxService
|
|
14
15
|
from .disks import DiskService
|
|
@@ -109,7 +110,7 @@ class Compute:
|
|
|
109
110
|
if self._stub is not None:
|
|
110
111
|
return self._stub
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
interceptors = [self._auth.interceptor(), VersionCheckInterceptor()]
|
|
113
114
|
endpoint = resolve_endpoint(self._api_url)
|
|
114
115
|
|
|
115
116
|
if endpoint.use_tls:
|
|
@@ -117,12 +118,12 @@ class Compute:
|
|
|
117
118
|
channel = grpc.aio.secure_channel(
|
|
118
119
|
endpoint.host,
|
|
119
120
|
creds,
|
|
120
|
-
interceptors=
|
|
121
|
+
interceptors=interceptors,
|
|
121
122
|
)
|
|
122
123
|
else:
|
|
123
124
|
channel = grpc.aio.insecure_channel(
|
|
124
125
|
endpoint.host,
|
|
125
|
-
interceptors=
|
|
126
|
+
interceptors=interceptors,
|
|
126
127
|
)
|
|
127
128
|
|
|
128
129
|
self._channel = channel
|
|
@@ -4,6 +4,7 @@ pyproject.toml
|
|
|
4
4
|
src/boxd/__init__.py
|
|
5
5
|
src/boxd/_sync.py
|
|
6
6
|
src/boxd/_utils.py
|
|
7
|
+
src/boxd/_version_check.py
|
|
7
8
|
src/boxd/aio.py
|
|
8
9
|
src/boxd/auth.py
|
|
9
10
|
src/boxd/box.py
|
|
@@ -34,4 +35,5 @@ tests/test_files.py
|
|
|
34
35
|
tests/test_lifecycle.py
|
|
35
36
|
tests/test_proxies.py
|
|
36
37
|
tests/test_utils.py
|
|
37
|
-
tests/test_v2.py
|
|
38
|
+
tests/test_v2.py
|
|
39
|
+
tests/test_version_check.py
|
|
@@ -206,6 +206,16 @@ def test_suspend_resume(compute):
|
|
|
206
206
|
assert result.suspend_us > 0
|
|
207
207
|
assert box.status == "suspended"
|
|
208
208
|
|
|
209
|
+
# SuspendVm currently returns before the raft commit landing the new
|
|
210
|
+
# status is applied (~250ms gap on staging). ResumeVm's admission
|
|
211
|
+
# check then sees status=running and rejects. Poll the server view
|
|
212
|
+
# until it agrees the VM is suspended before attempting resume.
|
|
213
|
+
# Track: server-side fix to make SuspendVm block until commit-applied.
|
|
214
|
+
for _ in range(20):
|
|
215
|
+
if compute.box.get(box.id).status == "suspended":
|
|
216
|
+
break
|
|
217
|
+
time.sleep(0.25)
|
|
218
|
+
|
|
209
219
|
result = box.resume()
|
|
210
220
|
assert result.resume_us > 0
|
|
211
221
|
assert box.status == "running"
|
|
@@ -52,9 +52,11 @@ def test_token_roundtrip(compute):
|
|
|
52
52
|
original_user = compute.whoami().user_id
|
|
53
53
|
|
|
54
54
|
token = compute.token.create(expires_in=3600)
|
|
55
|
+
# Reuse the parent compute's endpoints so the test works against any
|
|
56
|
+
# cluster (localhost dev, staging, production), not just localhost.
|
|
55
57
|
with Compute(
|
|
56
58
|
token=token.token,
|
|
57
|
-
api_url=
|
|
58
|
-
exchange_url=
|
|
59
|
+
api_url=compute._api_url,
|
|
60
|
+
exchange_url=compute._exchange_url,
|
|
59
61
|
) as c2:
|
|
60
62
|
assert c2.whoami().user_id == original_user
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"""Unit tests for boxd._version_check — semver compare + interceptor metadata behavior."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
from grpc.aio import ClientCallDetails
|
|
7
|
+
|
|
8
|
+
from boxd import _version_check
|
|
9
|
+
from boxd._version_check import (
|
|
10
|
+
REQ_HEADER,
|
|
11
|
+
RESP_HEADER,
|
|
12
|
+
VersionCheckInterceptor,
|
|
13
|
+
_compare_semver,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
# Picked to be unambiguously newer/older than any real shipped SDK so tests
|
|
17
|
+
# don't silently flip meaning when the package version bumps.
|
|
18
|
+
NEWER = "99.0.0"
|
|
19
|
+
OLDER = "0.0.1"
|
|
20
|
+
CURRENT = "0.1.1"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.fixture(autouse=True)
|
|
24
|
+
def reset_notified():
|
|
25
|
+
_version_check._notified = False
|
|
26
|
+
yield
|
|
27
|
+
_version_check._notified = False
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@pytest.fixture
|
|
31
|
+
def stub_current(monkeypatch):
|
|
32
|
+
monkeypatch.setattr(_version_check, "_current_version", lambda: CURRENT)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@pytest.fixture
|
|
36
|
+
def interceptor():
|
|
37
|
+
return VersionCheckInterceptor()
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _details(metadata):
|
|
41
|
+
return ClientCallDetails(
|
|
42
|
+
method="/test/Method",
|
|
43
|
+
timeout=None,
|
|
44
|
+
metadata=metadata,
|
|
45
|
+
credentials=None,
|
|
46
|
+
wait_for_ready=None,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _make_call(metadata):
|
|
51
|
+
class FakeCall:
|
|
52
|
+
async def initial_metadata(self):
|
|
53
|
+
return metadata
|
|
54
|
+
|
|
55
|
+
return FakeCall()
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# --- _compare_semver ---
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def test_compare_semver_patch_greater():
|
|
62
|
+
assert _compare_semver("0.1.1", "0.1.0") > 0
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_compare_semver_patch_lesser():
|
|
66
|
+
assert _compare_semver("0.1.0", "0.1.1") < 0
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def test_compare_semver_equal():
|
|
70
|
+
assert _compare_semver("0.1.0", "0.1.0") == 0
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def test_compare_semver_major_dominates_minor():
|
|
74
|
+
assert _compare_semver("1.0.0", "0.99.99") > 0
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def test_compare_semver_minor_dominates_patch():
|
|
78
|
+
assert _compare_semver("0.2.0", "0.1.99") > 0
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def test_compare_semver_release_greater_than_prerelease():
|
|
82
|
+
assert _compare_semver("0.1.1", "0.1.1-dev.4") > 0
|
|
83
|
+
assert _compare_semver("0.1.1-dev.4", "0.1.1") < 0
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_compare_semver_prerelease_lex_order():
|
|
87
|
+
assert _compare_semver("0.1.1-dev.4", "0.1.1-dev.5") < 0
|
|
88
|
+
assert _compare_semver("0.1.1-dev.5", "0.1.1-dev.4") > 0
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_compare_semver_unparseable_returns_zero():
|
|
92
|
+
assert _compare_semver("garbage", "0.1.0") == 0
|
|
93
|
+
assert _compare_semver("0.1.0", "garbage") == 0
|
|
94
|
+
assert _compare_semver("v1.0.0", "0.1.0") == 0
|
|
95
|
+
assert _compare_semver("", "0.1.0") == 0
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def test_compare_semver_whitespace_tolerated():
|
|
99
|
+
assert _compare_semver(" 0.1.1 ", "0.1.0") > 0
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# --- VersionCheckInterceptor._add_version ---
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_add_version_appends_header(stub_current, interceptor):
|
|
106
|
+
new = interceptor._add_version(_details([]))
|
|
107
|
+
assert (REQ_HEADER, CURRENT) in new.metadata
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def test_add_version_preserves_existing_metadata(stub_current, interceptor):
|
|
111
|
+
new = interceptor._add_version(_details([("authorization", "Bearer abc")]))
|
|
112
|
+
assert ("authorization", "Bearer abc") in new.metadata
|
|
113
|
+
assert (REQ_HEADER, CURRENT) in new.metadata
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def test_add_version_handles_none_metadata(stub_current, interceptor):
|
|
117
|
+
new = interceptor._add_version(_details(None))
|
|
118
|
+
assert new.metadata == [(REQ_HEADER, CURRENT)]
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
# --- VersionCheckInterceptor._maybe_notify_from_call ---
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
async def test_maybe_notify_warns_when_latest_greater(stub_current, interceptor, capsys):
|
|
125
|
+
await interceptor._maybe_notify_from_call(_make_call([(RESP_HEADER, NEWER)]))
|
|
126
|
+
err = capsys.readouterr().err
|
|
127
|
+
assert NEWER in err
|
|
128
|
+
assert CURRENT in err
|
|
129
|
+
assert "pip install --upgrade boxd" in err
|
|
130
|
+
assert _version_check._notified is True
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
@pytest.mark.parametrize(
|
|
134
|
+
"metadata",
|
|
135
|
+
[
|
|
136
|
+
pytest.param([(RESP_HEADER, CURRENT)], id="latest-equal"),
|
|
137
|
+
pytest.param([(RESP_HEADER, OLDER)], id="latest-older"),
|
|
138
|
+
pytest.param([("other-header", "value")], id="header-missing"),
|
|
139
|
+
pytest.param([], id="metadata-empty"),
|
|
140
|
+
pytest.param(None, id="metadata-none"),
|
|
141
|
+
pytest.param([(RESP_HEADER, " ")], id="header-whitespace-only"),
|
|
142
|
+
],
|
|
143
|
+
)
|
|
144
|
+
async def test_maybe_notify_silent(stub_current, interceptor, capsys, metadata):
|
|
145
|
+
await interceptor._maybe_notify_from_call(_make_call(metadata))
|
|
146
|
+
assert capsys.readouterr().err == ""
|
|
147
|
+
assert _version_check._notified is False
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
async def test_maybe_notify_silent_when_initial_metadata_raises(
|
|
151
|
+
stub_current, interceptor, capsys
|
|
152
|
+
):
|
|
153
|
+
class FailingCall:
|
|
154
|
+
async def initial_metadata(self):
|
|
155
|
+
raise RuntimeError("connection lost")
|
|
156
|
+
|
|
157
|
+
await interceptor._maybe_notify_from_call(FailingCall())
|
|
158
|
+
assert capsys.readouterr().err == ""
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
async def test_maybe_notify_warns_only_once(stub_current, interceptor, capsys):
|
|
162
|
+
call = _make_call([(RESP_HEADER, NEWER)])
|
|
163
|
+
await interceptor._maybe_notify_from_call(call)
|
|
164
|
+
assert NEWER in capsys.readouterr().err
|
|
165
|
+
await interceptor._maybe_notify_from_call(call)
|
|
166
|
+
assert capsys.readouterr().err == ""
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
async def test_maybe_notify_case_insensitive_header(stub_current, interceptor, capsys):
|
|
170
|
+
await interceptor._maybe_notify_from_call(_make_call([("X-Boxd-Py-Sdk-Latest", NEWER)]))
|
|
171
|
+
assert NEWER in capsys.readouterr().err
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
async def test_maybe_notify_strips_whitespace_in_header_value(
|
|
175
|
+
stub_current, interceptor, capsys
|
|
176
|
+
):
|
|
177
|
+
await interceptor._maybe_notify_from_call(_make_call([(RESP_HEADER, f" {NEWER} ")]))
|
|
178
|
+
assert NEWER in capsys.readouterr().err
|
|
@@ -1,222 +0,0 @@
|
|
|
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\"Q\n\tSrfConfig\x12!\n\x19\x61uto_suspend_timeout_secs\x18\x01 \x01(\r\x12!\n\x19\x61uto_destroy_timeout_secs\x18\x02 \x01(\r\"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\"\x8e\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\"\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\"h\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\"$\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\"Z\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\"-\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\"\x14\n\x12UploadFileResponse\"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\"<\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\xe7\x18\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\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\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.DeleteApiKeyResponseb\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=301
|
|
38
|
-
_globals['_NETWORKCONFIG']._serialized_start=303
|
|
39
|
-
_globals['_NETWORKCONFIG']._serialized_end=373
|
|
40
|
-
_globals['_PROXYENTRY']._serialized_start=375
|
|
41
|
-
_globals['_PROXYENTRY']._serialized_end=415
|
|
42
|
-
_globals['_VOLUMEMOUNT']._serialized_start=417
|
|
43
|
-
_globals['_VOLUMEMOUNT']._serialized_end=486
|
|
44
|
-
_globals['_CREATEVMREQUEST']._serialized_start=489
|
|
45
|
-
_globals['_CREATEVMREQUEST']._serialized_end=661
|
|
46
|
-
_globals['_ENVVAR']._serialized_start=663
|
|
47
|
-
_globals['_ENVVAR']._serialized_end=699
|
|
48
|
-
_globals['_CREATEVMRESPONSE']._serialized_start=702
|
|
49
|
-
_globals['_CREATEVMRESPONSE']._serialized_end=834
|
|
50
|
-
_globals['_DESTROYVMREQUEST']._serialized_start=836
|
|
51
|
-
_globals['_DESTROYVMREQUEST']._serialized_end=869
|
|
52
|
-
_globals['_DESTROYVMRESPONSE']._serialized_start=871
|
|
53
|
-
_globals['_DESTROYVMRESPONSE']._serialized_end=890
|
|
54
|
-
_globals['_STARTVMREQUEST']._serialized_start=892
|
|
55
|
-
_globals['_STARTVMREQUEST']._serialized_end=923
|
|
56
|
-
_globals['_STARTVMRESPONSE']._serialized_start=925
|
|
57
|
-
_globals['_STARTVMRESPONSE']._serialized_end=942
|
|
58
|
-
_globals['_STOPVMREQUEST']._serialized_start=944
|
|
59
|
-
_globals['_STOPVMREQUEST']._serialized_end=974
|
|
60
|
-
_globals['_STOPVMRESPONSE']._serialized_start=976
|
|
61
|
-
_globals['_STOPVMRESPONSE']._serialized_end=992
|
|
62
|
-
_globals['_REBOOTVMREQUEST']._serialized_start=994
|
|
63
|
-
_globals['_REBOOTVMREQUEST']._serialized_end=1026
|
|
64
|
-
_globals['_REBOOTVMRESPONSE']._serialized_start=1028
|
|
65
|
-
_globals['_REBOOTVMRESPONSE']._serialized_end=1046
|
|
66
|
-
_globals['_SUSPENDVMREQUEST']._serialized_start=1048
|
|
67
|
-
_globals['_SUSPENDVMREQUEST']._serialized_end=1081
|
|
68
|
-
_globals['_SUSPENDVMRESPONSE']._serialized_start=1083
|
|
69
|
-
_globals['_SUSPENDVMRESPONSE']._serialized_end=1122
|
|
70
|
-
_globals['_RESUMEVMREQUEST']._serialized_start=1124
|
|
71
|
-
_globals['_RESUMEVMREQUEST']._serialized_end=1156
|
|
72
|
-
_globals['_RESUMEVMRESPONSE']._serialized_start=1158
|
|
73
|
-
_globals['_RESUMEVMRESPONSE']._serialized_end=1195
|
|
74
|
-
_globals['_GETVMREQUEST']._serialized_start=1197
|
|
75
|
-
_globals['_GETVMREQUEST']._serialized_end=1226
|
|
76
|
-
_globals['_GETVMRESPONSE']._serialized_start=1229
|
|
77
|
-
_globals['_GETVMRESPONSE']._serialized_end=1371
|
|
78
|
-
_globals['_LISTVMSREQUEST']._serialized_start=1373
|
|
79
|
-
_globals['_LISTVMSREQUEST']._serialized_end=1389
|
|
80
|
-
_globals['_LISTVMSRESPONSE']._serialized_start=1391
|
|
81
|
-
_globals['_LISTVMSRESPONSE']._serialized_end=1449
|
|
82
|
-
_globals['_STREAMLOGSREQUEST']._serialized_start=1451
|
|
83
|
-
_globals['_STREAMLOGSREQUEST']._serialized_end=1501
|
|
84
|
-
_globals['_LOGCHUNK']._serialized_start=1503
|
|
85
|
-
_globals['_LOGCHUNK']._serialized_end=1527
|
|
86
|
-
_globals['_EXECCHUNK']._serialized_start=1529
|
|
87
|
-
_globals['_EXECCHUNK']._serialized_end=1633
|
|
88
|
-
_globals['_CREATENETWORKREQUEST']._serialized_start=1635
|
|
89
|
-
_globals['_CREATENETWORKREQUEST']._serialized_end=1671
|
|
90
|
-
_globals['_CREATENETWORKRESPONSE']._serialized_start=1673
|
|
91
|
-
_globals['_CREATENETWORKRESPONSE']._serialized_end=1716
|
|
92
|
-
_globals['_LISTNETWORKSREQUEST']._serialized_start=1718
|
|
93
|
-
_globals['_LISTNETWORKSREQUEST']._serialized_end=1739
|
|
94
|
-
_globals['_LISTNETWORKSRESPONSE']._serialized_start=1741
|
|
95
|
-
_globals['_LISTNETWORKSRESPONSE']._serialized_end=1807
|
|
96
|
-
_globals['_NETWORKINFO']._serialized_start=1809
|
|
97
|
-
_globals['_NETWORKINFO']._serialized_end=1874
|
|
98
|
-
_globals['_BINDDOMAINREQUEST']._serialized_start=1876
|
|
99
|
-
_globals['_BINDDOMAINREQUEST']._serialized_end=1926
|
|
100
|
-
_globals['_BINDDOMAINRESPONSE']._serialized_start=1928
|
|
101
|
-
_globals['_BINDDOMAINRESPONSE']._serialized_end=1948
|
|
102
|
-
_globals['_UNBINDDOMAINREQUEST']._serialized_start=1950
|
|
103
|
-
_globals['_UNBINDDOMAINREQUEST']._serialized_end=1987
|
|
104
|
-
_globals['_UNBINDDOMAINRESPONSE']._serialized_start=1989
|
|
105
|
-
_globals['_UNBINDDOMAINRESPONSE']._serialized_end=2011
|
|
106
|
-
_globals['_LISTDOMAINSREQUEST']._serialized_start=2013
|
|
107
|
-
_globals['_LISTDOMAINSREQUEST']._serialized_end=2033
|
|
108
|
-
_globals['_LISTDOMAINSRESPONSE']._serialized_start=2035
|
|
109
|
-
_globals['_LISTDOMAINSRESPONSE']._serialized_end=2098
|
|
110
|
-
_globals['_DOMAININFO']._serialized_start=2100
|
|
111
|
-
_globals['_DOMAININFO']._serialized_end=2143
|
|
112
|
-
_globals['_GETCONFIGREQUEST']._serialized_start=2145
|
|
113
|
-
_globals['_GETCONFIGREQUEST']._serialized_end=2163
|
|
114
|
-
_globals['_GETCONFIGRESPONSE']._serialized_start=2165
|
|
115
|
-
_globals['_GETCONFIGRESPONSE']._serialized_end=2221
|
|
116
|
-
_globals['_WHOAMIREQUEST']._serialized_start=2223
|
|
117
|
-
_globals['_WHOAMIREQUEST']._serialized_end=2238
|
|
118
|
-
_globals['_WHOAMIRESPONSE']._serialized_start=2240
|
|
119
|
-
_globals['_WHOAMIRESPONSE']._serialized_end=2330
|
|
120
|
-
_globals['_CREATETOKENREQUEST']._serialized_start=2332
|
|
121
|
-
_globals['_CREATETOKENREQUEST']._serialized_end=2377
|
|
122
|
-
_globals['_CREATETOKENRESPONSE']._serialized_start=2379
|
|
123
|
-
_globals['_CREATETOKENRESPONSE']._serialized_end=2435
|
|
124
|
-
_globals['_LISTTOKENSREQUEST']._serialized_start=2437
|
|
125
|
-
_globals['_LISTTOKENSREQUEST']._serialized_end=2456
|
|
126
|
-
_globals['_LISTTOKENSRESPONSE']._serialized_start=2458
|
|
127
|
-
_globals['_LISTTOKENSRESPONSE']._serialized_end=2518
|
|
128
|
-
_globals['_TOKENINFO']._serialized_start=2520
|
|
129
|
-
_globals['_TOKENINFO']._serialized_end=2584
|
|
130
|
-
_globals['_REVOKETOKENREQUEST']._serialized_start=2586
|
|
131
|
-
_globals['_REVOKETOKENREQUEST']._serialized_end=2619
|
|
132
|
-
_globals['_REVOKETOKENRESPONSE']._serialized_start=2621
|
|
133
|
-
_globals['_REVOKETOKENRESPONSE']._serialized_end=2642
|
|
134
|
-
_globals['_FORKVMREQUEST']._serialized_start=2644
|
|
135
|
-
_globals['_FORKVMREQUEST']._serialized_end=2734
|
|
136
|
-
_globals['_FORKVMRESPONSE']._serialized_start=2737
|
|
137
|
-
_globals['_FORKVMRESPONSE']._serialized_end=2888
|
|
138
|
-
_globals['_LISTPROXIESREQUEST']._serialized_start=2890
|
|
139
|
-
_globals['_LISTPROXIESREQUEST']._serialized_end=2927
|
|
140
|
-
_globals['_LISTPROXIESRESPONSE']._serialized_start=2929
|
|
141
|
-
_globals['_LISTPROXIESRESPONSE']._serialized_end=2991
|
|
142
|
-
_globals['_PROXYINFO']._serialized_start=2993
|
|
143
|
-
_globals['_PROXYINFO']._serialized_end=3107
|
|
144
|
-
_globals['_CREATEPROXYREQUEST']._serialized_start=3109
|
|
145
|
-
_globals['_CREATEPROXYREQUEST']._serialized_end=3174
|
|
146
|
-
_globals['_CREATEPROXYRESPONSE']._serialized_start=3176
|
|
147
|
-
_globals['_CREATEPROXYRESPONSE']._serialized_end=3258
|
|
148
|
-
_globals['_DELETEPROXYREQUEST']._serialized_start=3260
|
|
149
|
-
_globals['_DELETEPROXYREQUEST']._serialized_end=3311
|
|
150
|
-
_globals['_DELETEPROXYRESPONSE']._serialized_start=3313
|
|
151
|
-
_globals['_DELETEPROXYRESPONSE']._serialized_end=3334
|
|
152
|
-
_globals['_SETPROXYPORTREQUEST']._serialized_start=3336
|
|
153
|
-
_globals['_SETPROXYPORTREQUEST']._serialized_end=3402
|
|
154
|
-
_globals['_SETPROXYPORTRESPONSE']._serialized_start=3404
|
|
155
|
-
_globals['_SETPROXYPORTRESPONSE']._serialized_end=3426
|
|
156
|
-
_globals['_UPLOADFILEREQUEST']._serialized_start=3428
|
|
157
|
-
_globals['_UPLOADFILEREQUEST']._serialized_end=3490
|
|
158
|
-
_globals['_UPLOADFILERESPONSE']._serialized_start=3492
|
|
159
|
-
_globals['_UPLOADFILERESPONSE']._serialized_end=3512
|
|
160
|
-
_globals['_DOWNLOADFILEREQUEST']._serialized_start=3514
|
|
161
|
-
_globals['_DOWNLOADFILEREQUEST']._serialized_end=3564
|
|
162
|
-
_globals['_DOWNLOADFILERESPONSE']._serialized_start=3566
|
|
163
|
-
_globals['_DOWNLOADFILERESPONSE']._serialized_end=3602
|
|
164
|
-
_globals['_CREATETEMPLATEREQUEST']._serialized_start=3604
|
|
165
|
-
_globals['_CREATETEMPLATEREQUEST']._serialized_end=3699
|
|
166
|
-
_globals['_CREATETEMPLATERESPONSE']._serialized_start=3701
|
|
167
|
-
_globals['_CREATETEMPLATERESPONSE']._serialized_end=3776
|
|
168
|
-
_globals['_LISTTEMPLATESREQUEST']._serialized_start=3778
|
|
169
|
-
_globals['_LISTTEMPLATESREQUEST']._serialized_end=3800
|
|
170
|
-
_globals['_LISTTEMPLATESRESPONSE']._serialized_start=3802
|
|
171
|
-
_globals['_LISTTEMPLATESRESPONSE']._serialized_end=3871
|
|
172
|
-
_globals['_TEMPLATEINFO']._serialized_start=3873
|
|
173
|
-
_globals['_TEMPLATEINFO']._serialized_end=3993
|
|
174
|
-
_globals['_DELETETEMPLATEREQUEST']._serialized_start=3995
|
|
175
|
-
_globals['_DELETETEMPLATEREQUEST']._serialized_end=4039
|
|
176
|
-
_globals['_DELETETEMPLATERESPONSE']._serialized_start=4041
|
|
177
|
-
_globals['_DELETETEMPLATERESPONSE']._serialized_end=4065
|
|
178
|
-
_globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_start=4067
|
|
179
|
-
_globals['_CREATEVMFROMTEMPLATEREQUEST']._serialized_end=4170
|
|
180
|
-
_globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_start=4173
|
|
181
|
-
_globals['_CREATEVMFROMTEMPLATERESPONSE']._serialized_end=4302
|
|
182
|
-
_globals['_CREATEDISKREQUEST']._serialized_start=4304
|
|
183
|
-
_globals['_CREATEDISKREQUEST']._serialized_end=4357
|
|
184
|
-
_globals['_CREATEDISKRESPONSE']._serialized_start=4359
|
|
185
|
-
_globals['_CREATEDISKRESPONSE']._serialized_end=4446
|
|
186
|
-
_globals['_LISTDISKSREQUEST']._serialized_start=4448
|
|
187
|
-
_globals['_LISTDISKSREQUEST']._serialized_end=4466
|
|
188
|
-
_globals['_LISTDISKSRESPONSE']._serialized_start=4468
|
|
189
|
-
_globals['_LISTDISKSRESPONSE']._serialized_end=4525
|
|
190
|
-
_globals['_DISKINFO']._serialized_start=4528
|
|
191
|
-
_globals['_DISKINFO']._serialized_end=4674
|
|
192
|
-
_globals['_DISKATTACHMENT']._serialized_start=4676
|
|
193
|
-
_globals['_DISKATTACHMENT']._serialized_end=4764
|
|
194
|
-
_globals['_ATTACHDISKREQUEST']._serialized_start=4766
|
|
195
|
-
_globals['_ATTACHDISKREQUEST']._serialized_end=4856
|
|
196
|
-
_globals['_ATTACHDISKRESPONSE']._serialized_start=4858
|
|
197
|
-
_globals['_ATTACHDISKRESPONSE']._serialized_end=4878
|
|
198
|
-
_globals['_DETACHDISKREQUEST']._serialized_start=4880
|
|
199
|
-
_globals['_DETACHDISKREQUEST']._serialized_end=4931
|
|
200
|
-
_globals['_DETACHDISKRESPONSE']._serialized_start=4933
|
|
201
|
-
_globals['_DETACHDISKRESPONSE']._serialized_end=4953
|
|
202
|
-
_globals['_DESTROYDISKREQUEST']._serialized_start=4955
|
|
203
|
-
_globals['_DESTROYDISKREQUEST']._serialized_end=4992
|
|
204
|
-
_globals['_DESTROYDISKRESPONSE']._serialized_start=4994
|
|
205
|
-
_globals['_DESTROYDISKRESPONSE']._serialized_end=5015
|
|
206
|
-
_globals['_CREATEAPIKEYREQUEST']._serialized_start=5017
|
|
207
|
-
_globals['_CREATEAPIKEYREQUEST']._serialized_end=5077
|
|
208
|
-
_globals['_CREATEAPIKEYRESPONSE']._serialized_start=5079
|
|
209
|
-
_globals['_CREATEAPIKEYRESPONSE']._serialized_end=5150
|
|
210
|
-
_globals['_LISTAPIKEYSREQUEST']._serialized_start=5152
|
|
211
|
-
_globals['_LISTAPIKEYSREQUEST']._serialized_end=5172
|
|
212
|
-
_globals['_LISTAPIKEYSRESPONSE']._serialized_start=5174
|
|
213
|
-
_globals['_LISTAPIKEYSRESPONSE']._serialized_end=5234
|
|
214
|
-
_globals['_APIKEYINFO']._serialized_start=5236
|
|
215
|
-
_globals['_APIKEYINFO']._serialized_end=5356
|
|
216
|
-
_globals['_DELETEAPIKEYREQUEST']._serialized_start=5358
|
|
217
|
-
_globals['_DELETEAPIKEYREQUEST']._serialized_end=5391
|
|
218
|
-
_globals['_DELETEAPIKEYRESPONSE']._serialized_start=5393
|
|
219
|
-
_globals['_DELETEAPIKEYRESPONSE']._serialized_end=5415
|
|
220
|
-
_globals['_BOXDAPI']._serialized_start=5418
|
|
221
|
-
_globals['_BOXDAPI']._serialized_end=8593
|
|
222
|
-
# @@protoc_insertion_point(module_scope)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|