/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vmware.block.tasks;
import javax.inject.Inject;
import com.emc.sa.service.vmware.tasks.VMwareTask;
import com.iwave.ext.vmware.VCenterAPI;
import com.vmware.vim25.StorageIORMConfigSpec;
import com.vmware.vim25.mo.Datastore;
import com.vmware.vim25.mo.StorageResourceManager;
import com.vmware.vim25.mo.Task;
public class SetStorageIOControl extends VMwareTask<Void> {
@Inject
private VCenterAPI vcenter;
private Datastore datastore;
private boolean enabled;
public SetStorageIOControl(Datastore datastore, boolean enabled) {
this.datastore = datastore;
this.enabled = enabled;
if (enabled) {
setDetail("SetStorageIOControl.detail.enable", datastore.getName());
} else {
setDetail("SetStorageIOControl.detail.disable", datastore.getName());
}
}
@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());
cancelTaskNoException(task);
}
}
}