following is the code snippets for above specified query.Can you suggest me am i missing any mandatory parameters while creation of vm.Am using vsphere web services sdk 5.0
following fault(error) am getting:
ManagedObjectReference hostmor=null;
if (hostName != null)
{
hostmor = cb.getServiceUtil().GetDecendentMoRef(hfmor, "HostSystem", hostName);
}
else
{
hostmor = cb.getServiceUtil().GetFirstDecendentMoRef(dcmor, "HostSystem");
}
ManagedObjectReference crmor = null;
hostName = (String)cb.getServiceUtil().GetDynamicProperty(hostmor, "name");
for (int i = 0; i < crmors.Count; i++)
{
ManagedObjectReference computeRsc = null;
foreach (object hostobj in crmors)
{
object[] objArray = (object[])hostobj;
computeRsc = (ManagedObjectReference)objArray[0];
}
ManagedObjectReference[] hrmors
= (ManagedObjectReference[])cb.getServiceUtil().GetDynamicProperty(computeRsc, "host");
if (hrmors != null && hrmors.Length > 0)
{
for (int j = 0; j < hrmors.Length; j++)
{
String hname
= (String)cb.getServiceUtil().GetDynamicProperty(hrmors[j], "name");
if (hname.Equals(hostName))
{
ManagedObjectReference cmrs = null;
foreach (object hostobj in crmors)
{
object[] objArray = (object[])hostobj;
cmrs = (VimApi.ManagedObjectReference)objArray[0];
crmor = cmrs;
}
i = crmors.Count + 1;
j = hrmors.Length + 1;
}
}
}
}
ManagedObjectReference resourcePool
= cb.getServiceUtil().GetMoRefProp(crmor, "resourcePool");
ManagedObjectReference vmFolderMor
= cb.getServiceUtil().GetMoRefProp(dcmor, "vmFolder");
VirtualMachineConfigSpec vmConfigSpec = vmUtils.createVmConfigSpec(cb.get_option("vmname"),
cb.get_option("datastorename"), int.Parse(cb.get_option("disksize")), crmor, hostmor);
vmConfigSpec.name = cb.get_option("vmname");
vmConfigSpec.annotation = "VMAnnotation";
vmConfigSpec.memoryMB = (long)(int.Parse(cb.get_option("memorysize")));
vmConfigSpec.memoryMBSpecified = true;
vmConfigSpec.numCPUs = int.Parse(cb.get_option("cpucount"));
vmConfigSpec.numCPUsSpecified = true;
vmConfigSpec.guestId = (cb.get_option("guestosid"));
ManagedObjectReference taskmor = _service.CreateVM_Task(vmFolderMor, vmConfigSpec, resourcePool, hostmor );
String res = cb.getServiceUtil().WaitForTask(taskmor);
}
private static OptionSpec[] constructOptions()
{
OptionSpec[] useroptions = new OptionSpec[8];
useroptions[0] = new OptionSpec("vmname", "String", 1
, "samplevm"
, "samplevm");
useroptions[1] = new OptionSpec("datacentername", "String", 1,
"datacentername",
"ha-datacenter");
useroptions[2] = new OptionSpec("hostname", "String", 1
, "Host"
, "vsphere01.xyz.local");
useroptions[3] = new OptionSpec("guestosid", "String", 1,
"Type of Guest OS",
"Microsoft Windows 7 (64-bit)");
//"Microsoft Windows Server 2008 R2(64-bit)"); //winXPProGuest
useroptions[4] = new OptionSpec("cpucount", "Integer", 1
, "Total CPU Count"
, "2");
useroptions[5] = new OptionSpec("disksize", "Integer", 1,
"Size of the Disk",
"41943040");
useroptions[6] = new OptionSpec("memorysize", "Integer", 1
, "Size of the Memory in the blocks of 1024 MB"
, "4096");
useroptions[7] = new OptionSpec("datastorename", "String", 1,
"Name of the datastore",
"datastore1");
return useroptions;
}
public static void Main(String[] args)
{
VMCreate obj = new VMCreate();
cb = AppUtil.AppUtil.initialize("VMCreate"
, VMCreate.constructOptions()
, args);
cb.connect();
vmUtils = new VMUtils(cb);
obj.createVM();
cb.disConnect();
}
any help greatly appriciated..because am struggling like anything to create a vm.
Note:I dont have San as storage device ,instead am using local datadtore as storage.
Thanks& regards
Asif.