// Code generated by protoc-gen-go. DO NOT EDIT.
// source: test_platform/skylab_test_runner/config.proto

package skylab_test_runner

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

// Config defines configuration parameters of skylab_test_runner.
type Config struct {
	Lab                  *Config_Lab     `protobuf:"bytes,1,opt,name=lab,proto3" json:"lab,omitempty"`
	Harness              *Config_Harness `protobuf:"bytes,2,opt,name=harness,proto3" json:"harness,omitempty"`
	Output               *Config_Output  `protobuf:"bytes,3,opt,name=output,proto3" json:"output,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_b2c5f9be4f684081, []int{0}
}

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) GetLab() *Config_Lab {
	if m != nil {
		return m.Lab
	}
	return nil
}

func (m *Config) GetHarness() *Config_Harness {
	if m != nil {
		return m.Harness
	}
	return nil
}

func (m *Config) GetOutput() *Config_Output {
	if m != nil {
		return m.Output
	}
	return nil
}

// Lab defines configuration parameters related to the lab and the lab
// platform services.
type Config_Lab struct {
	// Admin service host, e.g. foo.appspot.com.
	AdminService string `protobuf:"bytes,1,opt,name=admin_service,json=adminService,proto3" json:"admin_service,omitempty"`
	// Inventory V2 service host, e.g. cros-lab-inventory.appspot.com.
	CrosInventoryService string   `protobuf:"bytes,2,opt,name=cros_inventory_service,json=crosInventoryService,proto3" json:"cros_inventory_service,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Lab) Reset()         { *m = Config_Lab{} }
func (m *Config_Lab) String() string { return proto.CompactTextString(m) }
func (*Config_Lab) ProtoMessage()    {}
func (*Config_Lab) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 0}
}

func (m *Config_Lab) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Lab.Unmarshal(m, b)
}
func (m *Config_Lab) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Lab.Marshal(b, m, deterministic)
}
func (m *Config_Lab) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Lab.Merge(m, src)
}
func (m *Config_Lab) XXX_Size() int {
	return xxx_messageInfo_Config_Lab.Size(m)
}
func (m *Config_Lab) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Lab.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Lab proto.InternalMessageInfo

func (m *Config_Lab) GetAdminService() string {
	if m != nil {
		return m.AdminService
	}
	return ""
}

func (m *Config_Lab) GetCrosInventoryService() string {
	if m != nil {
		return m.CrosInventoryService
	}
	return ""
}

// Harness defines configuration parameters related to the test harness
// (autotest, tast, etc).
type Config_Harness struct {
	// Autotest directory inside the drone container,
	// e.g. "/usr/local/autotest".
	AutotestDir string `protobuf:"bytes,1,opt,name=autotest_dir,json=autotestDir,proto3" json:"autotest_dir,omitempty"`
	// Subdirectory, as relative path from the autotest results directory,
	// to use for synchronous offloads
	SynchOffloadSubdir   string   `protobuf:"bytes,2,opt,name=synch_offload_subdir,json=synchOffloadSubdir,proto3" json:"synch_offload_subdir,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Harness) Reset()         { *m = Config_Harness{} }
func (m *Config_Harness) String() string { return proto.CompactTextString(m) }
func (*Config_Harness) ProtoMessage()    {}
func (*Config_Harness) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 1}
}

func (m *Config_Harness) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Harness.Unmarshal(m, b)
}
func (m *Config_Harness) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Harness.Marshal(b, m, deterministic)
}
func (m *Config_Harness) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Harness.Merge(m, src)
}
func (m *Config_Harness) XXX_Size() int {
	return xxx_messageInfo_Config_Harness.Size(m)
}
func (m *Config_Harness) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Harness.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Harness proto.InternalMessageInfo

func (m *Config_Harness) GetAutotestDir() string {
	if m != nil {
		return m.AutotestDir
	}
	return ""
}

func (m *Config_Harness) GetSynchOffloadSubdir() string {
	if m != nil {
		return m.SynchOffloadSubdir
	}
	return ""
}

// Output defines parameters around how the task will deliver output to
// the callers, e.g. Google Storage bucket.
type Config_Output struct {
	GsRootDir            string   `protobuf:"bytes,1,opt,name=gs_root_dir,json=gsRootDir,proto3" json:"gs_root_dir,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Output) Reset()         { *m = Config_Output{} }
func (m *Config_Output) String() string { return proto.CompactTextString(m) }
func (*Config_Output) ProtoMessage()    {}
func (*Config_Output) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 2}
}

func (m *Config_Output) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Output.Unmarshal(m, b)
}
func (m *Config_Output) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Output.Marshal(b, m, deterministic)
}
func (m *Config_Output) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Output.Merge(m, src)
}
func (m *Config_Output) XXX_Size() int {
	return xxx_messageInfo_Config_Output.Size(m)
}
func (m *Config_Output) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Output.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Output proto.InternalMessageInfo

func (m *Config_Output) GetGsRootDir() string {
	if m != nil {
		return m.GsRootDir
	}
	return ""
}

func init() {
	proto.RegisterType((*Config)(nil), "test_platform.skylab_test_runner.Config")
	proto.RegisterType((*Config_Lab)(nil), "test_platform.skylab_test_runner.Config.Lab")
	proto.RegisterType((*Config_Harness)(nil), "test_platform.skylab_test_runner.Config.Harness")
	proto.RegisterType((*Config_Output)(nil), "test_platform.skylab_test_runner.Config.Output")
}

func init() {
	proto.RegisterFile("test_platform/skylab_test_runner/config.proto", fileDescriptor_b2c5f9be4f684081)
}

var fileDescriptor_b2c5f9be4f684081 = []byte{
	// 332 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x4b, 0xc3, 0x30,
	0x14, 0xc6, 0xd9, 0x0a, 0x1d, 0xcb, 0xe6, 0x25, 0x0c, 0x19, 0x3b, 0xc8, 0xd4, 0xcb, 0x0e, 0x9a,
	0x0c, 0xf5, 0xec, 0x41, 0x05, 0x75, 0x0c, 0x06, 0xdd, 0xcd, 0x83, 0x31, 0xed, 0xda, 0x2e, 0xd8,
	0xe6, 0x8d, 0x97, 0x74, 0xd0, 0x3f, 0xd1, 0xff, 0x4a, 0x9a, 0xb6, 0xa2, 0x78, 0xd8, 0x8e, 0xf9,
	0xbe, 0xef, 0xf7, 0xe5, 0x3d, 0x78, 0xe4, 0xda, 0xc6, 0xc6, 0x8a, 0x5d, 0x26, 0x6d, 0x02, 0x98,
	0x73, 0xf3, 0x59, 0x66, 0x32, 0x14, 0x4e, 0xc4, 0x42, 0xeb, 0x18, 0x79, 0x04, 0x3a, 0x51, 0x29,
	0xdb, 0x21, 0x58, 0xa0, 0xd3, 0x3f, 0x71, 0xf6, 0x3f, 0x7e, 0xf1, 0xe5, 0x11, 0xff, 0xd1, 0x21,
	0xf4, 0x9e, 0x78, 0x99, 0x0c, 0xc7, 0x9d, 0x69, 0x67, 0x36, 0xb8, 0xb9, 0x62, 0x87, 0x50, 0x56,
	0x63, 0x6c, 0x29, 0xc3, 0xa0, 0x02, 0xe9, 0x82, 0xf4, 0xb6, 0x12, 0x75, 0x6c, 0xcc, 0xb8, 0xeb,
	0x3a, 0xe6, 0x47, 0x77, 0xbc, 0xd4, 0x5c, 0xd0, 0x16, 0xd0, 0x67, 0xe2, 0x43, 0x61, 0x77, 0x85,
	0x1d, 0x7b, 0xae, 0x8a, 0x1f, 0x5d, 0xb5, 0x72, 0x58, 0xd0, 0xe0, 0x93, 0x0f, 0xe2, 0x2d, 0x65,
	0x48, 0x2f, 0xc9, 0x89, 0xdc, 0xe4, 0x4a, 0x0b, 0x13, 0xe3, 0x5e, 0x45, 0xb1, 0xdb, 0xb2, 0x1f,
	0x0c, 0x9d, 0xb8, 0xae, 0x35, 0x7a, 0x47, 0x4e, 0x23, 0x04, 0x23, 0x94, 0xde, 0xc7, 0xda, 0x02,
	0x96, 0x3f, 0xe9, 0xae, 0x4b, 0x8f, 0x2a, 0xf7, 0xb5, 0x35, 0x1b, 0x6a, 0xf2, 0x4e, 0x7a, 0xcd,
	0xf8, 0xf4, 0x9c, 0x0c, 0x65, 0x61, 0xc1, 0x4d, 0xb5, 0x51, 0xd8, 0x7c, 0x32, 0x68, 0xb5, 0x27,
	0x85, 0x74, 0x4e, 0x46, 0xa6, 0xd4, 0xd1, 0x56, 0x40, 0x92, 0x64, 0x20, 0x37, 0xc2, 0x14, 0x61,
	0x15, 0xad, 0x7f, 0xa0, 0xce, 0x5b, 0xd5, 0xd6, 0xda, 0x39, 0x93, 0x19, 0xf1, 0xeb, 0x9d, 0xe8,
	0x19, 0x19, 0xa4, 0x46, 0x20, 0xc0, 0xef, 0xf6, 0x7e, 0x6a, 0x02, 0x80, 0xaa, 0xfb, 0x61, 0xf9,
	0xb6, 0x48, 0x81, 0x45, 0x5b, 0x84, 0x5c, 0x15, 0x39, 0x03, 0x4c, 0x79, 0xfb, 0x00, 0xc3, 0x95,
	0x4e, 0x50, 0x72, 0x77, 0x17, 0x3c, 0x05, 0x7e, 0xe8, 0x90, 0x42, 0xdf, 0x45, 0x6f, 0xbf, 0x03,
	0x00, 0x00, 0xff, 0xff, 0x6a, 0x0d, 0x2d, 0x0a, 0x73, 0x02, 0x00, 0x00,
}
