Merge pull request #74936 from rjaini/rj_1.14

Adding a check to make sure Metadata is read only if flag value is true.
pull/564/head
Kubernetes Prow Robot 2019-03-07 01:07:13 -08:00 committed by GitHub
commit 2f930306a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 23 deletions

View File

@ -1677,6 +1677,7 @@ func TestGetZone(t *testing.T) {
cloud := &Cloud{ cloud := &Cloud{
Config: Config{ Config: Config{
Location: "eastus", Location: "eastus",
UseInstanceMetadata: true,
}, },
} }
testcases := []struct { testcases := []struct {

View File

@ -19,6 +19,7 @@ package azure
import ( import (
"context" "context"
"fmt" "fmt"
"os"
"strconv" "strconv"
"strings" "strings"
@ -49,6 +50,7 @@ func (az *Cloud) GetZoneID(zoneLabel string) string {
// GetZone returns the Zone containing the current availability zone and locality region that the program is running in. // GetZone returns the Zone containing the current availability zone and locality region that the program is running in.
// If the node is not running with availability zones, then it will fall back to fault domain. // If the node is not running with availability zones, then it will fall back to fault domain.
func (az *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) { func (az *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
if az.UseInstanceMetadata {
metadata, err := az.metadata.GetMetadata() metadata, err := az.metadata.GetMetadata()
if err != nil { if err != nil {
return cloudprovider.Zone{}, err return cloudprovider.Zone{}, err
@ -75,6 +77,13 @@ func (az *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error) {
Region: az.Location, Region: az.Location,
}, nil }, nil
} }
// if UseInstanceMetadata is false, get Zone name by calling ARM
hostname, err := os.Hostname()
if err != nil {
return cloudprovider.Zone{}, fmt.Errorf("failure getting hostname from kernel")
}
return az.vmSet.GetZoneByNodeName(strings.ToLower(hostname))
}
// GetZoneByProviderID implements Zones.GetZoneByProviderID // GetZoneByProviderID implements Zones.GetZoneByProviderID
// This is particularly useful in external cloud providers where the kubelet // This is particularly useful in external cloud providers where the kubelet