Search in sources :

Example 26 with URIQueryResultList

use of com.emc.storageos.db.client.constraint.URIQueryResultList in project coprhd-controller by CoprHD.

the class ControllerUtils method getApplicationForCG.

/**
 * gets the application volume group for this CG and group name if it exists
 *
 * @param dbClient
 *            dbClient to query objects from db
 * @param consistencyGroup
 *            consistency group object
 * @param cgNameOnArray
 *            cg name to check
 * @return a VolumeGroup object or null if this CG and group name are not associated with an application
 */
public static VolumeGroup getApplicationForCG(DbClient dbClient, BlockConsistencyGroup consistencyGroup, String cgNameOnArray) {
    VolumeGroup volumeGroup = null;
    URIQueryResultList uriQueryResultList = new URIQueryResultList();
    dbClient.queryByConstraint(getVolumesByConsistencyGroup(consistencyGroup.getId()), uriQueryResultList);
    Iterator<Volume> volumeIterator = dbClient.queryIterativeObjects(Volume.class, uriQueryResultList);
    while (volumeIterator.hasNext()) {
        Volume volume = volumeIterator.next();
        if (NullColumnValueGetter.isNotNullValue(volume.getReplicationGroupInstance()) && volume.getReplicationGroupInstance().equals(cgNameOnArray)) {
            volumeGroup = volume.getApplication(dbClient);
            if (volumeGroup != null) {
                break;
            }
        }
    }
    return volumeGroup;
}
Also used : Volume(com.emc.storageos.db.client.model.Volume) VolumeGroup(com.emc.storageos.db.client.model.VolumeGroup) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 27 with URIQueryResultList

use of com.emc.storageos.db.client.constraint.URIQueryResultList in project coprhd-controller by CoprHD.

the class ControllerUtils method getMirrorReplicationGroupNames.

/**
 * Gets mirror replication group names from mirrors of all volumes in CG.
 */
public static Set<String> getMirrorReplicationGroupNames(List<Volume> volumes, DbClient dbClient) {
    Set<String> groupNames = new HashSet<String>();
    // check if replica of any of these volumes have replicationGroupInstance set
    for (Volume volume : volumes) {
        URIQueryResultList mirrorList = new URIQueryResultList();
        dbClient.queryByConstraint(ContainmentConstraint.Factory.getVolumeBlockMirrorConstraint(volume.getId()), mirrorList);
        Iterator<URI> iter = mirrorList.iterator();
        while (iter.hasNext()) {
            URI mirrorID = iter.next();
            BlockMirror mirror = dbClient.queryObject(BlockMirror.class, mirrorID);
            if (mirror != null && !mirror.getInactive() && NullColumnValueGetter.isNotNullValue(mirror.getReplicationGroupInstance())) {
                groupNames.add(mirror.getReplicationGroupInstance());
            }
        }
        if (!groupNames.isEmpty()) {
            // no need to check other CG members
            break;
        }
    }
    return groupNames;
}
Also used : BlockMirror(com.emc.storageos.db.client.model.BlockMirror) Volume(com.emc.storageos.db.client.model.Volume) URI(java.net.URI) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList) HashSet(java.util.HashSet)

Example 28 with URIQueryResultList

use of com.emc.storageos.db.client.constraint.URIQueryResultList in project coprhd-controller by CoprHD.

the class ControllerUtils method getVolumesPartOfCG.

/**
 * Gets the volumes part of a given consistency group.
 */
public static List<Volume> getVolumesPartOfCG(URI cgURI, DbClient dbClient) {
    List<Volume> volumes = new ArrayList<Volume>();
    final URIQueryResultList uriQueryResultList = new URIQueryResultList();
    dbClient.queryByConstraint(AlternateIdConstraint.Factory.getBlockObjectsByConsistencyGroup(cgURI.toString()), uriQueryResultList);
    Iterator<Volume> volumeIterator = dbClient.queryIterativeObjects(Volume.class, uriQueryResultList);
    while (volumeIterator.hasNext()) {
        Volume volume = volumeIterator.next();
        if (volume != null && !volume.getInactive()) {
            volumes.add(volume);
        }
    }
    return volumes;
}
Also used : Volume(com.emc.storageos.db.client.model.Volume) Lists.newArrayList(com.google.common.collect.Lists.newArrayList) ArrayList(java.util.ArrayList) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 29 with URIQueryResultList

use of com.emc.storageos.db.client.constraint.URIQueryResultList in project coprhd-controller by CoprHD.

the class ControllerUtils method getBlockSnapshotsBySnapsetLabelForProject.

/**
 * Utility method which will filter the snapshots from getBlockSnapshotsBySnapsetLabel query by the
 * snapshot's project
 *
 * @param snapshot
 * @param dbClient
 * @return
 */
public static List<BlockSnapshot> getBlockSnapshotsBySnapsetLabelForProject(BlockSnapshot snapshot, DbClient dbClient) {
    URIQueryResultList list = new URIQueryResultList();
    dbClient.queryByConstraint(AlternateIdConstraint.Factory.getBlockSnapshotsBySnapsetLabel(snapshot.getSnapsetLabel()), list);
    Iterator<BlockSnapshot> resultsIt = dbClient.queryIterativeObjects(BlockSnapshot.class, list);
    List<BlockSnapshot> snapshots = new ArrayList<BlockSnapshot>();
    while (resultsIt.hasNext()) {
        BlockSnapshot snap = resultsIt.next();
        if (snapshot.getProject() != null && snapshot.getProject().getURI().equals(snap.getProject().getURI())) {
            snapshots.add(snap);
        }
    }
    return snapshots;
}
Also used : BlockSnapshot(com.emc.storageos.db.client.model.BlockSnapshot) Lists.newArrayList(com.google.common.collect.Lists.newArrayList) ArrayList(java.util.ArrayList) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Example 30 with URIQueryResultList

use of com.emc.storageos.db.client.constraint.URIQueryResultList in project coprhd-controller by CoprHD.

the class ControllerUtils method getFullCopiesPartOfReplicationGroup.

/**
 * Gets the full copies part of a given replication group.
 */
public static List<Volume> getFullCopiesPartOfReplicationGroup(String replicationGroupInstance, DbClient dbClient) {
    List<Volume> fullCopies = new ArrayList<Volume>();
    URIQueryResultList uriQueryResultList = new URIQueryResultList();
    dbClient.queryByConstraint(AlternateIdConstraint.Factory.getVolumeReplicationGroupInstanceConstraint(replicationGroupInstance), uriQueryResultList);
    Iterator<Volume> itr = dbClient.queryIterativeObjects(Volume.class, uriQueryResultList);
    while (itr.hasNext()) {
        Volume fullCopy = itr.next();
        if (fullCopy != null && !fullCopy.getInactive()) {
            fullCopies.add(fullCopy);
        }
    }
    return fullCopies;
}
Also used : Volume(com.emc.storageos.db.client.model.Volume) Lists.newArrayList(com.google.common.collect.Lists.newArrayList) ArrayList(java.util.ArrayList) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Aggregations

URIQueryResultList (com.emc.storageos.db.client.constraint.URIQueryResultList)664 URI (java.net.URI)497 ArrayList (java.util.ArrayList)258 HashMap (java.util.HashMap)107 Volume (com.emc.storageos.db.client.model.Volume)97 NamedURI (com.emc.storageos.db.client.model.NamedURI)96 HashSet (java.util.HashSet)92 StoragePort (com.emc.storageos.db.client.model.StoragePort)91 StringSet (com.emc.storageos.db.client.model.StringSet)83 StorageSystem (com.emc.storageos.db.client.model.StorageSystem)64 Produces (javax.ws.rs.Produces)55 BlockSnapshot (com.emc.storageos.db.client.model.BlockSnapshot)54 CheckPermission (com.emc.storageos.security.authorization.CheckPermission)54 Path (javax.ws.rs.Path)54 List (java.util.List)53 StoragePool (com.emc.storageos.db.client.model.StoragePool)49 Initiator (com.emc.storageos.db.client.model.Initiator)47 ContainmentConstraint (com.emc.storageos.db.client.constraint.ContainmentConstraint)45 AlternateIdConstraint (com.emc.storageos.db.client.constraint.AlternateIdConstraint)39 DatabaseException (com.emc.storageos.db.exceptions.DatabaseException)38