/* * 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 ExtendVmfsDatastore extends RetryableTask<Void> { private HostScsiDisk disk; private Datastore datastore; private HostStorageAPI hostStorageAPI; public ExtendVmfsDatastore(HostSystem host, HostScsiDisk disk, Datastore datastore) { this.disk = disk; this.datastore = datastore; this.hostStorageAPI = new HostStorageAPI(host); provideDetailArgs(datastore.getName(), host.getName(), disk.getDisplayName()); provideNameArgs(datastore.getName()); setDelay(30000); } @Override protected Void tryExecute() { extendVmfsDatastore(); return null; } @Override protected boolean canRetry(VMWareException e) { return (e.getCause() instanceof HostConfigFault); } protected void extendVmfsDatastore() { HostVmfsVolume vmfs = VMwareUtils.getHostVmfsVolume(datastore); if (vmfs != null) { logInfo("extend.vmfs.datastore", vmfs.getVersion()); } hostStorageAPI.extendVmfsDatastore(disk, datastore); } }