mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 18:09:57 -03:30
fixed isolated instance query
* Was considering an isolated instance: any instance that has at least 1 group with no controller. This is technically correct since an iso node can not be a part of a non-iso group. * The query is now more robust and considers a node an iso node if ALL groups that a node belong to ALL have a controller. * Also added better debugging for the special tower instance group * Added a check for the existance of the special tower group so that logs are less "messy" during the install process.
This commit is contained in:
parent
652bdf7875
commit
c3100afd0e
@ -114,7 +114,7 @@ class InstanceManager(models.Manager):
|
||||
return "tower"
|
||||
|
||||
def all_non_isolated(self):
|
||||
return self.filter(rampart_groups__controller__isnull=True).distinct()
|
||||
return self.exclude(rampart_groups__controller__isnull=False)
|
||||
|
||||
|
||||
class InstanceGroupManager(models.Manager):
|
||||
|
||||
@ -163,10 +163,6 @@ class InstanceGroup(models.Model, RelatedJobsMixin):
|
||||
def _get_related_jobs(self):
|
||||
return UnifiedJob.objects.filter(instance_group=self)
|
||||
|
||||
def add_all_non_iso_instances(self):
|
||||
self.instances = Instance.objects.all_non_isolated()
|
||||
self.save()
|
||||
|
||||
|
||||
class Meta:
|
||||
app_label = 'main'
|
||||
|
||||
@ -144,8 +144,16 @@ def apply_cluster_membership_policies(self):
|
||||
Group = namedtuple('Group', ['obj', 'instances'])
|
||||
Node = namedtuple('Instance', ['obj', 'groups'])
|
||||
|
||||
# Add every instnace to the special 'tower' group
|
||||
InstanceGroup.objects.get(name='tower').add_all_non_iso_instances()
|
||||
# Add every instance to the special 'tower' group
|
||||
tower_q = InstanceGroup.objects.filter(name='tower')
|
||||
if tower_q.exists():
|
||||
tower_inst = tower_q[0]
|
||||
tower_inst.instances = Instance.objects.all_non_isolated()
|
||||
instances_hostnames = [i.hostname for i in tower_inst.instances.all()]
|
||||
logger.info(six.text_type("Setting 'tower' group instances to {}").format(instances_hostnames))
|
||||
tower_inst.save()
|
||||
else:
|
||||
logger.warn(six.text_type("Special 'tower' Instance Group not found."))
|
||||
|
||||
# Process policy instance list first, these will represent manually managed instances
|
||||
# that will not go through automatic policy determination
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user