mirror of https://github.com/k3s-io/k3s
Rename "minion" to "node" in few places.
parent
45742e885c
commit
cd1ac360de
|
@ -15,5 +15,5 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Package nodecontroller contains code for syncing cloud instances with
|
// Package nodecontroller contains code for syncing cloud instances with
|
||||||
// minion registry
|
// node registry
|
||||||
package nodecontroller
|
package nodecontroller
|
||||||
|
|
|
@ -545,21 +545,21 @@ func TestPrintEventsResultSorted(t *testing.T) {
|
||||||
VerifyDatesInOrder(out, "\n" /* rowDelimiter */, " " /* columnDelimiter */, t)
|
VerifyDatesInOrder(out, "\n" /* rowDelimiter */, " " /* columnDelimiter */, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPrintMinionStatus(t *testing.T) {
|
func TestPrintNodeStatus(t *testing.T) {
|
||||||
printer := NewHumanReadablePrinter(false, false, false, false, []string{})
|
printer := NewHumanReadablePrinter(false, false, false, false, []string{})
|
||||||
table := []struct {
|
table := []struct {
|
||||||
minion api.Node
|
node api.Node
|
||||||
status string
|
status string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo1"},
|
ObjectMeta: api.ObjectMeta{Name: "foo1"},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}},
|
||||||
},
|
},
|
||||||
status: "Ready",
|
status: "Ready",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo2"},
|
ObjectMeta: api.ObjectMeta{Name: "foo2"},
|
||||||
Spec: api.NodeSpec{Unschedulable: true},
|
Spec: api.NodeSpec{Unschedulable: true},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}},
|
||||||
|
@ -567,7 +567,7 @@ func TestPrintMinionStatus(t *testing.T) {
|
||||||
status: "Ready,SchedulingDisabled",
|
status: "Ready,SchedulingDisabled",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo3"},
|
ObjectMeta: api.ObjectMeta{Name: "foo3"},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{
|
||||||
{Type: api.NodeReady, Status: api.ConditionTrue},
|
{Type: api.NodeReady, Status: api.ConditionTrue},
|
||||||
|
@ -576,14 +576,14 @@ func TestPrintMinionStatus(t *testing.T) {
|
||||||
status: "Ready",
|
status: "Ready",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo4"},
|
ObjectMeta: api.ObjectMeta{Name: "foo4"},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}},
|
||||||
},
|
},
|
||||||
status: "NotReady",
|
status: "NotReady",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo5"},
|
ObjectMeta: api.ObjectMeta{Name: "foo5"},
|
||||||
Spec: api.NodeSpec{Unschedulable: true},
|
Spec: api.NodeSpec{Unschedulable: true},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}},
|
||||||
|
@ -591,21 +591,21 @@ func TestPrintMinionStatus(t *testing.T) {
|
||||||
status: "NotReady,SchedulingDisabled",
|
status: "NotReady,SchedulingDisabled",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo6"},
|
ObjectMeta: api.ObjectMeta{Name: "foo6"},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}},
|
||||||
},
|
},
|
||||||
status: "Unknown",
|
status: "Unknown",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo7"},
|
ObjectMeta: api.ObjectMeta{Name: "foo7"},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}},
|
||||||
},
|
},
|
||||||
status: "Unknown",
|
status: "Unknown",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo8"},
|
ObjectMeta: api.ObjectMeta{Name: "foo8"},
|
||||||
Spec: api.NodeSpec{Unschedulable: true},
|
Spec: api.NodeSpec{Unschedulable: true},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}},
|
||||||
|
@ -613,7 +613,7 @@ func TestPrintMinionStatus(t *testing.T) {
|
||||||
status: "Unknown,SchedulingDisabled",
|
status: "Unknown,SchedulingDisabled",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
minion: api.Node{
|
node: api.Node{
|
||||||
ObjectMeta: api.ObjectMeta{Name: "foo9"},
|
ObjectMeta: api.ObjectMeta{Name: "foo9"},
|
||||||
Spec: api.NodeSpec{Unschedulable: true},
|
Spec: api.NodeSpec{Unschedulable: true},
|
||||||
Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}},
|
Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}},
|
||||||
|
@ -624,12 +624,12 @@ func TestPrintMinionStatus(t *testing.T) {
|
||||||
|
|
||||||
for _, test := range table {
|
for _, test := range table {
|
||||||
buffer := &bytes.Buffer{}
|
buffer := &bytes.Buffer{}
|
||||||
err := printer.PrintObj(&test.minion, buffer)
|
err := printer.PrintObj(&test.node, buffer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("An error occurred printing Minion: %#v", err)
|
t.Fatalf("An error occurred printing Node: %#v", err)
|
||||||
}
|
}
|
||||||
if !contains(strings.Fields(buffer.String()), test.status) {
|
if !contains(strings.Fields(buffer.String()), test.status) {
|
||||||
t.Fatalf("Expect printing minion %s with status %#v, got: %#v", test.minion.Name, test.status, buffer.String())
|
t.Fatalf("Expect printing node %s with status %#v, got: %#v", test.node.Name, test.status, buffer.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,8 +214,8 @@ func NewMainKubelet(
|
||||||
}
|
}
|
||||||
nodeLister := &cache.StoreToNodeLister{Store: nodeStore}
|
nodeLister := &cache.StoreToNodeLister{Store: nodeStore}
|
||||||
|
|
||||||
// TODO: get the real minion object of ourself,
|
// TODO: get the real node object of ourself,
|
||||||
// and use the real minion name and UID.
|
// and use the real node name and UID.
|
||||||
// TODO: what is namespace for node?
|
// TODO: what is namespace for node?
|
||||||
nodeRef := &api.ObjectReference{
|
nodeRef := &api.ObjectReference{
|
||||||
Kind: "Node",
|
Kind: "Node",
|
||||||
|
|
|
@ -56,10 +56,10 @@ import (
|
||||||
eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd"
|
eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd"
|
||||||
expcontrolleretcd "k8s.io/kubernetes/pkg/registry/experimental/controller/etcd"
|
expcontrolleretcd "k8s.io/kubernetes/pkg/registry/experimental/controller/etcd"
|
||||||
limitrangeetcd "k8s.io/kubernetes/pkg/registry/limitrange/etcd"
|
limitrangeetcd "k8s.io/kubernetes/pkg/registry/limitrange/etcd"
|
||||||
"k8s.io/kubernetes/pkg/registry/minion"
|
|
||||||
nodeetcd "k8s.io/kubernetes/pkg/registry/minion/etcd"
|
|
||||||
"k8s.io/kubernetes/pkg/registry/namespace"
|
"k8s.io/kubernetes/pkg/registry/namespace"
|
||||||
namespaceetcd "k8s.io/kubernetes/pkg/registry/namespace/etcd"
|
namespaceetcd "k8s.io/kubernetes/pkg/registry/namespace/etcd"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/node"
|
||||||
|
nodeetcd "k8s.io/kubernetes/pkg/registry/node/etcd"
|
||||||
pvetcd "k8s.io/kubernetes/pkg/registry/persistentvolume/etcd"
|
pvetcd "k8s.io/kubernetes/pkg/registry/persistentvolume/etcd"
|
||||||
pvcetcd "k8s.io/kubernetes/pkg/registry/persistentvolumeclaim/etcd"
|
pvcetcd "k8s.io/kubernetes/pkg/registry/persistentvolumeclaim/etcd"
|
||||||
podetcd "k8s.io/kubernetes/pkg/registry/pod/etcd"
|
podetcd "k8s.io/kubernetes/pkg/registry/pod/etcd"
|
||||||
|
@ -100,7 +100,7 @@ type Config struct {
|
||||||
DatabaseStorage storage.Interface
|
DatabaseStorage storage.Interface
|
||||||
ExpDatabaseStorage storage.Interface
|
ExpDatabaseStorage storage.Interface
|
||||||
EventTTL time.Duration
|
EventTTL time.Duration
|
||||||
MinionRegexp string
|
NodeRegexp string
|
||||||
KubeletClient client.KubeletClient
|
KubeletClient client.KubeletClient
|
||||||
// allow downstream consumers to disable the core controller loops
|
// allow downstream consumers to disable the core controller loops
|
||||||
EnableCoreControllers bool
|
EnableCoreControllers bool
|
||||||
|
@ -219,7 +219,7 @@ type Master struct {
|
||||||
// registries are internal client APIs for accessing the storage layer
|
// registries are internal client APIs for accessing the storage layer
|
||||||
// TODO: define the internal typed interface in a way that clients can
|
// TODO: define the internal typed interface in a way that clients can
|
||||||
// also be replaced
|
// also be replaced
|
||||||
nodeRegistry minion.Registry
|
nodeRegistry node.Registry
|
||||||
namespaceRegistry namespace.Registry
|
namespaceRegistry namespace.Registry
|
||||||
serviceRegistry service.Registry
|
serviceRegistry service.Registry
|
||||||
endpointRegistry endpoint.Registry
|
endpointRegistry endpoint.Registry
|
||||||
|
@ -446,7 +446,7 @@ func (m *Master) init(c *Config) {
|
||||||
m.endpointRegistry = endpoint.NewRegistry(endpointsStorage)
|
m.endpointRegistry = endpoint.NewRegistry(endpointsStorage)
|
||||||
|
|
||||||
nodeStorage, nodeStatusStorage := nodeetcd.NewREST(c.DatabaseStorage, c.EnableWatchCache, c.KubeletClient)
|
nodeStorage, nodeStatusStorage := nodeetcd.NewREST(c.DatabaseStorage, c.EnableWatchCache, c.KubeletClient)
|
||||||
m.nodeRegistry = minion.NewRegistry(nodeStorage)
|
m.nodeRegistry = node.NewRegistry(nodeStorage)
|
||||||
|
|
||||||
serviceStorage := serviceetcd.NewREST(c.DatabaseStorage)
|
serviceStorage := serviceetcd.NewREST(c.DatabaseStorage)
|
||||||
m.serviceRegistry = service.NewRegistry(serviceStorage)
|
m.serviceRegistry = service.NewRegistry(serviceStorage)
|
||||||
|
@ -911,7 +911,7 @@ func (m *Master) needToReplaceTunnels(addrs []string) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Master) getNodeAddresses() ([]string, error) {
|
func (m *Master) getNodeAddresses() ([]string, error) {
|
||||||
nodes, err := m.nodeRegistry.ListMinions(api.NewDefaultContext(), labels.Everything(), fields.Everything())
|
nodes, err := m.nodeRegistry.ListNodes(api.NewDefaultContext(), labels.Everything(), fields.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ func TestGetServersToValidate(t *testing.T) {
|
||||||
config.DatabaseStorage = etcdstorage.NewEtcdStorage(fakeClient, latest.Codec, etcdtest.PathPrefix())
|
config.DatabaseStorage = etcdstorage.NewEtcdStorage(fakeClient, latest.Codec, etcdtest.PathPrefix())
|
||||||
config.ExpDatabaseStorage = etcdstorage.NewEtcdStorage(fakeClient, explatest.Codec, etcdtest.PathPrefix())
|
config.ExpDatabaseStorage = etcdstorage.NewEtcdStorage(fakeClient, explatest.Codec, etcdtest.PathPrefix())
|
||||||
|
|
||||||
master.nodeRegistry = registrytest.NewMinionRegistry([]string{"node1", "node2"}, api.NodeResources{})
|
master.nodeRegistry = registrytest.NewNodeRegistry([]string{"node1", "node2"}, api.NodeResources{})
|
||||||
|
|
||||||
servers := master.getServersToValidate(&config)
|
servers := master.getServersToValidate(&config)
|
||||||
|
|
||||||
|
|
|
@ -14,5 +14,5 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Package minion provides Registry interface and implementation for storing Minions.
|
// Package node provides Registry interface and implementation for storing Nodes.
|
||||||
package minion
|
package node
|
|
@ -24,7 +24,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd"
|
etcdgeneric "k8s.io/kubernetes/pkg/registry/generic/etcd"
|
||||||
"k8s.io/kubernetes/pkg/registry/minion"
|
"k8s.io/kubernetes/pkg/registry/node"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/storage"
|
"k8s.io/kubernetes/pkg/storage"
|
||||||
)
|
)
|
||||||
|
@ -79,17 +79,17 @@ func NewREST(s storage.Interface, useCacher bool, connection client.ConnectionIn
|
||||||
ObjectNameFunc: func(obj runtime.Object) (string, error) {
|
ObjectNameFunc: func(obj runtime.Object) (string, error) {
|
||||||
return obj.(*api.Node).Name, nil
|
return obj.(*api.Node).Name, nil
|
||||||
},
|
},
|
||||||
PredicateFunc: minion.MatchNode,
|
PredicateFunc: node.MatchNode,
|
||||||
EndpointName: "node",
|
EndpointName: "node",
|
||||||
|
|
||||||
CreateStrategy: minion.Strategy,
|
CreateStrategy: node.Strategy,
|
||||||
UpdateStrategy: minion.Strategy,
|
UpdateStrategy: node.Strategy,
|
||||||
|
|
||||||
Storage: storageInterface,
|
Storage: storageInterface,
|
||||||
}
|
}
|
||||||
|
|
||||||
statusStore := *store
|
statusStore := *store
|
||||||
statusStore.UpdateStrategy = minion.StatusStrategy
|
statusStore.UpdateStrategy = node.StatusStrategy
|
||||||
|
|
||||||
return &REST{store, connection}, &StatusREST{store: &statusStore}
|
return &REST{store, connection}, &StatusREST{store: &statusStore}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ func NewREST(s storage.Interface, useCacher bool, connection client.ConnectionIn
|
||||||
// Implement Redirector.
|
// Implement Redirector.
|
||||||
var _ = rest.Redirector(&REST{})
|
var _ = rest.Redirector(&REST{})
|
||||||
|
|
||||||
// ResourceLocation returns a URL to which one can send traffic for the specified minion.
|
// ResourceLocation returns a URL to which one can send traffic for the specified node.
|
||||||
func (r *REST) ResourceLocation(ctx api.Context, id string) (*url.URL, http.RoundTripper, error) {
|
func (r *REST) ResourceLocation(ctx api.Context, id string) (*url.URL, http.RoundTripper, error) {
|
||||||
return minion.ResourceLocation(r, r.connection, ctx, id)
|
return node.ResourceLocation(r, r.connection, ctx, id)
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package minion
|
package node
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
@ -26,12 +26,12 @@ import (
|
||||||
|
|
||||||
// Registry is an interface for things that know how to store node.
|
// Registry is an interface for things that know how to store node.
|
||||||
type Registry interface {
|
type Registry interface {
|
||||||
ListMinions(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error)
|
ListNodes(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error)
|
||||||
CreateMinion(ctx api.Context, minion *api.Node) error
|
CreateNode(ctx api.Context, node *api.Node) error
|
||||||
UpdateMinion(ctx api.Context, minion *api.Node) error
|
UpdateNode(ctx api.Context, node *api.Node) error
|
||||||
GetMinion(ctx api.Context, minionID string) (*api.Node, error)
|
GetNode(ctx api.Context, nodeID string) (*api.Node, error)
|
||||||
DeleteMinion(ctx api.Context, minionID string) error
|
DeleteNode(ctx api.Context, nodeID string) error
|
||||||
WatchMinions(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error)
|
WatchNodes(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// storage puts strong typing around storage calls
|
// storage puts strong typing around storage calls
|
||||||
|
@ -45,7 +45,7 @@ func NewRegistry(s rest.StandardStorage) Registry {
|
||||||
return &storage{s}
|
return &storage{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) ListMinions(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) {
|
func (s *storage) ListNodes(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) {
|
||||||
obj, err := s.List(ctx, label, field)
|
obj, err := s.List(ctx, label, field)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -54,21 +54,21 @@ func (s *storage) ListMinions(ctx api.Context, label labels.Selector, field fiel
|
||||||
return obj.(*api.NodeList), nil
|
return obj.(*api.NodeList), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) CreateMinion(ctx api.Context, node *api.Node) error {
|
func (s *storage) CreateNode(ctx api.Context, node *api.Node) error {
|
||||||
_, err := s.Create(ctx, node)
|
_, err := s.Create(ctx, node)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) UpdateMinion(ctx api.Context, node *api.Node) error {
|
func (s *storage) UpdateNode(ctx api.Context, node *api.Node) error {
|
||||||
_, _, err := s.Update(ctx, node)
|
_, _, err := s.Update(ctx, node)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) WatchMinions(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) {
|
func (s *storage) WatchNodes(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) {
|
||||||
return s.Watch(ctx, label, field, resourceVersion)
|
return s.Watch(ctx, label, field, resourceVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) GetMinion(ctx api.Context, name string) (*api.Node, error) {
|
func (s *storage) GetNode(ctx api.Context, name string) (*api.Node, error) {
|
||||||
obj, err := s.Get(ctx, name)
|
obj, err := s.Get(ctx, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -76,7 +76,7 @@ func (s *storage) GetMinion(ctx api.Context, name string) (*api.Node, error) {
|
||||||
return obj.(*api.Node), nil
|
return obj.(*api.Node), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *storage) DeleteMinion(ctx api.Context, name string) error {
|
func (s *storage) DeleteNode(ctx api.Context, name string) error {
|
||||||
_, err := s.Delete(ctx, name, nil)
|
_, err := s.Delete(ctx, name, nil)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package minion
|
package node
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package minion
|
package node
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
|
@ -1,117 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 The Kubernetes Authors All rights reserved.
|
|
||||||
|
|
||||||
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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package registrytest
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
|
||||||
)
|
|
||||||
|
|
||||||
// MinionRegistry implements minion.Registry interface.
|
|
||||||
type MinionRegistry struct {
|
|
||||||
Err error
|
|
||||||
Minion string
|
|
||||||
Minions api.NodeList
|
|
||||||
|
|
||||||
sync.Mutex
|
|
||||||
}
|
|
||||||
|
|
||||||
// MakeMinionList constructs api.MinionList from list of minion names and a NodeResource.
|
|
||||||
func MakeMinionList(minions []string, nodeResources api.NodeResources) *api.NodeList {
|
|
||||||
list := api.NodeList{
|
|
||||||
Items: make([]api.Node, len(minions)),
|
|
||||||
}
|
|
||||||
for i := range minions {
|
|
||||||
list.Items[i].Name = minions[i]
|
|
||||||
list.Items[i].Status.Capacity = nodeResources.Capacity
|
|
||||||
}
|
|
||||||
return &list
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewMinionRegistry(minions []string, nodeResources api.NodeResources) *MinionRegistry {
|
|
||||||
return &MinionRegistry{
|
|
||||||
Minions: *MakeMinionList(minions, nodeResources),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) SetError(err error) {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
r.Err = err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) ListMinions(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
return &r.Minions, r.Err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) CreateMinion(ctx api.Context, minion *api.Node) error {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
r.Minion = minion.Name
|
|
||||||
r.Minions.Items = append(r.Minions.Items, *minion)
|
|
||||||
return r.Err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) UpdateMinion(ctx api.Context, minion *api.Node) error {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
for i, node := range r.Minions.Items {
|
|
||||||
if node.Name == minion.Name {
|
|
||||||
r.Minions.Items[i] = *minion
|
|
||||||
return r.Err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return r.Err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) GetMinion(ctx api.Context, minionID string) (*api.Node, error) {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
if r.Err != nil {
|
|
||||||
return nil, r.Err
|
|
||||||
}
|
|
||||||
for _, node := range r.Minions.Items {
|
|
||||||
if node.Name == minionID {
|
|
||||||
return &node, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, errors.NewNotFound("node", minionID)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) DeleteMinion(ctx api.Context, minionID string) error {
|
|
||||||
r.Lock()
|
|
||||||
defer r.Unlock()
|
|
||||||
var newList []api.Node
|
|
||||||
for _, node := range r.Minions.Items {
|
|
||||||
if node.Name != minionID {
|
|
||||||
newList = append(newList, api.Node{ObjectMeta: api.ObjectMeta{Name: node.Name}})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
r.Minions.Items = newList
|
|
||||||
return r.Err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *MinionRegistry) WatchMinions(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) {
|
|
||||||
return nil, r.Err
|
|
||||||
}
|
|
|
@ -0,0 +1,117 @@
|
||||||
|
/*
|
||||||
|
Copyright 2014 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package registrytest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NodeRegistry implements node.Registry interface.
|
||||||
|
type NodeRegistry struct {
|
||||||
|
Err error
|
||||||
|
Node string
|
||||||
|
Nodes api.NodeList
|
||||||
|
|
||||||
|
sync.Mutex
|
||||||
|
}
|
||||||
|
|
||||||
|
// MakeNodeList constructs api.NodeList from list of node names and a NodeResource.
|
||||||
|
func MakeNodeList(nodes []string, nodeResources api.NodeResources) *api.NodeList {
|
||||||
|
list := api.NodeList{
|
||||||
|
Items: make([]api.Node, len(nodes)),
|
||||||
|
}
|
||||||
|
for i := range nodes {
|
||||||
|
list.Items[i].Name = nodes[i]
|
||||||
|
list.Items[i].Status.Capacity = nodeResources.Capacity
|
||||||
|
}
|
||||||
|
return &list
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewNodeRegistry(nodes []string, nodeResources api.NodeResources) *NodeRegistry {
|
||||||
|
return &NodeRegistry{
|
||||||
|
Nodes: *MakeNodeList(nodes, nodeResources),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) SetError(err error) {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
r.Err = err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) ListNodes(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
return &r.Nodes, r.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) CreateNode(ctx api.Context, node *api.Node) error {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
r.Node = node.Name
|
||||||
|
r.Nodes.Items = append(r.Nodes.Items, *node)
|
||||||
|
return r.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) UpdateNode(ctx api.Context, node *api.Node) error {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
for i, item := range r.Nodes.Items {
|
||||||
|
if item.Name == node.Name {
|
||||||
|
r.Nodes.Items[i] = *node
|
||||||
|
return r.Err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) GetNode(ctx api.Context, nodeID string) (*api.Node, error) {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
if r.Err != nil {
|
||||||
|
return nil, r.Err
|
||||||
|
}
|
||||||
|
for _, node := range r.Nodes.Items {
|
||||||
|
if node.Name == nodeID {
|
||||||
|
return &node, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil, errors.NewNotFound("node", nodeID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) DeleteNode(ctx api.Context, nodeID string) error {
|
||||||
|
r.Lock()
|
||||||
|
defer r.Unlock()
|
||||||
|
var newList []api.Node
|
||||||
|
for _, node := range r.Nodes.Items {
|
||||||
|
if node.Name != nodeID {
|
||||||
|
newList = append(newList, api.Node{ObjectMeta: api.ObjectMeta{Name: node.Name}})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.Nodes.Items = newList
|
||||||
|
return r.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *NodeRegistry) WatchNodes(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) {
|
||||||
|
return nil, r.Err
|
||||||
|
}
|
Loading…
Reference in New Issue