示例#1
0
    def _choose_host_weighers(self, weight_cls_names):
        """Choose acceptable weighers.

        Since the caller may specify which weighers to use, we need to
        have an authoritative list of what is permissible. This
        function checks the weigher names against a predefined set of
        acceptable weighers.
        """
        if weight_cls_names is None:
            weight_cls_names = CONF.scheduler_default_weighers
        if not isinstance(weight_cls_names, (list, tuple)):
            weight_cls_names = [weight_cls_names]

        good_weighers = []
        bad_weighers = []
        for weigher_name in weight_cls_names:
            found_class = False
            for cls in self.weight_classes:
                if cls.__name__ == weigher_name:
                    good_weighers.append(cls)
                    found_class = True
                    break
            if not found_class:
                bad_weighers.append(weigher_name)
        if bad_weighers:
            msg = ", ".join(bad_weighers)
            raise exception.SchedulerHostWeigherNotFound(weigher_name=msg)
        return good_weighers
示例#2
0
 def test_scheduler_host_weigher_not_found(self):
     # Verify response code for exception.SchedulerHostWeigherNotFound
     weigher_name = "fake_weigher_name"
     e = exception.SchedulerHostWeigherNotFound(weigher_name=weigher_name)
     self.assertEqual(404, e.code)
     self.assertIn(weigher_name, e.msg)