31 lines
852 B
Go
31 lines
852 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/kubernetes"
|
|
)
|
|
|
|
// based on k8s.io/kubernetes/pkg/controller/nodeipam/ipam/adapter.go
|
|
func setNodeNetworkUnavailableFalse(c kubernetes.Interface, nodeName string) error {
|
|
condition := v1.NodeCondition{
|
|
Type: v1.NodeNetworkUnavailable,
|
|
Status: v1.ConditionFalse,
|
|
Reason: "WeaveIsUp",
|
|
Message: "Weave pod has set this",
|
|
LastTransitionTime: metav1.Now(),
|
|
LastHeartbeatTime: metav1.Now(),
|
|
}
|
|
raw, err := json.Marshal(&[]v1.NodeCondition{condition})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
patch := []byte(fmt.Sprintf(`{"status":{"conditions":%s}}`, raw))
|
|
_, err = c.CoreV1().Nodes().PatchStatus(context.Background(), nodeName, patch)
|
|
return err
|
|
}
|