// 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.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0-devel
// 	protoc        v3.6.1
// source: uprev/build_parallels_image/provision.proto

package build_parallels_image

import (
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// ProvisionRequest defines the input of `phosphorus build-parallels-image-provision`.
type ProvisionRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Config *Config `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	// DUT hostname.
	DutName string `protobuf:"bytes,2,opt,name=dut_name,json=dutName,proto3" json:"dut_name,omitempty"`
	// The Google Storage path (prefix) where images are located. For example,
	// 'gs://chromeos-image-archive/eve-release/R86-13380.0.0'.
	ImageGsPath string `protobuf:"bytes,3,opt,name=image_gs_path,json=imageGsPath,proto3" json:"image_gs_path,omitempty"`
	// Hard deadline for execution.
	//
	// All provisioning should abort beyond this deadline.
	Deadline *timestamp.Timestamp `protobuf:"bytes,4,opt,name=deadline,proto3" json:"deadline,omitempty"`
}

func (x *ProvisionRequest) Reset() {
	*x = ProvisionRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_uprev_build_parallels_image_provision_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ProvisionRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProvisionRequest) ProtoMessage() {}

func (x *ProvisionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_uprev_build_parallels_image_provision_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProvisionRequest.ProtoReflect.Descriptor instead.
func (*ProvisionRequest) Descriptor() ([]byte, []int) {
	return file_uprev_build_parallels_image_provision_proto_rawDescGZIP(), []int{0}
}

func (x *ProvisionRequest) GetConfig() *Config {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ProvisionRequest) GetDutName() string {
	if x != nil {
		return x.DutName
	}
	return ""
}

func (x *ProvisionRequest) GetImageGsPath() string {
	if x != nil {
		return x.ImageGsPath
	}
	return ""
}

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

var File_uprev_build_parallels_image_provision_proto protoreflect.FileDescriptor

var file_uprev_build_parallels_image_provision_proto_rawDesc = []byte{
	0x0a, 0x2b, 0x75, 0x70, 0x72, 0x65, 0x76, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x61,
	0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x70, 0x72,
	0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x75,
	0x70, 0x72, 0x65, 0x76, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c,
	0x6c, 0x65, 0x6c, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x75, 0x70, 0x72,
	0x65, 0x76, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65,
	0x6c, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc6, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x75, 0x70, 0x72,
	0x65, 0x76, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65,
	0x6c, 0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x75, 0x74, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x75, 0x74, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x73, 0x5f, 0x70,
	0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65,
	0x47, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69,
	0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x47,
	0x5a, 0x45, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
	0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x69, 0x6e, 0x66,
	0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x75, 0x70, 0x72, 0x65,
	0x76, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c,
	0x73, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_uprev_build_parallels_image_provision_proto_rawDescOnce sync.Once
	file_uprev_build_parallels_image_provision_proto_rawDescData = file_uprev_build_parallels_image_provision_proto_rawDesc
)

func file_uprev_build_parallels_image_provision_proto_rawDescGZIP() []byte {
	file_uprev_build_parallels_image_provision_proto_rawDescOnce.Do(func() {
		file_uprev_build_parallels_image_provision_proto_rawDescData = protoimpl.X.CompressGZIP(file_uprev_build_parallels_image_provision_proto_rawDescData)
	})
	return file_uprev_build_parallels_image_provision_proto_rawDescData
}

var file_uprev_build_parallels_image_provision_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_uprev_build_parallels_image_provision_proto_goTypes = []interface{}{
	(*ProvisionRequest)(nil),    // 0: uprev.build_parallels_image.ProvisionRequest
	(*Config)(nil),              // 1: uprev.build_parallels_image.Config
	(*timestamp.Timestamp)(nil), // 2: google.protobuf.Timestamp
}
var file_uprev_build_parallels_image_provision_proto_depIdxs = []int32{
	1, // 0: uprev.build_parallels_image.ProvisionRequest.config:type_name -> uprev.build_parallels_image.Config
	2, // 1: uprev.build_parallels_image.ProvisionRequest.deadline:type_name -> google.protobuf.Timestamp
	2, // [2:2] is the sub-list for method output_type
	2, // [2:2] is the sub-list for method input_type
	2, // [2:2] is the sub-list for extension type_name
	2, // [2:2] is the sub-list for extension extendee
	0, // [0:2] is the sub-list for field type_name
}

func init() { file_uprev_build_parallels_image_provision_proto_init() }
func file_uprev_build_parallels_image_provision_proto_init() {
	if File_uprev_build_parallels_image_provision_proto != nil {
		return
	}
	file_uprev_build_parallels_image_common_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_uprev_build_parallels_image_provision_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProvisionRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_uprev_build_parallels_image_provision_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_uprev_build_parallels_image_provision_proto_goTypes,
		DependencyIndexes: file_uprev_build_parallels_image_provision_proto_depIdxs,
		MessageInfos:      file_uprev_build_parallels_image_provision_proto_msgTypes,
	}.Build()
	File_uprev_build_parallels_image_provision_proto = out.File
	file_uprev_build_parallels_image_provision_proto_rawDesc = nil
	file_uprev_build_parallels_image_provision_proto_goTypes = nil
	file_uprev_build_parallels_image_provision_proto_depIdxs = nil
}
