// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v3.19.0
// source: external/nodes/nodes.proto

package nodes

import (
	context "context"
	_ "github.com/chef/automate/api/external/annotations/iam"
	query "github.com/chef/automate/api/external/common/query"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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)
)

// Return the results in ascending or descending order.
type Query_OrderType int32

const (
	Query_ASC  Query_OrderType = 0
	Query_DESC Query_OrderType = 1
)

// Enum value maps for Query_OrderType.
var (
	Query_OrderType_name = map[int32]string{
		0: "ASC",
		1: "DESC",
	}
	Query_OrderType_value = map[string]int32{
		"ASC":  0,
		"DESC": 1,
	}
)

func (x Query_OrderType) Enum() *Query_OrderType {
	p := new(Query_OrderType)
	*p = x
	return p
}

func (x Query_OrderType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Query_OrderType) Descriptor() protoreflect.EnumDescriptor {
	return file_external_nodes_nodes_proto_enumTypes[0].Descriptor()
}

func (Query_OrderType) Type() protoreflect.EnumType {
	return &file_external_nodes_nodes_proto_enumTypes[0]
}

func (x Query_OrderType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Query_OrderType.Descriptor instead.
func (Query_OrderType) EnumDescriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{3, 0}
}

type LastContactData_Status int32

const (
	LastContactData_UNKNOWN LastContactData_Status = 0
	LastContactData_PASSED  LastContactData_Status = 1
	LastContactData_FAILED  LastContactData_Status = 2
	LastContactData_SKIPPED LastContactData_Status = 3
)

// Enum value maps for LastContactData_Status.
var (
	LastContactData_Status_name = map[int32]string{
		0: "UNKNOWN",
		1: "PASSED",
		2: "FAILED",
		3: "SKIPPED",
	}
	LastContactData_Status_value = map[string]int32{
		"UNKNOWN": 0,
		"PASSED":  1,
		"FAILED":  2,
		"SKIPPED": 3,
	}
)

func (x LastContactData_Status) Enum() *LastContactData_Status {
	p := new(LastContactData_Status)
	*p = x
	return p
}

func (x LastContactData_Status) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (LastContactData_Status) Descriptor() protoreflect.EnumDescriptor {
	return file_external_nodes_nodes_proto_enumTypes[1].Descriptor()
}

func (LastContactData_Status) Type() protoreflect.EnumType {
	return &file_external_nodes_nodes_proto_enumTypes[1]
}

func (x LastContactData_Status) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use LastContactData_Status.Descriptor instead.
func (LastContactData_Status) EnumDescriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{6, 0}
}

type Id struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique node ID (UUID)
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Id) Reset() {
	*x = Id{}
	mi := &file_external_nodes_nodes_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Id) ProtoMessage() {}

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

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

func (x *Id) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type Ids struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of node UUIDs.
	Ids           []string `protobuf:"bytes,1,rep,name=ids,proto3" json:"ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Ids) Reset() {
	*x = Ids{}
	mi := &file_external_nodes_nodes_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Ids) ProtoMessage() {}

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

// Deprecated: Use Ids.ProtoReflect.Descriptor instead.
func (*Ids) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{1}
}

func (x *Ids) GetIds() []string {
	if x != nil {
		return x.Ids
	}
	return nil
}

type RerunResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RerunResponse) Reset() {
	*x = RerunResponse{}
	mi := &file_external_nodes_nodes_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*RerunResponse) ProtoMessage() {}

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

// Deprecated: Use RerunResponse.ProtoReflect.Descriptor instead.
func (*RerunResponse) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{2}
}

type Query struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Use filters to limit the set of nodes to delete.
	Filters []*query.Filter `protobuf:"bytes,20,rep,name=filters,proto3" json:"filters,omitempty"`
	Order   Query_OrderType `protobuf:"varint,21,opt,name=order,proto3,enum=chef.automate.api.nodes.v1.Query_OrderType" json:"order,omitempty"`
	// Sort the results on a specific field.
	Sort string `protobuf:"bytes,22,opt,name=sort,proto3" json:"sort,omitempty"`
	// Starting page for the results.
	Page int32 `protobuf:"varint,23,opt,name=page,proto3" json:"page,omitempty"`
	// The number of results on each page.
	PerPage       int32 `protobuf:"varint,24,opt,name=per_page,json=perPage,proto3" json:"per_page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Query) Reset() {
	*x = Query{}
	mi := &file_external_nodes_nodes_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Query) ProtoMessage() {}

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

// Deprecated: Use Query.ProtoReflect.Descriptor instead.
func (*Query) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{3}
}

func (x *Query) GetFilters() []*query.Filter {
	if x != nil {
		return x.Filters
	}
	return nil
}

func (x *Query) GetOrder() Query_OrderType {
	if x != nil {
		return x.Order
	}
	return Query_ASC
}

func (x *Query) GetSort() string {
	if x != nil {
		return x.Sort
	}
	return ""
}

func (x *Query) GetPage() int32 {
	if x != nil {
		return x.Page
	}
	return 0
}

func (x *Query) GetPerPage() int32 {
	if x != nil {
		return x.PerPage
	}
	return 0
}

// Details for ssh/winrm access of the node.
type TargetConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of credential IDs for a node.
	Secrets []string `protobuf:"bytes,20,rep,name=secrets,proto3" json:"secrets,omitempty"`
	// Node backend type (ssh, winrm, aws, ssm, azure, gcp).
	Backend string `protobuf:"bytes,22,opt,name=backend,proto3" json:"backend,omitempty"`
	// Node FQDN or IP address.
	Host string `protobuf:"bytes,23,opt,name=host,proto3" json:"host,omitempty"`
	// ssh or winrm connection port
	Port int32 `protobuf:"varint,24,opt,name=port,proto3" json:"port,omitempty"`
	// Uses `sudo` (boolean).
	Sudo bool `protobuf:"varint,26,opt,name=sudo,proto3" json:"sudo,omitempty"`
	// Check ssl (boolean).
	Ssl bool `protobuf:"varint,27,opt,name=ssl,proto3" json:"ssl,omitempty"`
	// Allow self-signed certificate (boolean).
	SelfSigned bool `protobuf:"varint,28,opt,name=self_signed,json=selfSigned,proto3" json:"self_signed,omitempty"`
	// Username from the credential ID for this node.
	User string `protobuf:"bytes,29,opt,name=user,proto3" json:"user,omitempty"`
	// Sudo options to use when accessing the node.
	SudoOptions string `protobuf:"bytes,33,opt,name=sudo_options,json=sudoOptions,proto3" json:"sudo_options,omitempty"`
	// List of hostnames (FQDN or IP address) for bulk creating nodes.
	Hosts         []string `protobuf:"bytes,40,rep,name=hosts,proto3" json:"hosts,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TargetConfig) Reset() {
	*x = TargetConfig{}
	mi := &file_external_nodes_nodes_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*TargetConfig) ProtoMessage() {}

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

// Deprecated: Use TargetConfig.ProtoReflect.Descriptor instead.
func (*TargetConfig) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{4}
}

func (x *TargetConfig) GetSecrets() []string {
	if x != nil {
		return x.Secrets
	}
	return nil
}

func (x *TargetConfig) GetBackend() string {
	if x != nil {
		return x.Backend
	}
	return ""
}

func (x *TargetConfig) GetHost() string {
	if x != nil {
		return x.Host
	}
	return ""
}

func (x *TargetConfig) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *TargetConfig) GetSudo() bool {
	if x != nil {
		return x.Sudo
	}
	return false
}

func (x *TargetConfig) GetSsl() bool {
	if x != nil {
		return x.Ssl
	}
	return false
}

func (x *TargetConfig) GetSelfSigned() bool {
	if x != nil {
		return x.SelfSigned
	}
	return false
}

func (x *TargetConfig) GetUser() string {
	if x != nil {
		return x.User
	}
	return ""
}

func (x *TargetConfig) GetSudoOptions() string {
	if x != nil {
		return x.SudoOptions
	}
	return ""
}

func (x *TargetConfig) GetHosts() []string {
	if x != nil {
		return x.Hosts
	}
	return nil
}

// Node information.
type Node struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique node ID (UUID).
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// User-specified node name.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Node platform.
	Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"`
	// Node platform version.
	PlatformVersion string `protobuf:"bytes,4,opt,name=platform_version,json=platformVersion,proto3" json:"platform_version,omitempty"`
	// Node manager (automate, aws-ec2, aws-api, azure-vm, azure-api, gcp).
	Manager string `protobuf:"bytes,5,opt,name=manager,proto3" json:"manager,omitempty"`
	// Node tags.
	Tags []*query.Kv `protobuf:"bytes,20,rep,name=tags,proto3" json:"tags,omitempty"`
	// Timestamp of the last `detect` or `exec` job.
	LastContact *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=last_contact,json=lastContact,proto3" json:"last_contact,omitempty"`
	// Node status (unreachable, reachable, unknown).
	Status string `protobuf:"bytes,22,opt,name=status,proto3" json:"status,omitempty"`
	// Results of the last compliance scan job for this node.
	LastJob *ResultsRow `protobuf:"bytes,23,opt,name=last_job,json=lastJob,proto3" json:"last_job,omitempty"`
	// Node configuration for ssh or winrm.
	TargetConfig *TargetConfig `protobuf:"bytes,99,opt,name=target_config,json=targetConfig,proto3" json:"target_config,omitempty"`
	// List of manager IDs for the node.
	ManagerIds []string `protobuf:"bytes,24,rep,name=manager_ids,json=managerIds,proto3" json:"manager_ids,omitempty"`
	// Last connection error received when trying to contact the node.
	ConnectionError string `protobuf:"bytes,25,opt,name=connection_error,json=connectionError,proto3" json:"connection_error,omitempty"`
	// Last known node state (running, stopped, terminated).
	State string `protobuf:"bytes,26,opt,name=state,proto3" json:"state,omitempty"`
	// Prefix for node name. The full node name is the prefix + the host.
	NamePrefix string `protobuf:"bytes,27,opt,name=name_prefix,json=namePrefix,proto3" json:"name_prefix,omitempty"`
	// List of projects associated with the node.
	Projects []string `protobuf:"bytes,28,rep,name=projects,proto3" json:"projects,omitempty"`
	// Most recent node data from the last Chef Infra run results.
	RunData *LastContactData `protobuf:"bytes,29,opt,name=run_data,json=runData,proto3" json:"run_data,omitempty"`
	// Most recent compliance scan data for the node from the last InSpec scan.
	ScanData      *LastContactData `protobuf:"bytes,30,opt,name=scan_data,json=scanData,proto3" json:"scan_data,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Node) Reset() {
	*x = Node{}
	mi := &file_external_nodes_nodes_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Node) ProtoMessage() {}

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

// Deprecated: Use Node.ProtoReflect.Descriptor instead.
func (*Node) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{5}
}

func (x *Node) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Node) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Node) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *Node) GetPlatformVersion() string {
	if x != nil {
		return x.PlatformVersion
	}
	return ""
}

func (x *Node) GetManager() string {
	if x != nil {
		return x.Manager
	}
	return ""
}

func (x *Node) GetTags() []*query.Kv {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *Node) GetLastContact() *timestamppb.Timestamp {
	if x != nil {
		return x.LastContact
	}
	return nil
}

func (x *Node) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Node) GetLastJob() *ResultsRow {
	if x != nil {
		return x.LastJob
	}
	return nil
}

func (x *Node) GetTargetConfig() *TargetConfig {
	if x != nil {
		return x.TargetConfig
	}
	return nil
}

func (x *Node) GetManagerIds() []string {
	if x != nil {
		return x.ManagerIds
	}
	return nil
}

func (x *Node) GetConnectionError() string {
	if x != nil {
		return x.ConnectionError
	}
	return ""
}

func (x *Node) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

func (x *Node) GetNamePrefix() string {
	if x != nil {
		return x.NamePrefix
	}
	return ""
}

func (x *Node) GetProjects() []string {
	if x != nil {
		return x.Projects
	}
	return nil
}

func (x *Node) GetRunData() *LastContactData {
	if x != nil {
		return x.RunData
	}
	return nil
}

func (x *Node) GetScanData() *LastContactData {
	if x != nil {
		return x.ScanData
	}
	return nil
}

// Most recent node data from the latest Chef Infra run and InSpec scan.
type LastContactData struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Chef Infra run report ID or InSpec scan report ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Last node report status.
	Status LastContactData_Status `protobuf:"varint,2,opt,name=status,proto3,enum=chef.automate.api.nodes.v1.LastContactData_Status" json:"status,omitempty"`
	// Next-to-last node status report.
	PenultimateStatus LastContactData_Status `protobuf:"varint,3,opt,name=penultimate_status,json=penultimateStatus,proto3,enum=chef.automate.api.nodes.v1.LastContactData_Status" json:"penultimate_status,omitempty"`
	// Last node report endtime.
	EndTime       *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LastContactData) Reset() {
	*x = LastContactData{}
	mi := &file_external_nodes_nodes_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*LastContactData) ProtoMessage() {}

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

// Deprecated: Use LastContactData.ProtoReflect.Descriptor instead.
func (*LastContactData) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{6}
}

func (x *LastContactData) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *LastContactData) GetStatus() LastContactData_Status {
	if x != nil {
		return x.Status
	}
	return LastContactData_UNKNOWN
}

func (x *LastContactData) GetPenultimateStatus() LastContactData_Status {
	if x != nil {
		return x.PenultimateStatus
	}
	return LastContactData_UNKNOWN
}

func (x *LastContactData) GetEndTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

type Nodes struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of nodes.
	Nodes []*Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"`
	// Total number of nodes in the system.
	Total int32 `protobuf:"varint,20,opt,name=total,proto3" json:"total,omitempty"`
	// Total number of unreachable nodes in the system.
	TotalUnreachable int32 `protobuf:"varint,21,opt,name=total_unreachable,json=totalUnreachable,proto3" json:"total_unreachable,omitempty"`
	// Total number of reachable nodes in the system.
	TotalReachable int32 `protobuf:"varint,22,opt,name=total_reachable,json=totalReachable,proto3" json:"total_reachable,omitempty"`
	// Total number of unknown nodes in the system.
	TotalUnknown  int32 `protobuf:"varint,23,opt,name=total_unknown,json=totalUnknown,proto3" json:"total_unknown,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Nodes) Reset() {
	*x = Nodes{}
	mi := &file_external_nodes_nodes_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*Nodes) ProtoMessage() {}

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

// Deprecated: Use Nodes.ProtoReflect.Descriptor instead.
func (*Nodes) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{7}
}

func (x *Nodes) GetNodes() []*Node {
	if x != nil {
		return x.Nodes
	}
	return nil
}

func (x *Nodes) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

func (x *Nodes) GetTotalUnreachable() int32 {
	if x != nil {
		return x.TotalUnreachable
	}
	return 0
}

func (x *Nodes) GetTotalReachable() int32 {
	if x != nil {
		return x.TotalReachable
	}
	return 0
}

func (x *Nodes) GetTotalUnknown() int32 {
	if x != nil {
		return x.TotalUnknown
	}
	return 0
}

// Summary of the last Chef InSpec scan job run on the node.
type ResultsRow struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Unique node ID.
	NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	// Unique ID of the report generated by the InSpec scan.
	ReportId string `protobuf:"bytes,2,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"`
	// Status of the report (failed, success, skipped).
	Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"`
	// Error message returned after several failed attempts to contact a node.
	Result string `protobuf:"bytes,4,opt,name=result,proto3" json:"result,omitempty"`
	// Unique ID of the scan job that generated the report.
	JobId string `protobuf:"bytes,5,opt,name=job_id,json=jobId,proto3" json:"job_id,omitempty"`
	// Start time on the report.
	StartTime *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// End time on the report.
	EndTime       *timestamppb.Timestamp `protobuf:"bytes,21,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ResultsRow) Reset() {
	*x = ResultsRow{}
	mi := &file_external_nodes_nodes_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ResultsRow) ProtoMessage() {}

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

// Deprecated: Use ResultsRow.ProtoReflect.Descriptor instead.
func (*ResultsRow) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{8}
}

func (x *ResultsRow) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *ResultsRow) GetReportId() string {
	if x != nil {
		return x.ReportId
	}
	return ""
}

func (x *ResultsRow) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *ResultsRow) GetResult() string {
	if x != nil {
		return x.Result
	}
	return ""
}

func (x *ResultsRow) GetJobId() string {
	if x != nil {
		return x.JobId
	}
	return ""
}

func (x *ResultsRow) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *ResultsRow) GetEndTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

type BulkDeleteResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// List of deleted nodes, by name.
	Names         []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *BulkDeleteResponse) Reset() {
	*x = BulkDeleteResponse{}
	mi := &file_external_nodes_nodes_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*BulkDeleteResponse) ProtoMessage() {}

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

// Deprecated: Use BulkDeleteResponse.ProtoReflect.Descriptor instead.
func (*BulkDeleteResponse) Descriptor() ([]byte, []int) {
	return file_external_nodes_nodes_proto_rawDescGZIP(), []int{9}
}

func (x *BulkDeleteResponse) GetNames() []string {
	if x != nil {
		return x.Names
	}
	return nil
}

var File_external_nodes_nodes_proto protoreflect.FileDescriptor

const file_external_nodes_nodes_proto_rawDesc = "" +
	"\n" +
	"\x1aexternal/nodes/nodes.proto\x12\x1achef.automate.api.nodes.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a*external/annotations/iam/annotations.proto\x1a&external/common/query/parameters.proto\"\x14\n" +
	"\x02Id\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\x17\n" +
	"\x03Ids\x12\x10\n" +
	"\x03ids\x18\x01 \x03(\tR\x03ids\"\x0f\n" +
	"\rRerunResponse\"\xef\x01\n" +
	"\x05Query\x12@\n" +
	"\afilters\x18\x14 \x03(\v2&.chef.automate.api.common.query.FilterR\afilters\x12A\n" +
	"\x05order\x18\x15 \x01(\x0e2+.chef.automate.api.nodes.v1.Query.OrderTypeR\x05order\x12\x12\n" +
	"\x04sort\x18\x16 \x01(\tR\x04sort\x12\x12\n" +
	"\x04page\x18\x17 \x01(\x05R\x04page\x12\x19\n" +
	"\bper_page\x18\x18 \x01(\x05R\aperPage\"\x1e\n" +
	"\tOrderType\x12\a\n" +
	"\x03ASC\x10\x00\x12\b\n" +
	"\x04DESC\x10\x01\"\xfe\x01\n" +
	"\fTargetConfig\x12\x18\n" +
	"\asecrets\x18\x14 \x03(\tR\asecrets\x12\x18\n" +
	"\abackend\x18\x16 \x01(\tR\abackend\x12\x12\n" +
	"\x04host\x18\x17 \x01(\tR\x04host\x12\x12\n" +
	"\x04port\x18\x18 \x01(\x05R\x04port\x12\x12\n" +
	"\x04sudo\x18\x1a \x01(\bR\x04sudo\x12\x10\n" +
	"\x03ssl\x18\x1b \x01(\bR\x03ssl\x12\x1f\n" +
	"\vself_signed\x18\x1c \x01(\bR\n" +
	"selfSigned\x12\x12\n" +
	"\x04user\x18\x1d \x01(\tR\x04user\x12!\n" +
	"\fsudo_options\x18! \x01(\tR\vsudoOptions\x12\x14\n" +
	"\x05hosts\x18( \x03(\tR\x05hosts\"\xdd\x05\n" +
	"\x04Node\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x1a\n" +
	"\bplatform\x18\x03 \x01(\tR\bplatform\x12)\n" +
	"\x10platform_version\x18\x04 \x01(\tR\x0fplatformVersion\x12\x18\n" +
	"\amanager\x18\x05 \x01(\tR\amanager\x126\n" +
	"\x04tags\x18\x14 \x03(\v2\".chef.automate.api.common.query.KvR\x04tags\x12=\n" +
	"\flast_contact\x18\x15 \x01(\v2\x1a.google.protobuf.TimestampR\vlastContact\x12\x16\n" +
	"\x06status\x18\x16 \x01(\tR\x06status\x12A\n" +
	"\blast_job\x18\x17 \x01(\v2&.chef.automate.api.nodes.v1.ResultsRowR\alastJob\x12M\n" +
	"\rtarget_config\x18c \x01(\v2(.chef.automate.api.nodes.v1.TargetConfigR\ftargetConfig\x12\x1f\n" +
	"\vmanager_ids\x18\x18 \x03(\tR\n" +
	"managerIds\x12)\n" +
	"\x10connection_error\x18\x19 \x01(\tR\x0fconnectionError\x12\x14\n" +
	"\x05state\x18\x1a \x01(\tR\x05state\x12\x1f\n" +
	"\vname_prefix\x18\x1b \x01(\tR\n" +
	"namePrefix\x12\x1a\n" +
	"\bprojects\x18\x1c \x03(\tR\bprojects\x12F\n" +
	"\brun_data\x18\x1d \x01(\v2+.chef.automate.api.nodes.v1.LastContactDataR\arunData\x12H\n" +
	"\tscan_data\x18\x1e \x01(\v2+.chef.automate.api.nodes.v1.LastContactDataR\bscanData\"\xc3\x02\n" +
	"\x0fLastContactData\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12J\n" +
	"\x06status\x18\x02 \x01(\x0e22.chef.automate.api.nodes.v1.LastContactData.StatusR\x06status\x12a\n" +
	"\x12penultimate_status\x18\x03 \x01(\x0e22.chef.automate.api.nodes.v1.LastContactData.StatusR\x11penultimateStatus\x125\n" +
	"\bend_time\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\":\n" +
	"\x06Status\x12\v\n" +
	"\aUNKNOWN\x10\x00\x12\n" +
	"\n" +
	"\x06PASSED\x10\x01\x12\n" +
	"\n" +
	"\x06FAILED\x10\x02\x12\v\n" +
	"\aSKIPPED\x10\x03\"\xd0\x01\n" +
	"\x05Nodes\x126\n" +
	"\x05nodes\x18\x01 \x03(\v2 .chef.automate.api.nodes.v1.NodeR\x05nodes\x12\x14\n" +
	"\x05total\x18\x14 \x01(\x05R\x05total\x12+\n" +
	"\x11total_unreachable\x18\x15 \x01(\x05R\x10totalUnreachable\x12'\n" +
	"\x0ftotal_reachable\x18\x16 \x01(\x05R\x0etotalReachable\x12#\n" +
	"\rtotal_unknown\x18\x17 \x01(\x05R\ftotalUnknown\"\xfb\x01\n" +
	"\n" +
	"ResultsRow\x12\x17\n" +
	"\anode_id\x18\x01 \x01(\tR\x06nodeId\x12\x1b\n" +
	"\treport_id\x18\x02 \x01(\tR\breportId\x12\x16\n" +
	"\x06status\x18\x03 \x01(\tR\x06status\x12\x16\n" +
	"\x06result\x18\x04 \x01(\tR\x06result\x12\x15\n" +
	"\x06job_id\x18\x05 \x01(\tR\x05jobId\x129\n" +
	"\n" +
	"start_time\x18\x14 \x01(\v2\x1a.google.protobuf.TimestampR\tstartTime\x125\n" +
	"\bend_time\x18\x15 \x01(\v2\x1a.google.protobuf.TimestampR\aendTime\"*\n" +
	"\x12BulkDeleteResponse\x12\x14\n" +
	"\x05names\x18\x01 \x03(\tR\x05names2\xf2\n" +
	"\n" +
	"\fNodesService\x12\x89\x01\n" +
	"\x06Create\x12 .chef.automate.api.nodes.v1.Node\x1a\x1e.chef.automate.api.nodes.v1.Id\"=\x8a\xb5\x18!\n" +
	"\vinfra:nodes\x12\x12infra:nodes:create\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/api/v0/nodes\x12\x8e\x01\n" +
	"\x04Read\x12\x1e.chef.automate.api.nodes.v1.Id\x1a .chef.automate.api.nodes.v1.Node\"D\x8a\xb5\x18#\n" +
	"\x10infra:nodes:{id}\x12\x0finfra:nodes:get\x82\xd3\xe4\x93\x02\x17\x12\x15/api/v0/nodes/id/{id}\x12\x8e\x01\n" +
	"\x06Update\x12 .chef.automate.api.nodes.v1.Node\x1a\x16.google.protobuf.Empty\"J\x8a\xb5\x18&\n" +
	"\x10infra:nodes:{id}\x12\x12infra:nodes:update\x82\xd3\xe4\x93\x02\x1a:\x01*\x1a\x15/api/v0/nodes/id/{id}\x12\x89\x01\n" +
	"\x06Delete\x12\x1e.chef.automate.api.nodes.v1.Id\x1a\x16.google.protobuf.Empty\"G\x8a\xb5\x18&\n" +
	"\x10infra:nodes:{id}\x12\x12infra:nodes:delete\x82\xd3\xe4\x93\x02\x17*\x15/api/v0/nodes/id/{id}\x12\xab\x01\n" +
	"\x0eBulkDeleteById\x12\x1f.chef.automate.api.nodes.v1.Ids\x1a..chef.automate.api.nodes.v1.BulkDeleteResponse\"H\x8a\xb5\x18!\n" +
	"\vinfra:nodes\x12\x12infra:nodes:delete\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v0/nodes/delete/ids\x12\x90\x01\n" +
	"\x04List\x12!.chef.automate.api.nodes.v1.Query\x1a!.chef.automate.api.nodes.v1.Nodes\"B\x8a\xb5\x18\x1f\n" +
	"\vinfra:nodes\x12\x10infra:nodes:list\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v0/nodes/search\x12\xa0\x01\n" +
	"\x05Rerun\x12\x1e.chef.automate.api.nodes.v1.Id\x1a).chef.automate.api.nodes.v1.RerunResponse\"L\x8a\xb5\x18%\n" +
	"\x10infra:nodes:{id}\x12\x11infra:nodes:rerun\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/v0/nodes/rerun/id/{id}\x12\xa5\x01\n" +
	"\n" +
	"BulkDelete\x12!.chef.automate.api.nodes.v1.Query\x1a..chef.automate.api.nodes.v1.BulkDeleteResponse\"D\x8a\xb5\x18!\n" +
	"\vinfra:nodes\x12\x12infra:nodes:delete\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/api/v0/nodes/delete\x12\x9b\x01\n" +
	"\n" +
	"BulkCreate\x12!.chef.automate.api.nodes.v1.Nodes\x1a\x1f.chef.automate.api.nodes.v1.Ids\"I\x8a\xb5\x18!\n" +
	"\vinfra:nodes\x12\x12infra:nodes:create\x82\xd3\xe4\x93\x02\x1e:\x01*\"\x19/api/v0/nodes/bulk-createB-Z+github.com/chef/automate/api/external/nodesb\x06proto3"

var (
	file_external_nodes_nodes_proto_rawDescOnce sync.Once
	file_external_nodes_nodes_proto_rawDescData []byte
)

func file_external_nodes_nodes_proto_rawDescGZIP() []byte {
	file_external_nodes_nodes_proto_rawDescOnce.Do(func() {
		file_external_nodes_nodes_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_external_nodes_nodes_proto_rawDesc), len(file_external_nodes_nodes_proto_rawDesc)))
	})
	return file_external_nodes_nodes_proto_rawDescData
}

var file_external_nodes_nodes_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_external_nodes_nodes_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_external_nodes_nodes_proto_goTypes = []any{
	(Query_OrderType)(0),          // 0: chef.automate.api.nodes.v1.Query.OrderType
	(LastContactData_Status)(0),   // 1: chef.automate.api.nodes.v1.LastContactData.Status
	(*Id)(nil),                    // 2: chef.automate.api.nodes.v1.Id
	(*Ids)(nil),                   // 3: chef.automate.api.nodes.v1.Ids
	(*RerunResponse)(nil),         // 4: chef.automate.api.nodes.v1.RerunResponse
	(*Query)(nil),                 // 5: chef.automate.api.nodes.v1.Query
	(*TargetConfig)(nil),          // 6: chef.automate.api.nodes.v1.TargetConfig
	(*Node)(nil),                  // 7: chef.automate.api.nodes.v1.Node
	(*LastContactData)(nil),       // 8: chef.automate.api.nodes.v1.LastContactData
	(*Nodes)(nil),                 // 9: chef.automate.api.nodes.v1.Nodes
	(*ResultsRow)(nil),            // 10: chef.automate.api.nodes.v1.ResultsRow
	(*BulkDeleteResponse)(nil),    // 11: chef.automate.api.nodes.v1.BulkDeleteResponse
	(*query.Filter)(nil),          // 12: chef.automate.api.common.query.Filter
	(*query.Kv)(nil),              // 13: chef.automate.api.common.query.Kv
	(*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),         // 15: google.protobuf.Empty
}
var file_external_nodes_nodes_proto_depIdxs = []int32{
	12, // 0: chef.automate.api.nodes.v1.Query.filters:type_name -> chef.automate.api.common.query.Filter
	0,  // 1: chef.automate.api.nodes.v1.Query.order:type_name -> chef.automate.api.nodes.v1.Query.OrderType
	13, // 2: chef.automate.api.nodes.v1.Node.tags:type_name -> chef.automate.api.common.query.Kv
	14, // 3: chef.automate.api.nodes.v1.Node.last_contact:type_name -> google.protobuf.Timestamp
	10, // 4: chef.automate.api.nodes.v1.Node.last_job:type_name -> chef.automate.api.nodes.v1.ResultsRow
	6,  // 5: chef.automate.api.nodes.v1.Node.target_config:type_name -> chef.automate.api.nodes.v1.TargetConfig
	8,  // 6: chef.automate.api.nodes.v1.Node.run_data:type_name -> chef.automate.api.nodes.v1.LastContactData
	8,  // 7: chef.automate.api.nodes.v1.Node.scan_data:type_name -> chef.automate.api.nodes.v1.LastContactData
	1,  // 8: chef.automate.api.nodes.v1.LastContactData.status:type_name -> chef.automate.api.nodes.v1.LastContactData.Status
	1,  // 9: chef.automate.api.nodes.v1.LastContactData.penultimate_status:type_name -> chef.automate.api.nodes.v1.LastContactData.Status
	14, // 10: chef.automate.api.nodes.v1.LastContactData.end_time:type_name -> google.protobuf.Timestamp
	7,  // 11: chef.automate.api.nodes.v1.Nodes.nodes:type_name -> chef.automate.api.nodes.v1.Node
	14, // 12: chef.automate.api.nodes.v1.ResultsRow.start_time:type_name -> google.protobuf.Timestamp
	14, // 13: chef.automate.api.nodes.v1.ResultsRow.end_time:type_name -> google.protobuf.Timestamp
	7,  // 14: chef.automate.api.nodes.v1.NodesService.Create:input_type -> chef.automate.api.nodes.v1.Node
	2,  // 15: chef.automate.api.nodes.v1.NodesService.Read:input_type -> chef.automate.api.nodes.v1.Id
	7,  // 16: chef.automate.api.nodes.v1.NodesService.Update:input_type -> chef.automate.api.nodes.v1.Node
	2,  // 17: chef.automate.api.nodes.v1.NodesService.Delete:input_type -> chef.automate.api.nodes.v1.Id
	3,  // 18: chef.automate.api.nodes.v1.NodesService.BulkDeleteById:input_type -> chef.automate.api.nodes.v1.Ids
	5,  // 19: chef.automate.api.nodes.v1.NodesService.List:input_type -> chef.automate.api.nodes.v1.Query
	2,  // 20: chef.automate.api.nodes.v1.NodesService.Rerun:input_type -> chef.automate.api.nodes.v1.Id
	5,  // 21: chef.automate.api.nodes.v1.NodesService.BulkDelete:input_type -> chef.automate.api.nodes.v1.Query
	9,  // 22: chef.automate.api.nodes.v1.NodesService.BulkCreate:input_type -> chef.automate.api.nodes.v1.Nodes
	2,  // 23: chef.automate.api.nodes.v1.NodesService.Create:output_type -> chef.automate.api.nodes.v1.Id
	7,  // 24: chef.automate.api.nodes.v1.NodesService.Read:output_type -> chef.automate.api.nodes.v1.Node
	15, // 25: chef.automate.api.nodes.v1.NodesService.Update:output_type -> google.protobuf.Empty
	15, // 26: chef.automate.api.nodes.v1.NodesService.Delete:output_type -> google.protobuf.Empty
	11, // 27: chef.automate.api.nodes.v1.NodesService.BulkDeleteById:output_type -> chef.automate.api.nodes.v1.BulkDeleteResponse
	9,  // 28: chef.automate.api.nodes.v1.NodesService.List:output_type -> chef.automate.api.nodes.v1.Nodes
	4,  // 29: chef.automate.api.nodes.v1.NodesService.Rerun:output_type -> chef.automate.api.nodes.v1.RerunResponse
	11, // 30: chef.automate.api.nodes.v1.NodesService.BulkDelete:output_type -> chef.automate.api.nodes.v1.BulkDeleteResponse
	3,  // 31: chef.automate.api.nodes.v1.NodesService.BulkCreate:output_type -> chef.automate.api.nodes.v1.Ids
	23, // [23:32] is the sub-list for method output_type
	14, // [14:23] is the sub-list for method input_type
	14, // [14:14] is the sub-list for extension type_name
	14, // [14:14] is the sub-list for extension extendee
	0,  // [0:14] is the sub-list for field type_name
}

func init() { file_external_nodes_nodes_proto_init() }
func file_external_nodes_nodes_proto_init() {
	if File_external_nodes_nodes_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_external_nodes_nodes_proto_rawDesc), len(file_external_nodes_nodes_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   10,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_external_nodes_nodes_proto_goTypes,
		DependencyIndexes: file_external_nodes_nodes_proto_depIdxs,
		EnumInfos:         file_external_nodes_nodes_proto_enumTypes,
		MessageInfos:      file_external_nodes_nodes_proto_msgTypes,
	}.Build()
	File_external_nodes_nodes_proto = out.File
	file_external_nodes_nodes_proto_goTypes = nil
	file_external_nodes_nodes_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// NodesServiceClient is the client API for NodesService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type NodesServiceClient interface {
	// Create a Node
	//
	// Creates a node and adds it to the Chef Automate node manager.
	// Requires a FQDN or IP address, a user-specified name, and a ssh or winrm credential reference.
	// Useful for creating nodes for the purpose of running compliance scan jobs.
	//
	// Example:
	// ```
	// {
	// "name": "my-vagrant-node",
	// "manager":"automate",
	// "target_config": {
	// "backend":"ssh",
	// "host":"localhost",
	// "secrets":["b75195e5-a173-4502-9f59-d949adfe2c38"],
	// "port": 22
	// },
	// "tags": [
	// { "key":"test-node", "value":"is amazing" }
	// ]
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:create
	Create(ctx context.Context, in *Node, opts ...grpc.CallOption) (*Id, error)
	// Show Node Details
	//
	// Returns the details for a node given the node ID.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:get
	Read(ctx context.Context, in *Id, opts ...grpc.CallOption) (*Node, error)
	// Update Node
	//
	// This PUT operation overwrites ALL node details and requires the complete set of node details,
	// consisting of a FQDN or IP address, a user-specified name, and the ID for an ssh or winrm credential.
	// Substitute the desired values for the existing node details in the PUT message.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:update
	Update(ctx context.Context, in *Node, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Delete a Node
	//
	// Deletes the node with the node ID.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	Delete(ctx context.Context, in *Id, opts ...grpc.CallOption) (*emptypb.Empty, error)
	// Bulk Delete Nodes by ID
	//
	// Deletes a set of nodes given a list of IDs.
	// Invalid IDs will be ignored.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	BulkDeleteById(ctx context.Context, in *Ids, opts ...grpc.CallOption) (*BulkDeleteResponse, error)
	// List and Filter Nodes
	//
	// Makes a list of nodes.
	// Supports filtering, pagination, and sorting.
	// Adding a filter narrows the list of nodes to only those that match the filter or filters.
	// Supported filters:
	// account_id, last_contact, manager_id, manager_type, name, platform_name,
	// platform_release, region, source_id, state, statechange_timerange, status,
	// last_run_timerange, last_scan_timerange, last_run_status, last_scan_status,
	// last_run_penultimate_status, last_scan_penultimate_status
	//
	// Example:
	// ```
	// {
	// "filters":[
	// {"key": "last_scan_status", "values": ["FAILED"]},
	// {"key": "last_scan_penultimate_status", "values": ["PASSED"]},
	// {"key": "name", "values": ["MyNode*"]}
	// ],
	// "page":1, "per_page":100,
	// "sort":"status", "order":"ASC"
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:list
	List(ctx context.Context, in *Query, opts ...grpc.CallOption) (*Nodes, error)
	// List Node Status
	//
	// Use this to run an `inspec detect` job on the node, which updates the status to reflect that the node is reachable or unreachable.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:rerun
	Rerun(ctx context.Context, in *Id, opts ...grpc.CallOption) (*RerunResponse, error)
	// Bulk Delete Nodes by Filter
	//
	// Deletes a set of nodes that match a filter.
	// Available filters: account_id, last_contact, manager_id, manager_type, name, platform_name,
	// platform_release, region, source_id, state, statechange_timerange, status,
	// last_run_timerange, last_scan_timerange, last_run_status, last_scan_status,
	// last_run_penultimate_status, last_scan_penultimate_status
	//
	// Example:
	// ```
	// {"filters": [{"key": "name", "values": ["vj*"]}]}'
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	BulkDelete(ctx context.Context, in *Query, opts ...grpc.CallOption) (*BulkDeleteResponse, error)
	// Bulk Create Nodes
	//
	// Creates multiple nodes from a list of node data.
	// `hosts` field is required. Multiple hosts may be defined in this field.
	//
	// Example:
	// ```
	// {
	// "name_prefix": "000-my-ssh-node",
	// "manager":"automate",
	// "target_config": {
	// "backend":"ssh",
	// "hosts":["localhost","127.0.0.1"],
	// "secrets":["b75195e5-a173-4502-9f59-d949adfe2c38"],
	// "port": 22
	// },
	// "tags": [
	// { "key":"test-node", "value":"is-amazing" },
	// ]
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:create
	BulkCreate(ctx context.Context, in *Nodes, opts ...grpc.CallOption) (*Ids, error)
}

type nodesServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewNodesServiceClient(cc grpc.ClientConnInterface) NodesServiceClient {
	return &nodesServiceClient{cc}
}

func (c *nodesServiceClient) Create(ctx context.Context, in *Node, opts ...grpc.CallOption) (*Id, error) {
	out := new(Id)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/Create", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) Read(ctx context.Context, in *Id, opts ...grpc.CallOption) (*Node, error) {
	out := new(Node)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/Read", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) Update(ctx context.Context, in *Node, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/Update", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) Delete(ctx context.Context, in *Id, opts ...grpc.CallOption) (*emptypb.Empty, error) {
	out := new(emptypb.Empty)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/Delete", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) BulkDeleteById(ctx context.Context, in *Ids, opts ...grpc.CallOption) (*BulkDeleteResponse, error) {
	out := new(BulkDeleteResponse)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/BulkDeleteById", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) List(ctx context.Context, in *Query, opts ...grpc.CallOption) (*Nodes, error) {
	out := new(Nodes)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/List", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) Rerun(ctx context.Context, in *Id, opts ...grpc.CallOption) (*RerunResponse, error) {
	out := new(RerunResponse)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/Rerun", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) BulkDelete(ctx context.Context, in *Query, opts ...grpc.CallOption) (*BulkDeleteResponse, error) {
	out := new(BulkDeleteResponse)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/BulkDelete", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *nodesServiceClient) BulkCreate(ctx context.Context, in *Nodes, opts ...grpc.CallOption) (*Ids, error) {
	out := new(Ids)
	err := c.cc.Invoke(ctx, "/chef.automate.api.nodes.v1.NodesService/BulkCreate", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// NodesServiceServer is the server API for NodesService service.
type NodesServiceServer interface {
	// Create a Node
	//
	// Creates a node and adds it to the Chef Automate node manager.
	// Requires a FQDN or IP address, a user-specified name, and a ssh or winrm credential reference.
	// Useful for creating nodes for the purpose of running compliance scan jobs.
	//
	// Example:
	// ```
	// {
	// "name": "my-vagrant-node",
	// "manager":"automate",
	// "target_config": {
	// "backend":"ssh",
	// "host":"localhost",
	// "secrets":["b75195e5-a173-4502-9f59-d949adfe2c38"],
	// "port": 22
	// },
	// "tags": [
	// { "key":"test-node", "value":"is amazing" }
	// ]
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:create
	Create(context.Context, *Node) (*Id, error)
	// Show Node Details
	//
	// Returns the details for a node given the node ID.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:get
	Read(context.Context, *Id) (*Node, error)
	// Update Node
	//
	// This PUT operation overwrites ALL node details and requires the complete set of node details,
	// consisting of a FQDN or IP address, a user-specified name, and the ID for an ssh or winrm credential.
	// Substitute the desired values for the existing node details in the PUT message.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:update
	Update(context.Context, *Node) (*emptypb.Empty, error)
	// Delete a Node
	//
	// Deletes the node with the node ID.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	Delete(context.Context, *Id) (*emptypb.Empty, error)
	// Bulk Delete Nodes by ID
	//
	// Deletes a set of nodes given a list of IDs.
	// Invalid IDs will be ignored.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	BulkDeleteById(context.Context, *Ids) (*BulkDeleteResponse, error)
	// List and Filter Nodes
	//
	// Makes a list of nodes.
	// Supports filtering, pagination, and sorting.
	// Adding a filter narrows the list of nodes to only those that match the filter or filters.
	// Supported filters:
	// account_id, last_contact, manager_id, manager_type, name, platform_name,
	// platform_release, region, source_id, state, statechange_timerange, status,
	// last_run_timerange, last_scan_timerange, last_run_status, last_scan_status,
	// last_run_penultimate_status, last_scan_penultimate_status
	//
	// Example:
	// ```
	// {
	// "filters":[
	// {"key": "last_scan_status", "values": ["FAILED"]},
	// {"key": "last_scan_penultimate_status", "values": ["PASSED"]},
	// {"key": "name", "values": ["MyNode*"]}
	// ],
	// "page":1, "per_page":100,
	// "sort":"status", "order":"ASC"
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:list
	List(context.Context, *Query) (*Nodes, error)
	// List Node Status
	//
	// Use this to run an `inspec detect` job on the node, which updates the status to reflect that the node is reachable or unreachable.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:rerun
	Rerun(context.Context, *Id) (*RerunResponse, error)
	// Bulk Delete Nodes by Filter
	//
	// Deletes a set of nodes that match a filter.
	// Available filters: account_id, last_contact, manager_id, manager_type, name, platform_name,
	// platform_release, region, source_id, state, statechange_timerange, status,
	// last_run_timerange, last_scan_timerange, last_run_status, last_scan_status,
	// last_run_penultimate_status, last_scan_penultimate_status
	//
	// Example:
	// ```
	// {"filters": [{"key": "name", "values": ["vj*"]}]}'
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:delete
	BulkDelete(context.Context, *Query) (*BulkDeleteResponse, error)
	// Bulk Create Nodes
	//
	// Creates multiple nodes from a list of node data.
	// `hosts` field is required. Multiple hosts may be defined in this field.
	//
	// Example:
	// ```
	// {
	// "name_prefix": "000-my-ssh-node",
	// "manager":"automate",
	// "target_config": {
	// "backend":"ssh",
	// "hosts":["localhost","127.0.0.1"],
	// "secrets":["b75195e5-a173-4502-9f59-d949adfe2c38"],
	// "port": 22
	// },
	// "tags": [
	// { "key":"test-node", "value":"is-amazing" },
	// ]
	// }
	// ```
	//
	// Authorization Action:
	// ```
	// ```
	//
	//infra:nodes:create
	BulkCreate(context.Context, *Nodes) (*Ids, error)
}

// UnimplementedNodesServiceServer can be embedded to have forward compatible implementations.
type UnimplementedNodesServiceServer struct {
}

func (*UnimplementedNodesServiceServer) Create(context.Context, *Node) (*Id, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Create not implemented")
}
func (*UnimplementedNodesServiceServer) Read(context.Context, *Id) (*Node, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Read not implemented")
}
func (*UnimplementedNodesServiceServer) Update(context.Context, *Node) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Update not implemented")
}
func (*UnimplementedNodesServiceServer) Delete(context.Context, *Id) (*emptypb.Empty, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Delete not implemented")
}
func (*UnimplementedNodesServiceServer) BulkDeleteById(context.Context, *Ids) (*BulkDeleteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method BulkDeleteById not implemented")
}
func (*UnimplementedNodesServiceServer) List(context.Context, *Query) (*Nodes, error) {
	return nil, status.Errorf(codes.Unimplemented, "method List not implemented")
}
func (*UnimplementedNodesServiceServer) Rerun(context.Context, *Id) (*RerunResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Rerun not implemented")
}
func (*UnimplementedNodesServiceServer) BulkDelete(context.Context, *Query) (*BulkDeleteResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method BulkDelete not implemented")
}
func (*UnimplementedNodesServiceServer) BulkCreate(context.Context, *Nodes) (*Ids, error) {
	return nil, status.Errorf(codes.Unimplemented, "method BulkCreate not implemented")
}

func RegisterNodesServiceServer(s *grpc.Server, srv NodesServiceServer) {
	s.RegisterService(&_NodesService_serviceDesc, srv)
}

func _NodesService_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Node)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).Create(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/Create",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).Create(ctx, req.(*Node))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_Read_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Id)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).Read(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/Read",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).Read(ctx, req.(*Id))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_Update_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Node)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).Update(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/Update",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).Update(ctx, req.(*Node))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Id)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).Delete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/Delete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).Delete(ctx, req.(*Id))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_BulkDeleteById_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Ids)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).BulkDeleteById(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/BulkDeleteById",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).BulkDeleteById(ctx, req.(*Ids))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_List_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Query)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).List(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/List",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).List(ctx, req.(*Query))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_Rerun_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Id)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).Rerun(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/Rerun",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).Rerun(ctx, req.(*Id))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_BulkDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Query)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).BulkDelete(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/BulkDelete",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).BulkDelete(ctx, req.(*Query))
	}
	return interceptor(ctx, in, info, handler)
}

func _NodesService_BulkCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(Nodes)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(NodesServiceServer).BulkCreate(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.nodes.v1.NodesService/BulkCreate",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(NodesServiceServer).BulkCreate(ctx, req.(*Nodes))
	}
	return interceptor(ctx, in, info, handler)
}

var _NodesService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "chef.automate.api.nodes.v1.NodesService",
	HandlerType: (*NodesServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Create",
			Handler:    _NodesService_Create_Handler,
		},
		{
			MethodName: "Read",
			Handler:    _NodesService_Read_Handler,
		},
		{
			MethodName: "Update",
			Handler:    _NodesService_Update_Handler,
		},
		{
			MethodName: "Delete",
			Handler:    _NodesService_Delete_Handler,
		},
		{
			MethodName: "BulkDeleteById",
			Handler:    _NodesService_BulkDeleteById_Handler,
		},
		{
			MethodName: "List",
			Handler:    _NodesService_List_Handler,
		},
		{
			MethodName: "Rerun",
			Handler:    _NodesService_Rerun_Handler,
		},
		{
			MethodName: "BulkDelete",
			Handler:    _NodesService_BulkDelete_Handler,
		},
		{
			MethodName: "BulkCreate",
			Handler:    _NodesService_BulkCreate_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "external/nodes/nodes.proto",
}
