mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
implement vsphere InstanceMetadataByProviderID function
This commit is contained in:
parent
cf154e9d1f
commit
24fe349ddf
@ -639,17 +639,25 @@ func (vs *VSphere) getVMFromNodeName(ctx context.Context, nodeName k8stypes.Node
|
||||
|
||||
// NodeAddresses is an implementation of Instances.NodeAddresses.
|
||||
func (vs *VSphere) NodeAddresses(ctx context.Context, nodeName k8stypes.NodeName) ([]v1.NodeAddress, error) {
|
||||
// Get local IP addresses if node is local node
|
||||
if vs.hostName == convertToString(nodeName) {
|
||||
addrs, err := getLocalIP()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// add the hostname address
|
||||
nodehelpers.AddToNodeAddresses(&addrs, v1.NodeAddress{Type: v1.NodeHostName, Address: vs.hostName})
|
||||
return addrs, nil
|
||||
return vs.getNodeAddressesFromLocalIP()
|
||||
}
|
||||
return vs.getNodeAddressesFromVM(ctx, nodeName)
|
||||
}
|
||||
|
||||
// getNodeAddressesFromLocalIP get local IP addresses if node is local node.
|
||||
func (vs *VSphere) getNodeAddressesFromLocalIP() ([]v1.NodeAddress, error) {
|
||||
addrs, err := getLocalIP()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// add the hostname address
|
||||
nodehelpers.AddToNodeAddresses(&addrs, v1.NodeAddress{Type: v1.NodeHostName, Address: vs.hostName})
|
||||
return addrs, nil
|
||||
}
|
||||
|
||||
// getNodeAddressesFromVM get vm IP addresses if node is vm.
|
||||
func (vs *VSphere) getNodeAddressesFromVM(ctx context.Context, nodeName k8stypes.NodeName) ([]v1.NodeAddress, error) {
|
||||
if vs.cfg == nil {
|
||||
return nil, cloudprovider.InstanceNotFound
|
||||
}
|
||||
@ -772,7 +780,37 @@ func (vs *VSphere) InstanceShutdownByProviderID(ctx context.Context, providerID
|
||||
|
||||
// InstanceMetadataByProviderID returns metadata of the specified instance.
|
||||
func (vs *VSphere) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error) {
|
||||
return nil, fmt.Errorf("unimplemented")
|
||||
if providerID == "" {
|
||||
return nil, fmt.Errorf("couldn't compute InstanceMetadata for empty providerID")
|
||||
}
|
||||
|
||||
// TODO dropped get nodeName by GetNodeNameFromProviderID here. If it not behave as expected,
|
||||
// get nodeName by vm.GetNodeNameFromProviderID.
|
||||
return vs.instanceMetadataByNodeName(ctx, convertToK8sType(providerID))
|
||||
}
|
||||
|
||||
func (vs *VSphere) instanceMetadataByNodeName(ctx context.Context, nodeName k8stypes.NodeName) (*cloudprovider.InstanceMetadata, error) {
|
||||
if vs.hostName == convertToString(nodeName) {
|
||||
addresses, err := vs.getNodeAddressesFromLocalIP()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &cloudprovider.InstanceMetadata{
|
||||
ProviderID: vs.vmUUID,
|
||||
Type: "",
|
||||
NodeAddresses: addresses,
|
||||
}, nil
|
||||
}
|
||||
|
||||
addresses, err := vs.getNodeAddressesFromVM(ctx, nodeName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &cloudprovider.InstanceMetadata{
|
||||
ProviderID: vs.vmUUID,
|
||||
Type: "",
|
||||
NodeAddresses: addresses,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// InstanceID returns the cloud provider ID of the node with the specified Name.
|
||||
|
Loading…
Reference in New Issue
Block a user