vsphere/internal/virtualdevice/virtual_machine_device_subresource.go
func (r *Subresource) SaveDevIDs(device types.BaseVirtualDevice, ctlr types.BaseVirtualController) error {
	r.Set("key", device.GetVirtualDevice().Key)
	addr, err := computeDevAddr(device, ctlr)
	if err != nil {
		return err
	}
	r.Set("device_address", addr)
	return nil
}
func (r *Subresource) SaveDevIDs(device types.BaseVirtualDevice, ctlr types.BaseVirtualController) error {
	r.Set("key", device.GetVirtualDevice().Key)
	addr, err := computeDevAddr(device, ctlr)
	if err != nil {
		return err
	}
	r.Set("device_address", addr)
	return nil
}
// SaveDevIDs saves the device's current key, and also the device_address. The
// latter is a computed schema field that contains the controller type, the
// controller's bus number, and the device's unit number on that controller.
// This helps locate the device when the key is in flux (such as when devices
// are just being created).