From d0327fc044c61f856eb965018a0842657854f4be Mon Sep 17 00:00:00 2001 From: Rebeccah Date: Fri, 1 Nov 2019 20:31:31 -0400 Subject: [PATCH 1/3] added onto the when saved function for instance groups that sets policy variables to their default. --- awx/main/models/ha.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index 26b7124bf1..bf9cf1e7d4 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -270,6 +270,11 @@ class InstanceGroup(HasPolicyEditsMixin, BaseModel, RelatedJobsMixin): .filter(capacity__gt=0, enabled=True) .values_list('hostname', flat=True))) + def set_default_policy_fields(self): + self.policy_instance_list = [] + self.policy_instance_minimum = 0 + self.policy_instance_percentage = 0 + class TowerScheduleState(SingletonModel): schedule_last_run = models.DateTimeField(auto_now_add=True) @@ -289,6 +294,8 @@ def on_instance_group_saved(sender, instance, created=False, raw=False, **kwargs if created or instance.has_policy_changes(): if not instance.is_containerized: schedule_policy_task() + if created or instance.is_containerized: + instance.set_default_policy_fields() @receiver(post_save, sender=Instance) From 1f05372ac93d8d73bdc6b95f400ec27b873f9426 Mon Sep 17 00:00:00 2001 From: Rebeccah Date: Mon, 4 Nov 2019 15:49:13 -0500 Subject: [PATCH 2/3] change the logic to not break existing policy_instance testing --- awx/main/models/ha.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index bf9cf1e7d4..acc529a29a 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -294,8 +294,8 @@ def on_instance_group_saved(sender, instance, created=False, raw=False, **kwargs if created or instance.has_policy_changes(): if not instance.is_containerized: schedule_policy_task() - if created or instance.is_containerized: - instance.set_default_policy_fields() + elif created or instance.is_containerized: + instance.set_default_policy_fields() @receiver(post_save, sender=Instance) From 6f38edf9a3abda8de21b2013500589235554cd09 Mon Sep 17 00:00:00 2001 From: Rebeccah Date: Tue, 12 Nov 2019 10:58:45 -0500 Subject: [PATCH 3/3] add in testing to see that when an instance group is containerized that the policy field values are set to default --- .../functional/api/test_instance_group.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/awx/main/tests/functional/api/test_instance_group.py b/awx/main/tests/functional/api/test_instance_group.py index 7d0417124d..43c7d51960 100644 --- a/awx/main/tests/functional/api/test_instance_group.py +++ b/awx/main/tests/functional/api/test_instance_group.py @@ -274,3 +274,21 @@ def test_instance_group_update_fields(patch, instance, instance_group, admin, co assert ["Containerized instances may not be managed via the API"] == resp.data['policy_instance_minimum'] resp = patch(cg_url, {'policy_instance_list':[instance.hostname]}, admin) assert ["Containerized instances may not be managed via the API"] == resp.data['policy_instance_list'] + + +@pytest.mark.django_db +def test_containerized_group_default_fields(instance_group, kube_credential): + ig = InstanceGroup(name="test_policy_field_defaults") + ig.policy_instance_list = [1] + ig.policy_instance_minimum = 5 + ig.policy_instance_percentage = 5 + ig.save() + assert ig.policy_instance_list == [1] + assert ig.policy_instance_minimum == 5 + assert ig.policy_instance_percentage == 5 + ig.credential = kube_credential + ig.save() + assert ig.policy_instance_list == [] + assert ig.policy_instance_minimum == 0 + assert ig.policy_instance_percentage == 0 + \ No newline at end of file