ge_config: Add a proto 'borrowed' from GoldenEye

BUG=chromium:1069515
TEST=locally read in GE.json using this proto.

Change-Id: Ia5670cb44c587e750814cf0465e533720150c6c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/proto/+/2144651
Reviewed-by: Sean Abraham <seanabraham@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
Commit-Queue: Dhanya Ganesh <dhanyaganesh@chromium.org>
Tested-by: Dhanya Ganesh <dhanyaganesh@chromium.org>
diff --git a/go/chromiumos/ge_config.pb.go b/go/chromiumos/ge_config.pb.go
new file mode 100644
index 0000000..75c66ed
--- /dev/null
+++ b/go/chromiumos/ge_config.pb.go
@@ -0,0 +1,513 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: chromiumos/ge_config.proto
+
+package chromiumos
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// Enum for various type of builders
+type BuilderType int32
+
+const (
+	BuilderType_UNKNOWN_BUILDER_TYPE BuilderType = 0
+	BuilderType_RELEASE              BuilderType = 1
+)
+
+var BuilderType_name = map[int32]string{
+	0: "UNKNOWN_BUILDER_TYPE",
+	1: "RELEASE",
+}
+
+var BuilderType_value = map[string]int32{
+	"UNKNOWN_BUILDER_TYPE": 0,
+	"RELEASE":              1,
+}
+
+func (x BuilderType) String() string {
+	return proto.EnumName(BuilderType_name, int32(x))
+}
+
+func (BuilderType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{0}
+}
+
+type Architecture int32
+
+const (
+	Architecture_UNKNOWN      Architecture = 0
+	Architecture_X86_INTERNAL Architecture = 1
+	Architecture_ARM_INTERNAL Architecture = 2
+)
+
+var Architecture_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "X86_INTERNAL",
+	2: "ARM_INTERNAL",
+}
+
+var Architecture_value = map[string]int32{
+	"UNKNOWN":      0,
+	"X86_INTERNAL": 1,
+	"ARM_INTERNAL": 2,
+}
+
+func (x Architecture) String() string {
+	return proto.EnumName(Architecture_name, int32(x))
+}
+
+func (Architecture) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{1}
+}
+
+type Model struct {
+	// The board name for this model.
+	BoardName string `protobuf:"bytes,1,opt,name=board_name,json=boardName,proto3" json:"board_name,omitempty"`
+	// The name of the model.
+	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	// Defines which test suites should actually be run for a given model
+	// when the release builder is setting up the hardware tests.
+	TestSuites []string `protobuf:"bytes,3,rep,name=test_suites,json=testSuites,proto3" json:"test_suites,omitempty"`
+	// Defines whether presubmit hardware tests should be run against a given
+	// model as part of the commit queue.
+	CqTestEnabled bool `protobuf:"varint,4,opt,name=cq_test_enabled,json=cqTestEnabled,proto3" json:"cq_test_enabled,omitempty"`
+	// Defines the test pool that will be scheduled against for any HW tests
+	// executed against the given model.
+	ReleaseBuilderTestPool string `protobuf:"bytes,5,opt,name=release_builder_test_pool,json=releaseBuilderTestPool,proto3" json:"release_builder_test_pool,omitempty"`
+	// The GoldenEye ID for the board of this model.
+	// If the board does not exist, the field value will be 0.
+	BoardId  int64 `protobuf:"varint,6,opt,name=board_id,json=boardId,proto3" json:"board_id,omitempty"`
+	IsActive bool  `protobuf:"varint,7,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
+	// Hardware match for the model.
+	HwidMatch            string   `protobuf:"bytes,8,opt,name=hwid_match,json=hwidMatch,proto3" json:"hwid_match,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Model) Reset()         { *m = Model{} }
+func (m *Model) String() string { return proto.CompactTextString(m) }
+func (*Model) ProtoMessage()    {}
+func (*Model) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{0}
+}
+
+func (m *Model) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Model.Unmarshal(m, b)
+}
+func (m *Model) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Model.Marshal(b, m, deterministic)
+}
+func (m *Model) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Model.Merge(m, src)
+}
+func (m *Model) XXX_Size() int {
+	return xxx_messageInfo_Model.Size(m)
+}
+func (m *Model) XXX_DiscardUnknown() {
+	xxx_messageInfo_Model.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Model proto.InternalMessageInfo
+
+func (m *Model) GetBoardName() string {
+	if m != nil {
+		return m.BoardName
+	}
+	return ""
+}
+
+func (m *Model) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Model) GetTestSuites() []string {
+	if m != nil {
+		return m.TestSuites
+	}
+	return nil
+}
+
+func (m *Model) GetCqTestEnabled() bool {
+	if m != nil {
+		return m.CqTestEnabled
+	}
+	return false
+}
+
+func (m *Model) GetReleaseBuilderTestPool() string {
+	if m != nil {
+		return m.ReleaseBuilderTestPool
+	}
+	return ""
+}
+
+func (m *Model) GetBoardId() int64 {
+	if m != nil {
+		return m.BoardId
+	}
+	return 0
+}
+
+func (m *Model) GetIsActive() bool {
+	if m != nil {
+		return m.IsActive
+	}
+	return false
+}
+
+func (m *Model) GetHwidMatch() string {
+	if m != nil {
+		return m.HwidMatch
+	}
+	return ""
+}
+
+// Configuration required by BuildBot in order to generate a unified release
+// builder with the appropriate model specific hardware test coverage.
+// For context, see: go/cros-unibuild-hw-test
+type ReferenceBoardUnifiedBuildConfig struct {
+	// The name of the build that will be created by BuildBot.
+	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	// The name of the reference board this unified build is based upon.
+	ReferenceBoardName string `protobuf:"bytes,2,opt,name=reference_board_name,json=referenceBoardName,proto3" json:"reference_board_name,omitempty"`
+	// The instruction set architecture of the reference board.
+	Arch Architecture `protobuf:"varint,3,opt,name=arch,proto3,enum=chromiumos.Architecture" json:"arch,omitempty"`
+	// Whether this is a release build or not.
+	Builder BuilderType `protobuf:"varint,4,opt,name=builder,proto3,enum=chromiumos.BuilderType" json:"builder,omitempty"`
+	// Whether this build is considered experimental only.
+	Experimental bool `protobuf:"varint,5,opt,name=experimental,proto3" json:"experimental,omitempty"`
+	// The list of models that are based on the given reference board
+	// and supported as part of the unified build.
+	Models               []*Model `protobuf:"bytes,6,rep,name=models,proto3" json:"models,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) Reset()         { *m = ReferenceBoardUnifiedBuildConfig{} }
+func (m *ReferenceBoardUnifiedBuildConfig) String() string { return proto.CompactTextString(m) }
+func (*ReferenceBoardUnifiedBuildConfig) ProtoMessage()    {}
+func (*ReferenceBoardUnifiedBuildConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{1}
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReferenceBoardUnifiedBuildConfig.Unmarshal(m, b)
+}
+func (m *ReferenceBoardUnifiedBuildConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReferenceBoardUnifiedBuildConfig.Marshal(b, m, deterministic)
+}
+func (m *ReferenceBoardUnifiedBuildConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReferenceBoardUnifiedBuildConfig.Merge(m, src)
+}
+func (m *ReferenceBoardUnifiedBuildConfig) XXX_Size() int {
+	return xxx_messageInfo_ReferenceBoardUnifiedBuildConfig.Size(m)
+}
+func (m *ReferenceBoardUnifiedBuildConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReferenceBoardUnifiedBuildConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReferenceBoardUnifiedBuildConfig proto.InternalMessageInfo
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetReferenceBoardName() string {
+	if m != nil {
+		return m.ReferenceBoardName
+	}
+	return ""
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetArch() Architecture {
+	if m != nil {
+		return m.Arch
+	}
+	return Architecture_UNKNOWN
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetBuilder() BuilderType {
+	if m != nil {
+		return m.Builder
+	}
+	return BuilderType_UNKNOWN_BUILDER_TYPE
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetExperimental() bool {
+	if m != nil {
+		return m.Experimental
+	}
+	return false
+}
+
+func (m *ReferenceBoardUnifiedBuildConfig) GetModels() []*Model {
+	if m != nil {
+		return m.Models
+	}
+	return nil
+}
+
+// Message to represent a build config for a given builder
+type Config struct {
+	Builder              BuilderType  `protobuf:"varint,1,opt,name=builder,proto3,enum=chromiumos.BuilderType" json:"builder,omitempty"`
+	Experimental         bool         `protobuf:"varint,2,opt,name=experimental,proto3" json:"experimental,omitempty"`
+	LeaderBoard          bool         `protobuf:"varint,3,opt,name=leader_board,json=leaderBoard,proto3" json:"leader_board,omitempty"`
+	BoardGroup           string       `protobuf:"bytes,4,opt,name=board_group,json=boardGroup,proto3" json:"board_group,omitempty"`
+	Arch                 Architecture `protobuf:"varint,5,opt,name=arch,proto3,enum=chromiumos.Architecture" json:"arch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *Config) Reset()         { *m = Config{} }
+func (m *Config) String() string { return proto.CompactTextString(m) }
+func (*Config) ProtoMessage()    {}
+func (*Config) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{2}
+}
+
+func (m *Config) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Config.Unmarshal(m, b)
+}
+func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Config.Marshal(b, m, deterministic)
+}
+func (m *Config) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Config.Merge(m, src)
+}
+func (m *Config) XXX_Size() int {
+	return xxx_messageInfo_Config.Size(m)
+}
+func (m *Config) XXX_DiscardUnknown() {
+	xxx_messageInfo_Config.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Config proto.InternalMessageInfo
+
+func (m *Config) GetBuilder() BuilderType {
+	if m != nil {
+		return m.Builder
+	}
+	return BuilderType_UNKNOWN_BUILDER_TYPE
+}
+
+func (m *Config) GetExperimental() bool {
+	if m != nil {
+		return m.Experimental
+	}
+	return false
+}
+
+func (m *Config) GetLeaderBoard() bool {
+	if m != nil {
+		return m.LeaderBoard
+	}
+	return false
+}
+
+func (m *Config) GetBoardGroup() string {
+	if m != nil {
+		return m.BoardGroup
+	}
+	return ""
+}
+
+func (m *Config) GetArch() Architecture {
+	if m != nil {
+		return m.Arch
+	}
+	return Architecture_UNKNOWN
+}
+
+// Message to represent a board in build configuration
+type BuildBoard struct {
+	Name                 string    `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Configs              []*Config `protobuf:"bytes,2,rep,name=configs,proto3" json:"configs,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *BuildBoard) Reset()         { *m = BuildBoard{} }
+func (m *BuildBoard) String() string { return proto.CompactTextString(m) }
+func (*BuildBoard) ProtoMessage()    {}
+func (*BuildBoard) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{3}
+}
+
+func (m *BuildBoard) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BuildBoard.Unmarshal(m, b)
+}
+func (m *BuildBoard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BuildBoard.Marshal(b, m, deterministic)
+}
+func (m *BuildBoard) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BuildBoard.Merge(m, src)
+}
+func (m *BuildBoard) XXX_Size() int {
+	return xxx_messageInfo_BuildBoard.Size(m)
+}
+func (m *BuildBoard) XXX_DiscardUnknown() {
+	xxx_messageInfo_BuildBoard.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildBoard proto.InternalMessageInfo
+
+func (m *BuildBoard) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *BuildBoard) GetConfigs() []*Config {
+	if m != nil {
+		return m.Configs
+	}
+	return nil
+}
+
+// Message to represent a build configuration.
+// The JSON file from GE is this proto.
+type GEConfig struct {
+	MetadataVersion             string                              `protobuf:"bytes,1,opt,name=metadata_version,json=metadataVersion,proto3" json:"metadata_version,omitempty"`
+	Boards                      []*BuildBoard                       `protobuf:"bytes,2,rep,name=boards,proto3" json:"boards,omitempty"`
+	ReleaseBranch               bool                                `protobuf:"varint,3,opt,name=release_branch,json=releaseBranch,proto3" json:"release_branch,omitempty"`
+	ReferenceBoardUnifiedBuilds []*ReferenceBoardUnifiedBuildConfig `protobuf:"bytes,4,rep,name=reference_board_unified_builds,json=referenceBoardUnifiedBuilds,proto3" json:"reference_board_unified_builds,omitempty"`
+	XXX_NoUnkeyedLiteral        struct{}                            `json:"-"`
+	XXX_unrecognized            []byte                              `json:"-"`
+	XXX_sizecache               int32                               `json:"-"`
+}
+
+func (m *GEConfig) Reset()         { *m = GEConfig{} }
+func (m *GEConfig) String() string { return proto.CompactTextString(m) }
+func (*GEConfig) ProtoMessage()    {}
+func (*GEConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1535585e49f0fb45, []int{4}
+}
+
+func (m *GEConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GEConfig.Unmarshal(m, b)
+}
+func (m *GEConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GEConfig.Marshal(b, m, deterministic)
+}
+func (m *GEConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GEConfig.Merge(m, src)
+}
+func (m *GEConfig) XXX_Size() int {
+	return xxx_messageInfo_GEConfig.Size(m)
+}
+func (m *GEConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_GEConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GEConfig proto.InternalMessageInfo
+
+func (m *GEConfig) GetMetadataVersion() string {
+	if m != nil {
+		return m.MetadataVersion
+	}
+	return ""
+}
+
+func (m *GEConfig) GetBoards() []*BuildBoard {
+	if m != nil {
+		return m.Boards
+	}
+	return nil
+}
+
+func (m *GEConfig) GetReleaseBranch() bool {
+	if m != nil {
+		return m.ReleaseBranch
+	}
+	return false
+}
+
+func (m *GEConfig) GetReferenceBoardUnifiedBuilds() []*ReferenceBoardUnifiedBuildConfig {
+	if m != nil {
+		return m.ReferenceBoardUnifiedBuilds
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("chromiumos.BuilderType", BuilderType_name, BuilderType_value)
+	proto.RegisterEnum("chromiumos.Architecture", Architecture_name, Architecture_value)
+	proto.RegisterType((*Model)(nil), "chromiumos.Model")
+	proto.RegisterType((*ReferenceBoardUnifiedBuildConfig)(nil), "chromiumos.ReferenceBoardUnifiedBuildConfig")
+	proto.RegisterType((*Config)(nil), "chromiumos.Config")
+	proto.RegisterType((*BuildBoard)(nil), "chromiumos.BuildBoard")
+	proto.RegisterType((*GEConfig)(nil), "chromiumos.GEConfig")
+}
+
+func init() { proto.RegisterFile("chromiumos/ge_config.proto", fileDescriptor_1535585e49f0fb45) }
+
+var fileDescriptor_1535585e49f0fb45 = []byte{
+	// 671 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0xed, 0x6e, 0xd3, 0x3a,
+	0x18, 0xc7, 0x97, 0xb6, 0x6b, 0xd3, 0xa7, 0xdd, 0xd6, 0x63, 0x4d, 0x3b, 0xd9, 0x99, 0x0e, 0x94,
+	0x4a, 0xa0, 0x6e, 0x9a, 0x5a, 0x18, 0xd3, 0x04, 0x9f, 0x50, 0x0b, 0xd1, 0x34, 0xb1, 0x85, 0xc9,
+	0xdb, 0x78, 0xfb, 0x12, 0xb9, 0x89, 0xdb, 0x5a, 0x4a, 0xe2, 0xce, 0x49, 0x07, 0x5c, 0x08, 0x12,
+	0xb7, 0xc5, 0x15, 0x81, 0xf2, 0x38, 0xe9, 0x32, 0x18, 0x02, 0xf1, 0xad, 0xfd, 0x3f, 0xaf, 0xfe,
+	0xf9, 0xef, 0xc0, 0x7f, 0xde, 0x54, 0xc9, 0x50, 0xcc, 0x43, 0x19, 0xf7, 0x27, 0xdc, 0xf5, 0x64,
+	0x34, 0x16, 0x93, 0xde, 0x4c, 0xc9, 0x44, 0x12, 0xb8, 0x8e, 0x75, 0x3e, 0x97, 0x60, 0xf9, 0x44,
+	0xfa, 0x3c, 0x20, 0xff, 0x03, 0x8c, 0x24, 0x53, 0xbe, 0x1b, 0xb1, 0x90, 0x5b, 0x46, 0xdb, 0xe8,
+	0xd6, 0x69, 0x1d, 0x15, 0x87, 0x85, 0x9c, 0x10, 0xa8, 0x60, 0xa0, 0x84, 0x01, 0xfc, 0x4d, 0xee,
+	0x42, 0x23, 0xe1, 0x71, 0xe2, 0xc6, 0x73, 0x91, 0xf0, 0xd8, 0x2a, 0xb7, 0xcb, 0xdd, 0x3a, 0x85,
+	0x54, 0x3a, 0x43, 0x85, 0x3c, 0x80, 0x35, 0xef, 0xd2, 0xc5, 0x1c, 0x1e, 0xb1, 0x51, 0xc0, 0x7d,
+	0xab, 0xd2, 0x36, 0xba, 0x26, 0x5d, 0xf1, 0x2e, 0xcf, 0x79, 0x9c, 0xd8, 0x5a, 0x24, 0x4f, 0x61,
+	0x53, 0xf1, 0x80, 0xb3, 0x98, 0xbb, 0xa3, 0xb9, 0x08, 0x7c, 0xae, 0x74, 0xd1, 0x4c, 0xca, 0xc0,
+	0x5a, 0xc6, 0x89, 0x1b, 0x59, 0xc2, 0x50, 0xc7, 0xd3, 0xea, 0x53, 0x29, 0x03, 0xb2, 0x09, 0xa6,
+	0x5e, 0x5b, 0xf8, 0x56, 0xb5, 0x6d, 0x74, 0xcb, 0xb4, 0x86, 0xff, 0x8f, 0x7c, 0xb2, 0x05, 0x75,
+	0x11, 0xbb, 0xcc, 0x4b, 0xc4, 0x15, 0xb7, 0x6a, 0x38, 0xd7, 0x14, 0xf1, 0x00, 0xff, 0xa7, 0xc7,
+	0x9d, 0x7e, 0x10, 0xbe, 0x1b, 0xb2, 0xc4, 0x9b, 0x5a, 0xa6, 0x3e, 0x6e, 0xaa, 0x9c, 0xa4, 0x42,
+	0xe7, 0x4b, 0x09, 0xda, 0x94, 0x8f, 0xb9, 0xe2, 0x91, 0xc7, 0x87, 0x69, 0xc3, 0x8b, 0x48, 0x8c,
+	0x05, 0xf7, 0x71, 0xfe, 0x73, 0xc4, 0xb9, 0x60, 0x62, 0x14, 0x98, 0x3c, 0x84, 0x75, 0x95, 0xd7,
+	0xb9, 0x05, 0xa0, 0x9a, 0x1b, 0x51, 0x37, 0x7a, 0x22, 0xd9, 0x5d, 0xa8, 0x30, 0xe5, 0x4d, 0xad,
+	0x72, 0xdb, 0xe8, 0xae, 0xee, 0x59, 0xbd, 0xeb, 0xdb, 0xe9, 0x0d, 0x94, 0x37, 0x15, 0x09, 0xf7,
+	0x92, 0xb9, 0xe2, 0x14, 0xb3, 0xc8, 0x23, 0xa8, 0x65, 0x88, 0x10, 0xe5, 0xea, 0xde, 0xbf, 0xc5,
+	0x82, 0x9c, 0xce, 0xa7, 0x19, 0xa7, 0x79, 0x1e, 0xe9, 0x40, 0x93, 0x7f, 0x9c, 0x71, 0x25, 0x42,
+	0x1e, 0x25, 0x4c, 0x03, 0x35, 0xe9, 0x0d, 0x8d, 0x6c, 0x43, 0x35, 0x4c, 0x6d, 0x10, 0x5b, 0xd5,
+	0x76, 0xb9, 0xdb, 0xd8, 0xfb, 0xa7, 0xd8, 0x15, 0x0d, 0x42, 0xb3, 0x84, 0xce, 0x57, 0x03, 0xaa,
+	0x19, 0x80, 0xc2, 0x32, 0xc6, 0x5f, 0x2e, 0x53, 0xba, 0x65, 0x99, 0x7b, 0xd0, 0x0c, 0x38, 0x4b,
+	0x5d, 0x80, 0x00, 0x91, 0x8c, 0x49, 0x1b, 0x5a, 0x43, 0x70, 0xa9, 0xf5, 0x34, 0xdc, 0x89, 0x92,
+	0xf3, 0x19, 0xa2, 0xa8, 0x53, 0x6d, 0xe0, 0xc3, 0x54, 0x59, 0x50, 0x5d, 0xfe, 0x13, 0xaa, 0x1d,
+	0x07, 0x00, 0xb7, 0xd5, 0xcd, 0x6f, 0xbb, 0xd7, 0x5d, 0xa8, 0xe9, 0x47, 0x14, 0x5b, 0x25, 0x24,
+	0x44, 0x8a, 0x2d, 0x35, 0x0f, 0x9a, 0xa7, 0x74, 0xbe, 0x19, 0x60, 0x1e, 0xda, 0x19, 0xa5, 0x6d,
+	0x68, 0x85, 0x3c, 0x61, 0x3e, 0x4b, 0x98, 0x7b, 0xc5, 0x55, 0x2c, 0x64, 0x94, 0xb5, 0x5e, 0xcb,
+	0xf5, 0xd7, 0x5a, 0x26, 0x3d, 0xa8, 0xe2, 0x19, 0xf2, 0x21, 0x1b, 0x3f, 0xf1, 0xc4, 0x0d, 0x69,
+	0x96, 0x45, 0xee, 0xc3, 0xea, 0xe2, 0xe1, 0x28, 0x16, 0x65, 0x2e, 0x32, 0xe9, 0x4a, 0xfe, 0x5a,
+	0x50, 0x24, 0x97, 0x70, 0xe7, 0x47, 0x53, 0xce, 0xb5, 0x9d, 0xf5, 0x7b, 0x8b, 0xad, 0x0a, 0x8e,
+	0xdb, 0x2d, 0x8e, 0xfb, 0x9d, 0xfd, 0xe9, 0x96, 0xfa, 0x65, 0x46, 0xbc, 0xb3, 0x0f, 0x8d, 0xc2,
+	0xfd, 0x13, 0x0b, 0xd6, 0x2f, 0x9c, 0x97, 0xce, 0xab, 0x37, 0x8e, 0x3b, 0xbc, 0x38, 0x3a, 0x7e,
+	0x61, 0x53, 0xf7, 0xfc, 0xdd, 0xa9, 0xdd, 0x5a, 0x22, 0x0d, 0xa8, 0x51, 0xfb, 0xd8, 0x1e, 0x9c,
+	0xd9, 0x2d, 0x63, 0xe7, 0x19, 0x34, 0x8b, 0xb7, 0x93, 0x06, 0xb3, 0xb2, 0xd6, 0x12, 0x69, 0x41,
+	0xf3, 0xed, 0x93, 0x03, 0xf7, 0xc8, 0x39, 0xb7, 0xa9, 0x33, 0x38, 0x6e, 0x19, 0xa9, 0x32, 0xa0,
+	0x27, 0xd7, 0x4a, 0x69, 0x78, 0xf0, 0x7e, 0x7f, 0x22, 0x17, 0xa7, 0xe8, 0x49, 0x35, 0xe9, 0x17,
+	0xbe, 0x84, 0x22, 0x1a, 0x2b, 0xd6, 0xc7, 0xaf, 0x60, 0x7f, 0x22, 0x0b, 0x91, 0x51, 0x15, 0xc5,
+	0xc7, 0xdf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xea, 0x80, 0x7a, 0xbb, 0x38, 0x05, 0x00, 0x00,
+}
diff --git a/src/chromiumos/ge_config.proto b/src/chromiumos/ge_config.proto
new file mode 100644
index 0000000..3fb3360
--- /dev/null
+++ b/src/chromiumos/ge_config.proto
@@ -0,0 +1,107 @@
+// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+syntax = "proto3";
+
+package chromiumos;
+
+option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromiumos";
+
+// ***DO NOT IMPORT ANY FIELDS IN THIS PROTO.***
+// This file is copied from GoldenEye's original proto.
+// google3/java/com/google/chrome/crosbuilds/common/proto/crosbuilds.proto
+// CI has no plans to support these messages and want to keep them separate
+// from rest of the protos. This whole file is only used to decode config
+// from GE.
+
+message Model {
+  // The board name for this model.
+  string board_name = 1;
+
+  // The name of the model.
+  string name = 2;
+
+  // Defines which test suites should actually be run for a given model
+  // when the release builder is setting up the hardware tests.
+  repeated string test_suites = 3;
+
+  // Defines whether presubmit hardware tests should be run against a given
+  // model as part of the commit queue.
+  bool cq_test_enabled = 4;
+
+  // Defines the test pool that will be scheduled against for any HW tests
+  // executed against the given model.
+  string release_builder_test_pool = 5;
+
+  // The GoldenEye ID for the board of this model.
+  // If the board does not exist, the field value will be 0.
+  int64 board_id = 6;
+
+  bool is_active = 7;
+
+  // Hardware match for the model.
+  string hwid_match = 8;
+}
+
+// Enum for various type of builders
+enum BuilderType {
+  UNKNOWN_BUILDER_TYPE = 0;
+  RELEASE = 1;
+}
+
+enum Architecture {
+  UNKNOWN = 0;
+  X86_INTERNAL = 1;
+  ARM_INTERNAL = 2;
+}
+
+// Configuration required by BuildBot in order to generate a unified release
+// builder with the appropriate model specific hardware test coverage.
+// For context, see: go/cros-unibuild-hw-test
+message ReferenceBoardUnifiedBuildConfig {
+  // The name of the build that will be created by BuildBot.
+  string name = 1;
+
+  // The name of the reference board this unified build is based upon.
+  string reference_board_name = 2;
+
+  // The instruction set architecture of the reference board.
+  Architecture arch = 3;
+
+  // Whether this is a release build or not.
+  BuilderType builder = 4;
+
+  // Whether this build is considered experimental only.
+  bool experimental = 5;
+
+  // The list of models that are based on the given reference board
+  // and supported as part of the unified build.
+  repeated Model models = 6;
+}
+
+// Message to represent a build config for a given builder
+message Config {
+  BuilderType builder = 1;
+  bool experimental = 2;
+  bool leader_board = 3;
+  string board_group = 4;
+
+  Architecture arch = 5;
+}
+
+// Message to represent a board in build configuration
+message BuildBoard {
+  string name = 1;
+  repeated Config configs = 2;
+}
+
+// Message to represent a build configuration.
+// The JSON file from GE is this proto.
+message GEConfig {
+    string metadata_version = 1;
+    repeated BuildBoard boards = 2;
+    bool release_branch = 3;
+    repeated ReferenceBoardUnifiedBuildConfig reference_board_unified_builds = 4;
+}
+