Search in sources :

Example 1 with BucketACLUpdateParams

use of com.emc.storageos.model.object.BucketACLUpdateParams in project coprhd-controller by CoprHD.

the class ECSObjectStorageDevice method doSyncBucketACL.

/*
     * (non-Javadoc)
     * 
     * @see com.emc.storageos.volumecontroller.ObjectStorageDevice#doSyncBucketACL(com.emc.storageos.db.client.model.StorageSystem,
     * com.emc.storageos.db.client.model.Bucket, com.emc.storageos.volumecontroller.ObjectDeviceInputOutput, java.lang.String)
     * 
     * Gets the ACl for the bucket from ECS and persist in coprhd DB.
     */
@Override
public BiosCommandResult doSyncBucketACL(StorageSystem storageObj, Bucket bucket, ObjectDeviceInputOutput objectArgs, String taskId) throws ControllerException {
    ECSApi objectAPI = getAPI(storageObj);
    try {
        String aclResponse = objectAPI.getBucketAclFromECS(objectArgs.getName(), objectArgs.getNamespace());
        _log.info("aclResponse {} " + aclResponse);
        ECSBucketACL bucketACl = new Gson().fromJson(SecurityUtils.sanitizeJsonString(aclResponse), ECSBucketACL.class);
        ECSBucketACL.Acl acl = bucketACl.getAcl();
        List<ECSBucketACL.UserAcl> user_acl = acl.getUseAcl();
        List<ECSBucketACL.GroupAcl> group_acl = acl.getGroupAcl();
        List<ECSBucketACL.CustomGroupAcl> customgroup_acl = acl.getCustomgroupAcl();
        List<BucketACE> aclToAdd = Lists.newArrayList();
        final String _VERSION = "acl_supported";
        final String DELIMETER = "@";
        for (ECSBucketACL.UserAcl userAce : user_acl) {
            String userWithDomain = userAce.getUser();
            String[] usrDomain = userWithDomain.split(DELIMETER);
            BucketACE bucketAce = new BucketACE();
            if (usrDomain.length > 1) {
                bucketAce.setDomain(usrDomain[1]);
                bucketAce.setUser(usrDomain[0]);
            } else if (usrDomain.length == 1) {
                // username without domain
                bucketAce.setUser(usrDomain[0]);
            }
            String[] permArray = userAce.getPermission();
            String permissions = formatPermissions(permArray);
            bucketAce.setPermissions(permissions);
            aclToAdd.add(bucketAce);
        }
        for (ECSBucketACL.GroupAcl groupAce : group_acl) {
            String groupWithDomain = groupAce.getGroup();
            String[] grpDomain = groupWithDomain.split(DELIMETER);
            BucketACE bucketAce = new BucketACE();
            if (grpDomain.length > 1) {
                bucketAce.setDomain(grpDomain[1]);
                bucketAce.setGroup(grpDomain[0]);
            } else if (grpDomain.length == 1) {
                // group without domain
                bucketAce.setGroup(grpDomain[0]);
            }
            String[] permArray = groupAce.getPermission();
            String permissions = formatPermissions(permArray);
            bucketAce.setPermissions(permissions);
            aclToAdd.add(bucketAce);
        }
        for (ECSBucketACL.CustomGroupAcl customGroupAce : customgroup_acl) {
            String customGroupWithDomain = customGroupAce.getCustomgroup();
            String[] grpDomain = customGroupWithDomain.split(DELIMETER);
            BucketACE bucketAce = new BucketACE();
            if (grpDomain.length > 1) {
                bucketAce.setDomain(grpDomain[1]);
                bucketAce.setCustomGroup(grpDomain[0]);
            } else if (grpDomain.length == 1) {
                // custom group without domain
                bucketAce.setCustomGroup(grpDomain[0]);
            }
            String[] permArray = customGroupAce.getPermission();
            String permissions = formatPermissions(permArray);
            bucketAce.setPermissions(permissions);
            aclToAdd.add(bucketAce);
        }
        BucketACLUpdateParams param = new BucketACLUpdateParams();
        BucketACL aclForAddition = new BucketACL();
        aclForAddition.setBucketACL(aclToAdd);
        param.setAclToAdd(aclForAddition);
        updateBucketACLInDB(param, objectArgs, bucket);
        bucket.setVersion(_VERSION);
        _dbClient.updateObject(bucket);
    } catch (ECSException e) {
        _log.error("Sync ACL for Bucket : {} failed.", objectArgs.getName(), e);
        completeTask(bucket.getId(), taskId, e);
        return BiosCommandResult.createErrorResult(e);
    }
    completeTask(bucket.getId(), taskId, "Bucket ACL Sync Successful.");
    return BiosCommandResult.createSuccessfulResult();
}
Also used : Gson(com.google.gson.Gson) BucketACE(com.emc.storageos.model.object.BucketACE) ECSApi(com.emc.storageos.ecs.api.ECSApi) BucketACLUpdateParams(com.emc.storageos.model.object.BucketACLUpdateParams) ObjectBucketACL(com.emc.storageos.db.client.model.ObjectBucketACL) ECSBucketACL(com.emc.storageos.ecs.api.ECSBucketACL) BucketACL(com.emc.storageos.model.object.BucketACL) ECSBucketACL(com.emc.storageos.ecs.api.ECSBucketACL) ECSException(com.emc.storageos.ecs.api.ECSException)

Example 2 with BucketACLUpdateParams

use of com.emc.storageos.model.object.BucketACLUpdateParams in project coprhd-controller by CoprHD.

the class ECSObjectStorageDevice method doDeleteBucketACL.

@Override
public BiosCommandResult doDeleteBucketACL(StorageSystem storageObj, Bucket bucket, ObjectDeviceInputOutput objectArgs, String taskId) throws ControllerException {
    ECSApi objectAPI = getAPI(storageObj);
    BucketACLUpdateParams param = new BucketACLUpdateParams();
    BucketACL aclForDeletion = new BucketACL();
    aclForDeletion.setBucketACL(objectArgs.getBucketAclToDelete());
    param.setAclToDelete(aclForDeletion);
    try {
        String payload = "{\"bucket\":\"" + objectArgs.getName() + "\",\"namespace\":\"" + objectArgs.getNamespace() + "\",\"acl\":{}}\"";
        objectAPI.updateBucketACL(objectArgs.getName(), payload);
        updateBucketACLInDB(param, objectArgs, bucket);
    } catch (ECSException e) {
        _log.error("Delete ACL for Bucket : {} failed.", objectArgs.getName(), e);
        completeTask(bucket.getId(), taskId, e);
        return BiosCommandResult.createErrorResult(e);
    }
    completeTask(bucket.getId(), taskId, "Successfully updated Bucket ACL.");
    return BiosCommandResult.createSuccessfulResult();
}
Also used : ECSApi(com.emc.storageos.ecs.api.ECSApi) BucketACLUpdateParams(com.emc.storageos.model.object.BucketACLUpdateParams) ObjectBucketACL(com.emc.storageos.db.client.model.ObjectBucketACL) ECSBucketACL(com.emc.storageos.ecs.api.ECSBucketACL) BucketACL(com.emc.storageos.model.object.BucketACL) ECSException(com.emc.storageos.ecs.api.ECSException)

Example 3 with BucketACLUpdateParams

use of com.emc.storageos.model.object.BucketACLUpdateParams in project coprhd-controller by CoprHD.

the class ECSObjectStorageDevice method persistDefaultBucketACEInDb.

private void persistDefaultBucketACEInDb(String bucketOwner, Bucket bucket, ObjectDeviceInputOutput args) {
    _log.info("Persisting bucket owner as default ACE", bucketOwner);
    BucketACLUpdateParams param = new BucketACLUpdateParams();
    BucketACL acl = new BucketACL();
    BucketACE defaultAce = new BucketACE();
    String full_control = "full_control";
    List<BucketACE> aclToAdd = Lists.newArrayList();
    String[] userDomain = bucketOwner.split("@");
    if (userDomain.length > 1) {
        defaultAce.setUser(userDomain[0]);
        defaultAce.setDomain(userDomain[1]);
    } else {
        defaultAce.setUser(bucketOwner);
    }
    defaultAce.setPermissions(full_control);
    aclToAdd.add(defaultAce);
    acl.setBucketACL(aclToAdd);
    param.setAclToAdd(acl);
    updateBucketACLInDB(param, args, bucket);
}
Also used : BucketACLUpdateParams(com.emc.storageos.model.object.BucketACLUpdateParams) ObjectBucketACL(com.emc.storageos.db.client.model.ObjectBucketACL) ECSBucketACL(com.emc.storageos.ecs.api.ECSBucketACL) BucketACL(com.emc.storageos.model.object.BucketACL) BucketACE(com.emc.storageos.model.object.BucketACE)

Aggregations

ObjectBucketACL (com.emc.storageos.db.client.model.ObjectBucketACL)3 ECSBucketACL (com.emc.storageos.ecs.api.ECSBucketACL)3 BucketACL (com.emc.storageos.model.object.BucketACL)3 BucketACLUpdateParams (com.emc.storageos.model.object.BucketACLUpdateParams)3 ECSApi (com.emc.storageos.ecs.api.ECSApi)2 ECSException (com.emc.storageos.ecs.api.ECSException)2 BucketACE (com.emc.storageos.model.object.BucketACE)2 Gson (com.google.gson.Gson)1