vsphere/internal/virtualdevice/virtual_machine_device_subresource.go
func setSCSIBusSharing(l *object.VirtualDeviceList, ctlr types.BaseVirtualSCSIController, st string) ([]types.BaseVirtualDeviceConfigSpec, error) {
	var cspec []types.BaseVirtualDeviceConfigSpec
	if ctlr.GetVirtualSCSIController().SharedBus != types.VirtualSCSISharing(st) {
		ctlr.GetVirtualSCSIController().SharedBus = types.VirtualSCSISharing(st)
		var err error
		cspec, err = object.VirtualDeviceList{ctlr.(types.BaseVirtualDevice)}.ConfigSpec(types.VirtualDeviceConfigSpecOperationEdit)
		if err != nil {
			return nil, err
		}
		*l = applyDeviceChange(*l, cspec)
	}
	return cspec, nil
}
func setSCSIBusSharing(l *object.VirtualDeviceList, ctlr types.BaseVirtualSCSIController, st string) ([]types.BaseVirtualDeviceConfigSpec, error) {
	var cspec []types.BaseVirtualDeviceConfigSpec
	if ctlr.GetVirtualSCSIController().SharedBus != types.VirtualSCSISharing(st) {
		ctlr.GetVirtualSCSIController().SharedBus = types.VirtualSCSISharing(st)
		var err error
		cspec, err = object.VirtualDeviceList{ctlr.(types.BaseVirtualDevice)}.ConfigSpec(types.VirtualDeviceConfigSpecOperationEdit)
		if err != nil {
			return nil, err
		}
		*l = applyDeviceChange(*l, cspec)
	}
	return cspec, nil
}
// setSCSIBusSharing takes a BaseVirtualSCSIController, sets the sharing mode,
// and applies that change to the VirtualDeviceList.