/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.vmware.block.tasks; import com.emc.sa.service.vmware.tasks.RetryableTask; import com.iwave.ext.vmware.HostStorageAPI; import com.iwave.ext.vmware.VMWareException; import com.iwave.ext.vmware.VMwareUtils; import com.vmware.vim25.HostConfigFault; import com.vmware.vim25.HostScsiDisk; import com.vmware.vim25.HostVmfsVolume; import com.vmware.vim25.mo.Datastore; import com.vmware.vim25.mo.HostSystem; public class CreateVmfsDatastore extends RetryableTask<Datastore> { private HostStorageAPI hostStorageAPI; private HostScsiDisk disk; private String datastoreName; public CreateVmfsDatastore(HostSystem host, HostScsiDisk disk, String datastoreName) { this.hostStorageAPI = new HostStorageAPI(host); this.disk = disk; this.datastoreName = datastoreName; provideDetailArgs(datastoreName, host.getName(), disk.getDisplayName()); provideNameArgs(datastoreName); setDelay(30000); } @Override protected Datastore tryExecute() { Datastore datastore = hostStorageAPI.createVmfsDatastore(disk, datastoreName); HostVmfsVolume vmfs = VMwareUtils.getHostVmfsVolume(datastore); if (vmfs != null) { logInfo("create.vmfs.datastore", datastore.getName(), vmfs.getVersion()); } return datastore; } @Override protected boolean canRetry(VMWareException e) { return (e.getCause() instanceof HostConfigFault); } }