def test_volume_type_get_all(self):
        expected_specs = self.vol_type1_specs.copy()

        types = db.volume_type_get_all(context.get_admin_context())

        self.assertEquals(
            types[self.vol_type1['name']]['extra_specs'], expected_specs)

        self.assertEquals(
            types[self.vol_type2_noextra['name']]['extra_specs'], {})
    def test_volume_type_get_all(self):
        expected_specs = self.vol_type1_specs.copy()

        types = db.volume_type_get_all(context.get_admin_context())

        self.assertEquals(types[self.vol_type1['name']]['extra_specs'],
                          expected_specs)

        self.assertEquals(types[self.vol_type2_noextra['name']]['extra_specs'],
                          {})
Ejemplo n.º 3
0
def get_all_types(context, inactive=0, search_opts={}):
    """Get all non-deleted volume_types.

    Pass true as argument if you want deleted volume types returned also.

    """
    vol_types = db.volume_type_get_all(context, inactive)

    if search_opts:
        LOG.debug(_("Searching by: %s") % str(search_opts))

        def _check_extra_specs_match(vol_type, searchdict):
            for k, v in searchdict.iteritems():
                if k not in vol_type['extra_specs'].keys()\
                   or vol_type['extra_specs'][k] != v:
                    return False
            return True

        # search_option to filter_name mapping.
        filter_mapping = {'extra_specs': _check_extra_specs_match}

        result = {}
        for type_name, type_args in vol_types.iteritems():
            # go over all filters in the list
            for opt, values in search_opts.iteritems():
                try:
                    filter_func = filter_mapping[opt]
                except KeyError:
                    # no such filter - ignore it, go to next filter
                    continue
                else:
                    if filter_func(type_args, values):
                        result[type_name] = type_args
                        break
        vol_types = result
    return vol_types
Ejemplo n.º 4
0
def get_all_types(context, inactive=0, search_opts={}):
    """Get all non-deleted volume_types.

    Pass true as argument if you want deleted volume types returned also.

    """
    vol_types = db.volume_type_get_all(context, inactive)

    if search_opts:
        LOG.debug(_("Searching by: %s") % str(search_opts))

        def _check_extra_specs_match(vol_type, searchdict):
            for k, v in searchdict.iteritems():
                if k not in vol_type['extra_specs'].keys()\
                   or vol_type['extra_specs'][k] != v:
                    return False
            return True

        # search_option to filter_name mapping.
        filter_mapping = {'extra_specs': _check_extra_specs_match}

        result = {}
        for type_name, type_args in vol_types.iteritems():
            # go over all filters in the list
            for opt, values in search_opts.iteritems():
                try:
                    filter_func = filter_mapping[opt]
                except KeyError:
                    # no such filter - ignore it, go to next filter
                    continue
                else:
                    if filter_func(type_args, values):
                        result[type_name] = type_args
                        break
        vol_types = result
    return vol_types