如何在storageDRS群集中创建磁盘?

时间:2019-05-15 14:21:01

标签: java vmware vsphere vmware-sdk

我想在VMware中创建磁盘。我可以通过指定数据存储来创建磁盘,但是启用存储DRS后,我想在数据存储群集中创建磁盘而不指定数据存储。

我正在构造StorageDrsPodSelectionSpec和StoragePlacementSpec,但是每次都会遇到一些异常。

PodDiskLocator diskLocator1 = new PodDiskLocator();
diskLocator1.setDiskId(-1);

VmPodConfigForPlacement podConf = new VmPodConfigForPlacement();
PodDiskLocator[] podDiskLocators = new PodDiskLocator[1];
podDiskLocators[0] = diskLocator1;
podConf.setDisk(podDiskLocators);
podConf.setStoragePod(storagePodMOR.getMOR());

PodDiskLocator[] locators = new PodDiskLocator[1];
locators[0] = diskLocator1;
podConf.setDisk(locators);

VmPodConfigForPlacement[] vmPodConfigForPlacements = new VmPodConfigForPlacement[1];
vmPodConfigForPlacements[0] = podConf;


StorageDrsPodSelectionSpec podSelSpec = new StorageDrsPodSelectionSpec();
podSelSpec.setInitialVmConfig(vmPodConfigForPlacements);
//podSelSpec.setStoragePod(storagePodMOR.getMOR());

StoragePlacementSpec storagePlacementSpec = new StoragePlacementSpec();
storagePlacementSpec.setVm(vmMOR);

storagePlacementSpec.setPodSelectionSpec(podSelSpec);
            storagePlacementSpec.setType(StoragePlacementSpecPlacementType.reconfigure.name());
            storagePlacementSpec.setConfigSpec(getVmConfigSpec(virtualMachine));
storagePlacementSpec.setVm(vmMOR);

StorageResourceManager storageResourceManager = new StorageResourceManager(serviceInstance.getServerConnection(),
                    serviceInstance.getServiceContent().getStorageResourceManager());

StoragePlacementResult storagePlacementResult = storageResourceManager.recommendDatastores(storagePlacementSpec);
System.out.println("Found recommendations...");
ClusterRecommendation clusterRecommendation = storagePlacementResult.getRecommendations()[0];
String[] keys = {clusterRecommendation.getKey()};
            storageResourceManager.applyStorageDrsRecommendation_Task(keys);

我正处于例外之下。

com.vmware.vim25.InvalidArgument: A specified parameter was not correct: StoragePlacementSpec.podSelectionSpec and configSpec
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at com.vmware.vim25.ws.XmlGenDom.fromXml(XmlGenDom.java:253)
    at com.vmware.vim25.ws.XmlGenDom.parseSoapFault(XmlGenDom.java:151)
    at com.vmware.vim25.ws.XmlGenDom.fromXML(XmlGenDom.java:109)
    at com.vmware.vim25.ws.SoapClient.unMarshall(SoapClient.java:253)
    at com.vmware.vim25.ws.WSClient.invoke(WSClient.java:96)
    at com.vmware.vim25.ws.VimStub.recommendDatastores(VimStub.java:1894)
    at com.vmware.vim25.mo.StorageResourceManager.recommendDatastores(StorageResourceManager.java:93)
    at vmware.storage.drs.VmwareAddDiskTest.applyStorageDRS(VmwareAddDiskTest.java:93)
    at vmware.storage.drs.VmwareAddDiskTest.apply(VmwareAddDiskTest.java:57)
    at vmware.storage.drs.VmwareAddDiskTest.main(VmwareAddDiskTest.java:36)

0 个答案:

没有答案