mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +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.
|
// NodeAddresses is an implementation of Instances.NodeAddresses.
|
||||||
func (vs *VSphere) NodeAddresses(ctx context.Context, nodeName k8stypes.NodeName) ([]v1.NodeAddress, error) {
|
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) {
|
if vs.hostName == convertToString(nodeName) {
|
||||||
addrs, err := getLocalIP()
|
return vs.getNodeAddressesFromLocalIP()
|
||||||
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.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 {
|
if vs.cfg == nil {
|
||||||
return nil, cloudprovider.InstanceNotFound
|
return nil, cloudprovider.InstanceNotFound
|
||||||
}
|
}
|
||||||
@ -772,7 +780,37 @@ func (vs *VSphere) InstanceShutdownByProviderID(ctx context.Context, providerID
|
|||||||
|
|
||||||
// InstanceMetadataByProviderID returns metadata of the specified instance.
|
// InstanceMetadataByProviderID returns metadata of the specified instance.
|
||||||
func (vs *VSphere) InstanceMetadataByProviderID(ctx context.Context, providerID string) (*cloudprovider.InstanceMetadata, error) {
|
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.
|
// InstanceID returns the cloud provider ID of the node with the specified Name.
|
||||||
|
Loading…
Reference in New Issue
Block a user