/*
* Copyright 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.volumecontroller;
import java.net.URI;
import com.emc.storageos.model.object.BucketACL;
import com.emc.storageos.db.client.model.Bucket;
import com.emc.storageos.db.client.model.ObjectUserSecretKey;
import com.emc.storageos.model.object.BucketParam;
import com.emc.storageos.model.object.BucketACLUpdateParams;
import com.emc.storageos.svcs.errorhandling.resources.InternalException;
public interface ObjectController extends StorageController {
/**
* Create a bucket
*
* @param storage URI of storage controller.
* @param Pool URI of ECS storage pool
* @param bkt URI of bucket
* @param label Name of bucket
* @param namespace Namespace with this associated
* @param retention retained value
* @param hardQuota blocking limit
* @param softQuota notification limit
* @param owner owner of bucket
* @param opId taak id
* @throws InternalException
*/
public void createBucket(URI storage, URI Pool, URI bkt, String label, String namespace, Integer retention,
Long hardQuota, Long softQuota, String owner, String opId) throws InternalException;
/**
* Deactivates Bucket
*
* @param bucket Bucket ID
* @param task Task ID
* @throws InternalException if error occurs during Bucket delete
*/
public void deleteBucket(URI storage, URI bucket, String deleteType, String task) throws InternalException;
/**
* Updates Bucket instance
*
* @param bucket Bucket ID
* @param softQuota Soft Quota limit of Bucket
* @param hardQuota Hard Quota limit of Bucket
* @param retention Data retention period in days
* @param task Task ID
* @throws InternalException if error occurs during Bucket update
*/
public void updateBucket(URI storage, URI bucket, Long softQuota, Long hardQuota, Integer retention, String task) throws ControllerException;
/**
* Add/Modify/Delete the existing ACL settings.
* @param storage
* @param bucket
* @param param
* @param opId
* @throws InternalException
*/
public void updateBucketACL(URI storage, URI bucket, BucketACLUpdateParams param, String opId) throws InternalException;
/**
* Deletes the entire ACL settings for bucket.
* @param storage
* @param bucket
* @param opId
* @throws InternalException
*/
public void deleteBucketACL(URI storage, URI bucket, String opId) throws InternalException;
/**
* Get the ACl for the bucket from Object storage and persist in coprhd DB.
* @param storage
* @param bucketId
* @param opId
* @throws InternalException
*/
public void syncBucketACL(URI storage, URI bucketId, String opId ) throws InternalException;
/**
* Create an object user secret key
* @param storage URN
* @param userId object storage user id
* @param secretKey key value
* @return success results
* @throws InternalException
*/
public ObjectUserSecretKey addUserSecretKey(URI storage, String userId, String secretKey) throws InternalException;
}