From 641693ad0576257e4b913e3bd066dfa6b1ed9cb4 Mon Sep 17 00:00:00 2001 From: FengyunPan2 Date: Thu, 23 Aug 2018 13:20:47 +0800 Subject: [PATCH] Make OpenStack cloud provider report a node hostname address Related to: #67714 Cloud-provider-reported addresses are authoritative in 1.12, this preserves default behavior that used the internal dns name as the "Hostname" address on Node status. --- pkg/cloudprovider/providers/openstack/openstack.go | 14 +++++++++++++- .../providers/openstack/openstack_test.go | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go index 9b3a7d3272..ce08a277f5 100644 --- a/pkg/cloudprovider/providers/openstack/openstack.go +++ b/pkg/cloudprovider/providers/openstack/openstack.go @@ -53,7 +53,10 @@ import ( const ( // ProviderName is the name of the openstack provider - ProviderName = "openstack" + ProviderName = "openstack" + + // TypeHostName is the name type of openstack instance + TypeHostName = "hostname" availabilityZone = "availability_zone" defaultTimeOut = 60 * time.Second ) @@ -498,6 +501,15 @@ func nodeAddresses(srv *servers.Server) ([]v1.NodeAddress, error) { ) } + if srv.Metadata[TypeHostName] != "" { + v1helper.AddToNodeAddresses(&addrs, + v1.NodeAddress{ + Type: v1.NodeHostName, + Address: srv.Metadata[TypeHostName], + }, + ) + } + return addrs, nil } diff --git a/pkg/cloudprovider/providers/openstack/openstack_test.go b/pkg/cloudprovider/providers/openstack/openstack_test.go index ada583d30e..929cec70ba 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_test.go +++ b/pkg/cloudprovider/providers/openstack/openstack_test.go @@ -444,6 +444,10 @@ func TestNodeAddresses(t *testing.T) { }, }, }, + Metadata: map[string]string{ + "name": "a1-yinvcez57-0-bvynoyawrhcg-kube-minion-fg5i4jwcc2yy", + TypeHostName: "a1-yinvcez57-0-bvynoyawrhcg-kube-minion-fg5i4jwcc2yy.novalocal", + }, } addrs, err := nodeAddresses(&srv) @@ -462,6 +466,7 @@ func TestNodeAddresses(t *testing.T) { {Type: v1.NodeExternalIP, Address: "50.56.176.35"}, {Type: v1.NodeExternalIP, Address: "50.56.176.36"}, {Type: v1.NodeExternalIP, Address: "50.56.176.99"}, + {Type: v1.NodeHostName, Address: "a1-yinvcez57-0-bvynoyawrhcg-kube-minion-fg5i4jwcc2yy.novalocal"}, } if !reflect.DeepEqual(want, addrs) {