コード例 #1
0
 def test_choose_filter(self):
     # Test default filter ...
     hf = host_filter.choose_host_filter()
     self.assertEquals(hf._full_name().split(".")[-1], 'AllHostsFilter')
     # Test valid filter ...
     hf = host_filter.choose_host_filter('InstanceTypeFilter')
     self.assertEquals(hf._full_name().split(".")[-1], 'InstanceTypeFilter')
     # Test invalid filter ...
     try:
         host_filter.choose_host_filter('does not exist')
         self.fail("Should not find host filter.")
     except exception.SchedulerHostFilterNotFound:
         pass
コード例 #2
0
    def filter_hosts(self, topic, request_spec, hosts=None):
        """Filter the full host list (from the ZoneManager)"""
        filter_name = request_spec.get('filter', None)
        # Make sure that the requested filter is legitimate.
        selected_filter = host_filter.choose_host_filter(filter_name)

        # TODO(sandy): We're only using InstanceType-based specs
        # currently. Later we'll need to snoop for more detailed
        # host filter requests.
        instance_type = request_spec.get("instance_type", None)
        if instance_type is None:
            # No way to select; return the specified hosts
            return hosts or []
        name, query = selected_filter.instance_type_to_filter(instance_type)
        return selected_filter.filter_hosts(self.zone_manager, query)