Search in sources :

Example 1 with DataObjectWithACLs

use of com.emc.storageos.db.client.model.DataObjectWithACLs in project coprhd-controller by CoprHD.

the class TenantsService method clearTenantACLs.

/**
 * Clear any tenant USE ACLs associated with the provided tenant id from the indicated CF
 *
 * @param clazz CF type to clear of tenant ACLs
 * @param tenantId the tenant id
 * @param specifier optional specifier (e.g. block or file for VirtualPools)
 */
private void clearTenantACLs(Class<? extends DataObjectWithACLs> clazz, URI tenantId, String specifier) {
    PermissionsKey permissionKey;
    if (StringUtils.isNotBlank(specifier)) {
        permissionKey = new PermissionsKey(PermissionsKey.Type.TENANT, tenantId.toString(), specifier);
    } else {
        permissionKey = new PermissionsKey(PermissionsKey.Type.TENANT, tenantId.toString());
    }
    URIQueryResultList resultURIs = new URIQueryResultList();
    Constraint aclConstraint = ContainmentPermissionsConstraint.Factory.getObjsWithPermissionsConstraint(permissionKey.toString(), clazz);
    _dbClient.queryByConstraint(aclConstraint, resultURIs);
    List<URI> ids = new ArrayList<URI>();
    for (URI result : resultURIs) {
        ids.add(result);
    }
    Iterator<? extends DataObjectWithACLs> objectIter = _dbClient.queryIterativeObjects(clazz, ids);
    if ((objectIter != null) && (objectIter.hasNext())) {
        List<DataObjectWithACLs> objectList = new ArrayList<DataObjectWithACLs>();
        while (objectIter.hasNext()) {
            objectList.add(objectIter.next());
        }
        for (DataObjectWithACLs object : objectList) {
            _log.info("Removing USE ACL for deleted subtenant {} from object {}", tenantId, object.getId());
            object.removeAcl(permissionKey.toString(), ACL.USE.toString());
        }
        _dbClient.updateAndReindexObject(objectList);
    }
}
Also used : AlternateIdConstraint(com.emc.storageos.db.client.constraint.AlternateIdConstraint) ContainmentConstraint(com.emc.storageos.db.client.constraint.ContainmentConstraint) ContainmentPermissionsConstraint(com.emc.storageos.db.client.constraint.ContainmentPermissionsConstraint) Constraint(com.emc.storageos.db.client.constraint.Constraint) PermissionsKey(com.emc.storageos.security.authorization.PermissionsKey) ArrayList(java.util.ArrayList) DataObjectWithACLs(com.emc.storageos.db.client.model.DataObjectWithACLs) NamedURI(com.emc.storageos.db.client.model.NamedURI) URI(java.net.URI) URIQueryResultList(com.emc.storageos.db.client.constraint.URIQueryResultList)

Aggregations

AlternateIdConstraint (com.emc.storageos.db.client.constraint.AlternateIdConstraint)1 Constraint (com.emc.storageos.db.client.constraint.Constraint)1 ContainmentConstraint (com.emc.storageos.db.client.constraint.ContainmentConstraint)1 ContainmentPermissionsConstraint (com.emc.storageos.db.client.constraint.ContainmentPermissionsConstraint)1 URIQueryResultList (com.emc.storageos.db.client.constraint.URIQueryResultList)1 DataObjectWithACLs (com.emc.storageos.db.client.model.DataObjectWithACLs)1 NamedURI (com.emc.storageos.db.client.model.NamedURI)1 PermissionsKey (com.emc.storageos.security.authorization.PermissionsKey)1 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1