/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import com.emc.storageos.model.host.HostRestRep; import com.emc.storageos.model.host.cluster.ClusterCreateParam; import com.emc.storageos.model.host.cluster.ClusterRestRep; import com.emc.storageos.model.host.cluster.ClusterUpdateParam; import com.emc.vipr.client.Task; import com.emc.vipr.client.exceptions.ViPRHttpException; import com.google.common.collect.Lists; import java.net.URI; import java.util.List; import static com.emc.vipr.client.core.util.ResourceUtils.uri; import static util.BourneUtil.getViprClient; /** */ public class ClusterUtils { /** * @return All clusters that are not VCenter clusters */ public static List<ClusterRestRep> getClustersExcludingVCenter(String tenantId) { List<ClusterRestRep> clusterResponses = getClusters(tenantId); List<ClusterRestRep> clusters = Lists.newArrayList(); for (ClusterRestRep clusterResponse : clusterResponses) { if (clusterResponse.getVcenterDataCenter() == null) { clusters.add(clusterResponse); } } return clusters; } /** Adds a NO CLUSTER option to the list of clusters */ public static List<ClusterRestRep> getClusterOptions(String tenantId) { List<ClusterRestRep> clusters = Lists.newArrayList(); ClusterRestRep clusterRestRep = new ClusterRestRep(); clusterRestRep.setName(MessagesUtils.get("ClusterUtils.defaultName")); clusterRestRep.setId(uri("null")); clusters.add(clusterRestRep); clusters.addAll(getClustersExcludingVCenter(tenantId)); return clusters; } public static List<HostRestRep> getHosts(URI clusterId) { return getViprClient().hosts().getByCluster(clusterId); } public static List<ClusterRestRep> getClusters(String tenantId) { return getViprClient().clusters().getByTenant(uri(tenantId)); } public static URI createCluster(String tenantId, ClusterCreateParam hostCreateParam) { return getViprClient().clusters().create(uri(tenantId), hostCreateParam).getId(); } public static ClusterRestRep getCluster(URI id) { try { return (id != null) ? getViprClient().clusters().get(id) : null; } catch (ViPRHttpException e) { if (e.getHttpCode() == 404) { return null; } throw e; } } public static URI updateHost(URI uri, ClusterUpdateParam hostUpdateParam) { ClusterRestRep cluster = getViprClient().clusters().update(uri, hostUpdateParam); return cluster.getId(); } public static Task<ClusterRestRep> deactivate(URI clusterId) { return getViprClient().clusters().deactivate(clusterId); } public static Task<ClusterRestRep> deactivate(URI hostId, boolean detachStorage) { return getViprClient().clusters().deactivate(hostId, detachStorage); } }