kubectl: small internal to external type fix

pull/58/head
Sean Sullivan 2018-11-15 16:45:17 -08:00
parent 90245bec24
commit 6a57de315d
3 changed files with 22 additions and 24 deletions

View File

@ -6,7 +6,6 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/kubectl/util/qos", importpath = "k8s.io/kubernetes/pkg/kubectl/util/qos",
visibility = ["//visibility:public"], visibility = ["//visibility:public"],
deps = [ deps = [
"//pkg/apis/core:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",

View File

@ -17,15 +17,14 @@ limitations under the License.
package qos package qos
import ( import (
"k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/apis/core"
) )
var supportedQoSComputeResources = sets.NewString(string(core.ResourceCPU), string(core.ResourceMemory)) var supportedQoSComputeResources = sets.NewString(string(corev1.ResourceCPU), string(corev1.ResourceMemory))
func isSupportedQoSComputeResource(name v1.ResourceName) bool { func isSupportedQoSComputeResource(name corev1.ResourceName) bool {
return supportedQoSComputeResources.Has(string(name)) return supportedQoSComputeResources.Has(string(name))
} }
@ -33,9 +32,9 @@ func isSupportedQoSComputeResource(name v1.ResourceName) bool {
// A pod is besteffort if none of its containers have specified any requests or limits. // A pod is besteffort if none of its containers have specified any requests or limits.
// A pod is guaranteed only when requests and limits are specified for all the containers and they are equal. // A pod is guaranteed only when requests and limits are specified for all the containers and they are equal.
// A pod is burstable if limits and requests do not match across all containers. // A pod is burstable if limits and requests do not match across all containers.
func GetPodQOS(pod *v1.Pod) v1.PodQOSClass { func GetPodQOS(pod *corev1.Pod) corev1.PodQOSClass {
requests := v1.ResourceList{} requests := corev1.ResourceList{}
limits := v1.ResourceList{} limits := corev1.ResourceList{}
zeroQuantity := resource.MustParse("0") zeroQuantity := resource.MustParse("0")
isGuaranteed := true isGuaranteed := true
for _, container := range pod.Spec.Containers { for _, container := range pod.Spec.Containers {
@ -72,12 +71,12 @@ func GetPodQOS(pod *v1.Pod) v1.PodQOSClass {
} }
} }
if !qosLimitsFound.HasAll(string(v1.ResourceMemory), string(v1.ResourceCPU)) { if !qosLimitsFound.HasAll(string(corev1.ResourceMemory), string(corev1.ResourceCPU)) {
isGuaranteed = false isGuaranteed = false
} }
} }
if len(requests) == 0 && len(limits) == 0 { if len(requests) == 0 && len(limits) == 0 {
return v1.PodQOSBestEffort return corev1.PodQOSBestEffort
} }
// Check is requests match limits for all resources. // Check is requests match limits for all resources.
if isGuaranteed { if isGuaranteed {
@ -90,7 +89,7 @@ func GetPodQOS(pod *v1.Pod) v1.PodQOSClass {
} }
if isGuaranteed && if isGuaranteed &&
len(requests) == len(limits) { len(requests) == len(limits) {
return v1.PodQOSGuaranteed return corev1.PodQOSGuaranteed
} }
return v1.PodQOSBurstable return corev1.PodQOSBurstable
} }

View File

@ -22,15 +22,15 @@ import (
"strconv" "strconv"
"strings" "strings"
"k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
) )
// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all // PodRequestsAndLimits returns a dictionary of all defined resources summed up for all
// containers of the pod. // containers of the pod.
func PodRequestsAndLimits(pod *v1.Pod) (reqs, limits v1.ResourceList) { func PodRequestsAndLimits(pod *corev1.Pod) (reqs, limits corev1.ResourceList) {
reqs, limits = v1.ResourceList{}, v1.ResourceList{} reqs, limits = corev1.ResourceList{}, corev1.ResourceList{}
for _, container := range pod.Spec.Containers { for _, container := range pod.Spec.Containers {
addResourceList(reqs, container.Resources.Requests) addResourceList(reqs, container.Resources.Requests)
addResourceList(limits, container.Resources.Limits) addResourceList(limits, container.Resources.Limits)
@ -44,7 +44,7 @@ func PodRequestsAndLimits(pod *v1.Pod) (reqs, limits v1.ResourceList) {
} }
// addResourceList adds the resources in newList to list // addResourceList adds the resources in newList to list
func addResourceList(list, new v1.ResourceList) { func addResourceList(list, new corev1.ResourceList) {
for name, quantity := range new { for name, quantity := range new {
if value, ok := list[name]; !ok { if value, ok := list[name]; !ok {
list[name] = *quantity.Copy() list[name] = *quantity.Copy()
@ -57,7 +57,7 @@ func addResourceList(list, new v1.ResourceList) {
// maxResourceList sets list to the greater of list/newList for every resource // maxResourceList sets list to the greater of list/newList for every resource
// either list // either list
func maxResourceList(list, new v1.ResourceList) { func maxResourceList(list, new corev1.ResourceList) {
for name, quantity := range new { for name, quantity := range new {
if value, ok := list[name]; !ok { if value, ok := list[name]; !ok {
list[name] = *quantity.Copy() list[name] = *quantity.Copy()
@ -72,7 +72,7 @@ func maxResourceList(list, new v1.ResourceList) {
// ExtractContainerResourceValue extracts the value of a resource // ExtractContainerResourceValue extracts the value of a resource
// in an already known container // in an already known container
func ExtractContainerResourceValue(fs *v1.ResourceFieldSelector, container *v1.Container) (string, error) { func ExtractContainerResourceValue(fs *corev1.ResourceFieldSelector, container *corev1.Container) (string, error) {
divisor := resource.Quantity{} divisor := resource.Quantity{}
if divisor.Cmp(fs.Divisor) == 0 { if divisor.Cmp(fs.Divisor) == 0 {
divisor = resource.MustParse("1") divisor = resource.MustParse("1")
@ -120,19 +120,19 @@ func convertResourceEphemeralStorageToString(ephemeralStorage *resource.Quantity
} }
var standardContainerResources = sets.NewString( var standardContainerResources = sets.NewString(
string(v1.ResourceCPU), string(corev1.ResourceCPU),
string(v1.ResourceMemory), string(corev1.ResourceMemory),
string(v1.ResourceEphemeralStorage), string(corev1.ResourceEphemeralStorage),
) )
// IsStandardContainerResourceName returns true if the container can make a resource request // IsStandardContainerResourceName returns true if the container can make a resource request
// for the specified resource // for the specified resource
func IsStandardContainerResourceName(str string) bool { func IsStandardContainerResourceName(str string) bool {
return standardContainerResources.Has(str) || IsHugePageResourceName(v1.ResourceName(str)) return standardContainerResources.Has(str) || IsHugePageResourceName(corev1.ResourceName(str))
} }
// IsHugePageResourceName returns true if the resource name has the huge page // IsHugePageResourceName returns true if the resource name has the huge page
// resource prefix. // resource prefix.
func IsHugePageResourceName(name v1.ResourceName) bool { func IsHugePageResourceName(name corev1.ResourceName) bool {
return strings.HasPrefix(string(name), v1.ResourceHugePagesPrefix) return strings.HasPrefix(string(name), corev1.ResourceHugePagesPrefix)
} }