mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Move pkg/api/v1/node to pkg/util/node (#73656)
* merge pkg/api/v1/node with pkg/util/node * update test case for utilnode * remove package pkg/api/v1/node * move isNodeReady to internal func * Split GetNodeCondition into e2e and controller pkg * fix import errors
This commit is contained in:
parent
e9a8d27bd4
commit
d648ba856b
@ -24,7 +24,6 @@ filegroup(
|
|||||||
"//pkg/api/testapi:all-srcs",
|
"//pkg/api/testapi:all-srcs",
|
||||||
"//pkg/api/testing:all-srcs",
|
"//pkg/api/testing:all-srcs",
|
||||||
"//pkg/api/v1/endpoints:all-srcs",
|
"//pkg/api/v1/endpoints:all-srcs",
|
||||||
"//pkg/api/v1/node:all-srcs",
|
|
||||||
"//pkg/api/v1/persistentvolume:all-srcs",
|
"//pkg/api/v1/persistentvolume:all-srcs",
|
||||||
"//pkg/api/v1/pod:all-srcs",
|
"//pkg/api/v1/pod:all-srcs",
|
||||||
"//pkg/api/v1/resource:all-srcs",
|
"//pkg/api/v1/resource:all-srcs",
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = ["util.go"],
|
|
||||||
importpath = "k8s.io/kubernetes/pkg/api/v1/node",
|
|
||||||
deps = ["//staging/src/k8s.io/api/core/v1:go_default_library"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
@ -167,7 +167,6 @@
|
|||||||
"AllowedPrefixes": [
|
"AllowedPrefixes": [
|
||||||
"k8s.io/kubernetes/pkg/api/legacyscheme",
|
"k8s.io/kubernetes/pkg/api/legacyscheme",
|
||||||
"k8s.io/kubernetes/pkg/api/v1/endpoints",
|
"k8s.io/kubernetes/pkg/api/v1/endpoints",
|
||||||
"k8s.io/kubernetes/pkg/api/v1/node",
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1/pod",
|
"k8s.io/kubernetes/pkg/api/v1/pod",
|
||||||
"k8s.io/kubernetes/pkg/apis/apps/v1",
|
"k8s.io/kubernetes/pkg/apis/apps/v1",
|
||||||
"k8s.io/kubernetes/pkg/apis/autoscaling",
|
"k8s.io/kubernetes/pkg/apis/autoscaling",
|
||||||
|
@ -15,9 +15,9 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/cloud",
|
importpath = "k8s.io/kubernetes/pkg/controller/cloud",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/apis/core/v1/helper:go_default_library",
|
"//pkg/apis/core/v1/helper:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
"//pkg/controller/util/node:go_default_library",
|
||||||
"//pkg/kubelet/apis:go_default_library",
|
"//pkg/kubelet/apis:go_default_library",
|
||||||
"//pkg/scheduler/api:go_default_library",
|
"//pkg/scheduler/api:go_default_library",
|
||||||
"//pkg/util/node:go_default_library",
|
"//pkg/util/node:go_default_library",
|
||||||
|
@ -35,8 +35,8 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
nodeutilv1 "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
|
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ func (c *CloudNodeLifecycleController) MonitorNodes() {
|
|||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
// Default NodeReady status to v1.ConditionUnknown
|
// Default NodeReady status to v1.ConditionUnknown
|
||||||
status := v1.ConditionUnknown
|
status := v1.ConditionUnknown
|
||||||
if _, c := nodeutilv1.GetNodeCondition(&node.Status, v1.NodeReady); c != nil {
|
if _, c := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady); c != nil {
|
||||||
status = c.Status
|
status = c.Status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/nodeipam/ipam",
|
importpath = "k8s.io/kubernetes/pkg/controller/nodeipam/ipam",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/cloudprovider/providers/gce:go_default_library",
|
"//pkg/cloudprovider/providers/gce:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/nodeipam/ipam/cidrset:go_default_library",
|
"//pkg/controller/nodeipam/ipam/cidrset:go_default_library",
|
||||||
|
@ -39,7 +39,6 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes/scheme"
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
v1node "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
||||||
@ -118,7 +117,7 @@ func NewCloudCIDRAllocator(client clientset.Interface, cloud cloudprovider.Inter
|
|||||||
// Even if PodCIDR is assigned, but NetworkUnavailable condition is
|
// Even if PodCIDR is assigned, but NetworkUnavailable condition is
|
||||||
// set to true, we need to process the node to set the condition.
|
// set to true, we need to process the node to set the condition.
|
||||||
networkUnavailableTaint := &v1.Taint{Key: schedulerapi.TaintNodeNetworkUnavailable, Effect: v1.TaintEffectNoSchedule}
|
networkUnavailableTaint := &v1.Taint{Key: schedulerapi.TaintNodeNetworkUnavailable, Effect: v1.TaintEffectNoSchedule}
|
||||||
_, cond := v1node.GetNodeCondition(&newNode.Status, v1.NodeNetworkUnavailable)
|
_, cond := nodeutil.GetNodeCondition(&newNode.Status, v1.NodeNetworkUnavailable)
|
||||||
if cond == nil || cond.Status != v1.ConditionFalse || utiltaints.TaintExists(newNode.Spec.Taints, networkUnavailableTaint) {
|
if cond == nil || cond.Status != v1.ConditionFalse || utiltaints.TaintExists(newNode.Spec.Taints, networkUnavailableTaint) {
|
||||||
return ca.AllocateOrOccupyCIDR(newNode)
|
return ca.AllocateOrOccupyCIDR(newNode)
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ go_library(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/controller/nodelifecycle",
|
importpath = "k8s.io/kubernetes/pkg/controller/nodelifecycle",
|
||||||
visibility = ["//visibility:public"],
|
visibility = ["//visibility:public"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/controller/nodelifecycle/scheduler:go_default_library",
|
"//pkg/controller/nodelifecycle/scheduler:go_default_library",
|
||||||
"//pkg/controller/util/node:go_default_library",
|
"//pkg/controller/util/node:go_default_library",
|
||||||
|
@ -52,7 +52,6 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
"k8s.io/client-go/util/flowcontrol"
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
"k8s.io/client-go/util/workqueue"
|
"k8s.io/client-go/util/workqueue"
|
||||||
v1node "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/controller/nodelifecycle/scheduler"
|
"k8s.io/kubernetes/pkg/controller/nodelifecycle/scheduler"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
||||||
@ -525,7 +524,7 @@ func (nc *Controller) doNoExecuteTaintingPass() {
|
|||||||
// retry in 50 millisecond
|
// retry in 50 millisecond
|
||||||
return false, 50 * time.Millisecond
|
return false, 50 * time.Millisecond
|
||||||
}
|
}
|
||||||
_, condition := v1node.GetNodeCondition(&node.Status, v1.NodeReady)
|
_, condition := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady)
|
||||||
// Because we want to mimic NodeStatus.Condition["Ready"] we make "unreachable" and "not ready" taints mutually exclusive.
|
// Because we want to mimic NodeStatus.Condition["Ready"] we make "unreachable" and "not ready" taints mutually exclusive.
|
||||||
taintToAdd := v1.Taint{}
|
taintToAdd := v1.Taint{}
|
||||||
oppositeTaint := v1.Taint{}
|
oppositeTaint := v1.Taint{}
|
||||||
@ -742,7 +741,7 @@ func (nc *Controller) tryUpdateNodeHealth(node *v1.Node) (time.Duration, v1.Node
|
|||||||
var err error
|
var err error
|
||||||
var gracePeriod time.Duration
|
var gracePeriod time.Duration
|
||||||
var observedReadyCondition v1.NodeCondition
|
var observedReadyCondition v1.NodeCondition
|
||||||
_, currentReadyCondition := v1node.GetNodeCondition(&node.Status, v1.NodeReady)
|
_, currentReadyCondition := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady)
|
||||||
if currentReadyCondition == nil {
|
if currentReadyCondition == nil {
|
||||||
// If ready condition is nil, then kubelet (or nodecontroller) never posted node status.
|
// If ready condition is nil, then kubelet (or nodecontroller) never posted node status.
|
||||||
// A fake ready condition is created, where LastHeartbeatTime and LastTransitionTime is set
|
// A fake ready condition is created, where LastHeartbeatTime and LastTransitionTime is set
|
||||||
@ -787,10 +786,10 @@ func (nc *Controller) tryUpdateNodeHealth(node *v1.Node) (time.Duration, v1.Node
|
|||||||
var savedCondition *v1.NodeCondition
|
var savedCondition *v1.NodeCondition
|
||||||
var savedLease *coordv1beta1.Lease
|
var savedLease *coordv1beta1.Lease
|
||||||
if found {
|
if found {
|
||||||
_, savedCondition = v1node.GetNodeCondition(savedNodeHealth.status, v1.NodeReady)
|
_, savedCondition = nodeutil.GetNodeCondition(savedNodeHealth.status, v1.NodeReady)
|
||||||
savedLease = savedNodeHealth.lease
|
savedLease = savedNodeHealth.lease
|
||||||
}
|
}
|
||||||
_, observedCondition := v1node.GetNodeCondition(&node.Status, v1.NodeReady)
|
_, observedCondition := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady)
|
||||||
if !found {
|
if !found {
|
||||||
klog.Warningf("Missing timestamp for Node %s. Assuming now as a timestamp.", node.Name)
|
klog.Warningf("Missing timestamp for Node %s. Assuming now as a timestamp.", node.Name)
|
||||||
savedNodeHealth = &nodeHealthData{
|
savedNodeHealth = &nodeHealthData{
|
||||||
@ -885,7 +884,7 @@ func (nc *Controller) tryUpdateNodeHealth(node *v1.Node) (time.Duration, v1.Node
|
|||||||
|
|
||||||
nowTimestamp := nc.now()
|
nowTimestamp := nc.now()
|
||||||
for _, nodeConditionType := range remainingNodeConditionTypes {
|
for _, nodeConditionType := range remainingNodeConditionTypes {
|
||||||
_, currentCondition := v1node.GetNodeCondition(&node.Status, nodeConditionType)
|
_, currentCondition := nodeutil.GetNodeCondition(&node.Status, nodeConditionType)
|
||||||
if currentCondition == nil {
|
if currentCondition == nil {
|
||||||
klog.V(2).Infof("Condition %v of node %v was never updated by kubelet", nodeConditionType, node.Name)
|
klog.V(2).Infof("Condition %v of node %v was never updated by kubelet", nodeConditionType, node.Name)
|
||||||
node.Status.Conditions = append(node.Status.Conditions, v1.NodeCondition{
|
node.Status.Conditions = append(node.Status.Conditions, v1.NodeCondition{
|
||||||
@ -908,7 +907,7 @@ func (nc *Controller) tryUpdateNodeHealth(node *v1.Node) (time.Duration, v1.Node
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, currentCondition := v1node.GetNodeCondition(&node.Status, v1.NodeReady)
|
_, currentCondition := nodeutil.GetNodeCondition(&node.Status, v1.NodeReady)
|
||||||
if !apiequality.Semantic.DeepEqual(currentCondition, &observedReadyCondition) {
|
if !apiequality.Semantic.DeepEqual(currentCondition, &observedReadyCondition) {
|
||||||
if _, err = nc.kubeClient.CoreV1().Nodes().UpdateStatus(node); err != nil {
|
if _, err = nc.kubeClient.CoreV1().Nodes().UpdateStatus(node); err != nil {
|
||||||
klog.Errorf("Error updating node %s: %v", node.Name, err)
|
klog.Errorf("Error updating node %s: %v", node.Name, err)
|
||||||
|
@ -14,8 +14,8 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/pkg/controller/route",
|
importpath = "k8s.io/kubernetes/pkg/controller/route",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
"//pkg/controller/util/node:go_default_library",
|
||||||
"//pkg/util/metrics:go_default_library",
|
"//pkg/util/metrics:go_default_library",
|
||||||
"//pkg/util/node:go_default_library",
|
"//pkg/util/node:go_default_library",
|
||||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||||
@ -42,9 +42,9 @@ go_test(
|
|||||||
srcs = ["route_controller_test.go"],
|
srcs = ["route_controller_test.go"],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/cloudprovider/providers/fake:go_default_library",
|
"//pkg/cloudprovider/providers/fake:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
|
"//pkg/controller/util/node: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/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||||
|
@ -40,10 +40,10 @@ import (
|
|||||||
"k8s.io/client-go/tools/record"
|
"k8s.io/client-go/tools/record"
|
||||||
clientretry "k8s.io/client-go/util/retry"
|
clientretry "k8s.io/client-go/util/retry"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
v1node "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
|
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
||||||
"k8s.io/kubernetes/pkg/util/metrics"
|
"k8s.io/kubernetes/pkg/util/metrics"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/util/node"
|
utilnode "k8s.io/kubernetes/pkg/util/node"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -201,7 +201,7 @@ func (rc *RouteController) reconcile(nodes []*v1.Node, routes []*cloudprovider.R
|
|||||||
}(nodeName, nameHint, route)
|
}(nodeName, nameHint, route)
|
||||||
} else {
|
} else {
|
||||||
// Update condition only if it doesn't reflect the current state.
|
// Update condition only if it doesn't reflect the current state.
|
||||||
_, condition := v1node.GetNodeCondition(&node.Status, v1.NodeNetworkUnavailable)
|
_, condition := nodeutil.GetNodeCondition(&node.Status, v1.NodeNetworkUnavailable)
|
||||||
if condition == nil || condition.Status != v1.ConditionFalse {
|
if condition == nil || condition.Status != v1.ConditionFalse {
|
||||||
rc.updateNetworkingCondition(types.NodeName(node.Name), true)
|
rc.updateNetworkingCondition(types.NodeName(node.Name), true)
|
||||||
}
|
}
|
||||||
@ -237,7 +237,7 @@ func (rc *RouteController) updateNetworkingCondition(nodeName types.NodeName, ro
|
|||||||
// patch in the retry loop.
|
// patch in the retry loop.
|
||||||
currentTime := metav1.Now()
|
currentTime := metav1.Now()
|
||||||
if routeCreated {
|
if routeCreated {
|
||||||
err = nodeutil.SetNodeCondition(rc.kubeClient, nodeName, v1.NodeCondition{
|
err = utilnode.SetNodeCondition(rc.kubeClient, nodeName, v1.NodeCondition{
|
||||||
Type: v1.NodeNetworkUnavailable,
|
Type: v1.NodeNetworkUnavailable,
|
||||||
Status: v1.ConditionFalse,
|
Status: v1.ConditionFalse,
|
||||||
Reason: "RouteCreated",
|
Reason: "RouteCreated",
|
||||||
@ -245,7 +245,7 @@ func (rc *RouteController) updateNetworkingCondition(nodeName types.NodeName, ro
|
|||||||
LastTransitionTime: currentTime,
|
LastTransitionTime: currentTime,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
err = nodeutil.SetNodeCondition(rc.kubeClient, nodeName, v1.NodeCondition{
|
err = utilnode.SetNodeCondition(rc.kubeClient, nodeName, v1.NodeCondition{
|
||||||
Type: v1.NodeNetworkUnavailable,
|
Type: v1.NodeNetworkUnavailable,
|
||||||
Status: v1.ConditionTrue,
|
Status: v1.ConditionTrue,
|
||||||
Reason: "NoRouteCreated",
|
Reason: "NoRouteCreated",
|
||||||
|
@ -29,9 +29,9 @@ import (
|
|||||||
"k8s.io/client-go/kubernetes/fake"
|
"k8s.io/client-go/kubernetes/fake"
|
||||||
core "k8s.io/client-go/testing"
|
core "k8s.io/client-go/testing"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
|
fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
|
nodeutil "k8s.io/kubernetes/pkg/controller/util/node"
|
||||||
)
|
)
|
||||||
|
|
||||||
func alwaysReady() bool { return true }
|
func alwaysReady() bool { return true }
|
||||||
|
@ -260,3 +260,17 @@ func CreateDeleteNodeHandler(f func(node *v1.Node) error) func(obj interface{})
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetNodeCondition extracts the provided condition from the given status and returns that.
|
||||||
|
// Returns nil and -1 if the condition is not present, and the index of the located condition.
|
||||||
|
func GetNodeCondition(status *v1.NodeStatus, conditionType v1.NodeConditionType) (int, *v1.NodeCondition) {
|
||||||
|
if status == nil {
|
||||||
|
return -1, nil
|
||||||
|
}
|
||||||
|
for i := range status.Conditions {
|
||||||
|
if status.Conditions[i].Type == conditionType {
|
||||||
|
return i, &status.Conditions[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1, nil
|
||||||
|
}
|
||||||
|
@ -43,7 +43,6 @@ go_library(
|
|||||||
],
|
],
|
||||||
importpath = "k8s.io/kubernetes/test/e2e/common",
|
importpath = "k8s.io/kubernetes/test/e2e/common",
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/api/v1/pod:go_default_library",
|
"//pkg/api/v1/pod:go_default_library",
|
||||||
"//pkg/apis/core:go_default_library",
|
"//pkg/apis/core:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
|
@ -24,9 +24,8 @@ import (
|
|||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
|
|
||||||
v1node "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
@ -123,7 +122,7 @@ var _ = framework.KubeDescribe("NodeLease", func() {
|
|||||||
// run controller manager, i.e., no node lifecycle controller.
|
// run controller manager, i.e., no node lifecycle controller.
|
||||||
node, err := f.ClientSet.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
node, err := f.ClientSet.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
||||||
Expect(err).To(BeNil())
|
Expect(err).To(BeNil())
|
||||||
_, readyCondition := v1node.GetNodeCondition(&node.Status, corev1.NodeReady)
|
_, readyCondition := testutils.GetNodeCondition(&node.Status, corev1.NodeReady)
|
||||||
Expect(readyCondition.Status).To(Equal(corev1.ConditionTrue))
|
Expect(readyCondition.Status).To(Equal(corev1.ConditionTrue))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -136,7 +135,7 @@ func getNextReadyConditionHeartbeatTime(clientSet clientset.Interface, nodeName
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, readyCondition := v1node.GetNodeCondition(&node.Status, corev1.NodeReady)
|
_, readyCondition := testutils.GetNodeCondition(&node.Status, corev1.NodeReady)
|
||||||
Expect(readyCondition.Status).To(Equal(corev1.ConditionTrue))
|
Expect(readyCondition.Status).To(Equal(corev1.ConditionTrue))
|
||||||
newHeartbeatTime = readyCondition.LastHeartbeatTime
|
newHeartbeatTime = readyCondition.LastHeartbeatTime
|
||||||
if prevHeartbeatTime.Before(&newHeartbeatTime) {
|
if prevHeartbeatTime.Before(&newHeartbeatTime) {
|
||||||
|
@ -60,7 +60,6 @@ go_library(
|
|||||||
"//vendor/k8s.io/klog:go_default_library",
|
"//vendor/k8s.io/klog:go_default_library",
|
||||||
] + select({
|
] + select({
|
||||||
"@io_bazel_rules_go//go/platform:linux": [
|
"@io_bazel_rules_go//go/platform:linux": [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/util/procfs:go_default_library",
|
"//pkg/util/procfs:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||||
@ -71,6 +70,7 @@ go_library(
|
|||||||
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
|
||||||
"//test/e2e/perftype:go_default_library",
|
"//test/e2e/perftype:go_default_library",
|
||||||
"//test/e2e_node/perftype:go_default_library",
|
"//test/e2e_node/perftype:go_default_library",
|
||||||
|
"//test/utils:go_default_library",
|
||||||
"//vendor/github.com/google/cadvisor/client/v2:go_default_library",
|
"//vendor/github.com/google/cadvisor/client/v2:go_default_library",
|
||||||
"//vendor/github.com/google/cadvisor/info/v2:go_default_library",
|
"//vendor/github.com/google/cadvisor/info/v2:go_default_library",
|
||||||
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups:go_default_library",
|
"//vendor/github.com/opencontainers/runc/libcontainer/cgroups:go_default_library",
|
||||||
@ -114,7 +114,6 @@ go_test(
|
|||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
tags = ["e2e"],
|
tags = ["e2e"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1/node:go_default_library",
|
|
||||||
"//pkg/apis/core:go_default_library",
|
"//pkg/apis/core:go_default_library",
|
||||||
"//pkg/features:go_default_library",
|
"//pkg/features:go_default_library",
|
||||||
"//pkg/kubelet:go_default_library",
|
"//pkg/kubelet:go_default_library",
|
||||||
@ -157,6 +156,7 @@ go_test(
|
|||||||
"//test/e2e/framework/metrics:go_default_library",
|
"//test/e2e/framework/metrics:go_default_library",
|
||||||
"//test/e2e_node/perf/workloads:go_default_library",
|
"//test/e2e_node/perf/workloads:go_default_library",
|
||||||
"//test/e2e_node/services:go_default_library",
|
"//test/e2e_node/services:go_default_library",
|
||||||
|
"//test/utils:go_default_library",
|
||||||
"//test/utils/image:go_default_library",
|
"//test/utils/image:go_default_library",
|
||||||
"//vendor/github.com/blang/semver:go_default_library",
|
"//vendor/github.com/blang/semver:go_default_library",
|
||||||
"//vendor/github.com/coreos/go-systemd/util:go_default_library",
|
"//vendor/github.com/coreos/go-systemd/util:go_default_library",
|
||||||
@ -175,7 +175,6 @@ go_test(
|
|||||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
||||||
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
|
||||||
"//test/utils:go_default_library",
|
|
||||||
"//vendor/github.com/kardianos/osext:go_default_library",
|
"//vendor/github.com/kardianos/osext:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo/config:go_default_library",
|
"//vendor/github.com/onsi/ginkgo/config:go_default_library",
|
||||||
"//vendor/github.com/onsi/ginkgo/reporters:go_default_library",
|
"//vendor/github.com/onsi/ginkgo/reporters:go_default_library",
|
||||||
|
@ -39,7 +39,6 @@ import (
|
|||||||
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
|
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/util/system"
|
"k8s.io/kubernetes/cmd/kubeadm/app/util/system"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
commontest "k8s.io/kubernetes/test/e2e/common"
|
commontest "k8s.io/kubernetes/test/e2e/common"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
"k8s.io/kubernetes/test/e2e_node/services"
|
"k8s.io/kubernetes/test/e2e_node/services"
|
||||||
@ -234,7 +233,7 @@ func waitForNodeReady() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to get node: %v", err)
|
return fmt.Errorf("failed to get node: %v", err)
|
||||||
}
|
}
|
||||||
if !nodeutil.IsNodeReady(node) {
|
if !isNodeReady(node) {
|
||||||
return fmt.Errorf("node is not ready: %+v", node)
|
return fmt.Errorf("node is not ready: %+v", node)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -310,3 +309,13 @@ func loadSystemSpecFromFile(filename string) (*system.SysSpec, error) {
|
|||||||
}
|
}
|
||||||
return spec, nil
|
return spec, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isNodeReady returns true if a node is ready; false otherwise.
|
||||||
|
func isNodeReady(node *v1.Node) bool {
|
||||||
|
for _, c := range node.Status.Conditions {
|
||||||
|
if c.Type == v1.NodeReady {
|
||||||
|
return c.Status == v1.ConditionTrue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
@ -29,7 +29,6 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/api/resource"
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/fields"
|
"k8s.io/apimachinery/pkg/fields"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
|
||||||
stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
|
stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/eviction"
|
"k8s.io/kubernetes/pkg/kubelet/eviction"
|
||||||
@ -37,6 +36,7 @@ import (
|
|||||||
kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
|
kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics"
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
imageutils "k8s.io/kubernetes/test/utils/image"
|
imageutils "k8s.io/kubernetes/test/utils/image"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
@ -682,7 +682,7 @@ func verifyEvictionEvents(f *framework.Framework, testSpecs []podEvictSpec, expe
|
|||||||
// Returns TRUE if the node has the node condition, FALSE otherwise
|
// Returns TRUE if the node has the node condition, FALSE otherwise
|
||||||
func hasNodeCondition(f *framework.Framework, expectedNodeCondition v1.NodeConditionType) bool {
|
func hasNodeCondition(f *framework.Framework, expectedNodeCondition v1.NodeConditionType) bool {
|
||||||
localNodeStatus := getLocalNode(f).Status
|
localNodeStatus := getLocalNode(f).Status
|
||||||
_, actualNodeCondition := nodeutil.GetNodeCondition(&localNodeStatus, expectedNodeCondition)
|
_, actualNodeCondition := testutils.GetNodeCondition(&localNodeStatus, expectedNodeCondition)
|
||||||
Expect(actualNodeCondition).NotTo(BeNil())
|
Expect(actualNodeCondition).NotTo(BeNil())
|
||||||
return actualNodeCondition.Status == v1.ConditionTrue
|
return actualNodeCondition.Status == v1.ConditionTrue
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,9 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
coreclientset "k8s.io/client-go/kubernetes/typed/core/v1"
|
coreclientset "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||||
nodeutil "k8s.io/kubernetes/pkg/api/v1/node"
|
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util"
|
"k8s.io/kubernetes/pkg/kubelet/util"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
@ -427,7 +427,7 @@ func verifyNodeCondition(n coreclientset.NodeInterface, condition v1.NodeConditi
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, c := nodeutil.GetNodeCondition(&node.Status, condition)
|
_, c := testutils.GetNodeCondition(&node.Status, condition)
|
||||||
if c == nil {
|
if c == nil {
|
||||||
return fmt.Errorf("node condition %q not found", condition)
|
return fmt.Errorf("node condition %q not found", condition)
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ go_library(
|
|||||||
"delete_resources.go",
|
"delete_resources.go",
|
||||||
"density_utils.go",
|
"density_utils.go",
|
||||||
"deployment.go",
|
"deployment.go",
|
||||||
|
"node.go",
|
||||||
"paths.go",
|
"paths.go",
|
||||||
"pod_store.go",
|
"pod_store.go",
|
||||||
"replicaset.go",
|
"replicaset.go",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2015 The Kubernetes Authors.
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
@ -14,13 +14,9 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// TODO: merge with pkg/util/node
|
package utils
|
||||||
|
|
||||||
package node
|
import "k8s.io/api/core/v1"
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/api/core/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// GetNodeCondition extracts the provided condition from the given status and returns that.
|
// GetNodeCondition extracts the provided condition from the given status and returns that.
|
||||||
// Returns nil and -1 if the condition is not present, and the index of the located condition.
|
// Returns nil and -1 if the condition is not present, and the index of the located condition.
|
||||||
@ -35,13 +31,3 @@ func GetNodeCondition(status *v1.NodeStatus, conditionType v1.NodeConditionType)
|
|||||||
}
|
}
|
||||||
return -1, nil
|
return -1, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsNodeReady returns true if a node is ready; false otherwise.
|
|
||||||
func IsNodeReady(node *v1.Node) bool {
|
|
||||||
for _, c := range node.Status.Conditions {
|
|
||||||
if c.Type == v1.NodeReady {
|
|
||||||
return c.Status == v1.ConditionTrue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user