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

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
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/firmware.proto',
  package='chromite.api',
  syntax='proto3',
  serialized_options=_b('Z6go.chromium.org/chromiumos/infra/proto/go/chromite/api'),
  serialized_pb=_b('\n\x1b\x63hromite/api/firmware.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x17\x63hromiumos/common.proto\"\x99\x04\n\rFwBuildMetric\x12\x13\n\x0btarget_name\x18\x01 \x01(\t\x12\x15\n\rplatform_name\x18\x02 \x01(\t\x12\x39\n\nfw_section\x18\x03 \x03(\x0b\x32%.chromite.api.FwBuildMetric.FwSection\x12:\n\x06zephyr\x18\x04 \x01(\x0b\x32(.chromite.api.FwBuildMetric.ZephyrTargetH\x00\x1a\xd2\x01\n\tFwSection\x12>\n\x06region\x18\x01 \x01(\x0e\x32..chromite.api.FwBuildMetric.FwSection.FwRegion\x12\x0c\n\x04used\x18\x02 \x01(\r\x12\r\n\x05total\x18\x03 \x01(\r\"h\n\x08\x46wRegion\x12\x15\n\x11\x46W_REGION_UNKNOWN\x10\x00\x12\t\n\x05\x45\x43_RO\x10\x01\x12\t\n\x05\x45\x43_RW\x10\x02\x12\r\n\tEC_RO_BSS\x10\x03\x12\r\n\tEC_RW_BSS\x10\x04\x12\x11\n\rEC_SHARED_MEM\x10\x05\x1a\x35\n\x07Version\x12\r\n\x05major\x18\x01 \x01(\r\x12\r\n\x05minor\x18\x02 \x01(\r\x12\x0c\n\x04tiny\x18\x03 \x01(\r\x1aK\n\x0cZephyrTarget\x12;\n\x0ekernel_version\x18\x01 \x01(\x0b\x32#.chromite.api.FwBuildMetric.VersionB\x0c\n\nimage_type\"?\n\x11\x46wBuildMetricList\x12*\n\x05value\x18\x01 \x03(\x0b\x32\x1b.chromite.api.FwBuildMetric\"\x1c\n\x0c\x46wTestMetric\x12\x0c\n\x04name\x18\x01 \x01(\t\"=\n\x10\x46wTestMetricList\x12)\n\x05value\x18\x01 \x03(\x0b\x32\x1a.chromite.api.FwTestMetric\"u\n\x1a\x42uildAllTotFirmwareRequest\x12\x33\n\x11\x66irmware_location\x18\x01 \x01(\x0e\x32\x18.chromite.api.FwLocation\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"O\n\x1b\x42uildAllTotFirmwareResponse\x12\x30\n\x07metrics\x18\x01 \x01(\x0b\x32\x1f.chromite.api.FwBuildMetricList\"t\n\x19TestAllTotFirmwareRequest\x12\x33\n\x11\x66irmware_location\x18\x01 \x01(\x0e\x32\x18.chromite.api.FwLocation\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"M\n\x1aTestAllTotFirmwareResponse\x12/\n\x07metrics\x18\x01 \x01(\x0b\x32\x1e.chromite.api.FwTestMetricList\"p\n\x17\x42uildAllFirmwareRequest\x12\x31\n\x11\x66irmware_location\x18\x01 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"L\n\x18\x42uildAllFirmwareResponse\x12\x30\n\x07metrics\x18\x01 \x01(\x0b\x32\x1f.chromite.api.FwBuildMetricList\"o\n\x16TestAllFirmwareRequest\x12\x31\n\x11\x66irmware_location\x18\x01 \x01(\x0e\x32\x16.chromiumos.FwLocation\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\"J\n\x17TestAllFirmwareResponse\x12/\n\x07metrics\x18\x01 \x01(\x0b\x32\x1e.chromite.api.FwTestMetricList\"\xad\x01\n\x1e\x42undleFirmwareArtifactsRequest\x12\"\n\x06\x63hroot\x18\x02 \x01(\x0b\x32\x12.chromiumos.Chroot\x12+\n\x0bresult_path\x18\x03 \x01(\x0b\x32\x16.chromiumos.ResultPath\x12:\n\tartifacts\x18\x04 \x01(\x0b\x32\'.chromiumos.ArtifactsByService.Firmware\"e\n\x1f\x42undleFirmwareArtifactsResponse\x12\x42\n\tartifacts\x18\x01 \x01(\x0b\x32/.chromiumos.UploadedArtifactsByService.Firmware*^\n\nFwLocation\x12\x17\n\x13\x46W_LOCATION_UNKNOWN\x10\x00\x12\x0f\n\x0bPLATFORM_EC\x10\x01\x12\x13\n\x0fPLATFORM_ZEPHYR\x10\x02\x12\x11\n\rPLATFORM_TI50\x10\x03\x32\xb3\x04\n\x0f\x46irmwareService\x12j\n\x13\x42uildAllTotFirmware\x12(.chromite.api.BuildAllTotFirmwareRequest\x1a).chromite.api.BuildAllTotFirmwareResponse\x12g\n\x12TestAllTotFirmware\x12\'.chromite.api.TestAllTotFirmwareRequest\x1a(.chromite.api.TestAllTotFirmwareResponse\x12\x61\n\x10\x42uildAllFirmware\x12%.chromite.api.BuildAllFirmwareRequest\x1a&.chromite.api.BuildAllFirmwareResponse\x12^\n\x0fTestAllFirmware\x12$.chromite.api.TestAllFirmwareRequest\x1a%.chromite.api.TestAllFirmwareResponse\x12v\n\x17\x42undleFirmwareArtifacts\x12,.chromite.api.BundleFirmwareArtifactsRequest\x1a-.chromite.api.BundleFirmwareArtifactsResponse\x1a\x10\xc2\xed\x1a\x0c\n\x08\x66irmware\x10\x01\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,])

_FWLOCATION = _descriptor.EnumDescriptor(
  name='FwLocation',
  full_name='chromite.api.FwLocation',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='FW_LOCATION_UNKNOWN', index=0, number=0,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PLATFORM_EC', index=1, number=1,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PLATFORM_ZEPHYR', index=2, number=2,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='PLATFORM_TI50', index=3, number=3,
      serialized_options=None,
      type=None),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=1855,
  serialized_end=1949,
)
_sym_db.RegisterEnumDescriptor(_FWLOCATION)

FwLocation = enum_type_wrapper.EnumTypeWrapper(_FWLOCATION)
FW_LOCATION_UNKNOWN = 0
PLATFORM_EC = 1
PLATFORM_ZEPHYR = 2
PLATFORM_TI50 = 3


_FWBUILDMETRIC_FWSECTION_FWREGION = _descriptor.EnumDescriptor(
  name='FwRegion',
  full_name='chromite.api.FwBuildMetric.FwSection.FwRegion',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='FW_REGION_UNKNOWN', index=0, number=0,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EC_RO', index=1, number=1,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EC_RW', index=2, number=2,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EC_RO_BSS', index=3, number=3,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EC_RW_BSS', index=4, number=4,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='EC_SHARED_MEM', index=5, number=5,
      serialized_options=None,
      type=None),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=388,
  serialized_end=492,
)
_sym_db.RegisterEnumDescriptor(_FWBUILDMETRIC_FWSECTION_FWREGION)


_FWBUILDMETRIC_FWSECTION = _descriptor.Descriptor(
  name='FwSection',
  full_name='chromite.api.FwBuildMetric.FwSection',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='region', full_name='chromite.api.FwBuildMetric.FwSection.region', 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),
    _descriptor.FieldDescriptor(
      name='used', full_name='chromite.api.FwBuildMetric.FwSection.used', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='total', full_name='chromite.api.FwBuildMetric.FwSection.total', index=2,
      number=3, 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=[
    _FWBUILDMETRIC_FWSECTION_FWREGION,
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=282,
  serialized_end=492,
)

_FWBUILDMETRIC_VERSION = _descriptor.Descriptor(
  name='Version',
  full_name='chromite.api.FwBuildMetric.Version',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='major', full_name='chromite.api.FwBuildMetric.Version.major', 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),
    _descriptor.FieldDescriptor(
      name='minor', full_name='chromite.api.FwBuildMetric.Version.minor', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='tiny', full_name='chromite.api.FwBuildMetric.Version.tiny', index=2,
      number=3, 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=494,
  serialized_end=547,
)

_FWBUILDMETRIC_ZEPHYRTARGET = _descriptor.Descriptor(
  name='ZephyrTarget',
  full_name='chromite.api.FwBuildMetric.ZephyrTarget',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='kernel_version', full_name='chromite.api.FwBuildMetric.ZephyrTarget.kernel_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=549,
  serialized_end=624,
)

_FWBUILDMETRIC = _descriptor.Descriptor(
  name='FwBuildMetric',
  full_name='chromite.api.FwBuildMetric',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='target_name', full_name='chromite.api.FwBuildMetric.target_name', 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),
    _descriptor.FieldDescriptor(
      name='platform_name', full_name='chromite.api.FwBuildMetric.platform_name', index=1,
      number=2, 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),
    _descriptor.FieldDescriptor(
      name='fw_section', full_name='chromite.api.FwBuildMetric.fw_section', index=2,
      number=3, 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='zephyr', full_name='chromite.api.FwBuildMetric.zephyr', index=3,
      number=4, 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=[_FWBUILDMETRIC_FWSECTION, _FWBUILDMETRIC_VERSION, _FWBUILDMETRIC_ZEPHYRTARGET, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='image_type', full_name='chromite.api.FwBuildMetric.image_type',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=101,
  serialized_end=638,
)


_FWBUILDMETRICLIST = _descriptor.Descriptor(
  name='FwBuildMetricList',
  full_name='chromite.api.FwBuildMetricList',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='value', full_name='chromite.api.FwBuildMetricList.value', index=0,
      number=1, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=640,
  serialized_end=703,
)


_FWTESTMETRIC = _descriptor.Descriptor(
  name='FwTestMetric',
  full_name='chromite.api.FwTestMetric',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='chromite.api.FwTestMetric.name', 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=705,
  serialized_end=733,
)


_FWTESTMETRICLIST = _descriptor.Descriptor(
  name='FwTestMetricList',
  full_name='chromite.api.FwTestMetricList',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='value', full_name='chromite.api.FwTestMetricList.value', index=0,
      number=1, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=735,
  serialized_end=796,
)


_BUILDALLTOTFIRMWAREREQUEST = _descriptor.Descriptor(
  name='BuildAllTotFirmwareRequest',
  full_name='chromite.api.BuildAllTotFirmwareRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='firmware_location', full_name='chromite.api.BuildAllTotFirmwareRequest.firmware_location', 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),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.BuildAllTotFirmwareRequest.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=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=798,
  serialized_end=915,
)


_BUILDALLTOTFIRMWARERESPONSE = _descriptor.Descriptor(
  name='BuildAllTotFirmwareResponse',
  full_name='chromite.api.BuildAllTotFirmwareResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='metrics', full_name='chromite.api.BuildAllTotFirmwareResponse.metrics', 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=917,
  serialized_end=996,
)


_TESTALLTOTFIRMWAREREQUEST = _descriptor.Descriptor(
  name='TestAllTotFirmwareRequest',
  full_name='chromite.api.TestAllTotFirmwareRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='firmware_location', full_name='chromite.api.TestAllTotFirmwareRequest.firmware_location', 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),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.TestAllTotFirmwareRequest.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=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=998,
  serialized_end=1114,
)


_TESTALLTOTFIRMWARERESPONSE = _descriptor.Descriptor(
  name='TestAllTotFirmwareResponse',
  full_name='chromite.api.TestAllTotFirmwareResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='metrics', full_name='chromite.api.TestAllTotFirmwareResponse.metrics', 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=1116,
  serialized_end=1193,
)


_BUILDALLFIRMWAREREQUEST = _descriptor.Descriptor(
  name='BuildAllFirmwareRequest',
  full_name='chromite.api.BuildAllFirmwareRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='firmware_location', full_name='chromite.api.BuildAllFirmwareRequest.firmware_location', 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),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.BuildAllFirmwareRequest.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=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1195,
  serialized_end=1307,
)


_BUILDALLFIRMWARERESPONSE = _descriptor.Descriptor(
  name='BuildAllFirmwareResponse',
  full_name='chromite.api.BuildAllFirmwareResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='metrics', full_name='chromite.api.BuildAllFirmwareResponse.metrics', 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=1309,
  serialized_end=1385,
)


_TESTALLFIRMWAREREQUEST = _descriptor.Descriptor(
  name='TestAllFirmwareRequest',
  full_name='chromite.api.TestAllFirmwareRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='firmware_location', full_name='chromite.api.TestAllFirmwareRequest.firmware_location', 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),
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.TestAllFirmwareRequest.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=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1387,
  serialized_end=1498,
)


_TESTALLFIRMWARERESPONSE = _descriptor.Descriptor(
  name='TestAllFirmwareResponse',
  full_name='chromite.api.TestAllFirmwareResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='metrics', full_name='chromite.api.TestAllFirmwareResponse.metrics', 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=1500,
  serialized_end=1574,
)


_BUNDLEFIRMWAREARTIFACTSREQUEST = _descriptor.Descriptor(
  name='BundleFirmwareArtifactsRequest',
  full_name='chromite.api.BundleFirmwareArtifactsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chroot', full_name='chromite.api.BundleFirmwareArtifactsRequest.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),
    _descriptor.FieldDescriptor(
      name='result_path', full_name='chromite.api.BundleFirmwareArtifactsRequest.result_path', index=1,
      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),
    _descriptor.FieldDescriptor(
      name='artifacts', full_name='chromite.api.BundleFirmwareArtifactsRequest.artifacts', index=2,
      number=4, 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=1577,
  serialized_end=1750,
)


_BUNDLEFIRMWAREARTIFACTSRESPONSE = _descriptor.Descriptor(
  name='BundleFirmwareArtifactsResponse',
  full_name='chromite.api.BundleFirmwareArtifactsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='artifacts', full_name='chromite.api.BundleFirmwareArtifactsResponse.artifacts', 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=1752,
  serialized_end=1853,
)

_FWBUILDMETRIC_FWSECTION.fields_by_name['region'].enum_type = _FWBUILDMETRIC_FWSECTION_FWREGION
_FWBUILDMETRIC_FWSECTION.containing_type = _FWBUILDMETRIC
_FWBUILDMETRIC_FWSECTION_FWREGION.containing_type = _FWBUILDMETRIC_FWSECTION
_FWBUILDMETRIC_VERSION.containing_type = _FWBUILDMETRIC
_FWBUILDMETRIC_ZEPHYRTARGET.fields_by_name['kernel_version'].message_type = _FWBUILDMETRIC_VERSION
_FWBUILDMETRIC_ZEPHYRTARGET.containing_type = _FWBUILDMETRIC
_FWBUILDMETRIC.fields_by_name['fw_section'].message_type = _FWBUILDMETRIC_FWSECTION
_FWBUILDMETRIC.fields_by_name['zephyr'].message_type = _FWBUILDMETRIC_ZEPHYRTARGET
_FWBUILDMETRIC.oneofs_by_name['image_type'].fields.append(
  _FWBUILDMETRIC.fields_by_name['zephyr'])
_FWBUILDMETRIC.fields_by_name['zephyr'].containing_oneof = _FWBUILDMETRIC.oneofs_by_name['image_type']
_FWBUILDMETRICLIST.fields_by_name['value'].message_type = _FWBUILDMETRIC
_FWTESTMETRICLIST.fields_by_name['value'].message_type = _FWTESTMETRIC
_BUILDALLTOTFIRMWAREREQUEST.fields_by_name['firmware_location'].enum_type = _FWLOCATION
_BUILDALLTOTFIRMWAREREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_BUILDALLTOTFIRMWARERESPONSE.fields_by_name['metrics'].message_type = _FWBUILDMETRICLIST
_TESTALLTOTFIRMWAREREQUEST.fields_by_name['firmware_location'].enum_type = _FWLOCATION
_TESTALLTOTFIRMWAREREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_TESTALLTOTFIRMWARERESPONSE.fields_by_name['metrics'].message_type = _FWTESTMETRICLIST
_BUILDALLFIRMWAREREQUEST.fields_by_name['firmware_location'].enum_type = chromiumos_dot_common__pb2._FWLOCATION
_BUILDALLFIRMWAREREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_BUILDALLFIRMWARERESPONSE.fields_by_name['metrics'].message_type = _FWBUILDMETRICLIST
_TESTALLFIRMWAREREQUEST.fields_by_name['firmware_location'].enum_type = chromiumos_dot_common__pb2._FWLOCATION
_TESTALLFIRMWAREREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_TESTALLFIRMWARERESPONSE.fields_by_name['metrics'].message_type = _FWTESTMETRICLIST
_BUNDLEFIRMWAREARTIFACTSREQUEST.fields_by_name['chroot'].message_type = chromiumos_dot_common__pb2._CHROOT
_BUNDLEFIRMWAREARTIFACTSREQUEST.fields_by_name['result_path'].message_type = chromiumos_dot_common__pb2._RESULTPATH
_BUNDLEFIRMWAREARTIFACTSREQUEST.fields_by_name['artifacts'].message_type = chromiumos_dot_common__pb2._ARTIFACTSBYSERVICE_FIRMWARE
_BUNDLEFIRMWAREARTIFACTSRESPONSE.fields_by_name['artifacts'].message_type = chromiumos_dot_common__pb2._UPLOADEDARTIFACTSBYSERVICE_FIRMWARE
DESCRIPTOR.message_types_by_name['FwBuildMetric'] = _FWBUILDMETRIC
DESCRIPTOR.message_types_by_name['FwBuildMetricList'] = _FWBUILDMETRICLIST
DESCRIPTOR.message_types_by_name['FwTestMetric'] = _FWTESTMETRIC
DESCRIPTOR.message_types_by_name['FwTestMetricList'] = _FWTESTMETRICLIST
DESCRIPTOR.message_types_by_name['BuildAllTotFirmwareRequest'] = _BUILDALLTOTFIRMWAREREQUEST
DESCRIPTOR.message_types_by_name['BuildAllTotFirmwareResponse'] = _BUILDALLTOTFIRMWARERESPONSE
DESCRIPTOR.message_types_by_name['TestAllTotFirmwareRequest'] = _TESTALLTOTFIRMWAREREQUEST
DESCRIPTOR.message_types_by_name['TestAllTotFirmwareResponse'] = _TESTALLTOTFIRMWARERESPONSE
DESCRIPTOR.message_types_by_name['BuildAllFirmwareRequest'] = _BUILDALLFIRMWAREREQUEST
DESCRIPTOR.message_types_by_name['BuildAllFirmwareResponse'] = _BUILDALLFIRMWARERESPONSE
DESCRIPTOR.message_types_by_name['TestAllFirmwareRequest'] = _TESTALLFIRMWAREREQUEST
DESCRIPTOR.message_types_by_name['TestAllFirmwareResponse'] = _TESTALLFIRMWARERESPONSE
DESCRIPTOR.message_types_by_name['BundleFirmwareArtifactsRequest'] = _BUNDLEFIRMWAREARTIFACTSREQUEST
DESCRIPTOR.message_types_by_name['BundleFirmwareArtifactsResponse'] = _BUNDLEFIRMWAREARTIFACTSRESPONSE
DESCRIPTOR.enum_types_by_name['FwLocation'] = _FWLOCATION
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

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

  FwSection = _reflection.GeneratedProtocolMessageType('FwSection', (_message.Message,), dict(
    DESCRIPTOR = _FWBUILDMETRIC_FWSECTION,
    __module__ = 'chromite.api.firmware_pb2'
    # @@protoc_insertion_point(class_scope:chromite.api.FwBuildMetric.FwSection)
    ))
  ,

  Version = _reflection.GeneratedProtocolMessageType('Version', (_message.Message,), dict(
    DESCRIPTOR = _FWBUILDMETRIC_VERSION,
    __module__ = 'chromite.api.firmware_pb2'
    # @@protoc_insertion_point(class_scope:chromite.api.FwBuildMetric.Version)
    ))
  ,

  ZephyrTarget = _reflection.GeneratedProtocolMessageType('ZephyrTarget', (_message.Message,), dict(
    DESCRIPTOR = _FWBUILDMETRIC_ZEPHYRTARGET,
    __module__ = 'chromite.api.firmware_pb2'
    # @@protoc_insertion_point(class_scope:chromite.api.FwBuildMetric.ZephyrTarget)
    ))
  ,
  DESCRIPTOR = _FWBUILDMETRIC,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.FwBuildMetric)
  ))
_sym_db.RegisterMessage(FwBuildMetric)
_sym_db.RegisterMessage(FwBuildMetric.FwSection)
_sym_db.RegisterMessage(FwBuildMetric.Version)
_sym_db.RegisterMessage(FwBuildMetric.ZephyrTarget)

FwBuildMetricList = _reflection.GeneratedProtocolMessageType('FwBuildMetricList', (_message.Message,), dict(
  DESCRIPTOR = _FWBUILDMETRICLIST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.FwBuildMetricList)
  ))
_sym_db.RegisterMessage(FwBuildMetricList)

FwTestMetric = _reflection.GeneratedProtocolMessageType('FwTestMetric', (_message.Message,), dict(
  DESCRIPTOR = _FWTESTMETRIC,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.FwTestMetric)
  ))
_sym_db.RegisterMessage(FwTestMetric)

FwTestMetricList = _reflection.GeneratedProtocolMessageType('FwTestMetricList', (_message.Message,), dict(
  DESCRIPTOR = _FWTESTMETRICLIST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.FwTestMetricList)
  ))
_sym_db.RegisterMessage(FwTestMetricList)

BuildAllTotFirmwareRequest = _reflection.GeneratedProtocolMessageType('BuildAllTotFirmwareRequest', (_message.Message,), dict(
  DESCRIPTOR = _BUILDALLTOTFIRMWAREREQUEST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BuildAllTotFirmwareRequest)
  ))
_sym_db.RegisterMessage(BuildAllTotFirmwareRequest)

BuildAllTotFirmwareResponse = _reflection.GeneratedProtocolMessageType('BuildAllTotFirmwareResponse', (_message.Message,), dict(
  DESCRIPTOR = _BUILDALLTOTFIRMWARERESPONSE,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BuildAllTotFirmwareResponse)
  ))
_sym_db.RegisterMessage(BuildAllTotFirmwareResponse)

TestAllTotFirmwareRequest = _reflection.GeneratedProtocolMessageType('TestAllTotFirmwareRequest', (_message.Message,), dict(
  DESCRIPTOR = _TESTALLTOTFIRMWAREREQUEST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.TestAllTotFirmwareRequest)
  ))
_sym_db.RegisterMessage(TestAllTotFirmwareRequest)

TestAllTotFirmwareResponse = _reflection.GeneratedProtocolMessageType('TestAllTotFirmwareResponse', (_message.Message,), dict(
  DESCRIPTOR = _TESTALLTOTFIRMWARERESPONSE,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.TestAllTotFirmwareResponse)
  ))
_sym_db.RegisterMessage(TestAllTotFirmwareResponse)

BuildAllFirmwareRequest = _reflection.GeneratedProtocolMessageType('BuildAllFirmwareRequest', (_message.Message,), dict(
  DESCRIPTOR = _BUILDALLFIRMWAREREQUEST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BuildAllFirmwareRequest)
  ))
_sym_db.RegisterMessage(BuildAllFirmwareRequest)

BuildAllFirmwareResponse = _reflection.GeneratedProtocolMessageType('BuildAllFirmwareResponse', (_message.Message,), dict(
  DESCRIPTOR = _BUILDALLFIRMWARERESPONSE,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BuildAllFirmwareResponse)
  ))
_sym_db.RegisterMessage(BuildAllFirmwareResponse)

TestAllFirmwareRequest = _reflection.GeneratedProtocolMessageType('TestAllFirmwareRequest', (_message.Message,), dict(
  DESCRIPTOR = _TESTALLFIRMWAREREQUEST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.TestAllFirmwareRequest)
  ))
_sym_db.RegisterMessage(TestAllFirmwareRequest)

TestAllFirmwareResponse = _reflection.GeneratedProtocolMessageType('TestAllFirmwareResponse', (_message.Message,), dict(
  DESCRIPTOR = _TESTALLFIRMWARERESPONSE,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.TestAllFirmwareResponse)
  ))
_sym_db.RegisterMessage(TestAllFirmwareResponse)

BundleFirmwareArtifactsRequest = _reflection.GeneratedProtocolMessageType('BundleFirmwareArtifactsRequest', (_message.Message,), dict(
  DESCRIPTOR = _BUNDLEFIRMWAREARTIFACTSREQUEST,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BundleFirmwareArtifactsRequest)
  ))
_sym_db.RegisterMessage(BundleFirmwareArtifactsRequest)

BundleFirmwareArtifactsResponse = _reflection.GeneratedProtocolMessageType('BundleFirmwareArtifactsResponse', (_message.Message,), dict(
  DESCRIPTOR = _BUNDLEFIRMWAREARTIFACTSRESPONSE,
  __module__ = 'chromite.api.firmware_pb2'
  # @@protoc_insertion_point(class_scope:chromite.api.BundleFirmwareArtifactsResponse)
  ))
_sym_db.RegisterMessage(BundleFirmwareArtifactsResponse)


DESCRIPTOR._options = None

_FIRMWARESERVICE = _descriptor.ServiceDescriptor(
  name='FirmwareService',
  full_name='chromite.api.FirmwareService',
  file=DESCRIPTOR,
  index=0,
  serialized_options=_b('\302\355\032\014\n\010firmware\020\001'),
  serialized_start=1952,
  serialized_end=2515,
  methods=[
  _descriptor.MethodDescriptor(
    name='BuildAllTotFirmware',
    full_name='chromite.api.FirmwareService.BuildAllTotFirmware',
    index=0,
    containing_service=None,
    input_type=_BUILDALLTOTFIRMWAREREQUEST,
    output_type=_BUILDALLTOTFIRMWARERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='TestAllTotFirmware',
    full_name='chromite.api.FirmwareService.TestAllTotFirmware',
    index=1,
    containing_service=None,
    input_type=_TESTALLTOTFIRMWAREREQUEST,
    output_type=_TESTALLTOTFIRMWARERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='BuildAllFirmware',
    full_name='chromite.api.FirmwareService.BuildAllFirmware',
    index=2,
    containing_service=None,
    input_type=_BUILDALLFIRMWAREREQUEST,
    output_type=_BUILDALLFIRMWARERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='TestAllFirmware',
    full_name='chromite.api.FirmwareService.TestAllFirmware',
    index=3,
    containing_service=None,
    input_type=_TESTALLFIRMWAREREQUEST,
    output_type=_TESTALLFIRMWARERESPONSE,
    serialized_options=None,
  ),
  _descriptor.MethodDescriptor(
    name='BundleFirmwareArtifacts',
    full_name='chromite.api.FirmwareService.BundleFirmwareArtifacts',
    index=4,
    containing_service=None,
    input_type=_BUNDLEFIRMWAREARTIFACTSREQUEST,
    output_type=_BUNDLEFIRMWAREARTIFACTSRESPONSE,
    serialized_options=None,
  ),
])
_sym_db.RegisterServiceDescriptor(_FIRMWARESERVICE)

DESCRIPTOR.services_by_name['FirmwareService'] = _FIRMWARESERVICE

# @@protoc_insertion_point(module_scope)
