Пример #1
0
 def test_create_swift_client(self):
     mock_resp = mock(dict)
     when(swiftclient.client.Connection).get_container("bob").thenReturn(["text", mock_resp])
     client = remote.create_swift_client(TroveContext(tenant="123"))
     headers, container = client.get_container("bob")
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #2
0
 def delete_files_from_swift(cls, context, filename):
     container = CONF.backup_swift_container
     client = remote.create_swift_client(context)
     obj = client.head_object(container, filename)
     manifest = obj.get('x-object-manifest', '')
     cont, prefix = cls._parse_manifest(manifest)
     if all([cont, prefix]):
         # This is a manifest file, first delete all segments.
         LOG.info(
             _("Deleting files with prefix: %(cont)s/%(prefix)s") % {
                 'cont': cont,
                 'prefix': prefix
             })
         # list files from container/prefix specified by manifest
         headers, segments = client.get_container(cont, prefix=prefix)
         LOG.debug(headers)
         for segment in segments:
             name = segment.get('name')
             if name:
                 LOG.info(
                     _("Deleting file: %(cont)s/%(name)s") % {
                         'cont': cont,
                         'name': name
                     })
                 client.delete_object(cont, name)
     # Delete the manifest file
     LOG.info(
         _("Deleting file: %(cont)s/%(filename)s") % {
             'cont': cont,
             'filename': filename
         })
     client.delete_object(container, filename)
Пример #3
0
 def test_create_with_catalog_all_opts(self):
     cfg.CONF.set_override('swift_service_type', 'object-storev3')
     cfg.CONF.set_override('os_region_name', 'RegionTwo')
     client = remote.create_swift_client(
         TroveContext(service_catalog=self.service_catalog))
     self.assertEqual(self.swiftv3_public_url_region_two,
                      client.url)
Пример #4
0
 def test_create_with_catalog_all_opts(self):
     cfg.CONF.set_override('swift_service_type', 'object-storev3')
     cfg.CONF.set_override('os_region_name', 'RegionTwo')
     client = remote.create_swift_client(
         TroveContext(service_catalog=self.service_catalog))
     self.assertEqual(self.swiftv3_public_url_region_two,
                      client.url)
Пример #5
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     swiftclient.client.Connection.get_container = MagicMock(
         return_value=["text", mock_resp])
     client = remote.create_swift_client(TroveContext(tenant='123'))
     headers, container = client.get_container('bob')
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #6
0
 def test_create_swift_client(self):
     mock_resp = mock(dict)
     when(swiftclient.client.Connection).get_container('bob').thenReturn(
         ["text", mock_resp])
     client = remote.create_swift_client(TroveContext(tenant='123'))
     headers, container = client.get_container('bob')
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #7
0
 def __init__(self, context, **kwargs):
     self.process = None
     self.pid = None
     self.cmd = self.cmd % kwargs
     self.container = kwargs.get('container')
     self.filename = kwargs.get('filename')
     self.original_backup_checksum = kwargs.get('backup_checksum', None)
     self.swift_client = create_swift_client(context)
Пример #8
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     swiftclient.client.Connection.get_container = MagicMock(
         return_value=["text", mock_resp])
     client = remote.create_swift_client(TroveContext(tenant='123'))
     headers, container = client.get_container('bob')
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #9
0
 def verify_swift_auth_token(cls, context):
     try:
         client = create_swift_client(context)
         client.get_account()
     except ClientException:
         raise exception.SwiftAuthError(tenant_id=context.tenant)
     except exception.NoServiceEndpoint:
         raise exception.SwiftNotFound(tenant_id=context.tenant)
Пример #10
0
 def __init__(self, context, **kwargs):
     self.process = None
     self.pid = None
     self.cmd = self.cmd % kwargs
     self.container = kwargs.get('container')
     self.filename = kwargs.get('filename')
     self.original_backup_checksum = kwargs.get('backup_checksum', None)
     self.swift_client = create_swift_client(context)
Пример #11
0
 def verify_swift_auth_token(cls, context):
     try:
         client = create_swift_client(context)
         client.get_account()
     except ClientException:
         raise exception.SwiftAuthError(tenant_id=context.tenant)
     except exception.NoServiceEndpoint:
         raise exception.SwiftNotFound(tenant_id=context.tenant)
Пример #12
0
    def test_create_with_conf_override(self):
        swift_url_from_conf = 'http://example.com/AUTH_'
        tenant_from_ctx = 'abc'
        cfg.CONF.set_override('swift_url', swift_url_from_conf)

        client = remote.create_swift_client(
            TroveContext(tenant=tenant_from_ctx))
        self.assertEqual('%s%s' % (swift_url_from_conf, tenant_from_ctx),
                         client.url)
Пример #13
0
    def test_create_with_conf_override(self):
        swift_url_from_conf = 'http://example.com/AUTH_'
        tenant_from_ctx = uuid.uuid4().hex
        cfg.CONF.set_override('swift_url', swift_url_from_conf)

        client = remote.create_swift_client(
            TroveContext(tenant=tenant_from_ctx))
        self.assertEqual('%s%s' % (swift_url_from_conf, tenant_from_ctx),
                         client.url)
Пример #14
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     swiftclient.client.Connection.get_container = MagicMock(
         return_value=["text", mock_resp])
     service_catalog = [{'endpoints': [{'publicURL': 'example.com'}],
                         'type': 'object-store'}]
     client = remote.create_swift_client(TroveContext(
         tenant='123',
         service_catalog=service_catalog))
     headers, container = client.get_container('bob')
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #15
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     with patch.object(swiftclient.client.Connection, 'get_container',
                       MagicMock(return_value=["text", mock_resp])):
         service_catalog = [{'endpoints': [{'region': 'RegionOne',
                                            'publicURL': 'example.com'}],
                             'type': 'object-store'}]
         client = remote.create_swift_client(TroveContext(
             tenant=uuid.uuid4().hex,
             service_catalog=service_catalog))
         headers, container = client.get_container('bob')
         self.assertIs(headers, "text")
         self.assertIs(container, mock_resp)
Пример #16
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     with patch.object(swiftclient.client.Connection, 'get_container',
                       MagicMock(return_value=["text", mock_resp])):
         service_catalog = [{'endpoints': [{'region': 'RegionOne',
                                            'publicURL': 'example.com'}],
                             'type': 'object-store'}]
         client = remote.create_swift_client(TroveContext(
             tenant=uuid.uuid4().hex,
             service_catalog=service_catalog))
         headers, container = client.get_container('bob')
         self.assertIs(headers, "text")
         self.assertIs(container, mock_resp)
Пример #17
0
 def check_object_exist(cls, context, location):
     try:
         parts = location.split('/')
         obj = parts[-1]
         container = parts[-2]
         client = create_swift_client(context)
         client.head_object(container, obj)
         return True
     except ClientException as e:
         if e.http_status == 404:
             return False
         else:
             raise exception.SwiftAuthError(tenant_id=context.tenant)
Пример #18
0
 def check_object_exist(cls, context, location):
     try:
         parts = location.split('/')
         obj = parts[-1]
         container = parts[-2]
         client = create_swift_client(context)
         client.head_object(container, obj)
         return True
     except ClientException as e:
         if e.http_status == 404:
             return False
         else:
             raise exception.SwiftAuthError(tenant_id=context.tenant)
Пример #19
0
    def delete_files_from_swift(cls, context, filename):
        client = remote.create_swift_client(context)
        # Delete the manifest
        if client.head_object(CONF.backup_swift_container, filename):
            client.delete_object(CONF.backup_swift_container, filename)

        # Delete the segments
        if client.head_container(filename + "_segments"):

            for obj in client.get_container(filename + "_segments")[1]:
                client.delete_object(filename + "_segments", obj['name'])

            # Delete the segments container
            client.delete_container(filename + "_segments")
Пример #20
0
 def test_create_swift_client(self):
     mock_resp = MagicMock()
     swiftclient.client.Connection.get_container = MagicMock(
         return_value=["text", mock_resp])
     service_catalog = [{
         'endpoints': [{
             'publicURL': 'example.com'
         }],
         'type': 'object-store'
     }]
     client = remote.create_swift_client(
         TroveContext(tenant='123', service_catalog=service_catalog))
     headers, container = client.get_container('bob')
     self.assertIs(headers, "text")
     self.assertIs(container, mock_resp)
Пример #21
0
 def delete_files_from_swift(cls, context, filename):
     container = CONF.backup_swift_container
     client = remote.create_swift_client(context)
     obj = client.head_object(container, filename)
     manifest = obj.get('x-object-manifest', '')
     cont, prefix = cls._parse_manifest(manifest)
     if all([cont, prefix]):
         # This is a manifest file, first delete all segments.
         LOG.info("Deleting files with prefix: %s/%s", cont, prefix)
         # list files from container/prefix specified by manifest
         headers, segments = client.get_container(cont, prefix=prefix)
         LOG.debug(headers)
         for segment in segments:
             name = segment.get('name')
             if name:
                 LOG.info("Deleting file: %s/%s", cont, name)
                 client.delete_object(cont, name)
         # Delete the manifest file
     LOG.info("Deleting file: %s/%s", container, filename)
     client.delete_object(container, filename)
Пример #22
0
 def check_swift_object_exist(self, context, verify_checksum=False):
     try:
         parts = self.location.split("/")
         obj = parts[-1]
         container = parts[-2]
         client = create_swift_client(context)
         LOG.info(_("Checking if backup exist in '%s'") % self.location)
         resp = client.head_object(container, obj)
         if verify_checksum:
             LOG.info(_("Checking if backup checksum matches swift."))
             # swift returns etag in double quotes
             # e.g. '"dc3b0827f276d8d78312992cc60c2c3f"'
             swift_checksum = resp["etag"].strip('"')
             if self.checksum != swift_checksum:
                 raise exception.RestoreBackupIntegrityError(backup_id=self.id)
         return True
     except ClientException as e:
         if e.http_status == 404:
             return False
         else:
             raise exception.SwiftAuthError(tenant_id=context.tenant)
Пример #23
0
 def check_swift_object_exist(self, context, verify_checksum=False):
     try:
         parts = self.location.split('/')
         obj = parts[-1]
         container = parts[-2]
         client = create_swift_client(context)
         LOG.info(_("Checking if backup exist in '%s'") % self.location)
         resp = client.head_object(container, obj)
         if verify_checksum:
             LOG.info(_("Checking if backup checksum matches swift."))
             # swift returns etag in double quotes
             # e.g. '"dc3b0827f276d8d78312992cc60c2c3f"'
             swift_checksum = resp['etag'].strip('"')
             if self.checksum != swift_checksum:
                 raise exception.RestoreBackupIntegrityError(
                     backup_id=backup_id)
         return True
     except ClientException as e:
         if e.http_status == 404:
             return False
         else:
             raise exception.SwiftAuthError(tenant_id=context.tenant)
Пример #24
0
 def __init__(self, *args, **kwargs):
     super(SwiftStorage, self).__init__(*args, **kwargs)
     self.connection = create_swift_client(self.context)
Пример #25
0
 def get_client(cls, context, region_name):
     return remote.create_swift_client(context, region_name)
Пример #26
0
 def get_client(cls, context):
     return remote.create_swift_client(context)
Пример #27
0
 def swift_client(self):
     if not self._cached_swift_client or (
             self._cached_context != self.context):
         self._cached_swift_client = create_swift_client(self.context)
         self._cached_context = self.context
     return self._cached_swift_client
Пример #28
0
 def test_create_with_catalog_and_default_service_type(self):
     client = remote.create_swift_client(
         TroveContext(service_catalog=self.service_catalog))
     self.assertEqual(self.swift_public_url,
                      client.url)
Пример #29
0
 def __init__(self, context):
     super(SwiftStorage, self).__init__()
     self.connection = create_swift_client(context)
Пример #30
0
 def get_client(cls, context, region_name):
     return remote.create_swift_client(context, region_name)
Пример #31
0
 def swift_client(self):
     if not self._cached_swift_client or (self._cached_context !=
                                          self.context):
         self._cached_swift_client = create_swift_client(self.context)
         self._cached_context = self.context
     return self._cached_swift_client
Пример #32
0
 def test_create_with_catalog_and_default_service_type(self):
     client = remote.create_swift_client(
         TroveContext(service_catalog=self.service_catalog))
     self.assertEqual(self.swift_public_url, client.url)
Пример #33
0
 def __init__(self, context):
     super(SwiftStorage, self).__init__()
     self.connection = create_swift_client(context)