134 lines
5.1 KiB
Protocol Buffer
134 lines
5.1 KiB
Protocol Buffer
/*
|
||
Copyright The Karmada Authors.
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
*/
|
||
|
||
|
||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||
|
||
syntax = "proto2";
|
||
|
||
package github.com.karmada_io.karmada.pkg.estimator.pb;
|
||
|
||
import "k8s.io/api/core/v1/generated.proto";
|
||
import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
|
||
|
||
// Package-wide variables from generator "generated".
|
||
option go_package = "github.com/karmada-io/karmada/pkg/estimator/pb";
|
||
|
||
// MaxAvailableReplicasRequest represents the request that sent by gRPC client to calculate max available replicas.
|
||
message MaxAvailableReplicasRequest {
|
||
// Cluster represents the cluster name.
|
||
// +required
|
||
optional string cluster = 1;
|
||
|
||
// ReplicaRequirements represents the requirements required by each replica.
|
||
// +required
|
||
optional ReplicaRequirements replicaRequirements = 2;
|
||
}
|
||
|
||
// MaxAvailableReplicasResponse represents the response that sent by gRPC server to calculate max available replicas.
|
||
message MaxAvailableReplicasResponse {
|
||
// MaxReplicas represents the max replica that the cluster can produce.
|
||
// +required
|
||
optional int32 maxReplicas = 1;
|
||
}
|
||
|
||
// NodeClaim represents the NodeAffinity, NodeSelector and Tolerations required by each replica.
|
||
message NodeClaim {
|
||
// A node selector represents the union of the results of one or more label queries over a set of
|
||
// nodes; that is, it represents the OR of the selectors represented by the node selector terms.
|
||
// Note that only PodSpec.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution
|
||
// is included here because it has a hard limit on pod scheduling.
|
||
// +optional
|
||
optional .k8s.io.api.core.v1.NodeSelector nodeAffinity = 1;
|
||
|
||
// NodeSelector is a selector which must be true for the pod to fit on a node.
|
||
// Selector which must match a node's labels for the pod to be scheduled on that node.
|
||
// +optional
|
||
map<string, string> nodeSelector = 2;
|
||
|
||
// If specified, the pod's tolerations.
|
||
// +optional
|
||
repeated .k8s.io.api.core.v1.Toleration tolerations = 3;
|
||
}
|
||
|
||
// ObjectReference contains enough information to locate the referenced object inside current cluster.
|
||
message ObjectReference {
|
||
// APIVersion represents the API version of the referent.
|
||
// +required
|
||
optional string apiVersion = 1;
|
||
|
||
// Kind represents the Kind of the referent.
|
||
// +required
|
||
optional string kind = 2;
|
||
|
||
// Namespace represents the namespace for the referent.
|
||
// For non-namespace scoped resources(e.g. 'ClusterRole'),do not need specify Namespace,
|
||
// and for namespace scoped resources, Namespace is required.
|
||
// If Namespace is not specified, means the resource is non-namespace scoped.
|
||
// +required
|
||
optional string namespace = 3;
|
||
|
||
// Name represents the name of the referent.
|
||
// +required
|
||
optional string name = 4;
|
||
}
|
||
|
||
// ReplicaRequirements represents the requirements required by each replica.
|
||
message ReplicaRequirements {
|
||
// NodeClaim represents the NodeAffinity, NodeSelector and Tolerations required by each replica.
|
||
// +optional
|
||
optional NodeClaim nodeClaim = 1;
|
||
|
||
// ResourceRequest represents the resources required by each replica.
|
||
// +optional
|
||
map<string, .k8s.io.apimachinery.pkg.api.resource.Quantity> resourceRequest = 2;
|
||
|
||
// Namespace represents the namespaces belonged to a ResourceRequest
|
||
// +optional
|
||
optional string namespace = 3;
|
||
|
||
// PriorityClassName represents the priority class name for a given ResourceRequest
|
||
// Resource quotas are introduced for multi tenants sharing a cluster
|
||
// Besides estimate the replica based on nodes' resources, we need to consider the resource quota of a ResourceRequest
|
||
// ResourceQuota have an associated set of scopes, one of them is priority class
|
||
// +optional
|
||
optional string priorityClassName = 4;
|
||
}
|
||
|
||
// UnschedulableReplicasRequest represents the request that sent by gRPC client to calculate unschedulable replicas.
|
||
message UnschedulableReplicasRequest {
|
||
// Cluster represents the cluster name.
|
||
// +required
|
||
optional string cluster = 1;
|
||
|
||
// Resource represents the Kubernetes resource to be propagated.
|
||
// +required
|
||
optional ObjectReference resource = 2;
|
||
|
||
// UnschedulableThreshold represents the period threshold of pod unschedulable condition.
|
||
// This value is considered as a classification standard of unschedulable replicas.
|
||
// +optional
|
||
optional int64 unschedulableThreshold = 3;
|
||
}
|
||
|
||
// UnschedulableReplicasResponse represents the response that sent by gRPC server to calculate unschedulable replicas.
|
||
message UnschedulableReplicasResponse {
|
||
// UnschedulableReplicas represents the unschedulable replicas that the object contains.
|
||
// +required
|
||
optional int32 unschedulableReplicas = 1;
|
||
}
|
||
|