diff --git a/pkg/cloudprovider/controller/nodecontroller.go b/pkg/cloudprovider/controller/nodecontroller.go index 58ddc7e2e22..7a596589f51 100644 --- a/pkg/cloudprovider/controller/nodecontroller.go +++ b/pkg/cloudprovider/controller/nodecontroller.go @@ -40,6 +40,11 @@ var ( ErrCloudInstance = errors.New("cloud provider doesn't support instances.") ) +var ( + // aliased to allow mocking in tests + lookupIP = net.LookupIP +) + type NodeController struct { cloud cloudprovider.Interface matchRE string @@ -285,7 +290,7 @@ func (s *NodeController) PopulateIPs(nodes *api.NodeList) (*api.NodeList, error) if addr != nil { node.Status.HostIP = node.Name } else { - addrs, err := net.LookupIP(node.Name) + addrs, err := lookupIP(node.Name) if err != nil { glog.Errorf("Can't get ip address of node %s: %v", node.Name, err) } else if len(addrs) == 0 { diff --git a/pkg/cloudprovider/controller/nodecontroller_test.go b/pkg/cloudprovider/controller/nodecontroller_test.go index dfaa0250071..c1eb6bfb059 100644 --- a/pkg/cloudprovider/controller/nodecontroller_test.go +++ b/pkg/cloudprovider/controller/nodecontroller_test.go @@ -18,6 +18,7 @@ package controller import ( "errors" + "fmt" "net" "reflect" "sort" @@ -51,6 +52,12 @@ type FakeNodeHandler struct { RequestCount int } +func init() { + lookupIP = func(host string) ([]net.IP, error) { + return nil, fmt.Errorf("lookup %v: no such host", host) + } +} + func (c *FakeNodeHandler) Nodes() client.NodeInterface { return c }