Beispiel #1
0
    def list_share_types(self, list_all=True, microversion=None):
        """List share types.

        :param list_all: bool -- whether to list all share types or only public
        """
        cmd = 'type-list'
        if list_all:
            cmd += ' --all'
        share_types_raw = self.manila(cmd, microversion=microversion)
        share_types = output_parser.listing(share_types_raw)
        return share_types
    def list_share_types(self, list_all=True):
        """List share types.

        :param list_all: bool -- whether to list all share types or only public
        """
        cmd = 'type-list'
        if list_all:
            cmd += ' --all'
        share_types_raw = self.manila(cmd)
        share_types = output_parser.listing(share_types_raw)
        return share_types
def test_limits_feature(env):
    """Test case for Ceilometer mandatory limits feature. (QA-2039)
    Actions:
    1. Generate data in MongoDB with a help of 'mongo-generator.py';
    2. Run 'ceilometer meter-list' and check that number of items == 100;
    3. Run 'ceilometer sample-list' and check that number of items == 100;
    4. Run 'ceilometer resource-list' and check that number of items == 100;
    5. Run 'ceilometer event-list --no-traits' and check that number
        of items == 100;
    """
    script_name = 'mongo-generator.py'
    script_path = scripts_dir_path() + script_name

    set_env = 'source /root/openrc && '
    ceil_meter_list = set_env + 'ceilometer meter-list'
    ceil_sample_list = set_env + 'ceilometer sample-list'
    ceil_res_list = set_env + 'ceilometer resource-list'
    ceil_event_list = set_env + 'ceilometer event-list --no-traits'

    with env.get_nodes_by_role('controller')[0].ssh() as remote:
        remote.upload(script_path, '/root/{0}'.format(script_name))
        cmd = ('python /root/{0} --users 1 --projects 1 '
               '--resources_per_user_project 200 '
               '--samples_per_user_project 1000').format(script_name)
        remote.check_call(cmd)
        ceil_meter_list_out = remote.check_call(ceil_meter_list)['stdout']
        ceil_sample_list_out = remote.check_call(ceil_sample_list)['stdout']
        ceil_res_list_out = remote.check_call(ceil_res_list)['stdout']
        ceil_event_list_out = remote.check_call(ceil_event_list)['stdout']

    ceil_meter_list_out = parser.listing(ceil_meter_list_out)
    ceil_sample_list_out = parser.listing(ceil_sample_list_out)
    ceil_res_list_out = parser.listing(ceil_res_list_out)
    ceil_event_list_out = parser.listing(ceil_event_list_out)

    assert all(i == 100
               for i in (
                   len(ceil_meter_list_out),
                   len(ceil_sample_list_out),
                   len(ceil_res_list_out),
                   len(ceil_event_list_out)))
    def test_shutdown_active_controller_during_upload(
            self, glance, image_file, suffix, timeout=60):
        """Check that image is created successfully if during creating image
        to perform shutdown of active controller

        Steps:
            1. Create image using URL Link
            2. Shutdown active controller during creation of image
            3. Check that image is present in list and image status is `active`
            4. Delete created image
            5. Check that image deleted
        """

        # Find a primary controller
        primary_controller = self.env.primary_controller
        mac = primary_controller.data['mac']
        self.primary_node = DevopsClient.get_node_by_mac(
            env_name=self.env_name, mac=mac)

        name = 'Test_{}'.format(suffix[:6])
        image_url = settings.GLANCE_IMAGE_URL
        cmd = ('image-create --name {name} --container-format bare '
               '--disk-format qcow2 --location {image_url}'.format(
                    name=name, image_url=image_url))
        image = parser.details(glance(cmd))
        logger.info('Image starts to upload')

        # Shutdown primary controller
        self.env.warm_shutdown_nodes([self.primary_node])

        image_list = parser.listing(glance('image-list'))
        assert image['id'] in [x['ID'] for x in image_list]

        image_data = parser.details(glance('image-show {id}'.format(**image)))
        assert image_data['status'] == 'active'
        logger.info('Image is active')

        glance('image-delete {id}'.format(**image))

        images = parser.listing(glance('image-list'))
        assert image['id'] not in [x['ID'] for x in images]
Beispiel #5
0
    def list_access(self, share_id, columns=None, microversion=None):
        """Returns list of access rules for a share.

        :param share_id: str -- Name or ID of a share.
        :param columns: comma separated string of columns.
            Example, "--columns access_type,access_to"
        """
        cmd = 'access-list %s ' % share_id
        if columns is not None:
            cmd += ' --columns ' + columns
        access_list_raw = self.manila(cmd, microversion=microversion)
        return output_parser.listing(access_list_raw)
    def list_access(self, share_id, columns=None, microversion=None):
        """Returns list of access rules for a share.

        :param share_id: str -- Name or ID of a share.
        :param columns: comma separated string of columns.
            Example, "--columns access_type,access_to"
        """
        cmd = 'access-list %s ' % share_id
        if columns is not None:
            cmd += ' --columns ' + columns
        access_list_raw = self.manila(cmd, microversion=microversion)
        return output_parser.listing(access_list_raw)
    def test_shutdown_primary_controller(
            self, glance, image_file, suffix, timeout=60):
        """Check creating image after shutdown primary controller

        Steps:
            1. Shutdown primary controller
            2. Create image from `image_file`
            3. Check that image is present in list and image status is `active`
            4. Delete created image
            5. Check that image deleted
        """
        # Find a primary controller
        primary_controller = self.env.primary_controller
        mac = primary_controller.data['mac']
        primary_node = DevopsClient.get_node_by_mac(
            env_name=self.env_name, mac=mac)

        # Shutdown primary controller
        self.env.warm_shutdown_nodes([primary_node])

        name = 'Test_{}'.format(suffix[:6])
        cmd = ('image-create --name {name} --container-format bare '
               '--disk-format qcow2 --file {file}'.format(
                    name=name, file=image_file))
        image = parser.details(glance(cmd))
        logger.info('Image starts to upload')

        image_list = parser.listing(glance('image-list'))
        assert image['id'] in [x['ID'] for x in image_list]

        image_data = parser.details(glance('image-show {id}'.format(**image)))
        assert image_data['status'] == 'active'
        logger.info('Image is active')

        glance('image-delete {id}'.format(**image))

        images = parser.listing(glance('image-list'))
        assert image['id'] not in [x['ID'] for x in images]
    def list_share_types(self, list_all=True, columns=None, microversion=None):
        """List share types.

        :param list_all: bool -- whether to list all share types or only public
        :param columns: comma separated string of columns.
            Example, "--columns id,name"
        """
        cmd = 'type-list'
        if list_all:
            cmd += ' --all'
        if columns is not None:
            cmd += ' --columns ' + columns
        share_types_raw = self.manila(cmd, microversion=microversion)
        share_types = output_parser.listing(share_types_raw)
        return share_types
Beispiel #9
0
    def list_share_types(self, list_all=True, columns=None, microversion=None):
        """List share types.

        :param list_all: bool -- whether to list all share types or only public
        :param columns: comma separated string of columns.
            Example, "--columns id,name"
        """
        cmd = 'type-list'
        if list_all:
            cmd += ' --all'
        if columns is not None:
            cmd += ' --columns ' + columns
        share_types_raw = self.manila(cmd, microversion=microversion)
        share_types = output_parser.listing(share_types_raw)
        return share_types
    def create_share_type(self, name=None, driver_handles_share_servers=True,
                          snapshot_support=True, is_public=True):
        """Creates share type.

        :param name: text -- name of share type to use, if not set then
            autogenerated will be used
        :param driver_handles_share_servers: bool/str -- boolean or its
            string alias. Default is True.
        :param snapshot_support: bool/str -- boolean or its
            string alias. Default is True.
        :param is_public: bool/str -- boolean or its string alias. Default is
            True.
        """
        if name is None:
            name = data_utils.rand_name('manilaclient_functional_test')
        dhss = driver_handles_share_servers
        if not isinstance(dhss, six.string_types):
            dhss = six.text_type(dhss)
        if not isinstance(snapshot_support, six.string_types):
            snapshot_support = six.text_type(snapshot_support)
        if not isinstance(is_public, six.string_types):
            is_public = six.text_type(is_public)
        cmd = ('type-create %(name)s %(dhss)s --is-public %(is_public)s '
               '--snapshot-support %(snapshot_support)s') % {
                   'name': name, 'dhss': dhss, 'is_public': is_public,
                   'snapshot_support': snapshot_support}
        share_type_raw = self.manila(cmd)

        # NOTE(vponomaryov): share type creation response is "list"-like with
        # only one element:
        # [{
        #   'ID': '%id%',
        #   'Name': '%name%',
        #   'Visibility': 'public',
        #   'is_default': '-',
        #   'required_extra_specs': 'driver_handles_share_servers : False',
        # }]
        share_type = output_parser.listing(share_type_raw)[0]
        return share_type
Beispiel #11
0
 def list_share_type_access(self, share_type_id, microversion=None):
     projects_raw = self.manila(
         'type-access-list %s' % share_type_id, microversion=microversion)
     projects = output_parser.listing(projects_raw)
     project_ids = [pr['Project_ID'] for pr in projects]
     return project_ids
 def test_listing(self):
     expected = [{'ID': '11'}, {'ID': '21'}, {'ID': '31'}]
     actual = output_parser.listing(self.LISTING_OUTPUT)
     self.assertIsInstance(actual, list)
     self.assertEqual(expected, actual)
Beispiel #13
0
 def list_access(self, share_id, microversion=None):
     access_list_raw = self.manila('access-list %s' % share_id,
                                   microversion=microversion)
     return output_parser.listing(access_list_raw)
Beispiel #14
0
 def list_share_type_access(self, share_type_id, microversion=None):
     projects_raw = self.manila('type-access-list %s' % share_type_id,
                                microversion=microversion)
     projects = output_parser.listing(projects_raw)
     project_ids = [pr['Project_ID'] for pr in projects]
     return project_ids
 def test_listing(self):
     expected = [{'ID': '11'}, {'ID': '21'}, {'ID': '31'}]
     actual = output_parser.listing(self.LISTING_OUTPUT)
     self.assertIsInstance(actual, list)
     self.assertEqual(expected, actual)
 def list_access(self, share_id):
     access_list_raw = self.manila('access-list %s' % share_id)
     return output_parser.listing(access_list_raw)
 def list_access(self, share_id, microversion=None):
     access_list_raw = self.manila(
         'access-list %s' % share_id, microversion=microversion)
     return output_parser.listing(access_list_raw)