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)
|
fp.seek(segment_start)
|
||||||
|
|
||||||
contents = LengthWrapper(fp, segment_size, md5=options['checksum'])
|
contents = LengthWrapper(fp, segment_size, md5=options['checksum'])
|
||||||
etag = conn.put_object(segment_container,
|
etag = conn.put_object(
|
||||||
segment_name, contents,
|
segment_container,
|
||||||
content_length=segment_size,
|
segment_name,
|
||||||
response_dict=results_dict)
|
contents,
|
||||||
|
content_length=segment_size,
|
||||||
|
content_type='application/swiftclient-segment',
|
||||||
|
response_dict=results_dict)
|
||||||
|
|
||||||
if options['checksum'] and etag and etag != contents.get_md5sum():
|
if options['checksum'] and etag and etag != contents.get_md5sum():
|
||||||
raise SwiftError('Segment {0}: upload verification failed: '
|
raise SwiftError('Segment {0}: upload verification failed: '
|
||||||
|
@ -945,11 +945,12 @@ class TestServiceUpload(_TestServiceBase):
|
|||||||
self.assertEqual(r, expected_r)
|
self.assertEqual(r, expected_r)
|
||||||
|
|
||||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
mock_conn.put_object.assert_called_with(
|
||||||
'test_s_1',
|
'test_c_segments', 'test_s_1',
|
||||||
mock.ANY,
|
mock.ANY,
|
||||||
content_length=10,
|
content_length=10,
|
||||||
response_dict={})
|
content_type='application/swiftclient-segment',
|
||||||
|
response_dict={})
|
||||||
contents = mock_conn.put_object.call_args[0][2]
|
contents = mock_conn.put_object.call_args[0][2]
|
||||||
self.assertIsInstance(contents, utils.LengthWrapper)
|
self.assertIsInstance(contents, utils.LengthWrapper)
|
||||||
self.assertEqual(len(contents), 10)
|
self.assertEqual(len(contents), 10)
|
||||||
@ -988,11 +989,12 @@ class TestServiceUpload(_TestServiceBase):
|
|||||||
|
|
||||||
self.assertIsNone(r.get('error'))
|
self.assertIsNone(r.get('error'))
|
||||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
mock_conn.put_object.assert_called_with(
|
||||||
'test_s_1',
|
'test_c_segments', 'test_s_1',
|
||||||
mock.ANY,
|
mock.ANY,
|
||||||
content_length=10,
|
content_length=10,
|
||||||
response_dict={})
|
content_type='application/swiftclient-segment',
|
||||||
|
response_dict={})
|
||||||
contents = mock_conn.put_object.call_args[0][2]
|
contents = mock_conn.put_object.call_args[0][2]
|
||||||
# Check that md5sum is not calculated.
|
# Check that md5sum is not calculated.
|
||||||
self.assertEqual(contents.get_md5sum(), '')
|
self.assertEqual(contents.get_md5sum(), '')
|
||||||
@ -1028,11 +1030,12 @@ class TestServiceUpload(_TestServiceBase):
|
|||||||
self.assertIn('md5 mismatch', str(r.get('error')))
|
self.assertIn('md5 mismatch', str(r.get('error')))
|
||||||
|
|
||||||
self.assertEqual(mock_conn.put_object.call_count, 1)
|
self.assertEqual(mock_conn.put_object.call_count, 1)
|
||||||
mock_conn.put_object.assert_called_with('test_c_segments',
|
mock_conn.put_object.assert_called_with(
|
||||||
'test_s_1',
|
'test_c_segments', 'test_s_1',
|
||||||
mock.ANY,
|
mock.ANY,
|
||||||
content_length=10,
|
content_length=10,
|
||||||
response_dict={})
|
content_type='application/swiftclient-segment',
|
||||||
|
response_dict={})
|
||||||
contents = mock_conn.put_object.call_args[0][2]
|
contents = mock_conn.put_object.call_args[0][2]
|
||||||
self.assertEqual(contents.get_md5sum(), md5(b'b' * 10).hexdigest())
|
self.assertEqual(contents.get_md5sum(), md5(b'b' * 10).hexdigest())
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user