Identify segments uploaded via swiftclient
...using a new "application/swiftclient-segment" content-type. Segments uploaded by swiftclient are expected to have a many-to-one relationship to large objects, rather than the more-general many-to-many relationship that SLO and DLO generally allow. Later, we may use this information to make more intelligent decisions, such as when to automatically clean up segments. Change-Id: Ie56a3aa10065db754ac572cc37d93f2c901aac60
This commit is contained in:
parent
015903e383
commit
4a6fa02c28
@ -1657,10 +1657,13 @@ class SwiftService(object):
|
||||
fp.seek(segment_start)
|
||||
|
||||
contents = LengthWrapper(fp, segment_size, md5=options['checksum'])
|
||||
etag = conn.put_object(segment_container,
|
||||
segment_name, contents,
|
||||
content_length=segment_size,
|
||||
response_dict=results_dict)
|
||||
etag = conn.put_object(
|
||||
segment_container,
|
||||
segment_name,
|
||||
contents,
|
||||
content_length=segment_size,
|
||||
content_type='application/swiftclient-segment',
|
||||
response_dict=results_dict)
|
||||
|
||||
if options['checksum'] and etag and etag != contents.get_md5sum():
|
||||
raise SwiftError('Segment {0}: upload verification failed: '
|
||||
|
@ -945,11 +945,12 @@ class TestServiceUpload(_TestServiceBase):
|
||||
self.assertEqual(r, expected_r)
|
||||
|
||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
||||
'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
response_dict={})
|
||||
mock_conn.put_object.assert_called_with(
|
||||
'test_c_segments', 'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
content_type='application/swiftclient-segment',
|
||||
response_dict={})
|
||||
contents = mock_conn.put_object.call_args[0][2]
|
||||
self.assertIsInstance(contents, utils.LengthWrapper)
|
||||
self.assertEqual(len(contents), 10)
|
||||
@ -988,11 +989,12 @@ class TestServiceUpload(_TestServiceBase):
|
||||
|
||||
self.assertIsNone(r.get('error'))
|
||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
||||
'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
response_dict={})
|
||||
mock_conn.put_object.assert_called_with(
|
||||
'test_c_segments', 'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
content_type='application/swiftclient-segment',
|
||||
response_dict={})
|
||||
contents = mock_conn.put_object.call_args[0][2]
|
||||
# Check that md5sum is not calculated.
|
||||
self.assertEqual(contents.get_md5sum(), '')
|
||||
@ -1028,11 +1030,12 @@ class TestServiceUpload(_TestServiceBase):
|
||||
self.assertIn('md5 mismatch', str(r.get('error')))
|
||||
|
||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
||||
'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
response_dict={})
|
||||
mock_conn.put_object.assert_called_with(
|
||||
'test_c_segments', 'test_s_1',
|
||||
mock.ANY,
|
||||
content_length=10,
|
||||
content_type='application/swiftclient-segment',
|
||||
response_dict={})
|
||||
contents = mock_conn.put_object.call_args[0][2]
|
||||
self.assertEqual(contents.get_md5sum(), md5(b'b' * 10).hexdigest())
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user