mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #12028 from cjcullen/kl2
Make gce.ExternalID() use metadata server when requesting current external ID
This commit is contained in:
commit
20129b0adf
@ -58,6 +58,7 @@ type GCECloud struct {
|
||||
projectID string
|
||||
zone string
|
||||
instanceID string
|
||||
externalID string
|
||||
networkName string
|
||||
|
||||
// Used for accessing the metadata server
|
||||
@ -124,6 +125,14 @@ func getInstanceID() (string, error) {
|
||||
return parts[0], nil
|
||||
}
|
||||
|
||||
func getCurrentExternalID() (string, error) {
|
||||
externalID, err := metadata.Get("instance/id")
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("couldn't get external ID: %v", err)
|
||||
}
|
||||
return externalID, nil
|
||||
}
|
||||
|
||||
func getNetworkName() (string, error) {
|
||||
result, err := metadata.Get("instance/network-interfaces/0/network")
|
||||
if err != nil {
|
||||
@ -149,6 +158,10 @@ func newGCECloud(config io.Reader) (*GCECloud, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
externalID, err := getCurrentExternalID()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
networkName, err := getNetworkName()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -185,6 +198,7 @@ func newGCECloud(config io.Reader) (*GCECloud, error) {
|
||||
projectID: projectID,
|
||||
zone: zone,
|
||||
instanceID: instanceID,
|
||||
externalID: externalID,
|
||||
networkName: networkName,
|
||||
metadataAccess: getMetadata,
|
||||
}, nil
|
||||
@ -634,8 +648,16 @@ func (gce *GCECloud) NodeAddresses(_ string) ([]api.NodeAddress, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (gce *GCECloud) isCurrentInstance(instance string) bool {
|
||||
return gce.instanceID == canonicalizeInstanceName(instance)
|
||||
}
|
||||
|
||||
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
|
||||
func (gce *GCECloud) ExternalID(instance string) (string, error) {
|
||||
// if we are asking about the current instance, just go to metadata
|
||||
if gce.isCurrentInstance(instance) {
|
||||
return gce.externalID, nil
|
||||
}
|
||||
inst, err := gce.getInstanceByName(instance)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
Loading…
Reference in New Issue
Block a user