code: func (nm *NodeManager) renewNodeInfo(nodeInfo *NodeInfo, reconnect bool) (*NodeInfo, error) {
  	ctx, cancel := context.WithCancel(context.Background())
  	defer cancel()
  
  	vsphereInstance := nm.vsphereInstanceMap[nodeInfo.vcServer]
  	if vsphereInstance == nil {
  		err := fmt.Errorf("vSphereInstance for vSphere %q not found while refershing NodeInfo for VM %q", nodeInfo.vcServer, nodeInfo.vm)
  		return nil, err
  	}
  	if reconnect {
  		err := nm.vcConnect(ctx, vsphereInstance)
  		if err != nil {
  			return nil, err
  		}
  	}
  	vm := nodeInfo.vm.RenewVM(vsphereInstance.conn.Client)
  	return &NodeInfo{
  		vm:         &vm,
  		dataCenter: vm.Datacenter,
  		vcServer:   nodeInfo.vcServer,
  		vmUUID:     nodeInfo.vmUUID,
  		zone:       nodeInfo.zone,
  	}, nil
  }
docs: // renewNodeInfo renews vSphere connection, VirtualMachine and Datacenter for NodeInfo instance.