/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import static com.emc.vipr.client.core.util.ResourceUtils.id; import static com.emc.vipr.client.core.util.ResourceUtils.mapById; import static com.emc.vipr.client.core.util.ResourceUtils.uri; import static util.BourneUtil.getViprClient; import java.net.URI; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import com.emc.storageos.model.host.ArrayAffinityHostParam; import com.emc.storageos.model.host.HostCreateParam; import com.emc.storageos.model.host.HostRestRep; import com.emc.storageos.model.host.HostUpdateParam; import com.emc.storageos.model.host.InitiatorCreateParam; import com.emc.storageos.model.host.InitiatorRestRep; import com.emc.storageos.model.host.IpInterfaceCreateParam; import com.emc.storageos.model.host.IpInterfaceRestRep; import com.emc.storageos.model.host.cluster.ClusterRestRep; import com.emc.storageos.model.host.vcenter.VcenterDataCenterRestRep; import com.emc.vipr.client.Task; import com.emc.vipr.client.Tasks; import com.emc.vipr.client.core.filters.HostTypeFilter; import com.emc.vipr.client.core.util.CachedResources; import com.emc.vipr.client.exceptions.ViPRHttpException; import com.google.common.collect.Sets; public class HostUtils { public static List<HostRestRep> getHostsExcludingEsx() { return getViprClient().hosts().getByUserTenant(HostTypeFilter.ESX.not()); } public static List<HostRestRep> getHosts(String tenantId) { return getViprClient().hosts().getByTenant(uri(tenantId)); } public static List<HostRestRep> getHostsByDataCenter(VcenterDataCenterRestRep vcenterDataCenter) { return getViprClient().hosts().getByDataCenter(id(vcenterDataCenter)); } public static List<HostRestRep> getHostsByCluster(ClusterRestRep cluster) { return getViprClient().hosts().getByCluster(id(cluster)); } public static CachedResources<HostRestRep> createCache() { return new CachedResources<HostRestRep>(getViprClient().hosts()); } public static HostRestRep getHost(URI id) { try { return (id != null) ? getViprClient().hosts().get(id) : null; } catch (ViPRHttpException e) { if (e.getHttpCode() == 404) { return null; } throw e; } } public static List<InitiatorRestRep> getInitiators(URI hostId) { return getViprClient().initiators().getByHost(hostId); } public static void deactivateInitiators(URI hostId) { for (InitiatorRestRep initiator : getInitiators(hostId)) { deactivateInitiator(initiator); } } public static Task<InitiatorRestRep> createInitiator(URI hostId, InitiatorCreateParam hostInitiatorCreateParam) { return getViprClient().initiators().create(hostId, hostInitiatorCreateParam); } public static IpInterfaceRestRep createIpInterface(URI hostId, IpInterfaceCreateParam ipInterfaceCreateParam) { return getViprClient().ipInterfaces().create(hostId, ipInterfaceCreateParam); } public static void deactivateIpInterface(IpInterfaceRestRep ipInterface) { getViprClient().ipInterfaces().deactivate(id(ipInterface)); } public static Task<InitiatorRestRep> deactivateInitiator(InitiatorRestRep initiator) { return getViprClient().initiators().deactivate(id(initiator)); } public static void deactivateIpInterfaces(URI hostId) { for (IpInterfaceRestRep ipInterface : getIpInterfaces(hostId)) { deactivateIpInterface(ipInterface); } } public static List<IpInterfaceRestRep> getIpInterfaces(URI hostId) { return getViprClient().ipInterfaces().getByHost(hostId); } public static Task<HostRestRep> createHost(HostCreateParam hostCreateParam, boolean validateConnection) { return getViprClient().tenants().createHost(hostCreateParam.getTenant(), hostCreateParam, validateConnection); } public static Task<HostRestRep> updateHost(URI hostId, HostUpdateParam hostUpdateParam, boolean validateConnection) { return getViprClient().hosts().update(hostId, hostUpdateParam, validateConnection); } public static Task<HostRestRep> deactivate(URI hostId) { return getViprClient().hosts().deactivate(hostId); } public static Task<HostRestRep> deactivate(URI hostId, boolean detachStorage) { return getViprClient().hosts().deactivate(hostId, detachStorage); } public static Task<HostRestRep> discover(URI hostId) { return getViprClient().hosts().discover(hostId); } public static Tasks<HostRestRep> discoverHostArrayAffinity(ArrayAffinityHostParam param) { return getViprClient().hosts().discoverHostArrayAffinity(param); } public static Set<URI> getDataCenterIds(List<HostRestRep> hosts) { Set<URI> dataCenterIds = Sets.newHashSet(); if (hosts != null) { for (HostRestRep host : hosts) { if (host != null && host.getvCenterDataCenter() != null) { dataCenterIds.add(host.getvCenterDataCenter().getId()); } } } return dataCenterIds; } public static Map<URI, VcenterDataCenterRestRep> getVcenterDataCenters(Collection<URI> dataCenterIds) { return mapById(getViprClient().vcenterDataCenters().getByIds(dataCenterIds)); } }