/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.vcentercontroller;
import java.net.URI;
import java.util.List;
import com.emc.storageos.Controller;
import com.emc.storageos.svcs.errorhandling.resources.InternalException;
import com.emc.storageos.volumecontroller.AsyncTask;
public interface VcenterController extends Controller {
public void createVcenterCluster(AsyncTask task, URI clusterUri, URI[] hostUris, URI[] volumeUris) throws InternalException;
public void updateVcenterCluster(AsyncTask task, URI clusterUri, URI[] addHostUris, URI[] removeHostUris, URI[] volumeUris)
throws InternalException;
public List<String> getVirtualMachines(URI datacenterUri, URI clusterUri, URI hostUri) throws InternalException;
public List<String> getRunningVirtualMachines(URI datacenterUri, URI clusterUri, URI hostUri) throws InternalException;
public List<String> getVirtualMachines(URI datacenterUri, URI clusterUri) throws InternalException;
public List<String> getRunningVirtualMachines(URI datacenterUri, URI clusterUri) throws InternalException;
public void enterMaintenanceMode(URI datacenterUri, URI clusterUri, URI hostUri) throws InternalException;
public void exitMaintenanceMode(URI datacenterUri, URI clusterUri, URI hostUri) throws InternalException;
public void removeVcenterCluster(URI datacenterUri, URI clusterUri) throws InternalException;
/**
* Verifies if the host can see the volume, if so then check for VMs (powered on/off)
* on the datastore identified for the given volume.
*
* @param vcenterDataCenter {@link URI} vcenter datacenter id
* @param cluster {@link URI} cluster id
* @param hostId {@link URI} host id
* @param bootVolumeId {@link URI} boot volume id
* @return true when there are any VMs on the datastore identified by the volume wwn, otherwise false
*/
public boolean checkVMsOnHostBootVolume(URI vcenterDataCenter, URI cluster, URI hostId, URI bootVolumeId);
}