VMware Cloud Community
naaz_4
Contributor
Contributor

java.rmi.RemoteException: VI SDK invoke exception:com.vmware.vim25.SystemError

Hi,

I am trying to deploy vm in datastorecluster using vijava API
We have below setup
vmware 5.5
eclipse mars
java 1.7

While running code I am getting below error.What could be the possible cause of this error.Please someone help me to get it resolved as we have stuck up in further development
ERROR:
java.rmi.RemoteException: VI SDK invoke exception:com.vmware.vim25.SystemError
at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:122)
at com.vmware.vim25.ws.VimStub.recommendDatastores(VimStub.java:1623)
at com.tcs.service.meghaas.DRS.deployDRS(DRS.java:227)
at com.tcs.service.meghaas.DRS.main(DRS.java:263)

Code snippet
try {
System.out.println("in deploy vm..");
/***Connect VC**/
service = connectAndLogin();
rootFolder = service.getRootFolder(); //get rootfolder Datacenter
Datacenter dc = (Datacenter) new InventoryNavigator(rootFolder).searchManagedEntity("Datacenter", DCNAME);
//You want to deploy in CLUSTER or RESOURCEPOOL
/
if(serviceForm.getResourcePool().equals("Inside Cluster"))
{
/
//1.Cluster
ccr=(ComputeResource) new InventoryNavigator(rootFolder).searchManagedEntity("ComputeResource", CLUSTER);

                    if(ccr==null) { System.out.println("In deployvm.error in cluster.**");  } //1.IN ResourcePool-As we directly can't give t he cluster name so we convert it in resourcepool first and   then pass this cluster resourcepool for deployment pool=(ResourcePool) new InventoryNavigator(rootFolder).searchManagedEntity("ResourcePool",ccr.getResourcePool().getName());  if(pool==null) { System.out.println("In deployvm.error in poo.l.**"+pool);  }  /*} else { //1.get Resourcepool pool=(ResourcePool) new InventoryNavigator(rootFolder).searchManagedEntity("ResourcePool", RESOURCEPOOL); if(pool==null) { System.out.println("rp INVALID"); return result; } } */ //Folder mo=dc.getDatastoreFolder(); template = (VirtualMachine) new InventoryNavigator(dc.getVmFolder()).searchManagedEntity("VirtualMachine", TEMPLATE); folder =(Folder) new InventoryNavigator(rootFolder).searchManagedEntity("Folder", FOLDER); StoragePod sp = (StoragePod) new InventoryNavigator(rootFolder).searchManagedEntity("StoragePod", "DSCluster" );  ManagedObjectReference rd1 = service.getServiceContent().getStorageResourceManager(); StorageResourceManager rd = new StorageResourceManager(service.getServerConnection(), rd1 );  StorageDrsVmConfigInfo vmconfigInfo = new StorageDrsVmConfigInfo(); vmconfigInfo.setBehavior("automated");  VmPodConfigForPlacement vpcfp = new VmPodConfigForPlacement(); vpcfp.setStoragePod(sp.getMOR()); vpcfp.setVmConfig(vmconfigInfo);  StorageDrsPodSelectionSpec sdpss = new StorageDrsPodSelectionSpec(); sdpss.setStoragePod(sp.getMOR()); sdpss.setInitialVmConfig(new VmPodConfigForPlacement[]{vpcfp});  VirtualMachineCloneSpec spec = new VirtualMachineCloneSpec(); VirtualMachineRelocateSpec locationSpec = new VirtualMachineRelocateSpec(); locationSpec.setPool(pool.getMOR()); spec.setLocation(locationSpec);  StoragePlacementSpec sps = new StoragePlacementSpec(); sps.setCloneName("DRSvm2"); sps.setType("clone"); sps.setPodSelectionSpec(sdpss); sps.setVm(template.getMOR()); sps.setFolder(rootFolder.getMOR()); sps.setCloneSpec(spec); ServerConnection sc = service.getServerConnection(); VimPortType vpt = sc.getVimService();  /*********Code is running fine till here.**************/ StoragePlacementResult spr = vpt.recommendDatastores(service.getServiceContent().getStorageResourceManager(), sps); System.out.println("spr...."+spr); /*******It is giving me error after this line.I guess responce is not comming through recoomendDatastore. ************/  ClusterRecommendation[] crs = spr.getRecommendations(); String[] strs = new String[1]; for (int i = 0 ; i < crs.length ; i++) { ClusterRecommendation cr = crs[i]; System.out.println(cr.getKey()); System.out.println(cr.getRating()); System.out.println(cr.getReason()); System.out.println(cr.getReasonText()); System.out.println(cr.getType()); strs[0] = cr.getKey(); } Task cloneTask = rd.applyStorageDrsRecommendation_Task(strs); //Task cloneTask = rd.applyStorageDrsRecommendationToPod_Task(sp, strs[0]); String result = cloneTask.waitForTask(); if(result.equalsIgnoreCase("error")) { String errorMsg = cloneTask.getTaskInfo().error.getLocalizedMessage(); } }catch (Exception e) { e.printStackTrace(); } finally { logout(service); } 

Please suggest solution
Thanks

0 Kudos
0 Replies