# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromite/api/sdk.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen.chromite.api import build_api_pb2 as chromite_dot_api_dot_build__api__pb2
from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromite/api/sdk.proto',
  package='chromite.api',
  syntax='proto3',
  serialized_options=_b('Z6go.chromium.org/chromiumos/infra/proto/go/chromite/api'),
  serialized_pb=_b('\n\x16\x63hromite/api/sdk.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x17\x63hromiumos/common.proto\" \n\rChrootVersion\x12\x0f\n\x07version\x18\x01 \x01(\r\"\xab\x01\n\rCreateRequest\x12\x30\n\x05\x66lags\x18\x01 \x01(\x0b\x32!.chromite.api.CreateRequest.Flags\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x1a\x44\n\x05\x46lags\x12\x12\n\nno_replace\x18\x01 \x01(\x08\x12\x11\n\tbootstrap\x18\x02 \x01(\x08\x12\x14\n\x0cno_use_image\x18\x03 \x01(\x08\">\n\x0e\x43reateResponse\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.chromite.api.ChrootVersion\"3\n\rDeleteRequest\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x10\n\x0e\x44\x65leteResponse\"4\n\x0eUnmountRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x11\n\x0fUnmountResponse\"\xd3\x01\n\rUpdateRequest\x12\x30\n\x05\x66lags\x18\x01 \x01(\x0b\x32!.chromite.api.UpdateRequest.Flags\x12\x32\n\x11toolchain_targets\x18\x02 \x03(\x0b\x32\x17.chromiumos.BuildTarget\x12\"\n\x06\x63hroot\x18\x03 \x01(\x0b\x32\x12.chromiumos.Chroot\x1a\x38\n\x05\x46lags\x12\x14\n\x0c\x62uild_source\x18\x01 \x01(\x08\x12\x19\n\x11toolchain_changed\x18\x02 \x01(\x08\">\n\x0eUpdateResponse\x12,\n\x07version\x18\x01 \x01(\x0b\x32\x1b.chromite.api.ChrootVersion\"2\n\x0c\x43leanRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"\x0f\n\rCleanResponse\"\x1e\n\rSnapshotToken\x12\r\n\x05value\x18\x01 \x01(\t\";\n\x15\x43reateSnapshotRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\"M\n\x16\x43reateSnapshotResponse\x12\x33\n\x0esnapshot_token\x18\x01 \x01(\x0b\x32\x1b.chromite.api.SnapshotToken\"q\n\x16RestoreSnapshotRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12\x33\n\x0esnapshot_token\x18\x02 \x01(\x0b\x32\x1b.chromite.api.SnapshotToken\"\x19\n\x17RestoreSnapshotResponse\"4\n\x12UnmountPathRequest\x12\x1e\n\x04path\x18\x01 \x01(\x0b\x32\x10.chromiumos.Path\"\x15\n\x13UnmountPathResponse2\x8b\x05\n\nSdkService\x12\x43\n\x06\x43reate\x12\x1b.chromite.api.CreateRequest\x1a\x1c.chromite.api.CreateResponse\x12\x43\n\x06\x44\x65lete\x12\x1b.chromite.api.DeleteRequest\x1a\x1c.chromite.api.DeleteResponse\x12@\n\x05\x43lean\x12\x1a.chromite.api.CleanRequest\x1a\x1b.chromite.api.CleanResponse\x12\x46\n\x07Unmount\x12\x1c.chromite.api.UnmountRequest\x1a\x1d.chromite.api.UnmountResponse\x12K\n\x06Update\x12\x1b.chromite.api.UpdateRequest\x1a\x1c.chromite.api.UpdateResponse\"\x06\xc2\xed\x1a\x02\x10\x01\x12[\n\x0e\x43reateSnapshot\x12#.chromite.api.CreateSnapshotRequest\x1a$.chromite.api.CreateSnapshotResponse\x12^\n\x0fRestoreSnapshot\x12$.chromite.api.RestoreSnapshotRequest\x1a%.chromite.api.RestoreSnapshotResponse\x12R\n\x0bUnmountPath\x12 .chromite.api.UnmountPathRequest\x1a!.chromite.api.UnmountPathResponse\x1a\x0b\xc2\xed\x1a\x07\n\x03sdk\x10\x02\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')
  ,
  dependencies=[chromite_dot_api_dot_build__api__pb2.DESCRIPTOR,chromiumos_dot_common__pb2.DESCRIPTOR,])




_CHROOTVERSION = _descriptor.Descriptor(
  name='ChrootVersion',
  full_name='chromite.api.ChrootVersion',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='version', full_name='chromite.api.ChrootVersion.version', index=0,
      number=1, type=13, cpp_type=3, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=95,
  serialized_end=127,
)


_CREATEREQUEST_FLAGS = _descriptor.Descriptor(
  name='Flags',
  full_name='chromite.api.CreateRequest.Flags',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='no_replace', full_name='chromite.api.CreateRequest.Flags.no_replace', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='bootstrap', full_name='chromite.api.CreateRequest.Flags.bootstrap', index=1,
      number=2, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='no_use_image', full_name='chromite.api.CreateRequest.Flags.no_use_image', index=2,
      number=3, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=233,
  serialized_end=301,
)

_CREATEREQUEST = _descriptor.Descriptor(
  name='CreateRequest',
  full_name='chromite.api.CreateRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='flags', full_name='chromite.api.CreateRequest.flags', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.CreateRequest.chroot', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_CREATEREQUEST_FLAGS, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=130,
  serialized_end=301,
)


_CREATERESPONSE = _descriptor.Descriptor(
  name='CreateResponse',
  full_name='chromite.api.CreateResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='version', full_name='chromite.api.CreateResponse.version', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=303,
  serialized_end=365,
)


_DELETEREQUEST = _descriptor.Descriptor(
  name='DeleteRequest',
  full_name='chromite.api.DeleteRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.DeleteRequest.chroot', index=0,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=367,
  serialized_end=418,
)


_DELETERESPONSE = _descriptor.Descriptor(
  name='DeleteResponse',
  full_name='chromite.api.DeleteResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=420,
  serialized_end=436,
)


_UNMOUNTREQUEST = _descriptor.Descriptor(
  name='UnmountRequest',
  full_name='chromite.api.UnmountRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.UnmountRequest.chroot', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=438,
  serialized_end=490,
)


_UNMOUNTRESPONSE = _descriptor.Descriptor(
  name='UnmountResponse',
  full_name='chromite.api.UnmountResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=492,
  serialized_end=509,
)


_UPDATEREQUEST_FLAGS = _descriptor.Descriptor(
  name='Flags',
  full_name='chromite.api.UpdateRequest.Flags',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='build_source', full_name='chromite.api.UpdateRequest.Flags.build_source', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='toolchain_changed', full_name='chromite.api.UpdateRequest.Flags.toolchain_changed', index=1,
      number=2, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=667,
  serialized_end=723,
)

_UPDATEREQUEST = _descriptor.Descriptor(
  name='UpdateRequest',
  full_name='chromite.api.UpdateRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='flags', full_name='chromite.api.UpdateRequest.flags', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='toolchain_targets', full_name='chromite.api.UpdateRequest.toolchain_targets', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.UpdateRequest.chroot', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_UPDATEREQUEST_FLAGS, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=512,
  serialized_end=723,
)


_UPDATERESPONSE = _descriptor.Descriptor(
  name='UpdateResponse',
  full_name='chromite.api.UpdateResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='version', full_name='chromite.api.UpdateResponse.version', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=725,
  serialized_end=787,
)


_CLEANREQUEST = _descriptor.Descriptor(
  name='CleanRequest',
  full_name='chromite.api.CleanRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.CleanRequest.chroot', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=789,
  serialized_end=839,
)


_CLEANRESPONSE = _descriptor.Descriptor(
  name='CleanResponse',
  full_name='chromite.api.CleanResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=841,
  serialized_end=856,
)


_SNAPSHOTTOKEN = _descriptor.Descriptor(
  name='SnapshotToken',
  full_name='chromite.api.SnapshotToken',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='value', full_name='chromite.api.SnapshotToken.value', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=858,
  serialized_end=888,
)


_CREATESNAPSHOTREQUEST = _descriptor.Descriptor(
  name='CreateSnapshotRequest',
  full_name='chromite.api.CreateSnapshotRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.CreateSnapshotRequest.chroot', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=890,
  serialized_end=949,
)


_CREATESNAPSHOTRESPONSE = _descriptor.Descriptor(
  name='CreateSnapshotResponse',
  full_name='chromite.api.CreateSnapshotResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='snapshot_token', full_name='chromite.api.CreateSnapshotResponse.snapshot_token', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=951,
  serialized_end=1028,
)


_RESTORESNAPSHOTREQUEST = _descriptor.Descriptor(
  name='RestoreSnapshotRequest',
  full_name='chromite.api.RestoreSnapshotRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.RestoreSnapshotRequest.chroot', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='snapshot_token', full_name='chromite.api.RestoreSnapshotRequest.snapshot_token', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1030,
  serialized_end=1143,
)


_RESTORESNAPSHOTRESPONSE = _descriptor.Descriptor(
  name='RestoreSnapshotResponse',
  full_name='chromite.api.RestoreSnapshotResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1145,
  serialized_end=1170,
)


_UNMOUNTPATHREQUEST = _descriptor.Descriptor(
  name='UnmountPathRequest',
  full_name='chromite.api.UnmountPathRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='path', full_name='chromite.api.UnmountPathRequest.path', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1172,
  serialized_end=1224,
)


_UNMOUNTPATHRESPONSE = _descriptor.Descriptor(
  name='UnmountPathResponse',
  full_name='chromite.api.UnmountPathResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1226,
  serialized_end=1247,
)

_CREATEREQUEST_FLAGS.containing_type = _CREATEREQUEST
_CREATEREQUEST.fields_by_name['flags'].message_type = _CREATEREQUEST_FLAGS
_CREATEREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_CREATERESPONSE.fields_by_name['version'].message_type = _CHROOTVERSION
_DELETEREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_UNMOUNTREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_UPDATEREQUEST_FLAGS.containing_type = _UPDATEREQUEST
_UPDATEREQUEST.fields_by_name['flags'].message_type = _UPDATEREQUEST_FLAGS
_UPDATEREQUEST.fields_by_name['toolchain_targets'].message_type = chromiumos_dot_common__pb2._BUILDTARGET
_UPDATEREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_UPDATERESPONSE.fields_by_name['version'].message_type = _CHROOTVERSION
_CLEANREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_CREATESNAPSHOTREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_CREATESNAPSHOTRESPONSE.fields_by_name['snapshot_token'].message_type = _SNAPSHOTTOKEN
_RESTORESNAPSHOTREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_RESTORESNAPSHOTREQUEST.fields_by_name['snapshot_token'].message_type = _SNAPSHOTTOKEN
_UNMOUNTPATHREQUEST.fields_by_name['path'].message_type = chromiumos_dot_common__pb2._PATH
DESCRIPTOR.message_types_by_name['ChrootVersion'] = _CHROOTVERSION
DESCRIPTOR.message_types_by_name['CreateRequest'] = _CREATEREQUEST
DESCRIPTOR.message_types_by_name['CreateResponse'] = _CREATERESPONSE
DESCRIPTOR.message_types_by_name['DeleteRequest'] = _DELETEREQUEST
DESCRIPTOR.message_types_by_name['DeleteResponse'] = _DELETERESPONSE
DESCRIPTOR.message_types_by_name['UnmountRequest'] = _UNMOUNTREQUEST
DESCRIPTOR.message_types_by_name['UnmountResponse'] = _UNMOUNTRESPONSE
DESCRIPTOR.message_types_by_name['UpdateRequest'] = _UPDATEREQUEST
DESCRIPTOR.message_types_by_name['UpdateResponse'] = _UPDATERESPONSE
DESCRIPTOR.message_types_by_name['CleanRequest'] = _CLEANREQUEST
DESCRIPTOR.message_types_by_name['CleanResponse'] = _CLEANRESPONSE
DESCRIPTOR.message_types_by_name['SnapshotToken'] = _SNAPSHOTTOKEN
DESCRIPTOR.message_types_by_name['CreateSnapshotRequest'] = _CREATESNAPSHOTREQUEST
DESCRIPTOR.message_types_by_name['CreateSnapshotResponse'] = _CREATESNAPSHOTRESPONSE
DESCRIPTOR.message_types_by_name['RestoreSnapshotRequest'] = _RESTORESNAPSHOTREQUEST
DESCRIPTOR.message_types_by_name['RestoreSnapshotResponse'] = _RESTORESNAPSHOTRESPONSE
DESCRIPTOR.message_types_by_name['UnmountPathRequest'] = _UNMOUNTPATHREQUEST
DESCRIPTOR.message_types_by_name['UnmountPathResponse'] = _UNMOUNTPATHRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ChrootVersion = _reflection.GeneratedProtocolMessageType('ChrootVersion', (_message.Message,), dict(
  DESCRIPTOR = _CHROOTVERSION,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.ChrootVersion)
  ))
_sym_db.RegisterMessage(ChrootVersion)

CreateRequest = _reflection.GeneratedProtocolMessageType('CreateRequest', (_message.Message,), dict(

  Flags = _reflection.GeneratedProtocolMessageType('Flags', (_message.Message,), dict(
    DESCRIPTOR = _CREATEREQUEST_FLAGS,
    __module__ = 'chromite.api.sdk_pb2'
    # @@protoc_insertion_point(class_scope:chromite.api.CreateRequest.Flags)
    ))
  ,
  DESCRIPTOR = _CREATEREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CreateRequest)
  ))
_sym_db.RegisterMessage(CreateRequest)
_sym_db.RegisterMessage(CreateRequest.Flags)

CreateResponse = _reflection.GeneratedProtocolMessageType('CreateResponse', (_message.Message,), dict(
  DESCRIPTOR = _CREATERESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CreateResponse)
  ))
_sym_db.RegisterMessage(CreateResponse)

DeleteRequest = _reflection.GeneratedProtocolMessageType('DeleteRequest', (_message.Message,), dict(
  DESCRIPTOR = _DELETEREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.DeleteRequest)
  ))
_sym_db.RegisterMessage(DeleteRequest)

DeleteResponse = _reflection.GeneratedProtocolMessageType('DeleteResponse', (_message.Message,), dict(
  DESCRIPTOR = _DELETERESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.DeleteResponse)
  ))
_sym_db.RegisterMessage(DeleteResponse)

UnmountRequest = _reflection.GeneratedProtocolMessageType('UnmountRequest', (_message.Message,), dict(
  DESCRIPTOR = _UNMOUNTREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UnmountRequest)
  ))
_sym_db.RegisterMessage(UnmountRequest)

UnmountResponse = _reflection.GeneratedProtocolMessageType('UnmountResponse', (_message.Message,), dict(
  DESCRIPTOR = _UNMOUNTRESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UnmountResponse)
  ))
_sym_db.RegisterMessage(UnmountResponse)

UpdateRequest = _reflection.GeneratedProtocolMessageType('UpdateRequest', (_message.Message,), dict(

  Flags = _reflection.GeneratedProtocolMessageType('Flags', (_message.Message,), dict(
    DESCRIPTOR = _UPDATEREQUEST_FLAGS,
    __module__ = 'chromite.api.sdk_pb2'
    # @@protoc_insertion_point(class_scope:chromite.api.UpdateRequest.Flags)
    ))
  ,
  DESCRIPTOR = _UPDATEREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UpdateRequest)
  ))
_sym_db.RegisterMessage(UpdateRequest)
_sym_db.RegisterMessage(UpdateRequest.Flags)

UpdateResponse = _reflection.GeneratedProtocolMessageType('UpdateResponse', (_message.Message,), dict(
  DESCRIPTOR = _UPDATERESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UpdateResponse)
  ))
_sym_db.RegisterMessage(UpdateResponse)

CleanRequest = _reflection.GeneratedProtocolMessageType('CleanRequest', (_message.Message,), dict(
  DESCRIPTOR = _CLEANREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CleanRequest)
  ))
_sym_db.RegisterMessage(CleanRequest)

CleanResponse = _reflection.GeneratedProtocolMessageType('CleanResponse', (_message.Message,), dict(
  DESCRIPTOR = _CLEANRESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CleanResponse)
  ))
_sym_db.RegisterMessage(CleanResponse)

SnapshotToken = _reflection.GeneratedProtocolMessageType('SnapshotToken', (_message.Message,), dict(
  DESCRIPTOR = _SNAPSHOTTOKEN,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.SnapshotToken)
  ))
_sym_db.RegisterMessage(SnapshotToken)

CreateSnapshotRequest = _reflection.GeneratedProtocolMessageType('CreateSnapshotRequest', (_message.Message,), dict(
  DESCRIPTOR = _CREATESNAPSHOTREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CreateSnapshotRequest)
  ))
_sym_db.RegisterMessage(CreateSnapshotRequest)

CreateSnapshotResponse = _reflection.GeneratedProtocolMessageType('CreateSnapshotResponse', (_message.Message,), dict(
  DESCRIPTOR = _CREATESNAPSHOTRESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.CreateSnapshotResponse)
  ))
_sym_db.RegisterMessage(CreateSnapshotResponse)

RestoreSnapshotRequest = _reflection.GeneratedProtocolMessageType('RestoreSnapshotRequest', (_message.Message,), dict(
  DESCRIPTOR = _RESTORESNAPSHOTREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.RestoreSnapshotRequest)
  ))
_sym_db.RegisterMessage(RestoreSnapshotRequest)

RestoreSnapshotResponse = _reflection.GeneratedProtocolMessageType('RestoreSnapshotResponse', (_message.Message,), dict(
  DESCRIPTOR = _RESTORESNAPSHOTRESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.RestoreSnapshotResponse)
  ))
_sym_db.RegisterMessage(RestoreSnapshotResponse)

UnmountPathRequest = _reflection.GeneratedProtocolMessageType('UnmountPathRequest', (_message.Message,), dict(
  DESCRIPTOR = _UNMOUNTPATHREQUEST,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UnmountPathRequest)
  ))
_sym_db.RegisterMessage(UnmountPathRequest)

UnmountPathResponse = _reflection.GeneratedProtocolMessageType('UnmountPathResponse', (_message.Message,), dict(
  DESCRIPTOR = _UNMOUNTPATHRESPONSE,
  __module__ = 'chromite.api.sdk_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.UnmountPathResponse)
  ))
_sym_db.RegisterMessage(UnmountPathResponse)


DESCRIPTOR._options = None

_SDKSERVICE = _descriptor.ServiceDescriptor(
  name='SdkService',
  full_name='chromite.api.SdkService',
  file=DESCRIPTOR,
  index=0,
  serialized_options=_b('\302\355\032\007\n\003sdk\020\002'),
  serialized_start=1250,
  serialized_end=1901,
  methods=[
  _descriptor.MethodDescriptor(
    name='Create',
    full_name='chromite.api.SdkService.Create',
    index=0,
    containing_service=None,
    input_type=_CREATEREQUEST,
    output_type=_CREATERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Delete',
    full_name='chromite.api.SdkService.Delete',
    index=1,
    containing_service=None,
    input_type=_DELETEREQUEST,
    output_type=_DELETERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Clean',
    full_name='chromite.api.SdkService.Clean',
    index=2,
    containing_service=None,
    input_type=_CLEANREQUEST,
    output_type=_CLEANRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Unmount',
    full_name='chromite.api.SdkService.Unmount',
    index=3,
    containing_service=None,
    input_type=_UNMOUNTREQUEST,
    output_type=_UNMOUNTRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='Update',
    full_name='chromite.api.SdkService.Update',
    index=4,
    containing_service=None,
    input_type=_UPDATEREQUEST,
    output_type=_UPDATERESPONSE,
    serialized_options=_b('\302\355\032\002\020\001'),
  ),
  _descriptor.MethodDescriptor(
    name='CreateSnapshot',
    full_name='chromite.api.SdkService.CreateSnapshot',
    index=5,
    containing_service=None,
    input_type=_CREATESNAPSHOTREQUEST,
    output_type=_CREATESNAPSHOTRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='RestoreSnapshot',
    full_name='chromite.api.SdkService.RestoreSnapshot',
    index=6,
    containing_service=None,
    input_type=_RESTORESNAPSHOTREQUEST,
    output_type=_RESTORESNAPSHOTRESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='UnmountPath',
    full_name='chromite.api.SdkService.UnmountPath',
    index=7,
    containing_service=None,
    input_type=_UNMOUNTPATHREQUEST,
    output_type=_UNMOUNTPATHRESPONSE,
    serialized_options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_SDKSERVICE)

DESCRIPTOR.services_by_name['SdkService'] = _SDKSERVICE

# @@protoc_insertion_point(module_scope)
