1
# Copyright (c) 2012 OpenStack, LLC.
4
# Licensed under the Apache License, Version 2.0 (the "License"); you may
5
# not use this file except in compliance with the License. You may obtain
6
# a copy of the License at
8
# http://www.apache.org/licenses/LICENSE-2.0
10
# Unless required by applicable law or agreed to in writing, software
11
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
# License for the specific language governing permissions and limitations
16
from nova.openstack.common import log as logging
17
from nova.scheduler import filters
19
LOG = logging.getLogger(__name__)
22
class RetryFilter(filters.BaseHostFilter):
23
"""Filter out hosts that have already been attempted for scheduling
27
def host_passes(self, host_state, filter_properties):
28
"""Skip hosts that have already been attempted"""
29
retry = filter_properties.get('retry', None)
31
# Re-scheduling is disabled
32
LOG.debug("Re-scheduling is disabled")
35
hosts = retry.get('hosts', [])
36
host = host_state.host
38
LOG.debug(_("Previously tried hosts: %(hosts)s. (host=%(host)s)") %
41
# Host passes if it's not in the list of previously attempted hosts:
42
return host not in hosts