From ab5250efd8db5a33fea6abfb45a8c9f22989557e Mon Sep 17 00:00:00 2001 From: Angus Lees Date: Tue, 30 Aug 2016 12:41:43 +1000 Subject: [PATCH] openstack: Set GetZone FailureDomain to nova AZ Set FailureDomain in GetZone result to value of availability_zone in local instance metadata. --- pkg/cloudprovider/providers/openstack/openstack.go | 13 +++++++++++-- .../providers/openstack/openstack_test.go | 7 +++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/cloudprovider/providers/openstack/openstack.go b/pkg/cloudprovider/providers/openstack/openstack.go index a422df1aec..44cfb43b31 100644 --- a/pkg/cloudprovider/providers/openstack/openstack.go +++ b/pkg/cloudprovider/providers/openstack/openstack.go @@ -395,9 +395,18 @@ func (os *OpenStack) Zones() (cloudprovider.Zones, bool) { return os, true } func (os *OpenStack) GetZone() (cloudprovider.Zone, error) { - glog.V(1).Infof("Current zone is %v", os.region) + md, err := getMetadata() + if err != nil { + return cloudprovider.Zone{}, err + } - return cloudprovider.Zone{Region: os.region}, nil + zone := cloudprovider.Zone{ + FailureDomain: md.AvailabilityZone, + Region: os.region, + } + glog.V(1).Infof("Current zone is %v", zone) + + return zone, nil } func (os *OpenStack) Routes() (cloudprovider.Routes, bool) { diff --git a/pkg/cloudprovider/providers/openstack/openstack_test.go b/pkg/cloudprovider/providers/openstack/openstack_test.go index 2cd4f09e37..625455df88 100644 --- a/pkg/cloudprovider/providers/openstack/openstack_test.go +++ b/pkg/cloudprovider/providers/openstack/openstack_test.go @@ -232,6 +232,9 @@ func TestLoadBalancer(t *testing.T) { } func TestZones(t *testing.T) { + SetMetadataFixture(&FakeMetadata) + defer ClearMetadata() + os := OpenStack{ provider: &gophercloud.ProviderClient{ IdentityBase: "http://auth.url/", @@ -252,6 +255,10 @@ func TestZones(t *testing.T) { if zone.Region != "myRegion" { t.Fatalf("GetZone() returned wrong region (%s)", zone.Region) } + + if zone.FailureDomain != "nova" { + t.Fatalf("GetZone() returned wrong failure domain (%s)", zone.FailureDomain) + } } func TestVolumes(t *testing.T) {