Beispiel #1
0
 def setUpClass(cls):
     """Run class setup for running tests."""
     cls.region1_model_alias = 'swift_gr_region1'
     cls.region1_proxy_app = 'swift-proxy-region1'
     cls.region2_model_alias = 'swift_gr_region2'
     cls.region2_proxy_app = 'swift-proxy-region2'
     super(SwiftGlobalReplicationTests, cls).setUpClass(
         application_name=cls.region1_proxy_app,
         model_alias=cls.region1_model_alias)
     cls.region1_model_name = cls.model_aliases[cls.region1_model_alias]
     cls.region2_model_name = cls.model_aliases[cls.region2_model_alias]
     cls.storage_topology = swift_utils.get_swift_storage_topology(
         model_name=cls.region1_model_name)
     cls.storage_topology.update(
         swift_utils.get_swift_storage_topology(
             model_name=cls.region2_model_name))
     cls.swift_session = openstack_utils.get_keystone_session_from_relation(
         cls.region1_proxy_app,
         model_name=cls.region1_model_name)
     cls.swift_region1 = openstack_utils.get_swift_session_client(
         cls.swift_session,
         region_name='RegionOne')
     cls.swift_region2 = openstack_utils.get_swift_session_client(
         cls.swift_session,
         region_name='RegionTwo')
Beispiel #2
0
    def test_multisite_failover(self):
        """Verify object storage failover/failback.

        Verify that the slave radosgw can be promoted to master status
        """
        if not self.multisite:
            raise unittest.SkipTest('Skipping multisite failover test')

        logging.info('Checking multisite failover/failback')
        keystone_session = zaza_openstack.get_overcloud_keystone_session()
        source_client = zaza_openstack.get_swift_session_client(
            keystone_session,
            region_name='east-1',
            cacert=self.cacert,
        )
        target_client = zaza_openstack.get_swift_session_client(
            keystone_session,
            region_name='west-1',
            cacert=self.cacert,
        )
        zaza_model.run_action_on_leader(
            'slave-ceph-radosgw',
            'promote',
            action_params={},
        )
        self.wait_for_sync('ceph-radosgw')
        _container = 'demo-container-for-failover'
        _test_data = 'Test data from Zaza on Slave'
        target_client.put_container(_container)
        target_client.put_object(_container,
                                 'testfile',
                                 contents=_test_data,
                                 content_type='text/plain')
        _, target_content = target_client.get_object(_container, 'testfile')

        zaza_model.run_action_on_leader(
            'ceph-radosgw',
            'promote',
            action_params={},
        )
        self.wait_for_sync('slave-ceph-radosgw')

        @tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60),
                        reraise=True,
                        stop=tenacity.stop_after_attempt(12))
        def _source_get_object():
            return source_client.get_object(_container, 'testfile')

        _, source_content = _source_get_object()

        self.assertEqual(target_content.decode('UTF-8'),
                         source_content.decode('UTF-8'))
Beispiel #3
0
    def test_object_storage_multisite(self):
        """Verify object storage replication.

        Verify that the object storage replication works as expected.
        """
        if not self.multisite:
            raise unittest.SkipTest('Skipping multisite replication test')

        logging.info('Checking multisite replication')
        keystone_session = zaza_openstack.get_overcloud_keystone_session()
        source_client = zaza_openstack.get_swift_session_client(
            keystone_session,
            region_name='east-1',
            cacert=self.cacert,
        )
        _container = 'demo-container'
        _test_data = 'Test data from Zaza'
        source_client.put_container(_container)
        source_client.put_object(_container,
                                 'testfile',
                                 contents=_test_data,
                                 content_type='text/plain')
        _, source_content = source_client.get_object(_container, 'testfile')
        self.assertEqual(source_content.decode('UTF-8'), _test_data)

        target_client = zaza_openstack.get_swift_session_client(
            keystone_session,
            region_name='east-1',
            cacert=self.cacert,
        )

        @tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60),
                        reraise=True,
                        stop=tenacity.stop_after_attempt(12))
        def _target_get_object():
            return target_client.get_object(_container, 'testfile')

        _, target_content = _target_get_object()

        self.assertEqual(target_content.decode('UTF-8'),
                         source_content.decode('UTF-8'))
        target_client.delete_object(_container, 'testfile')

        try:
            source_client.head_object(_container, 'testfile')
        except ClientException as e:
            self.assertEqual(e.http_status, 404)
        else:
            self.fail('object not deleted on source radosgw')
Beispiel #4
0
    def test_object_storage(self):
        """Verify object storage API.

        Verify that the object storage API works as expected.
        """
        if self.multisite:
            raise unittest.SkipTest('Skipping REST API test, '
                                    'multisite configuration')
        logging.info('Checking Swift REST API')
        keystone_session = zaza_openstack.get_overcloud_keystone_session()
        region_name = 'RegionOne'
        swift_client = zaza_openstack.get_swift_session_client(
            keystone_session,
            region_name,
            cacert=self.cacert,
        )
        _container = 'demo-container'
        _test_data = 'Test data from Zaza'
        swift_client.put_container(_container)
        swift_client.put_object(_container,
                                'testfile',
                                contents=_test_data,
                                content_type='text/plain')
        _, content = swift_client.get_object(_container, 'testfile')
        self.assertEqual(content.decode('UTF-8'), _test_data)
Beispiel #5
0
    def setUpClass(cls):
        """Run class setup for running glance tests."""
        super(GlanceCephRGWBackendTest, cls).setUpClass()

        swift_session = openstack_utils.get_keystone_session_from_relation(
            'ceph-radosgw')
        cls.swift = openstack_utils.get_swift_session_client(swift_session)
        cls.glance_client = openstack_utils.get_glance_session_client(
            cls.keystone_session)
Beispiel #6
0
    def setUpClass(cls):
        """Run class setup for running tests."""
        super(SwiftImageCreateTest, cls).setUpClass()
        cls.image_name = 'zaza-swift-lts'
        swift_session = openstack_utils.get_keystone_session_from_relation(
            'swift-proxy')

        cls.swift = openstack_utils.get_swift_session_client(swift_session)
        cls.glance_client = openstack_utils.get_glance_session_client(
            cls.keystone_session)