# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/ge_config.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()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromiumos/ge_config.proto',
  package='chromiumos',
  syntax='proto3',
  serialized_options=_b('Z4go.chromium.org/chromiumos/infra/proto/go/chromiumos'),
  serialized_pb=_b('\n\x1a\x63hromiumos/ge_config.proto\x12\nchromiumos\"\xb3\x01\n\x05Model\x12\x12\n\nboard_name\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0btest_suites\x18\x03 \x03(\t\x12\x17\n\x0f\x63q_test_enabled\x18\x04 \x01(\x08\x12!\n\x19release_builder_test_pool\x18\x05 \x01(\t\x12\x10\n\x08\x62oard_id\x18\x06 \x01(\x03\x12\x11\n\tis_active\x18\x07 \x01(\x08\x12\x12\n\nhwid_match\x18\x08 \x01(\t\"\xd9\x01\n ReferenceBoardUnifiedBuildConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1c\n\x14reference_board_name\x18\x02 \x01(\t\x12&\n\x04\x61rch\x18\x03 \x01(\x0e\x32\x18.chromiumos.Architecture\x12(\n\x07\x62uilder\x18\x04 \x01(\x0e\x32\x17.chromiumos.BuilderType\x12\x14\n\x0c\x65xperimental\x18\x05 \x01(\x08\x12!\n\x06models\x18\x06 \x03(\x0b\x32\x11.chromiumos.Model\"\x9b\x01\n\x06\x43onfig\x12(\n\x07\x62uilder\x18\x01 \x01(\x0e\x32\x17.chromiumos.BuilderType\x12\x14\n\x0c\x65xperimental\x18\x02 \x01(\x08\x12\x14\n\x0cleader_board\x18\x03 \x01(\x08\x12\x13\n\x0b\x62oard_group\x18\x04 \x01(\t\x12&\n\x04\x61rch\x18\x05 \x01(\x0e\x32\x18.chromiumos.Architecture\"?\n\nBuildBoard\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x07\x63onfigs\x18\x02 \x03(\x0b\x32\x12.chromiumos.Config\"\xba\x01\n\x08GEConfig\x12\x18\n\x10metadata_version\x18\x01 \x01(\t\x12&\n\x06\x62oards\x18\x02 \x03(\x0b\x32\x16.chromiumos.BuildBoard\x12\x16\n\x0erelease_branch\x18\x03 \x01(\x08\x12T\n\x1ereference_board_unified_builds\x18\x04 \x03(\x0b\x32,.chromiumos.ReferenceBoardUnifiedBuildConfig*4\n\x0b\x42uilderType\x12\x18\n\x14UNKNOWN_BUILDER_TYPE\x10\x00\x12\x0b\n\x07RELEASE\x10\x01*?\n\x0c\x41rchitecture\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x10\n\x0cX86_INTERNAL\x10\x01\x12\x10\n\x0c\x41RM_INTERNAL\x10\x02\x42\x36Z4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3')
)

_BUILDERTYPE = _descriptor.EnumDescriptor(
  name='BuilderType',
  full_name='chromiumos.BuilderType',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UNKNOWN_BUILDER_TYPE', index=0, number=0,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='RELEASE', index=1, number=1,
      serialized_options=None,
      type=None),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=856,
  serialized_end=908,
)
_sym_db.RegisterEnumDescriptor(_BUILDERTYPE)

BuilderType = enum_type_wrapper.EnumTypeWrapper(_BUILDERTYPE)
_ARCHITECTURE = _descriptor.EnumDescriptor(
  name='Architecture',
  full_name='chromiumos.Architecture',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='UNKNOWN', index=0, number=0,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='X86_INTERNAL', index=1, number=1,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='ARM_INTERNAL', index=2, number=2,
      serialized_options=None,
      type=None),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=910,
  serialized_end=973,
)
_sym_db.RegisterEnumDescriptor(_ARCHITECTURE)

Architecture = enum_type_wrapper.EnumTypeWrapper(_ARCHITECTURE)
UNKNOWN_BUILDER_TYPE = 0
RELEASE = 1
UNKNOWN = 0
X86_INTERNAL = 1
ARM_INTERNAL = 2



_MODEL = _descriptor.Descriptor(
  name='Model',
  full_name='chromiumos.Model',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='board_name', full_name='chromiumos.Model.board_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='name', full_name='chromiumos.Model.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='test_suites', full_name='chromiumos.Model.test_suites', index=2,
      number=3, type=9, cpp_type=9, 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='cq_test_enabled', full_name='chromiumos.Model.cq_test_enabled', 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),
    _descriptor.FieldDescriptor(
      name='release_builder_test_pool', full_name='chromiumos.Model.release_builder_test_pool', index=4,
      number=5, 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='board_id', full_name='chromiumos.Model.board_id', index=5,
      number=6, type=3, cpp_type=2, 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='is_active', full_name='chromiumos.Model.is_active', index=6,
      number=7, 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='hwid_match', full_name='chromiumos.Model.hwid_match', index=7,
      number=8, 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=43,
  serialized_end=222,
)


_REFERENCEBOARDUNIFIEDBUILDCONFIG = _descriptor.Descriptor(
  name='ReferenceBoardUnifiedBuildConfig',
  full_name='chromiumos.ReferenceBoardUnifiedBuildConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.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='reference_board_name', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.reference_board_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='arch', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.arch', index=2,
      number=3, 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='builder', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.builder', index=3,
      number=4, 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='experimental', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.experimental', index=4,
      number=5, 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='models', full_name='chromiumos.ReferenceBoardUnifiedBuildConfig.models', index=5,
      number=6, 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=225,
  serialized_end=442,
)


_CONFIG = _descriptor.Descriptor(
  name='Config',
  full_name='chromiumos.Config',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='builder', full_name='chromiumos.Config.builder', 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='experimental', full_name='chromiumos.Config.experimental', 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='leader_board', full_name='chromiumos.Config.leader_board', 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),
    _descriptor.FieldDescriptor(
      name='board_group', full_name='chromiumos.Config.board_group', index=3,
      number=4, 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='arch', full_name='chromiumos.Config.arch', index=4,
      number=5, 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=445,
  serialized_end=600,
)


_BUILDBOARD = _descriptor.Descriptor(
  name='BuildBoard',
  full_name='chromiumos.BuildBoard',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='chromiumos.BuildBoard.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='configs', full_name='chromiumos.BuildBoard.configs', 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),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=602,
  serialized_end=665,
)


_GECONFIG = _descriptor.Descriptor(
  name='GEConfig',
  full_name='chromiumos.GEConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='metadata_version', full_name='chromiumos.GEConfig.metadata_version', 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='boards', full_name='chromiumos.GEConfig.boards', 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='release_branch', full_name='chromiumos.GEConfig.release_branch', 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),
    _descriptor.FieldDescriptor(
      name='reference_board_unified_builds', full_name='chromiumos.GEConfig.reference_board_unified_builds', index=3,
      number=4, 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=668,
  serialized_end=854,
)

_REFERENCEBOARDUNIFIEDBUILDCONFIG.fields_by_name['arch'].enum_type = _ARCHITECTURE
_REFERENCEBOARDUNIFIEDBUILDCONFIG.fields_by_name['builder'].enum_type = _BUILDERTYPE
_REFERENCEBOARDUNIFIEDBUILDCONFIG.fields_by_name['models'].message_type = _MODEL
_CONFIG.fields_by_name['builder'].enum_type = _BUILDERTYPE
_CONFIG.fields_by_name['arch'].enum_type = _ARCHITECTURE
_BUILDBOARD.fields_by_name['configs'].message_type = _CONFIG
_GECONFIG.fields_by_name['boards'].message_type = _BUILDBOARD
_GECONFIG.fields_by_name['reference_board_unified_builds'].message_type = _REFERENCEBOARDUNIFIEDBUILDCONFIG
DESCRIPTOR.message_types_by_name['Model'] = _MODEL
DESCRIPTOR.message_types_by_name['ReferenceBoardUnifiedBuildConfig'] = _REFERENCEBOARDUNIFIEDBUILDCONFIG
DESCRIPTOR.message_types_by_name['Config'] = _CONFIG
DESCRIPTOR.message_types_by_name['BuildBoard'] = _BUILDBOARD
DESCRIPTOR.message_types_by_name['GEConfig'] = _GECONFIG
DESCRIPTOR.enum_types_by_name['BuilderType'] = _BUILDERTYPE
DESCRIPTOR.enum_types_by_name['Architecture'] = _ARCHITECTURE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Model = _reflection.GeneratedProtocolMessageType('Model', (_message.Message,), dict(
  DESCRIPTOR = _MODEL,
  __module__ = 'chromiumos.ge_config_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.Model)
  ))
_sym_db.RegisterMessage(Model)

ReferenceBoardUnifiedBuildConfig = _reflection.GeneratedProtocolMessageType('ReferenceBoardUnifiedBuildConfig', (_message.Message,), dict(
  DESCRIPTOR = _REFERENCEBOARDUNIFIEDBUILDCONFIG,
  __module__ = 'chromiumos.ge_config_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.ReferenceBoardUnifiedBuildConfig)
  ))
_sym_db.RegisterMessage(ReferenceBoardUnifiedBuildConfig)

Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), dict(
  DESCRIPTOR = _CONFIG,
  __module__ = 'chromiumos.ge_config_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.Config)
  ))
_sym_db.RegisterMessage(Config)

BuildBoard = _reflection.GeneratedProtocolMessageType('BuildBoard', (_message.Message,), dict(
  DESCRIPTOR = _BUILDBOARD,
  __module__ = 'chromiumos.ge_config_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.BuildBoard)
  ))
_sym_db.RegisterMessage(BuildBoard)

GEConfig = _reflection.GeneratedProtocolMessageType('GEConfig', (_message.Message,), dict(
  DESCRIPTOR = _GECONFIG,
  __module__ = 'chromiumos.ge_config_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.GEConfig)
  ))
_sym_db.RegisterMessage(GEConfig)


DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
