コード例 #1
0
    def _update_pool(self, pool_id, size, group_id, pg_num):
        """
        Execute the test of updating a pool
        """
        # sleep 60s, otherwise it may raise error about "the pool is not ready"
        pool_name = 'cloudtest_' + utils.utils_misc.generate_random_string(6)
        vgroup_id = test_utils.get_available_vgroup(self.params)

        if self.params.get('NO_EC', "true") == "true":
            update_pool = {
                'name': pool_name,
                'size': size,
                'group_id': group_id,
                'pg_num': pg_num,
                'vgroup_id': vgroup_id
            }
        else:
            update_pool = {
                'name': pool_name,
                'group_id': self.params.get('rest_arg_group_id', 1),
                'pg_num': self.params.get('rest_arg_pg_num', 80),
                'vgroup_id': vgroup_id,
                'safe_type': self.params.get('safe_type', 10),
                'data_block_num': self.params.get('data_block_num', 3),
                'code_block_num': self.params.get('code_block_num', 0),
                'min_size': self.params.get('min_size', 1),
                'max_bytes': self.params.get("max_bytes", 1073741824)
            }
        resp = self.pool_client.update(pool_id, **update_pool)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Update pool failed: %s" % self.body)

        time.sleep(240)
コード例 #2
0
    def test_create_regular_export_job(self):
        """
        Test create job for regular export logs to remote
        """
        ceph_server_ip = self.params.get('ceph_management_url')
        controller_ip = test_utils.get_ip_from_string(ceph_server_ip)
        controller_username = self.params.get('ceph_server_ssh_username')
        controller_password = self.params.get('ceph_server_ssh_password')

        regular_export = {
            'interval': 1,
            'interval_unit': 'minute',
            'server_ip': controller_ip,
            'server_password': controller_password,
            'server_path': '/tmp',
            'server_port': 22,
            'server_username': controller_username,
            'type': 'operation'
        }

        resp = self.client.regular_export(**regular_export)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create regular export to remote job "
                                      "failed: %s" % self.body)
コード例 #3
0
ファイル: test_pools.py プロジェクト: xcnix/avocado-cloudtest
 def test_update(self):
     """
     Execute the test of updating a pool
     """
     pool_id = self.env.get('pool_tmp_id')
     pool_name = 'cloudtest_' + utils_misc.generate_random_string(6)
     if self.params.get('NO_EC', "true") == "true":
         update_pool = {
             'name': pool_name,
             'size': self.params.get('rest_arg_size', 3),
             'group_id': self.params.get('rest_arg_group_id', 1),
             'pg_num': self.params.get('rest_arg_pg_num', 600),
             'vgroup_id': self.env.get('vgroup_id', 1)
         }
     else:
         update_pool = {
             'name': pool_name,
             'group_id': self.params.get('rest_arg_group_id', 1),
             'pg_num': self.params.get('rest_arg_pg_num', 448),
             'vgroup_id': self.env.get('vgroup_id', 1),
             'safe_type': self.params.get('safe_type', 0),
             'data_block_num': self.params.get('data_block_num', 3),
             'code_block_num': self.params.get('code_block_num', 0),
             'min_size': self.params.get('min_size', 1),
             'max_bytes': self.params.get("max_bytes", 1073741824),
             'write_mode': self.params.get("write_mode", "writeback"),
         }
     resp = self.client.update(pool_id, **update_pool)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Update pool failed: %s" % self.body)
コード例 #4
0
ファイル: test_pools.py プロジェクト: xcnix/avocado-cloudtest
    def test_set_ec_pool_cache(self):
        """
        Set up cache for EC pool
        """
        pool_id = self.env.get('pool_tmp_id')
        vgroup_id = self.env.get('vgroup_id', 1)
        cache_pool = test_utils.create_pool(self.params,
                                            flag=True,
                                            vgroup_id=vgroup_id)
        self.env['cache_pool_id'] = cache_pool.get('pool_id')
        self.env['cache_pool_name'] = cache_pool.get('name')

        if self.params.get('NO_EC', "true") == "true":
            raise exceptions.TestSkipError("There is not EC pool")
        else:
            set_cache = {
                'cache_pool_id': cache_pool.get('pool_id'),
                'cache_pool_name': cache_pool.get('name'),
                'cache_size': 107374182400,
                'target_dirty_radio': 30,
                'target_full_radio': 70,
                'option': 'set_cache',
                'caching_mode': 'writeback',
            }

        resp = self.client.set_cache(pool_id, **set_cache)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Set up EC pool cache failed: %s" %
                                      self.body)
コード例 #5
0
    def test_create(self):
        """
        Execute the test of creating a Server
        """
        # if there is not enough resource to create server, skip it
        if not (self.body.get('servername') and self.body.get('publicip')
                and self.body.get('clusterip') and self.body.get('username')
                and self.body.get('password')):
            raise exceptions.TestSkipError("There is not enough resource"
                                           " to create server!")

        if not self.body.get('parent_bucket'):
            group_id, parent_id = \
                test_utils.get_available_group_bucket(self.params)
            self.body.update({'parent_bucket': parent_id})
        resp_body = self.client.create(**self.body)
        body = resp_body.body
        if not resp_body and utils.verify_response(self.body, resp_body):
            raise exceptions.TestFail("Create server failed: %s" % self.body)

        status = test_utils.wait_for_server_in_status(
            'servername', self.body['servername'], self.client, 'added', 1,
            int(self.params.get('add_host_timeout', 600)))
        if not status:
            raise exceptions.TestFail("Failed to add server %s" %
                                      self.body['servername'])
        LOG.info('Create server %s successfully!' %
                 body['properties'].get('name'))

        self.env['server_name'] = body['properties'].get('name')
        self._query_servers()
コード例 #6
0
 def _set_cluster_conf(self):
     resp = self.clusterconf_client.set(self.cluster_id, self.body)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Set cluster conf failed: %s" %
                                   self.body)
     LOG.info("Set cluster conf: %s" % self.body)
     time.sleep(30)
コード例 #7
0
ファイル: test_qos.py プロジェクト: xcnix/avocado-cloudtest
 def test_update(self):
     """
     Execute the test of update qos 
     """
     self.client.disable()
     resp = self.client.update(**self.body)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Update qos failed: %s" % self.body)
コード例 #8
0
 def test_set(self):
     """
     Execute the test of set cluster conf
     """
     resp = self.client.set(self.cluster_id, self.body)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Set cluster conf failed: %s" %
                                   self.body)
コード例 #9
0
 def _create_cluster(self):
     create_cluster = {'name': self.params.get('cluster_name',
                                               'cloudtest_cluster_2'),
                       'addr': self.params.get('cluster_addr', 'vm')}
     resp = self.clusters_client.create(**create_cluster)
     if not resp and utils.verify_response(create_cluster, resp):
         raise exceptions.TestSetupFail(
             "Create cluster failed: %s" % create_cluster)
     return resp.body.get('id')
コード例 #10
0
ファイル: test_group.py プロジェクト: xcnix/avocado-cloudtest
 def _migrate_rbd(self, src_pool_id, des_pool_id, rbd_id, rbd_name):
     LOG.info("Try to migrate rbd %s" % rbd_name)
     move_rbd = {'target_pool': des_pool_id}
     resp = self.rbd_client.migrate(src_pool_id, rbd_id, **move_rbd)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Migrate rbd failed: %s" % self.body)
     status = self._wait_for_rbd_in_status(des_pool_id, rbd_name, 'ready')
     if not status:
         raise exceptions.TestFail('Failed to migrate rbd %s!' % rbd_name)
     LOG.info('Migrate rbd %s successfully !' % rbd_name)
コード例 #11
0
ファイル: test_rbd.py プロジェクト: xcnix/avocado-cloudtest
 def test_copy(self):
     """
     Test copy rbd
     """
     rbd_id = self.env.get('rbd_tmp_id')
     copy_rbd = {'target_pool': self.pool_id}
     resp = self.client.copy_rbd(self.pool_id, rbd_id, **copy_rbd)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Copy rbd failed: %s" % self.body)
コード例 #12
0
    def _create_iscsi_target(self):
        self.iscsi_target_name = "cloudtest" + \
                                 utils.utils_misc.generate_random_string(6)
        create_body = {'initiator_ips': self.initiator_ip,
                       'target_name': self.iscsi_target_name,
                       'multipath': self.params.get('multipath', 3)}

        resp = self.iscsi_client.create(**create_body)
        if not resp and utils.verify_response(create_body, resp):
            raise exceptions.TestFail("Create target failed: %s "
                                      % create_body)
        return resp.body['target_id']
コード例 #13
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
 def _modify_account_group(self, account_id, account_name, account_pass,
                           account_name_out, account_pass_out):
     """
     Modify account group
     """
     resp = self.iscsi_client.modify_account_group(account_id, account_name,
                                                   account_pass,
                                                   account_name_out,
                                                   account_pass_out)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Modify account group failed: %s" %
                                   self.body)
コード例 #14
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
    def test_create_account_group(self):
        """
        Execute the test of creating account group
        """
        account_name = utils.utils_misc.generate_random_string(6)
        account_pass = utils.utils_misc.generate_random_string(12)
        gateway_id = self.gateway_id

        resp = self.client.create_account_group(account_name, account_pass,
                                                "single", str(gateway_id))
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create account group failed: %s")
        self.env['iscsi_accountgroup'] = resp.body
コード例 #15
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
    def test_modify_account_group(self):
        """
        Modify account group
        """
        account_id = self.env.get('iscsi_accountgroup')['group_id']
        account_name = utils.utils_misc.generate_random_string(6)
        account_pass = utils.utils_misc.generate_random_string(6)

        resp = self.client.modify_account_group(account_id, account_name,
                                                account_pass)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Modify account group failed: %s" %
                                      self.body)
コード例 #16
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
 def test_modify_iscsi(self):
     """
     Modify iscsi targets's initiator ip
     """
     target_id = self.env.get('iscsi_target')['target_id']
     modify_iscsi = {
         'initiator_ips': "192.168.1.34",
         'old_initiator_ip': "192.168.1.30"
     }
     resp = self.client.modify_iscsi(target_id, **modify_iscsi)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail(
             "Modify iscsi target export host failed: %s" % self.body)
コード例 #17
0
ファイル: test_rbd.py プロジェクト: xcnix/avocado-cloudtest
 def test_migrate(self):
     """
     Test that migration of specified rdb
     """
     rbd_id = self.env.get('rbd_tmp_id')
     vgroup_id = self.env.get('vgroup_id')
     target_pool = test_utils.create_pool(self.params, vgroup_id=vgroup_id)
     time.sleep(60)
     move_rbd = {'target_pool': str(target_pool)}
     resp = self.client.migrate(self.pool_id, rbd_id, **move_rbd)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Migarate rbd failed: %s" % self.body)
     self.env['pool_target_id'] = target_pool
コード例 #18
0
 def test_create(self):
     """
     Execute the test of creating a cluster
     """
     try:
         resp = self.client.create(**self.body)
     except:
         if len(self.body['name']) > 32:
             LOG.warn('Known bug, cluster name should not exceed 32 chars')
             return
         else:
             raise
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Create cluster failed: %s" % self.body)
     cluster_id = resp.body.get('id')
     if self.params.get('resource_need_delete', 'no') in 'yes':
         self.resource_to_delete.append(cluster_id)
コード例 #19
0
ファイル: test_rbd.py プロジェクト: xcnix/avocado-cloudtest
 def test_create(self):
     """
     Execute the test of creating a rbd
     """
     rbd_name = self.params.get(
         'rbd_name', 'cloudtest_' + utils_misc.generate_random_string(6))
     create_rbd = {
         'name': rbd_name,
         'object_size': self.params.get('object_size', 0),
         'capacity': self.params.get('capacity', 200),
         'num': self.params.get('num', 1),
         'shared': self.params.get('shared', 0)
     }
     resp = self.client.create(self.pool_id, **create_rbd)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Create rbd failed: %s" % self.body)
     self.env['rbd_tmp_name'] = rbd_name
     test_utils.wait_for_rbd_create(self.client, self.pool_id, rbd_name)
コード例 #20
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
    def _create_account_group(self, account_type):
        """
        Execute the test of creating account group
        """
        account_name = data_factory.generate_random_string(6)
        account_pass = data_factory.generate_random_string(12)
        account_out_name = data_factory.generate_random_string(6)
        account_out_pass = data_factory.generate_random_string(12)

        resp = self.iscsi_client.create_account_group(account_name,
                                                      account_pass,
                                                      account_type,
                                                      account_out_name,
                                                      account_out_pass)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create account group failed: %s")

        return resp['group_id']
コード例 #21
0
ファイル: test_rbd.py プロジェクト: xcnix/avocado-cloudtest
 def test_update(self):
     """
     Execute the test of updating a rbd
     """
     rbd_id = self.env.get('rbd_tmp_id')
     # rbd_id = 11
     rbd_name = 'cloudtest_' + utils_misc.generate_random_string(6)
     update_rbd = {
         'name': rbd_name,
         'object_size': self.params.get('rest_arg_object_size', 1),
         'capacity': self.params.get('rest_arg_capacity', 200)
     }
     resp = self.client.update(self.pool_id, rbd_id, **update_rbd)
     LOG.info('Rest Response: %s' % resp)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestFail("Update rbd failed: %s" % self.body)
     else:
         self.env['rbd_tmp_name'] = rbd_name
コード例 #22
0
    def setup(self):
        LOG.info("Try to create cluster cloudtest_cluster")
        create_cluster = {
            'name': self.params.get('cluster_name', 'cloudtest_cluster'),
            'addr': self.params.get('cluster_addr', 'vm')
        }
        resp = self.clusters_client.create(**create_cluster)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestSetupFail("Create cluster failed: %s" %
                                           self.body)
        self.cluster_id = resp.body.get('id')

        self.params['cluster_id'] = self.cluster_id
        self.groups_client = GroupsClient(self.params)
        self.servers_client = ServersClient(self.params)
        for k, v in self.params.items():
            if 'rest_arg_' in k:
                new_key = k.split('rest_arg_')[1]
                self.body[new_key] = v
コード例 #23
0
ファイル: test_pools.py プロジェクト: xcnix/avocado-cloudtest
    def test_unset_ec_pool_cache(self):
        """
        Unset cache for EC pool
        """
        pool_id = self.env.get('pool_tmp_id')

        if self.params.get('NO_EC', "true") == "true":
            raise exceptions.TestSkipError("There is not EC pool")
        else:
            unset_cache = {
                'cache_pool_id': self.env['cache_pool_id'],
                'cache_pool_name': self.env['cache_pool_name'],
                'option': 'unset_cache',
            }

        resp = self.client.unset_cache(pool_id, **unset_cache)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Unset up EC pool cache failed: %s" %
                                      self.body)
コード例 #24
0
ファイル: test_group.py プロジェクト: xcnix/avocado-cloudtest
 def setup(self):
     """
     Set up before executing test
     """
     LOG.info("Try to create cluster cloudtest_cluster")
     create_cluster = {
         'name': self.params.get('cluster_name', 'cloudtest_cluster'),
         'addr': self.params.get('cluster_addr', 'vm')
     }
     resp = self.clusters_client.create(**create_cluster)
     if not resp and utils.verify_response(self.body, resp):
         raise exceptions.TestSetupFail("Create cluster failed: %s" %
                                        self.body)
     self.cluster_id = resp.body.get('id')
     LOG.info("Created cluster successfully!")
     self.params['cluster_id'] = self.cluster_id
     self.servers_client = ServersClient(self.params)
     self.group_client = GroupsClient(self.params)
     self.pool_client = PoolsClient(self.params)
     self.rbd_client = RbdClient(self.params)
     self.osd_client = OsdClient(self.params)
コード例 #25
0
ファイル: test_iscsi.py プロジェクト: xcnix/avocado-cloudtest
    def test_create_target(self):
        """
        Execute the test of creating a iscsi target
        """
        iscsi_target_name = utils.utils_misc.generate_random_string(6)
        delay_time = time.strftime("%Y-%m", time.localtime(time.time()))

        iscsi_target_name = "iqn." + delay_time + ".com.lenovo:" + iscsi_target_name
        LOG.info("Target_name is %s" % iscsi_target_name)

        body = {
            'initiator_ips': '192.168.1.30',
            'target_name': iscsi_target_name,
            'multipath': self.params.get('multipath', '1'),
            'gateway_id': self.gateway_id
        }

        resp = self.client.create(**body)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create target failed: %s" % body)
        self.env['iscsi_target'] = resp.body
コード例 #26
0
ファイル: test_pools.py プロジェクト: xcnix/avocado-cloudtest
    def test_create(self):
        """
        Execute the test of creating a pool
        """
        test_utils.update_env_vgroup(self.params, self.env)
        pool_name = 'cloudtest_' + utils_misc.generate_random_string(6)
        if self.params.get('NO_EC', "true") == "true":
            LOG.info("Try to create NO_EC pool")
            create_pool = {
                'name': pool_name,
                'size': self.params.get('rest_arg_size', 3),
                'group_id': self.params.get('rest_arg_group_id', 1),
                'pg_num': self.params.get('rest_arg_pg_num', 448),
                'vgroup_id': self.env.get('vgroup_id', 1)
            }
        else:
            LOG.info("Try to create EC pool")
            create_pool = {
                'name': pool_name,
                'group_id': self.params.get('rest_arg_group_id', 1),
                'pg_num': self.params.get('rest_arg_pg_num', 448),
                'vgroup_id': self.env.get('vgroup_id', 1),
                'safe_type': self.params.get('safe_type', 0),
                'data_block_num': self.params.get('data_block_num', 3),
                'code_block_num': self.params.get('code_block_num', 0),
                'min_size': self.params.get('min_size', 1),
                'max_bytes': self.params.get("max_bytes", 486547056640),
                'write_mode': self.params.get("write_mode", "writeback"),
            }
        resp = self.client.create(**create_pool)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create pool failed: %s" % self.body)
        self.env['pool_tmp_id'] = resp.body['properties']['context']['pool_id']

        status = test_utils.wait_for_pool_created(self.client, pool_name)
        if not status:
            raise exceptions.TestFail('Failed to create pool %s' % pool_name)
        LOG.info('Create pool %s successfully !' % pool_name)
コード例 #27
0
    def test_create(self):
        """
        Execute the test of creating a gateway
        """
        gateway_name = 'cloudtest_gw_' + utils_misc.generate_random_string(6)
        create_gateway = {
            'name': gateway_name,
            'services': self.params.get('services', 'iSCSI'),
            'public_ip': self.params.get('public_ip', "192.168.1.21/24")
        }
        node_list = []
        server_id = test_utils.get_available_server(self.params)
        sub_node = {
            "id": server_id,
            "interface": self.params.get('create_node_interface', 'eth0')
        }
        node_list.append(sub_node)

        resp = self.client.create(node_list, **create_gateway)

        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Create gateway failed: %s" % self.body)
        self.env['gateway_name'] = resp.body['properties']['name']
コード例 #28
0
    def test_export_to_remote(self):
        """
        Test export log to remote
        """
        ceph_server_ip = self.params.get('ceph_management_url')
        controller_ip = test_utils.get_ip_from_string(ceph_server_ip)
        controller_username = self.params.get('ceph_server_ssh_username')
        controller_password = self.params.get('ceph_server_ssh_password')
        file_name = 'cjtest11.txt'

        export_log = {
            'host': controller_ip,
            'password': controller_password,
            'path': '/tmp',
            'port': 22,
            'username': controller_username,
            'filename': file_name,
        }

        resp = self.client.export_log(**export_log)
        LOG.info('Rest Response: %s' % resp)
        if not resp and utils.verify_response(self.body, resp):
            raise exceptions.TestFail("Export log to remote job failed: %s" %
                                      self.body)
コード例 #29
0
 def __enable_qos(self, body):
     LOG.info('******Enable qos******')
     resp = self.qos_client.enable(**body)
     if not utils.verify_response(body, resp.body.get('results')):
         raise exceptions.TestFail("Enable qos failed: %s" % body)
コード例 #30
0
 def _set_cluster_configuration(self, body):
     resp = self.client.set(self.cluster_id, body)
     if not resp and utils.verify_response(body, resp):
         raise exceptions.TestFail("Set cluster conf failed: %s" % body)
     LOG.info("Set cluster configuration successfully: %s" % body)