in pantri/scripts/lib/fb_objectstore.py [0:0]
def upload(self, objects_to_upload):
"""
upload(self, objects)
Uploads list of objects to object store. Unchanged files (filesize &
modified time) are skipped. Relaies on swiftclient.service.SwiftService
class to do a majority of the work to upload objects.
"""
objects = []
for obj in objects_to_upload:
objects.append(
swiftclient.service.SwiftUploadObject(
source=os.path.join(self.paths['shelves'], obj),
object_name=obj
)
)
# Create connection to object store and upload objects
with swiftclient.service.SwiftService(
options={
'os_storage_url': self.options['storage_url'],
'os_auth_token': self.auth_token
}
) as swift:
# need for loop to read all responses returned. ie generators
for response in swift.upload(
container=self.options['object_store_container'],
objects=objects,
options={
'changed': True,
'segment_size': 4294967296,
'use_slo': True,
'segment_container': 'segments',
}
):
# Yield successful uploads
if self.parse_response(response):
yield response['object']