libcloud-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kyle Kelley (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LIBCLOUD-540) Implement Copy Object Semantic
Date Fri, 18 Apr 2014 15:57:17 GMT

     [ https://issues.apache.org/jira/browse/LIBCLOUD-540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Kyle Kelley updated LIBCLOUD-540:
---------------------------------

    Description: 
Several providers have a copy object semantic that works within one datacenter/region.

* [Azure copy Blob|http://msdn.microsoft.com/library/azure/dd894037.aspx]
* [OpenStack Swift object copy|http://docs.openstack.org/api/openstack-object-storage/1.0/content/copy-object.html].

I have not dug into Amazon S3 or any others, so I could use some guidance there.

I'd like to design it to be used cross-providers instead of ex_copy_object, as discussed [in
#275|https://issues.apache.org/jira/browse/LIBCLOUD-275?focusedCommentId=13959367&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13959367].

I'm imagining that the StorageDriver class would get this function header:

{code:title=base.py|borderStyle=solid}
class StorageDriver(BaseDriver):
    ...
    def copy_object(self, src_container_name, src_object_name, dst_container_name, dst_object_name):
        """
        Copy object from one container to another (or the same container with a new name).

        :param src_container_name: Source container name
        :type src_container_name: ``str``

        :param src_object_name: Source object name
        :type src_object_name: ``str``

        :param dst_container_name: Destination container name
        :type dst_container_name: ``str``

        :param dst_object_name: Destination object name
        :type dst_object_name: ``str``

        :rtype: :class:`Object`
        """
        raise NotImplementedError(
            'copy_object not implemented for this driver')
{code}

That layout works for both OpenStack/Rackspace/HP and Azure, minus any additional metadata
headers that you might want to send for these providers. Is there a clean way to handle that?

  was:
Several providers have a copy object semantic that works within one datacenter/region.

* [Azure copy Blob|http://msdn.microsoft.com/library/azure/dd894037.aspx]
* [OpenStack Swift object copy|http://docs.openstack.org/api/openstack-object-storage/1.0/content/copy-object.html].

I have not dug into Amazon S3 or any others, so I could use some guidance there.

I'd like to design it to be used cross-providers instead of ex_copy_object, as discussed [in
#275|https://issues.apache.org/jira/browse/LIBCLOUD-275?focusedCommentId=13959367&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13959367].

I'm imagining that the StorageDriver class would get this function header:

def copy_object(self, src_container_name, src_object_name, dst_container_name, dst_object_name)

That layout works for both OpenStack/Rackspace/HP and Azure, minus any additional metadata
headers that you might want to send for these providers. Is there a clean way to handle that?


> Implement Copy Object Semantic
> ------------------------------
>
>                 Key: LIBCLOUD-540
>                 URL: https://issues.apache.org/jira/browse/LIBCLOUD-540
>             Project: Libcloud
>          Issue Type: Improvement
>          Components: Storage
>            Reporter: Kyle Kelley
>              Labels: features
>   Original Estimate: 612h
>  Remaining Estimate: 612h
>
> Several providers have a copy object semantic that works within one datacenter/region.
> * [Azure copy Blob|http://msdn.microsoft.com/library/azure/dd894037.aspx]
> * [OpenStack Swift object copy|http://docs.openstack.org/api/openstack-object-storage/1.0/content/copy-object.html].
> I have not dug into Amazon S3 or any others, so I could use some guidance there.
> I'd like to design it to be used cross-providers instead of ex_copy_object, as discussed
[in #275|https://issues.apache.org/jira/browse/LIBCLOUD-275?focusedCommentId=13959367&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13959367].
> I'm imagining that the StorageDriver class would get this function header:
> {code:title=base.py|borderStyle=solid}
> class StorageDriver(BaseDriver):
>     ...
>     def copy_object(self, src_container_name, src_object_name, dst_container_name, dst_object_name):
>         """
>         Copy object from one container to another (or the same container with a new name).
>         :param src_container_name: Source container name
>         :type src_container_name: ``str``
>         :param src_object_name: Source object name
>         :type src_object_name: ``str``
>         :param dst_container_name: Destination container name
>         :type dst_container_name: ``str``
>         :param dst_object_name: Destination object name
>         :type dst_object_name: ``str``
>         :rtype: :class:`Object`
>         """
>         raise NotImplementedError(
>             'copy_object not implemented for this driver')
> {code}
> That layout works for both OpenStack/Rackspace/HP and Azure, minus any additional metadata
headers that you might want to send for these providers. Is there a clean way to handle that?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message