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

package phosphorus

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	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

// Values should be consistent with https://aip.dev/216
type PrejobResponse_State int32

const (
	// Should not be used.
	PrejobResponse_STATE_UNSPECIFIED PrejobResponse_State = 0
	// The prejob succeeded.
	//
	// Some prejob failures may not be detectable during execution. These
	// failures will be detected when parsing results off the prejob logs in a
	// later step of test_runner.
	PrejobResponse_SUCCEEDED PrejobResponse_State = 1
	// The prejob failed.
	PrejobResponse_FAILED PrejobResponse_State = 2
	// The prejob hit the requested timeout.
	PrejobResponse_TIMED_OUT PrejobResponse_State = 3
	// The prejob was aborted externally.
	PrejobResponse_ABORTED PrejobResponse_State = 4
)

var PrejobResponse_State_name = map[int32]string{
	0: "STATE_UNSPECIFIED",
	1: "SUCCEEDED",
	2: "FAILED",
	3: "TIMED_OUT",
	4: "ABORTED",
}

var PrejobResponse_State_value = map[string]int32{
	"STATE_UNSPECIFIED": 0,
	"SUCCEEDED":         1,
	"FAILED":            2,
	"TIMED_OUT":         3,
	"ABORTED":           4,
}

func (x PrejobResponse_State) String() string {
	return proto.EnumName(PrejobResponse_State_name, int32(x))
}

func (PrejobResponse_State) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_5d406d24cdb4ff2a, []int{1, 0}
}

// PrejobRequest defines the input of `phosphorus prejob`.
type PrejobRequest struct {
	Config              *Config           `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	DutHostname         string            `protobuf:"bytes,2,opt,name=dut_hostname,json=dutHostname,proto3" json:"dut_hostname,omitempty"`
	ProvisionableLabels map[string]string `protobuf:"bytes,3,rep,name=provisionable_labels,json=provisionableLabels,proto3" json:"provisionable_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Do not use.
	// What needs to be installed onto the DUT at the end of prejob, e.g.
	// "cros-version": "reef-release/R77-12345.0.0".
	DesiredProvisionableLabels map[string]string `protobuf:"bytes,4,rep,name=desired_provisionable_labels,json=desiredProvisionableLabels,proto3" json:"desired_provisionable_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// What is installed on the DUT before the prejob, e.g.
	// "cros-version": "reef-release/R77-12345.0.0".
	ExistingProvisionableLabels map[string]string `protobuf:"bytes,5,rep,name=existing_provisionable_labels,json=existingProvisionableLabels,proto3" json:"existing_provisionable_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// Hard deadline for execution.
	//
	// All prejob execution should abort beyond this deadline.
	Deadline             *timestamp.Timestamp `protobuf:"bytes,6,opt,name=deadline,proto3" json:"deadline,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

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

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

var xxx_messageInfo_PrejobRequest proto.InternalMessageInfo

func (m *PrejobRequest) GetConfig() *Config {
	if m != nil {
		return m.Config
	}
	return nil
}

func (m *PrejobRequest) GetDutHostname() string {
	if m != nil {
		return m.DutHostname
	}
	return ""
}

// Deprecated: Do not use.
func (m *PrejobRequest) GetProvisionableLabels() map[string]string {
	if m != nil {
		return m.ProvisionableLabels
	}
	return nil
}

func (m *PrejobRequest) GetDesiredProvisionableLabels() map[string]string {
	if m != nil {
		return m.DesiredProvisionableLabels
	}
	return nil
}

func (m *PrejobRequest) GetExistingProvisionableLabels() map[string]string {
	if m != nil {
		return m.ExistingProvisionableLabels
	}
	return nil
}

func (m *PrejobRequest) GetDeadline() *timestamp.Timestamp {
	if m != nil {
		return m.Deadline
	}
	return nil
}

// PrejobResponse defines the output of `phosphorus prejob`.
type PrejobResponse struct {
	// `phosphorus prejob` exits with exit code 0 unless there is an
	// infrastructure failure. When the exit code is 0, `state` indicates the
	// best known state of the prejob execution (see comments on State enum).
	State                PrejobResponse_State `protobuf:"varint,1,opt,name=state,proto3,enum=test_platform.phosphorus.PrejobResponse_State" json:"state,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

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

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

var xxx_messageInfo_PrejobResponse proto.InternalMessageInfo

func (m *PrejobResponse) GetState() PrejobResponse_State {
	if m != nil {
		return m.State
	}
	return PrejobResponse_STATE_UNSPECIFIED
}

func init() {
	proto.RegisterEnum("test_platform.phosphorus.PrejobResponse_State", PrejobResponse_State_name, PrejobResponse_State_value)
	proto.RegisterType((*PrejobRequest)(nil), "test_platform.phosphorus.PrejobRequest")
	proto.RegisterMapType((map[string]string)(nil), "test_platform.phosphorus.PrejobRequest.DesiredProvisionableLabelsEntry")
	proto.RegisterMapType((map[string]string)(nil), "test_platform.phosphorus.PrejobRequest.ExistingProvisionableLabelsEntry")
	proto.RegisterMapType((map[string]string)(nil), "test_platform.phosphorus.PrejobRequest.ProvisionableLabelsEntry")
	proto.RegisterType((*PrejobResponse)(nil), "test_platform.phosphorus.PrejobResponse")
}

func init() {
	proto.RegisterFile("test_platform/phosphorus/prejob.proto", fileDescriptor_5d406d24cdb4ff2a)
}

var fileDescriptor_5d406d24cdb4ff2a = []byte{
	// 518 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdf, 0x8a, 0xd3, 0x40,
	0x14, 0xc6, 0x4d, 0xbb, 0xad, 0xee, 0xa9, 0xbb, 0xc4, 0x71, 0x85, 0x10, 0x95, 0xad, 0x05, 0xa1,
	0x57, 0x13, 0xa8, 0x20, 0x8b, 0x57, 0xb6, 0xcd, 0xd4, 0x2d, 0xec, 0x9f, 0x92, 0xa6, 0x37, 0xde,
	0x84, 0xb4, 0x99, 0xa6, 0xd1, 0x24, 0x27, 0x66, 0x26, 0xab, 0xfb, 0x08, 0x82, 0xef, 0xe0, 0x13,
	0xf8, 0x8e, 0xd2, 0x49, 0xab, 0x2e, 0x6e, 0xe8, 0xee, 0x5d, 0x4e, 0xe6, 0x3b, 0xdf, 0xf9, 0x71,
	0xe6, 0x63, 0xe0, 0xb5, 0xe4, 0x42, 0x7a, 0x59, 0xec, 0xcb, 0x25, 0xe6, 0x89, 0x95, 0xad, 0x50,
	0x64, 0x2b, 0xcc, 0x0b, 0x61, 0x65, 0x39, 0xff, 0x84, 0x73, 0x9a, 0xe5, 0x28, 0x91, 0x18, 0x37,
	0x64, 0xf4, 0xaf, 0xcc, 0x3c, 0x0e, 0x11, 0xc3, 0x98, 0x5b, 0x4a, 0x37, 0x2f, 0x96, 0x96, 0x8c,
	0x12, 0x2e, 0xa4, 0x9f, 0x64, 0x65, 0xab, 0x59, 0x3d, 0x61, 0x81, 0x49, 0x82, 0x69, 0x29, 0xeb,
	0xfc, 0x6c, 0xc2, 0xc1, 0x44, 0x8d, 0x74, 0xf8, 0x97, 0x82, 0x0b, 0x49, 0x4e, 0xa0, 0xb9, 0xc0,
	0x74, 0x19, 0x85, 0x86, 0xd6, 0xd6, 0xba, 0xad, 0x5e, 0x9b, 0x56, 0x41, 0xd0, 0xa1, 0xd2, 0x39,
	0x1b, 0x3d, 0x79, 0x05, 0x8f, 0x83, 0x42, 0x7a, 0x2b, 0x14, 0x32, 0xf5, 0x13, 0x6e, 0xd4, 0xda,
	0x5a, 0x77, 0xdf, 0x69, 0x05, 0x85, 0x3c, 0xdd, 0xfc, 0x22, 0x5f, 0xe1, 0x28, 0xcb, 0xf1, 0x2a,
	0x12, 0x11, 0xa6, 0xfe, 0x3c, 0xe6, 0x5e, 0xec, 0xcf, 0x79, 0x2c, 0x8c, 0x7a, 0xbb, 0xde, 0x6d,
	0xf5, 0xde, 0x57, 0x8f, 0xba, 0xc1, 0x48, 0x27, 0xff, 0x7a, 0x9c, 0x29, 0x0b, 0x96, 0xca, 0xfc,
	0x7a, 0x50, 0x33, 0x34, 0xe7, 0x69, 0xf6, 0xff, 0x29, 0xf9, 0xae, 0xc1, 0x8b, 0x80, 0x8b, 0x28,
	0xe7, 0x81, 0x77, 0x2b, 0xc1, 0x9e, 0x22, 0xf8, 0x70, 0x57, 0x02, 0xbb, 0xf4, 0xaa, 0x02, 0x71,
	0xcc, 0xa0, 0x52, 0x40, 0x7e, 0x68, 0xf0, 0x92, 0x7f, 0x8b, 0x84, 0x8c, 0xd2, 0xf0, 0x76, 0x98,
	0x86, 0x82, 0x39, 0xbd, 0x2b, 0x0c, 0xdb, 0x98, 0x55, 0xd2, 0x3c, 0xe7, 0xd5, 0x0a, 0xf2, 0x16,
	0x1e, 0x05, 0xdc, 0x0f, 0xe2, 0x28, 0xe5, 0x46, 0x53, 0x5d, 0xb9, 0x49, 0xcb, 0x74, 0xd1, 0x6d,
	0xba, 0xa8, 0xbb, 0x4d, 0x97, 0xf3, 0x47, 0x6b, 0x8e, 0xc0, 0xa8, 0x1a, 0x48, 0x74, 0xa8, 0x7f,
	0xe6, 0xd7, 0x2a, 0x41, 0xfb, 0xce, 0xfa, 0x93, 0x1c, 0x41, 0xe3, 0xca, 0x8f, 0x8b, 0x6d, 0x2a,
	0xca, 0xe2, 0x5d, 0xed, 0x44, 0x33, 0xcf, 0xe1, 0x78, 0xc7, 0x36, 0xef, 0x65, 0x77, 0x01, 0xed,
	0x5d, 0xfb, 0xb8, 0x8f, 0x5f, 0xe7, 0x97, 0x06, 0x87, 0xdb, 0x75, 0x8b, 0x0c, 0x53, 0xc1, 0x89,
	0x0d, 0x0d, 0x21, 0x7d, 0xc9, 0x95, 0xc1, 0x61, 0x8f, 0xee, 0xbe, 0xa7, 0xb2, 0x91, 0x4e, 0xd7,
	0x5d, 0x4e, 0xd9, 0xdc, 0x99, 0x41, 0x43, 0xd5, 0xe4, 0x19, 0x3c, 0x99, 0xba, 0x7d, 0x97, 0x79,
	0xb3, 0x8b, 0xe9, 0x84, 0x0d, 0xc7, 0xa3, 0x31, 0xb3, 0xf5, 0x07, 0xe4, 0x00, 0xf6, 0xa7, 0xb3,
	0xe1, 0x90, 0x31, 0x9b, 0xd9, 0xba, 0x46, 0x00, 0x9a, 0xa3, 0xfe, 0xf8, 0x8c, 0xd9, 0x7a, 0x6d,
	0x7d, 0xe4, 0x8e, 0xcf, 0x99, 0xed, 0x5d, 0xce, 0x5c, 0xbd, 0x4e, 0x5a, 0xf0, 0xb0, 0x3f, 0xb8,
	0x74, 0x5c, 0x66, 0xeb, 0x7b, 0x03, 0xfb, 0xe3, 0x20, 0x44, 0xba, 0x58, 0xe5, 0x98, 0x44, 0x45,
	0x42, 0x31, 0x0f, 0xad, 0x6d, 0x81, 0xc2, 0x8a, 0xd2, 0x65, 0xee, 0x97, 0xaf, 0x86, 0x15, 0xa2,
	0x55, 0xf5, 0x48, 0xcc, 0x9b, 0x4a, 0xf2, 0xe6, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x12, 0x53,
	0x4d, 0xf3, 0xa9, 0x04, 0x00, 0x00,
}
