use of com.vmware.vim25.StorageIORMConfigSpec in project coprhd-controller by CoprHD.
the class ComputeSystemControllerImpl method setStorageIOControl.
/**
* Sets the Storage I/O control on a datastore
*
* @param vcenter
* vcenter API for the vcenter
* @param datastore
* the datastore to set storage I/O control
* @param enabled
* if true, enables storage I/O control, otherwise disables storage I/O control
*/
public void setStorageIOControl(VCenterAPI vcenter, Datastore datastore, boolean enabled) {
StorageResourceManager manager = vcenter.getStorageResourceManager();
StorageIORMConfigSpec spec = new StorageIORMConfigSpec();
spec.setEnabled(enabled);
Task task = null;
try {
_log.info("Setting Storage I/O to " + enabled + " on datastore " + datastore.getName());
task = manager.configureDatastoreIORM_Task(datastore, spec);
boolean cancel = false;
long maxTime = System.currentTimeMillis() + (60 * 1000);
while (!isComplete(task)) {
Thread.sleep(5000);
if (System.currentTimeMillis() > maxTime) {
cancel = true;
break;
}
}
if (cancel) {
cancelTask(task);
}
} catch (Exception e) {
_log.error("Error setting storage i/o control");
if (e instanceof InterruptedException) {
Thread.currentThread().interrupt();
}
cancelTaskNoException(task);
}
}
use of com.vmware.vim25.StorageIORMConfigSpec in project coprhd-controller by CoprHD.
the class SetStorageIOControl method execute.
@Override
public void execute() throws Exception {
debug("Executing: %s", getDetail());
StorageResourceManager manager = vcenter.getStorageResourceManager();
StorageIORMConfigSpec spec = new StorageIORMConfigSpec();
spec.setEnabled(enabled);
Task task = null;
try {
task = manager.configureDatastoreIORM_Task(datastore, spec);
waitForTask(task);
} catch (Exception e) {
logError("SetStorageIOControl.detail.error", datastore.getName());
if (enabled && failIfErrorDuringEnable) {
throw e;
} else {
cancelTaskNoException(task);
}
}
}
Aggregations