diff --git a/pkg/controller/node/doc.go b/pkg/controller/node/doc.go index 0cc00b6fff8..3174bef7c09 100644 --- a/pkg/controller/node/doc.go +++ b/pkg/controller/node/doc.go @@ -15,5 +15,5 @@ limitations under the License. */ // Package nodecontroller contains code for syncing cloud instances with -// minion registry +// node registry package nodecontroller diff --git a/pkg/kubectl/resource_printer_test.go b/pkg/kubectl/resource_printer_test.go index 4197ea98e84..b7d67eaffd7 100644 --- a/pkg/kubectl/resource_printer_test.go +++ b/pkg/kubectl/resource_printer_test.go @@ -545,21 +545,21 @@ func TestPrintEventsResultSorted(t *testing.T) { VerifyDatesInOrder(out, "\n" /* rowDelimiter */, " " /* columnDelimiter */, t) } -func TestPrintMinionStatus(t *testing.T) { +func TestPrintNodeStatus(t *testing.T) { printer := NewHumanReadablePrinter(false, false, false, false, []string{}) table := []struct { - minion api.Node + node api.Node status string }{ { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo1"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}}, }, status: "Ready", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo2"}, Spec: api.NodeSpec{Unschedulable: true}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionTrue}}}, @@ -567,7 +567,7 @@ func TestPrintMinionStatus(t *testing.T) { status: "Ready,SchedulingDisabled", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo3"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{ {Type: api.NodeReady, Status: api.ConditionTrue}, @@ -576,14 +576,14 @@ func TestPrintMinionStatus(t *testing.T) { status: "Ready", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo4"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}}, }, status: "NotReady", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo5"}, Spec: api.NodeSpec{Unschedulable: true}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: api.NodeReady, Status: api.ConditionFalse}}}, @@ -591,21 +591,21 @@ func TestPrintMinionStatus(t *testing.T) { status: "NotReady,SchedulingDisabled", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo6"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}}, }, status: "Unknown", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo7"}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}}, }, status: "Unknown", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo8"}, Spec: api.NodeSpec{Unschedulable: true}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{Type: "InvalidValue", Status: api.ConditionTrue}}}, @@ -613,7 +613,7 @@ func TestPrintMinionStatus(t *testing.T) { status: "Unknown,SchedulingDisabled", }, { - minion: api.Node{ + node: api.Node{ ObjectMeta: api.ObjectMeta{Name: "foo9"}, Spec: api.NodeSpec{Unschedulable: true}, Status: api.NodeStatus{Conditions: []api.NodeCondition{{}}}, @@ -624,12 +624,12 @@ func TestPrintMinionStatus(t *testing.T) { for _, test := range table { buffer := &bytes.Buffer{} - err := printer.PrintObj(&test.minion, buffer) + err := printer.PrintObj(&test.node, buffer) 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) { - 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()) } } } diff --git a/pkg/kubelet/kubelet.go b/pkg/kubelet/kubelet.go index d82f29ff26e..482564b4729 100644 --- a/pkg/kubelet/kubelet.go +++ b/pkg/kubelet/kubelet.go @@ -216,8 +216,8 @@ func NewMainKubelet( } nodeLister := &cache.StoreToNodeLister{Store: nodeStore} - // TODO: get the real minion object of ourself, - // and use the real minion name and UID. + // TODO: get the real node object of ourself, + // and use the real node name and UID. // TODO: what is namespace for node? nodeRef := &api.ObjectReference{ Kind: "Node", diff --git a/pkg/master/master.go b/pkg/master/master.go index 0c6569a7e3a..d3498aec8c4 100644 --- a/pkg/master/master.go +++ b/pkg/master/master.go @@ -56,10 +56,10 @@ import ( eventetcd "k8s.io/kubernetes/pkg/registry/event/etcd" expcontrolleretcd "k8s.io/kubernetes/pkg/registry/experimental/controller/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" 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" pvcetcd "k8s.io/kubernetes/pkg/registry/persistentvolumeclaim/etcd" podetcd "k8s.io/kubernetes/pkg/registry/pod/etcd" @@ -100,7 +100,7 @@ type Config struct { DatabaseStorage storage.Interface ExpDatabaseStorage storage.Interface EventTTL time.Duration - MinionRegexp string + NodeRegexp string KubeletClient client.KubeletClient // allow downstream consumers to disable the core controller loops EnableCoreControllers bool @@ -219,7 +219,7 @@ type Master struct { // registries are internal client APIs for accessing the storage layer // TODO: define the internal typed interface in a way that clients can // also be replaced - nodeRegistry minion.Registry + nodeRegistry node.Registry namespaceRegistry namespace.Registry serviceRegistry service.Registry endpointRegistry endpoint.Registry @@ -446,7 +446,7 @@ func (m *Master) init(c *Config) { m.endpointRegistry = endpoint.NewRegistry(endpointsStorage) 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) m.serviceRegistry = service.NewRegistry(serviceStorage) @@ -911,7 +911,7 @@ func (m *Master) needToReplaceTunnels(addrs []string) bool { } 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 { return nil, err } diff --git a/pkg/master/master_test.go b/pkg/master/master_test.go index f7ac4ebc381..898d92385ab 100644 --- a/pkg/master/master_test.go +++ b/pkg/master/master_test.go @@ -45,7 +45,7 @@ func TestGetServersToValidate(t *testing.T) { config.DatabaseStorage = etcdstorage.NewEtcdStorage(fakeClient, latest.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) diff --git a/pkg/registry/minion/doc.go b/pkg/registry/node/doc.go similarity index 85% rename from pkg/registry/minion/doc.go rename to pkg/registry/node/doc.go index b67a96d2b13..cd604b4ab41 100644 --- a/pkg/registry/minion/doc.go +++ b/pkg/registry/node/doc.go @@ -14,5 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package minion provides Registry interface and implementation for storing Minions. -package minion +// Package node provides Registry interface and implementation for storing Nodes. +package node diff --git a/pkg/registry/minion/etcd/etcd.go b/pkg/registry/node/etcd/etcd.go similarity index 90% rename from pkg/registry/minion/etcd/etcd.go rename to pkg/registry/node/etcd/etcd.go index 46f321513f0..ec66b5cf46f 100644 --- a/pkg/registry/minion/etcd/etcd.go +++ b/pkg/registry/node/etcd/etcd.go @@ -24,7 +24,7 @@ import ( "k8s.io/kubernetes/pkg/api/rest" client "k8s.io/kubernetes/pkg/client/unversioned" 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/storage" ) @@ -79,17 +79,17 @@ func NewREST(s storage.Interface, useCacher bool, connection client.ConnectionIn ObjectNameFunc: func(obj runtime.Object) (string, error) { return obj.(*api.Node).Name, nil }, - PredicateFunc: minion.MatchNode, + PredicateFunc: node.MatchNode, EndpointName: "node", - CreateStrategy: minion.Strategy, - UpdateStrategy: minion.Strategy, + CreateStrategy: node.Strategy, + UpdateStrategy: node.Strategy, Storage: storageInterface, } statusStore := *store - statusStore.UpdateStrategy = minion.StatusStrategy + statusStore.UpdateStrategy = node.StatusStrategy return &REST{store, connection}, &StatusREST{store: &statusStore} } @@ -97,7 +97,7 @@ func NewREST(s storage.Interface, useCacher bool, connection client.ConnectionIn // Implement Redirector. 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) { - return minion.ResourceLocation(r, r.connection, ctx, id) + return node.ResourceLocation(r, r.connection, ctx, id) } diff --git a/pkg/registry/minion/etcd/etcd_test.go b/pkg/registry/node/etcd/etcd_test.go similarity index 100% rename from pkg/registry/minion/etcd/etcd_test.go rename to pkg/registry/node/etcd/etcd_test.go diff --git a/pkg/registry/minion/registry.go b/pkg/registry/node/registry.go similarity index 60% rename from pkg/registry/minion/registry.go rename to pkg/registry/node/registry.go index d67f983e286..e587b6c0f14 100644 --- a/pkg/registry/minion/registry.go +++ b/pkg/registry/node/registry.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package minion +package node import ( "k8s.io/kubernetes/pkg/api" @@ -26,12 +26,12 @@ import ( // Registry is an interface for things that know how to store node. type Registry interface { - ListMinions(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) - CreateMinion(ctx api.Context, minion *api.Node) error - UpdateMinion(ctx api.Context, minion *api.Node) error - GetMinion(ctx api.Context, minionID string) (*api.Node, error) - DeleteMinion(ctx api.Context, minionID string) error - WatchMinions(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) + ListNodes(ctx api.Context, label labels.Selector, field fields.Selector) (*api.NodeList, error) + CreateNode(ctx api.Context, node *api.Node) error + UpdateNode(ctx api.Context, node *api.Node) error + GetNode(ctx api.Context, nodeID string) (*api.Node, error) + DeleteNode(ctx api.Context, nodeID string) error + WatchNodes(ctx api.Context, label labels.Selector, field fields.Selector, resourceVersion string) (watch.Interface, error) } // storage puts strong typing around storage calls @@ -45,7 +45,7 @@ func NewRegistry(s rest.StandardStorage) Registry { 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) if err != nil { return nil, err @@ -54,21 +54,21 @@ func (s *storage) ListMinions(ctx api.Context, label labels.Selector, field fiel 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) 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) 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) } -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) if err != nil { return nil, err @@ -76,7 +76,7 @@ func (s *storage) GetMinion(ctx api.Context, name string) (*api.Node, error) { 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) return err } diff --git a/pkg/registry/minion/strategy.go b/pkg/registry/node/strategy.go similarity index 99% rename from pkg/registry/minion/strategy.go rename to pkg/registry/node/strategy.go index 0c775ee66ee..939fc106dca 100644 --- a/pkg/registry/minion/strategy.go +++ b/pkg/registry/node/strategy.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package minion +package node import ( "fmt" diff --git a/pkg/registry/minion/strategy_test.go b/pkg/registry/node/strategy_test.go similarity index 98% rename from pkg/registry/minion/strategy_test.go rename to pkg/registry/node/strategy_test.go index 7708a5abadd..4b0f998ea51 100644 --- a/pkg/registry/minion/strategy_test.go +++ b/pkg/registry/node/strategy_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package minion +package node import ( "testing" diff --git a/pkg/registry/registrytest/minion.go b/pkg/registry/registrytest/minion.go deleted file mode 100644 index 7c0ba439e81..00000000000 --- a/pkg/registry/registrytest/minion.go +++ /dev/null @@ -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 -} diff --git a/pkg/registry/registrytest/node.go b/pkg/registry/registrytest/node.go new file mode 100644 index 00000000000..c2d2476f568 --- /dev/null +++ b/pkg/registry/registrytest/node.go @@ -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 +}