~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/scheduler/filters/affinity_filter.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-08-16 14:04:11 UTC
  • mto: This revision was merged to the branch mainline in revision 84.
  • Revision ID: package-import@ubuntu.com-20120816140411-0mr4n241wmk30t9l
Tags: upstream-2012.2~f3
ImportĀ upstreamĀ versionĀ 2012.2~f3

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
    def __init__(self):
26
26
        self.compute_api = compute.API()
27
27
 
28
 
    def _affinity_host(self, context, instance_id):
29
 
        return self.compute_api.get(context, instance_id)['host']
 
28
    def _all_hosts(self, context):
 
29
        all_hosts = {}
 
30
        for instance in self.compute_api.get_all(context):
 
31
            all_hosts[instance['uuid']] = instance['host']
 
32
        return all_hosts
30
33
 
31
34
 
32
35
class DifferentHostFilter(AffinityFilter):
41
44
        if isinstance(affinity_uuids, basestring):
42
45
            affinity_uuids = [affinity_uuids]
43
46
        if affinity_uuids:
 
47
            all_hosts = self._all_hosts(context)
44
48
            return not any([i for i in affinity_uuids
45
 
                              if self._affinity_host(context, i) == me])
 
49
                              if all_hosts.get(i) == me])
46
50
        # With no different_host key
47
51
        return True
48
52
 
61
65
        if isinstance(affinity_uuids, basestring):
62
66
            affinity_uuids = [affinity_uuids]
63
67
        if affinity_uuids:
 
68
            all_hosts = self._all_hosts(context)
64
69
            return any([i for i
65
70
                          in affinity_uuids
66
 
                          if self._affinity_host(context, i) == me])
 
71
                          if all_hosts.get(i) == me])
67
72
        # With no same_host key
68
73
        return True
69
74