Esempio n. 1
0
    def test_aggregate_metadata_get_by_host_empty_result(self, get_by_host):
        context = mock.MagicMock()
        get_by_host.return_value = objects.AggregateList(objects=[])

        metadata = utils.aggregate_metadata_get_by_host(
            context, 'fake-host', 'k3')

        get_by_host.assert_called_with(context.elevated(),
                                       'fake-host',
                                       key='k3')
        self.assertEqual({}, metadata)
Esempio n. 2
0
    def test_aggregate_values_from_db(self, get_by_host):
        context = mock.MagicMock()
        get_by_host.return_value = objects.AggregateList(
            objects=_AGGREGATE_FIXTURES)

        values = utils.aggregate_values_from_db(context,
                                                'fake-host',
                                                key_name='k1')

        get_by_host.assert_called_with(context.elevated(),
                                       'fake-host',
                                       key='k1')
        self.assertEqual(set(['1', '3']), values)
Esempio n. 3
0
    def test_aggregate_metadata_get_by_host_with_key(self, get_by_host):
        context = mock.MagicMock()
        get_by_host.return_value = objects.AggregateList(
            objects=_AGGREGATE_FIXTURES)

        metadata = utils.aggregate_metadata_get_by_host(
            context, 'fake-host', 'k1')

        get_by_host.assert_called_with(context.elevated(),
                                       'fake-host',
                                       key='k1')
        self.assertIn('k1', metadata)
        self.assertEqual(set(['1', '3']), metadata['k1'])
Esempio n. 4
0
    def get_non_matching_by_metadata_keys(cls, context, ignored_keys,
                                          key_prefix, value):
        """Return aggregates that are not matching with metadata.

        For example, we have aggregates with metadata as below:

            'agg1' with trait:HW_CPU_X86_MMX="required"
            'agg2' with trait:HW_CPU_X86_SGX="required"
            'agg3' with trait:HW_CPU_X86_MMX="required"
            'agg3' with trait:HW_CPU_X86_SGX="required"

        Assume below request:

            aggregate_obj.AggregateList.get_non_matching_by_metadata_keys(
                self.context,
                ['trait:HW_CPU_X86_MMX'],
                'trait:',
                value='required')

        It will return 'agg2' and 'agg3' as aggregates that are not matching
        with metadata.

        :param context: The security context
        :param ignored_keys: List of keys to match with the aggregate metadata
                     keys that starts with key_prefix.
        :param key_prefix: Only compares metadata keys that starts with the
                           key_prefix
        :param value: Value of metadata

        :returns: List of aggregates that doesn't match metadata keys that
                  starts with key_prefix with the supplied keys.
        """
        db_aggregates = _get_non_matching_by_metadata_keys_from_db(
            context, ignored_keys, key_prefix, value)
        return base.obj_make_list(context, objects.AggregateList(context),
                                  objects.Aggregate, db_aggregates)
Esempio n. 5
0
def _make_agg_list(agg_list):
    return objects.AggregateList(objects=[_make_agg_obj(a) for a in agg_list])