Skip to content

Commit 913f73a

Browse files
committed
1 parent 6f3069f commit 913f73a

4 files changed

Lines changed: 31 additions & 9 deletions

File tree

plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,9 @@ public <T extends VirtualMachine> VirtualMachineTO implement(VirtualMachineProfi
135135
if (!(vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO
136136
|| vm.getVirtualMachine() instanceof SecondaryStorageVmVO)){
137137
// user vm
138-
if (diskDeviceType != null){
139-
details.remove(VmDetailConstants.ROOK_DISK_CONTROLLER);
138+
if (diskDeviceType == null){
139+
details.put(VmDetailConstants.ROOK_DISK_CONTROLLER, _vmwareMgr.getRootDiskController());
140140
}
141-
details.put(VmDetailConstants.ROOK_DISK_CONTROLLER, _vmwareMgr.getRootDiskController());
142141
}
143142

144143
to.setDetails(details);

server/src/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2485,19 +2485,28 @@ protected UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOf
24852485
_vmCloneSettingDao.persist(vmCloneSettingVO);
24862486
}
24872487

2488+
long guestOSId = template.getGuestOSId();
2489+
GuestOSVO guestOS = _guestOSDao.findById(guestOSId);
2490+
long guestOSCategoryId = guestOS.getCategoryId();
2491+
GuestOSCategoryVO guestOSCategory = _guestOSCategoryDao.findById(guestOSCategoryId);
2492+
2493+
2494+
// If hypervisor is vSphere and OS is OS X, set special settings.
2495+
if (hypervisorType.equals(HypervisorType.VMware)) {
2496+
if (guestOS.getDisplayName().toLowerCase().contains("apple mac os")){
2497+
vm.setDetail("smc.present", "TRUE");
2498+
vm.setDetail(VmDetailConstants.ROOK_DISK_CONTROLLER, "scsi");
2499+
vm.setDetail("firmware", "efi");
2500+
s_logger.info("guestOS is OSX : overwrite root disk controller to scsi, use smc and efi");
2501+
}
2502+
}
24882503

24892504
_vmDao.persist(vm);
24902505
_vmDao.saveDetails(vm);
24912506

24922507
s_logger.debug("Allocating in the DB for vm");
24932508
DataCenterDeployment plan = new DataCenterDeployment(zone.getId());
24942509

2495-
2496-
long guestOSId = template.getGuestOSId();
2497-
GuestOSVO guestOS = _guestOSDao.findById(guestOSId);
2498-
long guestOSCategoryId = guestOS.getCategoryId();
2499-
GuestOSCategoryVO guestOSCategory = _guestOSCategoryDao.findById(guestOSCategoryId);
2500-
25012510
List<String> computeTags = new ArrayList<String>();
25022511
computeTags.add(offering.getHostTag());
25032512

setup/db/db/schema-410to420.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,15 @@ INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest
124124
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Windows 8 (64 bit)', 209);
125125
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Windows 8 Server (64 bit)', 210);
126126

127+
INSERT INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (211, UUID(), 7, 'Apple Mac OS X 10.6 (32 bits)');
128+
INSERT INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (212, UUID(), 7, 'Apple Mac OS X 10.6 (64 bits)');
129+
INSERT INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (213, UUID(), 7, 'Apple Mac OS X 10.7 (32 bits)');
130+
INSERT INTO `cloud`.`guest_os` (id, uuid, category_id, display_name) VALUES (214, UUID(), 7, 'Apple Mac OS X 10.7 (64 bits)');
131+
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Apple Mac OS X 10.6 (32 bits)', 211);
132+
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Apple Mac OS X 10.6 (64 bits)', 212);
133+
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Apple Mac OS X 10.7 (32 bits)', 213);
134+
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("VmWare", 'Apple Mac OS X 10.7 (64 bits)', 214);
135+
127136
CREATE TABLE `cloud`.`user_vm_clone_setting` (
128137
`vm_id` bigint unsigned NOT NULL COMMENT 'guest VM id',
129138
`clone_type` varchar(10) NOT NULL COMMENT 'Full or Linked Clone (applicable to VMs on ESX)',

vmware-base/src/com/cloud/hypervisor/vmware/util/VmwareGuestOsMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ public class VmwareGuestOsMapper {
6262
s_mapper.put("Windows 8 (64 bit)", VirtualMachineGuestOsIdentifier.WINDOWS_8_64_GUEST);
6363
s_mapper.put("Windows 8 Server (64 bit)", VirtualMachineGuestOsIdentifier.WINDOWS_8_SERVER_64_GUEST);
6464

65+
s_mapper.put("Apple Mac OS X 10.6 (32 bits)", VirtualMachineGuestOsIdentifier.DARWIN_10_GUEST);
66+
s_mapper.put("Apple Mac OS X 10.6 (64 bits)", VirtualMachineGuestOsIdentifier.DARWIN_10_64_GUEST);
67+
s_mapper.put("Apple Mac OS X 10.7 (32 bits)", VirtualMachineGuestOsIdentifier.DARWIN_11_GUEST);
68+
s_mapper.put("Apple Mac OS X 10.7 (64 bits)", VirtualMachineGuestOsIdentifier.DARWIN_11_64_GUEST);
69+
6570
s_mapper.put("Open Enterprise Server", VirtualMachineGuestOsIdentifier.OES_GUEST);
6671

6772
s_mapper.put("Asianux 3(32-bit)", VirtualMachineGuestOsIdentifier.ASIANUX_3_GUEST);

0 commit comments

Comments
 (0)