1818
1919import java .io .ByteArrayInputStream ;
2020import java .io .File ;
21+ import java .io .FileWriter ;
2122import java .io .IOException ;
2223import java .io .StringWriter ;
2324import java .net .URI ;
2829import java .util .HashMap ;
2930import java .util .List ;
3031import java .util .Map ;
32+ import java .util .UUID ;
3133
3234import javax .xml .parsers .DocumentBuilderFactory ;
3335import javax .xml .parsers .ParserConfigurationException ;
3739import javax .xml .transform .dom .DOMSource ;
3840import javax .xml .transform .stream .StreamResult ;
3941
40- import com .vmware .vim25 .ClusterConfigInfoEx ;
41- import com .vmware .vim25 .DatacenterConfigInfo ;
4242import org .apache .cloudstack .engine .orchestration .service .NetworkOrchestrationService ;
4343import org .apache .commons .lang .StringUtils ;
4444import org .apache .log4j .Logger ;
6969import com .cloud .utils .exception .CloudRuntimeException ;
7070import com .cloud .utils .net .NetUtils ;
7171import com .cloud .utils .nicira .nvp .plugin .NiciraNvpApiVersion ;
72- import com .vmware .vim25 .OvfCreateDescriptorParams ;
73- import com .vmware .vim25 .OvfCreateDescriptorResult ;
7472import com .vmware .vim25 .AlreadyExistsFaultMsg ;
7573import com .vmware .vim25 .BoolPolicy ;
74+ import com .vmware .vim25 .ClusterConfigInfoEx ;
7675import com .vmware .vim25 .CustomFieldStringValue ;
7776import com .vmware .vim25 .DVPortSetting ;
7877import com .vmware .vim25 .DVPortgroupConfigInfo ;
7978import com .vmware .vim25 .DVPortgroupConfigSpec ;
8079import com .vmware .vim25 .DVSSecurityPolicy ;
8180import com .vmware .vim25 .DVSTrafficShapingPolicy ;
81+ import com .vmware .vim25 .DatacenterConfigInfo ;
8282import com .vmware .vim25 .DynamicProperty ;
8383import com .vmware .vim25 .HostNetworkSecurityPolicy ;
8484import com .vmware .vim25 .HostNetworkTrafficShapingPolicy ;
9595import com .vmware .vim25 .NumericRange ;
9696import com .vmware .vim25 .ObjectContent ;
9797import com .vmware .vim25 .OptionValue ;
98+ import com .vmware .vim25 .OvfCreateDescriptorParams ;
99+ import com .vmware .vim25 .OvfCreateDescriptorResult ;
98100import com .vmware .vim25 .OvfCreateImportSpecParams ;
99101import com .vmware .vim25 .OvfCreateImportSpecResult ;
100- import com .vmware .vim25 .OvfFileItem ;
101102import com .vmware .vim25 .OvfFile ;
103+ import com .vmware .vim25 .OvfFileItem ;
102104import com .vmware .vim25 .ParaVirtualSCSIController ;
103105import com .vmware .vim25 .VMwareDVSConfigSpec ;
104106import com .vmware .vim25 .VMwareDVSPortSetting ;
108110import com .vmware .vim25 .VirtualBusLogicController ;
109111import com .vmware .vim25 .VirtualController ;
110112import com .vmware .vim25 .VirtualDevice ;
111- import com .vmware .vim25 .VirtualDisk ;
112113import com .vmware .vim25 .VirtualDeviceConfigSpec ;
113114import com .vmware .vim25 .VirtualDeviceConfigSpecOperation ;
115+ import com .vmware .vim25 .VirtualDisk ;
114116import com .vmware .vim25 .VirtualIDEController ;
115117import com .vmware .vim25 .VirtualLsiLogicController ;
116118import com .vmware .vim25 .VirtualLsiLogicSASController ;
117119import com .vmware .vim25 .VirtualMachineConfigSpec ;
118120import com .vmware .vim25 .VirtualMachineFileInfo ;
119121import com .vmware .vim25 .VirtualMachineGuestOsIdentifier ;
122+ import com .vmware .vim25 .VirtualMachineImportSpec ;
120123import com .vmware .vim25 .VirtualMachineVideoCard ;
121124import com .vmware .vim25 .VirtualSCSIController ;
122125import com .vmware .vim25 .VirtualSCSISharing ;
123- import com .vmware .vim25 .VirtualMachineImportSpec ;
124126import com .vmware .vim25 .VmwareDistributedVirtualSwitchPvlanSpec ;
125127import com .vmware .vim25 .VmwareDistributedVirtualSwitchTrunkVlanSpec ;
126128import com .vmware .vim25 .VmwareDistributedVirtualSwitchVlanIdSpec ;
127129import com .vmware .vim25 .VmwareDistributedVirtualSwitchVlanSpec ;
128- import java .io .FileWriter ;
129- import java .util .UUID ;
130130
131131public class HypervisorHostHelper {
132132 private static final Logger s_logger = Logger .getLogger (HypervisorHostHelper .class );
@@ -138,6 +138,48 @@ public class HypervisorHostHelper {
138138 private static final String VMDK_PACK_DIR = "ova" ;
139139 private static final String OVA_OPTION_KEY_BOOTDISK = "cloud.ova.bootdisk" ;
140140
141+ protected final static Map <String , Integer > apiVersionHardwareVersionMap ;
142+
143+ static {
144+ apiVersionHardwareVersionMap = new HashMap <String , Integer >();
145+ apiVersionHardwareVersionMap .put ("3.5" , 4 );
146+ apiVersionHardwareVersionMap .put ("3.6" , 4 );
147+ apiVersionHardwareVersionMap .put ("3.7" , 4 );
148+ apiVersionHardwareVersionMap .put ("3.8" , 4 );
149+ apiVersionHardwareVersionMap .put ("3.9" , 4 );
150+ apiVersionHardwareVersionMap .put ("4.0" , 7 );
151+ apiVersionHardwareVersionMap .put ("4.1" , 7 );
152+ apiVersionHardwareVersionMap .put ("4.2" , 7 );
153+ apiVersionHardwareVersionMap .put ("4.3" , 7 );
154+ apiVersionHardwareVersionMap .put ("4.4" , 7 );
155+ apiVersionHardwareVersionMap .put ("4.5" , 7 );
156+ apiVersionHardwareVersionMap .put ("4.6" , 7 );
157+ apiVersionHardwareVersionMap .put ("4.7" , 7 );
158+ apiVersionHardwareVersionMap .put ("4.8" , 7 );
159+ apiVersionHardwareVersionMap .put ("4.9" , 7 );
160+ apiVersionHardwareVersionMap .put ("5.0" , 8 );
161+ apiVersionHardwareVersionMap .put ("5.1" , 9 );
162+ apiVersionHardwareVersionMap .put ("5.2" , 9 );
163+ apiVersionHardwareVersionMap .put ("5.3" , 9 );
164+ apiVersionHardwareVersionMap .put ("5.4" , 9 );
165+ apiVersionHardwareVersionMap .put ("5.5" , 10 );
166+ apiVersionHardwareVersionMap .put ("5.6" , 10 );
167+ apiVersionHardwareVersionMap .put ("5.7" , 10 );
168+ apiVersionHardwareVersionMap .put ("5.8" , 10 );
169+ apiVersionHardwareVersionMap .put ("5.9" , 10 );
170+ apiVersionHardwareVersionMap .put ("6.0" , 11 );
171+ apiVersionHardwareVersionMap .put ("6.1" , 11 );
172+ apiVersionHardwareVersionMap .put ("6.2" , 11 );
173+ apiVersionHardwareVersionMap .put ("6.3" , 11 );
174+ apiVersionHardwareVersionMap .put ("6.4" , 11 );
175+ apiVersionHardwareVersionMap .put ("6.5" , 13 );
176+ apiVersionHardwareVersionMap .put ("6.6" , 13 );
177+ apiVersionHardwareVersionMap .put ("6.7" , 14 );
178+ apiVersionHardwareVersionMap .put ("6.8" , 14 );
179+ apiVersionHardwareVersionMap .put ("6.9" , 14 );
180+ apiVersionHardwareVersionMap .put ("7.0" , 17 );
181+ }
182+
141183 public static VirtualMachineMO findVmFromObjectContent (VmwareContext context , ObjectContent [] ocs , String name , String instanceNameCustomField ) {
142184
143185 if (ocs != null && ocs .length > 0 ) {
@@ -2080,4 +2122,19 @@ public static boolean isIdeController(String controller) {
20802122 return DiskControllerType .getType (controller ) == DiskControllerType .ide ;
20812123 }
20822124
2125+ public static Integer getHostHardwareVersion (VmwareHypervisorHost host ) {
2126+ Integer version = null ;
2127+ HostMO hostMo = new HostMO (host .getContext (), host .getMor ());
2128+ String hostApiVersion = "" ;
2129+ try {
2130+ hostApiVersion = hostMo .getHostAboutInfo ().getApiVersion ();
2131+ } catch (Exception ignored ) {
2132+ }
2133+ if (hostApiVersion == null ) {
2134+ hostApiVersion = "" ;
2135+ }
2136+ version = apiVersionHardwareVersionMap .get (hostApiVersion );
2137+ return version ;
2138+ }
2139+
20832140}
0 commit comments