# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/test/api/provision_service.proto
"""Generated protocol buffer code."""
from chromite.third_party.google.protobuf import descriptor as _descriptor
from chromite.third_party.google.protobuf import message as _message
from chromite.third_party.google.protobuf import reflection as _reflection
from chromite.third_party.google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen.chromiumos.build.api import firmware_config_pb2 as chromiumos_dot_build_dot_api_dot_firmware__config__pb2
from chromite.api.gen.chromiumos.longrunning import operations_pb2 as chromiumos_dot_longrunning_dot_operations__pb2
from chromite.api.gen.chromiumos import storage_path_pb2 as chromiumos_dot_storage__path__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromiumos/test/api/provision_service.proto',
  package='chromiumos.test.api',
  syntax='proto3',
  serialized_options=b'Z-go.chromium.org/chromiumos/config/go/test/api',
  create_key=_descriptor._internal_create_key,
  serialized_pb=b'\n+chromiumos/test/api/provision_service.proto\x12\x13\x63hromiumos.test.api\x1a*chromiumos/build/api/firmware_config.proto\x1a\'chromiumos/longrunning/operations.proto\x1a\x1d\x63hromiumos/storage_path.proto\"\x10\n\x0eInstallSuccess\"\xaf\x02\n\x0eInstallFailure\x12:\n\x06reason\x18\x01 \x01(\x0e\x32*.chromiumos.test.api.InstallFailure.Reason\"\xe0\x01\n\x06Reason\x12\x1a\n\x16REASON_INVALID_REQUEST\x10\x00\x12(\n$REASON_DUT_UNREACHABLE_PRE_PROVISION\x10\x01\x12#\n\x1fREASON_DOWNLOADING_IMAGE_FAILED\x10\x02\x12 \n\x1cREASON_PROVISIONING_TIMEDOUT\x10\x03\x12\x1e\n\x1aREASON_PROVISIONING_FAILED\x10\x04\x12)\n%REASON_DUT_UNREACHABLE_POST_PROVISION\x10\x05\"\xd4\x01\n\x12InstallCrosRequest\x12\x30\n\x0f\x63ros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\x12\x42\n\tdlc_specs\x18\x02 \x03(\x0b\x32/.chromiumos.test.api.InstallCrosRequest.DLCSpec\x12\x19\n\x11preserve_stateful\x18\x03 \x01(\x08\x12\x16\n\x0eprevent_reboot\x18\x04 \x01(\x08\x1a\x15\n\x07\x44LCSpec\x12\n\n\x02id\x18\x01 \x01(\t\"\x90\x01\n\x13InstallCrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x15\n\x13InstallCrosMetadata\"J\n\x14InstallLacrosRequest\x12\x32\n\x11lacros_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x92\x01\n\x15InstallLacrosResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x17\n\x15InstallLacrosMetadata\"D\n\x11InstallAshRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallAshResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallAshMetadata\"D\n\x11InstallArcRequest\x12/\n\x0e\x61sh_image_path\x18\x01 \x01(\x0b\x32\x17.chromiumos.StoragePath\"\x8f\x01\n\x12InstallArcResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x14\n\x12InstallArcMetadata\"W\n\x16InstallFirmwareRequest\x12=\n\x0f\x66irmware_config\x18\x01 \x01(\x0b\x32$.chromiumos.build.api.FirmwareConfig\"\x94\x01\n\x17InstallFirmwareResponse\x12\x36\n\x07success\x18\x01 \x01(\x0b\x32#.chromiumos.test.api.InstallSuccessH\x00\x12\x36\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32#.chromiumos.test.api.InstallFailureH\x00\x42\t\n\x07outcome\"\x19\n\x17InstallFirmwareMetadata2\xd9\x05\n\x10ProvisionService\x12\x88\x01\n\x0bInstallCros\x12\'.chromiumos.test.api.InstallCrosRequest\x1a!.chromiumos.longrunning.Operation\"-\xd2\x41*\n\x13InstallCrosResponse\x12\x13InstallCrosMetadata\x12\x90\x01\n\rInstallLacros\x12).chromiumos.test.api.InstallLacrosRequest\x1a!.chromiumos.longrunning.Operation\"1\xd2\x41.\n\x15InstallLacrosResponse\x12\x15InstallLacrosMetadata\x12\x84\x01\n\nInstallAsh\x12&.chromiumos.test.api.InstallAshRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallAshResponse\x12\x12InstallAshMetadata\x12\x84\x01\n\nInstallArc\x12&.chromiumos.test.api.InstallArcRequest\x1a!.chromiumos.longrunning.Operation\"+\xd2\x41(\n\x12InstallArcResponse\x12\x12InstallArcMetadata\x12\x98\x01\n\x0fInstallFirmware\x12+.chromiumos.test.api.InstallFirmwareRequest\x1a!.chromiumos.longrunning.Operation\"5\xd2\x41\x32\n\x17InstallFirmwareResponse\x12\x17InstallFirmwareMetadataB/Z-go.chromium.org/chromiumos/config/go/test/apib\x06proto3'
  ,
  dependencies=[chromiumos_dot_build_dot_api_dot_firmware__config__pb2.DESCRIPTOR,chromiumos_dot_longrunning_dot_operations__pb2.DESCRIPTOR,chromiumos_dot_storage__path__pb2.DESCRIPTOR,])



_INSTALLFAILURE_REASON = _descriptor.EnumDescriptor(
  name='Reason',
  full_name='chromiumos.test.api.InstallFailure.Reason',
  filename=None,
  file=DESCRIPTOR,
  create_key=_descriptor._internal_create_key,
  values=[
    _descriptor.EnumValueDescriptor(
      name='REASON_INVALID_REQUEST', index=0, number=0,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
    _descriptor.EnumValueDescriptor(
      name='REASON_DUT_UNREACHABLE_PRE_PROVISION', index=1, number=1,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
    _descriptor.EnumValueDescriptor(
      name='REASON_DOWNLOADING_IMAGE_FAILED', index=2, number=2,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
    _descriptor.EnumValueDescriptor(
      name='REASON_PROVISIONING_TIMEDOUT', index=3, number=3,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
    _descriptor.EnumValueDescriptor(
      name='REASON_PROVISIONING_FAILED', index=4, number=4,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
    _descriptor.EnumValueDescriptor(
      name='REASON_DUT_UNREACHABLE_POST_PROVISION', index=5, number=5,
      serialized_options=None,
      type=None,
      create_key=_descriptor._internal_create_key),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=282,
  serialized_end=506,
)
_sym_db.RegisterEnumDescriptor(_INSTALLFAILURE_REASON)


_INSTALLSUCCESS = _descriptor.Descriptor(
  name='InstallSuccess',
  full_name='chromiumos.test.api.InstallSuccess',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=184,
  serialized_end=200,
)


_INSTALLFAILURE = _descriptor.Descriptor(
  name='InstallFailure',
  full_name='chromiumos.test.api.InstallFailure',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='reason', full_name='chromiumos.test.api.InstallFailure.reason', index=0,
      number=1, type=14, cpp_type=8, 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
    _INSTALLFAILURE_REASON,
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=203,
  serialized_end=506,
)


_INSTALLCROSREQUEST_DLCSPEC = _descriptor.Descriptor(
  name='DLCSpec',
  full_name='chromiumos.test.api.InstallCrosRequest.DLCSpec',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='id', full_name='chromiumos.test.api.InstallCrosRequest.DLCSpec.id', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=700,
  serialized_end=721,
)

_INSTALLCROSREQUEST = _descriptor.Descriptor(
  name='InstallCrosRequest',
  full_name='chromiumos.test.api.InstallCrosRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='cros_image_path', full_name='chromiumos.test.api.InstallCrosRequest.cros_image_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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='dlc_specs', full_name='chromiumos.test.api.InstallCrosRequest.dlc_specs', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='preserve_stateful', full_name='chromiumos.test.api.InstallCrosRequest.preserve_stateful', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='prevent_reboot', full_name='chromiumos.test.api.InstallCrosRequest.prevent_reboot', index=3,
      number=4, 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[_INSTALLCROSREQUEST_DLCSPEC, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=509,
  serialized_end=721,
)


_INSTALLCROSRESPONSE = _descriptor.Descriptor(
  name='InstallCrosResponse',
  full_name='chromiumos.test.api.InstallCrosResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.InstallCrosResponse.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.InstallCrosResponse.failure', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.InstallCrosResponse.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=724,
  serialized_end=868,
)


_INSTALLCROSMETADATA = _descriptor.Descriptor(
  name='InstallCrosMetadata',
  full_name='chromiumos.test.api.InstallCrosMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=870,
  serialized_end=891,
)


_INSTALLLACROSREQUEST = _descriptor.Descriptor(
  name='InstallLacrosRequest',
  full_name='chromiumos.test.api.InstallLacrosRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='lacros_image_path', full_name='chromiumos.test.api.InstallLacrosRequest.lacros_image_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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=893,
  serialized_end=967,
)


_INSTALLLACROSRESPONSE = _descriptor.Descriptor(
  name='InstallLacrosResponse',
  full_name='chromiumos.test.api.InstallLacrosResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.InstallLacrosResponse.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.InstallLacrosResponse.failure', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.InstallLacrosResponse.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=970,
  serialized_end=1116,
)


_INSTALLLACROSMETADATA = _descriptor.Descriptor(
  name='InstallLacrosMetadata',
  full_name='chromiumos.test.api.InstallLacrosMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1118,
  serialized_end=1141,
)


_INSTALLASHREQUEST = _descriptor.Descriptor(
  name='InstallAshRequest',
  full_name='chromiumos.test.api.InstallAshRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='ash_image_path', full_name='chromiumos.test.api.InstallAshRequest.ash_image_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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1143,
  serialized_end=1211,
)


_INSTALLASHRESPONSE = _descriptor.Descriptor(
  name='InstallAshResponse',
  full_name='chromiumos.test.api.InstallAshResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.InstallAshResponse.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.InstallAshResponse.failure', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.InstallAshResponse.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=1214,
  serialized_end=1357,
)


_INSTALLASHMETADATA = _descriptor.Descriptor(
  name='InstallAshMetadata',
  full_name='chromiumos.test.api.InstallAshMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1359,
  serialized_end=1379,
)


_INSTALLARCREQUEST = _descriptor.Descriptor(
  name='InstallArcRequest',
  full_name='chromiumos.test.api.InstallArcRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='ash_image_path', full_name='chromiumos.test.api.InstallArcRequest.ash_image_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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1381,
  serialized_end=1449,
)


_INSTALLARCRESPONSE = _descriptor.Descriptor(
  name='InstallArcResponse',
  full_name='chromiumos.test.api.InstallArcResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.InstallArcResponse.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.InstallArcResponse.failure', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.InstallArcResponse.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=1452,
  serialized_end=1595,
)


_INSTALLARCMETADATA = _descriptor.Descriptor(
  name='InstallArcMetadata',
  full_name='chromiumos.test.api.InstallArcMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1597,
  serialized_end=1617,
)


_INSTALLFIRMWAREREQUEST = _descriptor.Descriptor(
  name='InstallFirmwareRequest',
  full_name='chromiumos.test.api.InstallFirmwareRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='firmware_config', full_name='chromiumos.test.api.InstallFirmwareRequest.firmware_config', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1619,
  serialized_end=1706,
)


_INSTALLFIRMWARERESPONSE = _descriptor.Descriptor(
  name='InstallFirmwareResponse',
  full_name='chromiumos.test.api.InstallFirmwareResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
    _descriptor.FieldDescriptor(
      name='success', full_name='chromiumos.test.api.InstallFirmwareResponse.success', 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,  create_key=_descriptor._internal_create_key),
    _descriptor.FieldDescriptor(
      name='failure', full_name='chromiumos.test.api.InstallFirmwareResponse.failure', 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,  create_key=_descriptor._internal_create_key),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='outcome', full_name='chromiumos.test.api.InstallFirmwareResponse.outcome',
      index=0, containing_type=None,
      create_key=_descriptor._internal_create_key,
    fields=[]),
  ],
  serialized_start=1709,
  serialized_end=1857,
)


_INSTALLFIRMWAREMETADATA = _descriptor.Descriptor(
  name='InstallFirmwareMetadata',
  full_name='chromiumos.test.api.InstallFirmwareMetadata',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  create_key=_descriptor._internal_create_key,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1859,
  serialized_end=1884,
)

_INSTALLFAILURE.fields_by_name['reason'].enum_type = _INSTALLFAILURE_REASON
_INSTALLFAILURE_REASON.containing_type = _INSTALLFAILURE
_INSTALLCROSREQUEST_DLCSPEC.containing_type = _INSTALLCROSREQUEST
_INSTALLCROSREQUEST.fields_by_name['cros_image_path'].message_type = chromiumos_dot_storage__path__pb2._STORAGEPATH
_INSTALLCROSREQUEST.fields_by_name['dlc_specs'].message_type = _INSTALLCROSREQUEST_DLCSPEC
_INSTALLCROSRESPONSE.fields_by_name['success'].message_type = _INSTALLSUCCESS
_INSTALLCROSRESPONSE.fields_by_name['failure'].message_type = _INSTALLFAILURE
_INSTALLCROSRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLCROSRESPONSE.fields_by_name['success'])
_INSTALLCROSRESPONSE.fields_by_name['success'].containing_oneof = _INSTALLCROSRESPONSE.oneofs_by_name['outcome']
_INSTALLCROSRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLCROSRESPONSE.fields_by_name['failure'])
_INSTALLCROSRESPONSE.fields_by_name['failure'].containing_oneof = _INSTALLCROSRESPONSE.oneofs_by_name['outcome']
_INSTALLLACROSREQUEST.fields_by_name['lacros_image_path'].message_type = chromiumos_dot_storage__path__pb2._STORAGEPATH
_INSTALLLACROSRESPONSE.fields_by_name['success'].message_type = _INSTALLSUCCESS
_INSTALLLACROSRESPONSE.fields_by_name['failure'].message_type = _INSTALLFAILURE
_INSTALLLACROSRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLLACROSRESPONSE.fields_by_name['success'])
_INSTALLLACROSRESPONSE.fields_by_name['success'].containing_oneof = _INSTALLLACROSRESPONSE.oneofs_by_name['outcome']
_INSTALLLACROSRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLLACROSRESPONSE.fields_by_name['failure'])
_INSTALLLACROSRESPONSE.fields_by_name['failure'].containing_oneof = _INSTALLLACROSRESPONSE.oneofs_by_name['outcome']
_INSTALLASHREQUEST.fields_by_name['ash_image_path'].message_type = chromiumos_dot_storage__path__pb2._STORAGEPATH
_INSTALLASHRESPONSE.fields_by_name['success'].message_type = _INSTALLSUCCESS
_INSTALLASHRESPONSE.fields_by_name['failure'].message_type = _INSTALLFAILURE
_INSTALLASHRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLASHRESPONSE.fields_by_name['success'])
_INSTALLASHRESPONSE.fields_by_name['success'].containing_oneof = _INSTALLASHRESPONSE.oneofs_by_name['outcome']
_INSTALLASHRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLASHRESPONSE.fields_by_name['failure'])
_INSTALLASHRESPONSE.fields_by_name['failure'].containing_oneof = _INSTALLASHRESPONSE.oneofs_by_name['outcome']
_INSTALLARCREQUEST.fields_by_name['ash_image_path'].message_type = chromiumos_dot_storage__path__pb2._STORAGEPATH
_INSTALLARCRESPONSE.fields_by_name['success'].message_type = _INSTALLSUCCESS
_INSTALLARCRESPONSE.fields_by_name['failure'].message_type = _INSTALLFAILURE
_INSTALLARCRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLARCRESPONSE.fields_by_name['success'])
_INSTALLARCRESPONSE.fields_by_name['success'].containing_oneof = _INSTALLARCRESPONSE.oneofs_by_name['outcome']
_INSTALLARCRESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLARCRESPONSE.fields_by_name['failure'])
_INSTALLARCRESPONSE.fields_by_name['failure'].containing_oneof = _INSTALLARCRESPONSE.oneofs_by_name['outcome']
_INSTALLFIRMWAREREQUEST.fields_by_name['firmware_config'].message_type = chromiumos_dot_build_dot_api_dot_firmware__config__pb2._FIRMWARECONFIG
_INSTALLFIRMWARERESPONSE.fields_by_name['success'].message_type = _INSTALLSUCCESS
_INSTALLFIRMWARERESPONSE.fields_by_name['failure'].message_type = _INSTALLFAILURE
_INSTALLFIRMWARERESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLFIRMWARERESPONSE.fields_by_name['success'])
_INSTALLFIRMWARERESPONSE.fields_by_name['success'].containing_oneof = _INSTALLFIRMWARERESPONSE.oneofs_by_name['outcome']
_INSTALLFIRMWARERESPONSE.oneofs_by_name['outcome'].fields.append(
  _INSTALLFIRMWARERESPONSE.fields_by_name['failure'])
_INSTALLFIRMWARERESPONSE.fields_by_name['failure'].containing_oneof = _INSTALLFIRMWARERESPONSE.oneofs_by_name['outcome']
DESCRIPTOR.message_types_by_name['InstallSuccess'] = _INSTALLSUCCESS
DESCRIPTOR.message_types_by_name['InstallFailure'] = _INSTALLFAILURE
DESCRIPTOR.message_types_by_name['InstallCrosRequest'] = _INSTALLCROSREQUEST
DESCRIPTOR.message_types_by_name['InstallCrosResponse'] = _INSTALLCROSRESPONSE
DESCRIPTOR.message_types_by_name['InstallCrosMetadata'] = _INSTALLCROSMETADATA
DESCRIPTOR.message_types_by_name['InstallLacrosRequest'] = _INSTALLLACROSREQUEST
DESCRIPTOR.message_types_by_name['InstallLacrosResponse'] = _INSTALLLACROSRESPONSE
DESCRIPTOR.message_types_by_name['InstallLacrosMetadata'] = _INSTALLLACROSMETADATA
DESCRIPTOR.message_types_by_name['InstallAshRequest'] = _INSTALLASHREQUEST
DESCRIPTOR.message_types_by_name['InstallAshResponse'] = _INSTALLASHRESPONSE
DESCRIPTOR.message_types_by_name['InstallAshMetadata'] = _INSTALLASHMETADATA
DESCRIPTOR.message_types_by_name['InstallArcRequest'] = _INSTALLARCREQUEST
DESCRIPTOR.message_types_by_name['InstallArcResponse'] = _INSTALLARCRESPONSE
DESCRIPTOR.message_types_by_name['InstallArcMetadata'] = _INSTALLARCMETADATA
DESCRIPTOR.message_types_by_name['InstallFirmwareRequest'] = _INSTALLFIRMWAREREQUEST
DESCRIPTOR.message_types_by_name['InstallFirmwareResponse'] = _INSTALLFIRMWARERESPONSE
DESCRIPTOR.message_types_by_name['InstallFirmwareMetadata'] = _INSTALLFIRMWAREMETADATA
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

InstallSuccess = _reflection.GeneratedProtocolMessageType('InstallSuccess', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLSUCCESS,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallSuccess)
  })
_sym_db.RegisterMessage(InstallSuccess)

InstallFailure = _reflection.GeneratedProtocolMessageType('InstallFailure', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLFAILURE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallFailure)
  })
_sym_db.RegisterMessage(InstallFailure)

InstallCrosRequest = _reflection.GeneratedProtocolMessageType('InstallCrosRequest', (_message.Message,), {

  'DLCSpec' : _reflection.GeneratedProtocolMessageType('DLCSpec', (_message.Message,), {
    'DESCRIPTOR' : _INSTALLCROSREQUEST_DLCSPEC,
    '__module__' : 'chromiumos.test.api.provision_service_pb2'
    # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallCrosRequest.DLCSpec)
    })
  ,
  'DESCRIPTOR' : _INSTALLCROSREQUEST,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallCrosRequest)
  })
_sym_db.RegisterMessage(InstallCrosRequest)
_sym_db.RegisterMessage(InstallCrosRequest.DLCSpec)

InstallCrosResponse = _reflection.GeneratedProtocolMessageType('InstallCrosResponse', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLCROSRESPONSE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallCrosResponse)
  })
_sym_db.RegisterMessage(InstallCrosResponse)

InstallCrosMetadata = _reflection.GeneratedProtocolMessageType('InstallCrosMetadata', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLCROSMETADATA,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallCrosMetadata)
  })
_sym_db.RegisterMessage(InstallCrosMetadata)

InstallLacrosRequest = _reflection.GeneratedProtocolMessageType('InstallLacrosRequest', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLLACROSREQUEST,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallLacrosRequest)
  })
_sym_db.RegisterMessage(InstallLacrosRequest)

InstallLacrosResponse = _reflection.GeneratedProtocolMessageType('InstallLacrosResponse', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLLACROSRESPONSE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallLacrosResponse)
  })
_sym_db.RegisterMessage(InstallLacrosResponse)

InstallLacrosMetadata = _reflection.GeneratedProtocolMessageType('InstallLacrosMetadata', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLLACROSMETADATA,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallLacrosMetadata)
  })
_sym_db.RegisterMessage(InstallLacrosMetadata)

InstallAshRequest = _reflection.GeneratedProtocolMessageType('InstallAshRequest', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLASHREQUEST,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallAshRequest)
  })
_sym_db.RegisterMessage(InstallAshRequest)

InstallAshResponse = _reflection.GeneratedProtocolMessageType('InstallAshResponse', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLASHRESPONSE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallAshResponse)
  })
_sym_db.RegisterMessage(InstallAshResponse)

InstallAshMetadata = _reflection.GeneratedProtocolMessageType('InstallAshMetadata', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLASHMETADATA,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallAshMetadata)
  })
_sym_db.RegisterMessage(InstallAshMetadata)

InstallArcRequest = _reflection.GeneratedProtocolMessageType('InstallArcRequest', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLARCREQUEST,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallArcRequest)
  })
_sym_db.RegisterMessage(InstallArcRequest)

InstallArcResponse = _reflection.GeneratedProtocolMessageType('InstallArcResponse', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLARCRESPONSE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallArcResponse)
  })
_sym_db.RegisterMessage(InstallArcResponse)

InstallArcMetadata = _reflection.GeneratedProtocolMessageType('InstallArcMetadata', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLARCMETADATA,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallArcMetadata)
  })
_sym_db.RegisterMessage(InstallArcMetadata)

InstallFirmwareRequest = _reflection.GeneratedProtocolMessageType('InstallFirmwareRequest', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLFIRMWAREREQUEST,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallFirmwareRequest)
  })
_sym_db.RegisterMessage(InstallFirmwareRequest)

InstallFirmwareResponse = _reflection.GeneratedProtocolMessageType('InstallFirmwareResponse', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLFIRMWARERESPONSE,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallFirmwareResponse)
  })
_sym_db.RegisterMessage(InstallFirmwareResponse)

InstallFirmwareMetadata = _reflection.GeneratedProtocolMessageType('InstallFirmwareMetadata', (_message.Message,), {
  'DESCRIPTOR' : _INSTALLFIRMWAREMETADATA,
  '__module__' : 'chromiumos.test.api.provision_service_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.test.api.InstallFirmwareMetadata)
  })
_sym_db.RegisterMessage(InstallFirmwareMetadata)


DESCRIPTOR._options = None

_PROVISIONSERVICE = _descriptor.ServiceDescriptor(
  name='ProvisionService',
  full_name='chromiumos.test.api.ProvisionService',
  file=DESCRIPTOR,
  index=0,
  serialized_options=None,
  create_key=_descriptor._internal_create_key,
  serialized_start=1887,
  serialized_end=2616,
  methods=[
  _descriptor.MethodDescriptor(
    name='InstallCros',
    full_name='chromiumos.test.api.ProvisionService.InstallCros',
    index=0,
    containing_service=None,
    input_type=_INSTALLCROSREQUEST,
    output_type=chromiumos_dot_longrunning_dot_operations__pb2._OPERATION,
    serialized_options=b'\322A*\n\023InstallCrosResponse\022\023InstallCrosMetadata',
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='InstallLacros',
    full_name='chromiumos.test.api.ProvisionService.InstallLacros',
    index=1,
    containing_service=None,
    input_type=_INSTALLLACROSREQUEST,
    output_type=chromiumos_dot_longrunning_dot_operations__pb2._OPERATION,
    serialized_options=b'\322A.\n\025InstallLacrosResponse\022\025InstallLacrosMetadata',
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='InstallAsh',
    full_name='chromiumos.test.api.ProvisionService.InstallAsh',
    index=2,
    containing_service=None,
    input_type=_INSTALLASHREQUEST,
    output_type=chromiumos_dot_longrunning_dot_operations__pb2._OPERATION,
    serialized_options=b'\322A(\n\022InstallAshResponse\022\022InstallAshMetadata',
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='InstallArc',
    full_name='chromiumos.test.api.ProvisionService.InstallArc',
    index=3,
    containing_service=None,
    input_type=_INSTALLARCREQUEST,
    output_type=chromiumos_dot_longrunning_dot_operations__pb2._OPERATION,
    serialized_options=b'\322A(\n\022InstallArcResponse\022\022InstallArcMetadata',
    create_key=_descriptor._internal_create_key,
  ),
  _descriptor.MethodDescriptor(
    name='InstallFirmware',
    full_name='chromiumos.test.api.ProvisionService.InstallFirmware',
    index=4,
    containing_service=None,
    input_type=_INSTALLFIRMWAREREQUEST,
    output_type=chromiumos_dot_longrunning_dot_operations__pb2._OPERATION,
    serialized_options=b'\322A2\n\027InstallFirmwareResponse\022\027InstallFirmwareMetadata',
    create_key=_descriptor._internal_create_key,
  ),
])
_sym_db.RegisterServiceDescriptor(_PROVISIONSERVICE)

DESCRIPTOR.services_by_name['ProvisionService'] = _PROVISIONSERVICE

# @@protoc_insertion_point(module_scope)
