/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vipr.tasks;
import com.emc.sa.engine.ExecutionTask;
import com.emc.sa.engine.ExecutionUtils;
import com.emc.storageos.db.client.model.Cluster;
import com.emc.storageos.db.client.model.Host;
public class AcquireHostLock extends ExecutionTask<Void> {
private Host host;
private Cluster cluster;
public AcquireHostLock(Host host) {
this(host, null);
}
public AcquireHostLock(Host host, Cluster cluster) {
this.host = host;
this.cluster = cluster;
provideDetailArgs(host.getHostName(), host.getId());
}
@Override
public void execute() throws Exception {
acquireClusterLock();
String lockName = host.getId().toString();
if (!ExecutionUtils.acquireLock(lockName)) {
throw stateException("AcquireHostLock.illegalState.failedHostLock", lockName);
}
}
private void acquireClusterLock() {
if (cluster != null) {
String lockName = cluster.getId().toString();
if (!ExecutionUtils.acquireLock(lockName)) {
throw stateException("AcquireHostLock.illegalState.failedClusterLock", lockName);
}
}
}
}