/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; 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 com.emc.storageos.model.auth.ACLAssignmentChanges; import com.emc.storageos.model.auth.ACLEntry; import com.emc.storageos.model.compute.ComputeElementListRestRep; import com.emc.storageos.model.compute.ComputeElementRestRep; import com.emc.storageos.model.vpool.ComputeVirtualPoolCreateParam; import com.emc.storageos.model.vpool.ComputeVirtualPoolElementUpdateParam; import com.emc.storageos.model.vpool.ComputeVirtualPoolRestRep; import com.emc.storageos.model.vpool.ComputeVirtualPoolUpdateParam; import com.emc.storageos.model.vpool.ComputeVirtualPoolAssignmentChanges; import com.emc.storageos.model.vpool.ComputeVirtualPoolAssignments; import com.emc.vipr.client.core.filters.ResourceFilter; import com.emc.vipr.client.core.util.CachedResources; import com.emc.vipr.client.exceptions.ViPRHttpException; import controllers.security.Security; public class ComputeVirtualPoolUtils { public static boolean canUpdateACLs() { return Security.hasAnyRole(Security.SECURITY_ADMIN, Security.SYSTEM_ADMIN, Security.RESTRICTED_SYSTEM_ADMIN); } public static CachedResources<ComputeVirtualPoolRestRep> createBlockCache() { return new CachedResources<ComputeVirtualPoolRestRep>(getViprClient().computeVpools()); } public static ComputeVirtualPoolRestRep getComputeVirtualPool(String id) { return getComputeVirtualPool(uri(id)); } public static ComputeVirtualPoolRestRep getComputeVirtualPool(URI id) { try { return getViprClient().computeVpools().get(id); } catch (ViPRHttpException e) { if (e.getHttpCode() == 404) { return null; } throw e; } } public static List<ComputeVirtualPoolRestRep> getComputeVirtualPools() { return getViprClient().computeVpools().getAll(); } public static List<ComputeVirtualPoolRestRep> getComputeVirtualPools(ResourceFilter<ComputeVirtualPoolRestRep> filter) { return getViprClient().computeVpools().getAll(filter); } public static List<ComputeVirtualPoolRestRep> getComputeVirtualPools(Collection<URI> ids) { return getViprClient().computeVpools().getByIds(ids); } public static ComputeVirtualPoolRestRep create(ComputeVirtualPoolCreateParam virtualPool) { return getViprClient().computeVpools().create(virtualPool); } public static ComputeVirtualPoolRestRep update(String id, ComputeVirtualPoolUpdateParam virtualPool) { return getViprClient().computeVpools().update(uri(id), virtualPool); } public static void deactivateCompute(URI id) { getViprClient().computeVpools().deactivate(id); } public static List<ComputeElementRestRep> listMatchingComputeElements(ComputeVirtualPoolCreateParam virtualPool) { return getViprClient().computeVpools().listMatchingComputeElements(virtualPool); } public static List<ACLEntry> getComputeACLs(String id) { return getViprClient().computeVpools().getACLs(uri(id)); } public static List<ACLEntry> updateComputeACLs(String id, ACLAssignmentChanges changes) { return getViprClient().computeVpools().updateACLs(uri(id), changes); } public static ComputeVirtualPoolRestRep updateAssignedComputeElements(String id, Collection<String> addElements, Collection<String> removeElements) { return getViprClient().computeVpools().assignComputeElements(uri(id), createElementAssignments(addElements, removeElements)); } private static ComputeVirtualPoolElementUpdateParam createElementAssignments(Collection<String> addElements, Collection<String> removeElements) { ComputeVirtualPoolAssignmentChanges changes = new ComputeVirtualPoolAssignmentChanges(); if (addElements != null && !addElements.isEmpty()) { ComputeVirtualPoolAssignments add = new ComputeVirtualPoolAssignments(); add.getComputeElements().addAll(addElements); changes.setAdd(add); } if (removeElements != null && !removeElements.isEmpty()) { ComputeVirtualPoolAssignments remove = new ComputeVirtualPoolAssignments(); remove.getComputeElements().addAll(removeElements); changes.setRemove(remove); } return new ComputeVirtualPoolElementUpdateParam(changes); } public static ComputeElementListRestRep getAssignedComputeElements(String id) { return getViprClient().computeVpools().getMatchedComputeElements(uri(id)); } }