package jetbrains.buildServer.clouds.vmware.tasks;
import com.intellij.openapi.diagnostic.Logger;
import jetbrains.buildServer.clouds.base.tasks.UpdateInstancesTask;
import jetbrains.buildServer.clouds.vmware.VMWareCloudClient;
import jetbrains.buildServer.clouds.vmware.VmwareCloudImage;
import jetbrains.buildServer.clouds.vmware.VmwareCloudInstance;
import jetbrains.buildServer.clouds.vmware.connector.DummyApiConnector;
import org.jetbrains.annotations.NotNull;
/**
* Created by sergeypak on 27/10/2016.
*/
public class VmwareUpdateInstanceTask
extends UpdateInstancesTask<VmwareCloudInstance, VmwareCloudImage, VMWareCloudClient>
implements VMWareCloudClient.DisposeHandler {
private static final Logger LOG = Logger.getInstance(VmwareUpdateInstanceTask.class.getName());
@NotNull private final VMWareCloudClient myClient;
@NotNull private final VmwarePooledUpdateInstanceTask myPoolTask;
VmwareUpdateInstanceTask(@NotNull final String key,
@NotNull final VMWareCloudClient client,
@NotNull final VmwarePooledUpdateInstanceTask poolTask) {
super(new DummyApiConnector(key), client);
myClient = client;
myPoolTask = poolTask;
}
void register(){
myPoolTask.addClient(myClient);
myClient.addDisposeHandler(this);
}
@Override
public void run() {
LOG.debug("Run inside...");
myPoolTask.runIfNecessary(myClient);
}
@Override
public void clientDisposing(@NotNull final VMWareCloudClient client) {
myPoolTask.removeClient(myClient);
}
}