[Openstack] Python API for Dynamic Large Objects in Swift

Vincenzo Pii vinc.pii at gmail.com
Wed Jul 29 09:54:40 UTC 2015


2015-07-29 9:46 GMT+02:00 Vincenzo Pii <vinc.pii at gmail.com>:

>
>
> 2015-07-29 8:01 GMT+02:00 Clint Byrum <clint at fewbar.com>:
>
>> Excerpts from John Dickinson's message of 2015-07-28 22:01:54 -0700:
>> > You can also use swiftclient.service module. It is the wrapper on top
>> of the low-level swiftclient.client that is actually what the CLI tool uses
>> for some of its higher-order functions (like splitting larger local files
>> and making manifest objects).
>> >
>> > You'd have something like:
>> >
>> > results = swiftclient.service.upload('target_container',
>> ['path/to/local/file',], options={'segment_size': 1048576000})
>> >
>>
>> Indeed. To build on this, since you may have more than one cloud, we've
>> added some pieces to the 'shade' library that figures out what segment
>> sizes to use and just lets you pass in paths. Unfortunately I just
>> noticed the create_object method isn't well documented, but I submitted
>> a patch so here is that documentation:
>>
>> https://review.openstack.org/#/c/206872/1/shade/__init__.py
>>
>> Basically something like
>>
>>
>> import shade
>>
>> cloud = shade.openstack_cloud()
>> cloud.create_object('target_container', 'call me maybe',
>> 'path/to/local/file')
>>
>> _______________________________________________
>> Mailing list:
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>> Post to     : openstack at lists.openstack.org
>> Unsubscribe :
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
>>
>
>
> Hi Guys,
>
> Thanks for the inputs!
>
> I used the same flow as the CLI part of the swift client, as John
> suggested. I found it strange that the CLI and the python client APIs are
> not unified, I imagined that I would have found the same interfaces after
> some call layers.
>
> So this is what I did:
>
> import swiftclient.service
> from swiftclient.service import SwiftService
>
> swiftclient.service._default_global_options['os_username'] = ''
> swiftclient.service._default_global_options['os_password'] = ''
> swiftclient.service._default_global_options['os_tenant_name'] = ''
> swiftclient.service._default_global_options['os_auth_url'] = ''
>
> container_name = 'newcont'
> filename = ['large_object']
> segment_size = '1048576'
>
> with SwiftService() as sw:
>     for r in sw.upload(container_name, filename, {'segment_size':
> segment_size}):
>         print r['success']
>
>
> The shade approach is actually the cleanest one!
>


I've opened this report:
https://bugs.launchpad.net/python-swiftclient/+bug/1479284
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20150729/7f8fd8a0/attachment.html>


More information about the Openstack mailing list