Skip to content

Commit

Permalink
Merge pull request kubernetes#5008 from ddysher/external-id
Browse files Browse the repository at this point in the history
Move Node.ExternalID to CloudNodes()
  • Loading branch information
erictune committed Mar 4, 2015
2 parents f205c98 + 53e17f0 commit 0059c39
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 23 deletions.
43 changes: 24 additions & 19 deletions pkg/cloudprovider/controller/nodecontroller.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,28 @@ func NewNodeController(

// Run creates initial node list and start syncing instances from cloudprovider if any.
// It also starts syncing cluster node status.
// 1. RegisterNodes() is called only once to register all initial nodes (from cloudprovider
// or from command line flag). To make cluster bootstrap faster, node controller populates
// node addresses.
// 2. SyncCloud() is called periodically (if enabled) to sync instances from cloudprovider.
// Node created here will only have specs.
// 3. SyncNodeStatus() is called periodically (if enabled) to sync node status for nodes in
// k8s cluster.
func (s *NodeController) Run(period time.Duration, syncNodeList, syncNodeStatus bool) {
// Register intial set of nodes with their status set.
var nodes *api.NodeList
var err error
if s.isRunningCloudProvider() {
if syncNodeList {
nodes, err = s.CloudNodes()
nodes, err = s.GetCloudNodesWithSpec()
if err != nil {
glog.Errorf("Error loading initial node from cloudprovider: %v", err)
}
} else {
nodes = &api.NodeList{}
}
} else {
nodes, err = s.StaticNodes()
nodes, err = s.GetStaticNodesWithSpec()
if err != nil {
glog.Errorf("Error loading initial static nodes: %v", err)
}
Expand Down Expand Up @@ -167,11 +174,7 @@ func (s *NodeController) RegisterNodes(nodes *api.NodeList, retryCount int, retr

// SyncCloud synchronizes the list of instances from cloudprovider to master server.
func (s *NodeController) SyncCloud() error {
matches, err := s.CloudNodes()
if err != nil {
return err
}
matches, err = s.PopulateIPs(matches)
matches, err := s.GetCloudNodesWithSpec()
if err != nil {
return err
}
Expand Down Expand Up @@ -276,12 +279,6 @@ func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error)
} else {
node.Status.HostIP = hostIP.String()
}
instanceID, err := instances.ExternalID(node.Name)
if err != nil {
glog.Errorf("error getting instance id for %s: %v", node.Name, err)
} else {
node.Spec.ExternalID = instanceID
}
}
} else {
for i := range nodes.Items {
Expand Down Expand Up @@ -398,9 +395,10 @@ func (s *NodeController) deletePods(nodeID string) error {
return nil
}

// StaticNodes constructs and returns api.NodeList for static nodes. If error
// occurs, an empty NodeList will be returned with a non-nil error info.
func (s *NodeController) StaticNodes() (*api.NodeList, error) {
// GetStaticNodesWithSpec constructs and returns api.NodeList for static nodes. If error
// occurs, an empty NodeList will be returned with a non-nil error info. The
// method only constructs spec fields for nodes.
func (s *NodeController) GetStaticNodesWithSpec() (*api.NodeList, error) {
result := &api.NodeList{}
for _, nodeID := range s.nodes {
node := api.Node{
Expand All @@ -412,9 +410,10 @@ func (s *NodeController) StaticNodes() (*api.NodeList, error) {
return result, nil
}

// CloudNodes constructs and returns api.NodeList from cloudprovider. If error
// occurs, an empty NodeList will be returned with a non-nil error info.
func (s *NodeController) CloudNodes() (*api.NodeList, error) {
// GetCloudNodesWithSpec constructs and returns api.NodeList from cloudprovider. If error
// occurs, an empty NodeList will be returned with a non-nil error info. The
// method only constructs spec fields for nodes.
func (s *NodeController) GetCloudNodesWithSpec() (*api.NodeList, error) {
result := &api.NodeList{}
instances, ok := s.cloud.Instances()
if !ok {
Expand All @@ -437,6 +436,12 @@ func (s *NodeController) CloudNodes() (*api.NodeList, error) {
if resources != nil {
node.Spec.Capacity = resources.Capacity
}
instanceID, err := instances.ExternalID(node.Name)
if err != nil {
glog.Errorf("error getting instance id for %s: %v", node.Name, err)
} else {
node.Spec.ExternalID = instanceID
}
result.Items = append(result.Items, node)
}
return result, nil
Expand Down
8 changes: 4 additions & 4 deletions pkg/cloudprovider/controller/nodecontroller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ func TestRegisterNodes(t *testing.T) {
}
}

func TestCreateStaticNodes(t *testing.T) {
func TestCreateGetStaticNodesWithSpec(t *testing.T) {
table := []struct {
machines []string
expectedNodes *api.NodeList
Expand Down Expand Up @@ -296,7 +296,7 @@ func TestCreateStaticNodes(t *testing.T) {

for _, item := range table {
nodeController := NewNodeController(nil, "", item.machines, &api.NodeResources{}, nil, nil, 10, time.Minute)
nodes, err := nodeController.StaticNodes()
nodes, err := nodeController.GetStaticNodesWithSpec()
if err != nil {
t.Errorf("unexpected error: %v", err)
}
Expand All @@ -306,7 +306,7 @@ func TestCreateStaticNodes(t *testing.T) {
}
}

func TestCreateCloudNodes(t *testing.T) {
func TestCreateGetCloudNodesWithSpec(t *testing.T) {
resourceList := api.ResourceList{
api.ResourceCPU: *resource.NewMilliQuantity(1000, resource.DecimalSI),
api.ResourceMemory: *resource.NewQuantity(3000, resource.DecimalSI),
Expand Down Expand Up @@ -357,7 +357,7 @@ func TestCreateCloudNodes(t *testing.T) {

for _, item := range table {
nodeController := NewNodeController(item.fakeCloud, ".*", nil, &api.NodeResources{}, nil, nil, 10, time.Minute)
nodes, err := nodeController.CloudNodes()
nodes, err := nodeController.GetCloudNodesWithSpec()
if err != nil {
t.Errorf("unexpected error: %v", err)
}
Expand Down

0 comments on commit 0059c39

Please sign in to comment.