Skip to content

Commit

Permalink
Quick fix for AnsibleTower provider
Browse files Browse the repository at this point in the history
This change ensures that we don't send multiple "source_vm" parameters
into the AnsibleTower release method.
  • Loading branch information
JacobCallahan committed Jun 27, 2023
1 parent a3c6829 commit 8668f35
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 7 deletions.
5 changes: 2 additions & 3 deletions broker/providers/ansible_tower.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,9 +180,8 @@ def _host_release(self):
if prov_inv:
logger.debug(f"prov_inv: {prov_inv}")
broker_args["inventory"] = prov_inv
caller_host._prov_inst.release(
broker_args.get("source_vm", caller_host.name), broker_args
)
source_vm = broker_args.pop("source_vm", caller_host.name)
caller_host._prov_inst.release(source_vm, broker_args)

def _set_attributes(self, host_inst, broker_args=None, misc_attrs=None):
host_inst.__dict__.update(
Expand Down
6 changes: 6 additions & 0 deletions tests/data/ansible_tower/fake_workflows.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,11 @@
"type": "workflow_job_template",
"url": "/api/v2/workflow_job_templates/34/",
"name": "deploy-base-rhel"
},
{
"id": 35,
"type": "workflow_job_template",
"url": "/api/v2/workflow_job_templates/35/",
"name": "remove-vm"
}
]
16 changes: 12 additions & 4 deletions tests/providers/test_ansible_tower.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ class AwxkitApiStub(MockStub):
- v2.ping.get().version
- v2.jobs.get(id=child_id).results.pop()
- v2.workflow_job_templates.get(name=workflow).results.pop()
- v2.workflow_job_templates.get(name=workflow).results.pop()
- wfjt.launch(payload={"extra_vars": str(kwargs).replace("--", "")})
- job.wait_until_completed()
- merge_dicts(artifacts, at_object.artifacts)
Expand Down Expand Up @@ -94,10 +93,10 @@ def test_execute(tower_stub):


def test_host_creation(tower_stub):
vmb = Broker()
bx = Broker()
job = tower_stub.execute(workflow="deploy-base-rhel")
host = tower_stub.construct_host(job, vmb.host_classes)
assert isinstance(host, vmb.host_classes["host"])
host = tower_stub.construct_host(job, bx.host_classes)
assert isinstance(host, bx.host_classes["host"])
assert host.hostname == "fake.host.test.com"
assert host._broker_args["os_distribution_version"] == "7.8"

Expand All @@ -106,3 +105,12 @@ def test_workflow_lookup_failure(tower_stub):
with pytest.raises(Broker.ProviderError) as err:
tower_stub.execute(workflow="this-does-not-exist")
assert "Workflow not found by name: this-does-not-exist" in err.value.message


def test_host_release_dual_params(tower_stub):
bx = Broker()
job = tower_stub.execute(workflow="deploy-base-rhel")
host = tower_stub.construct_host(job, bx.host_classes)
host._broker_args["source_vm"] = "fake-physical-host"
assert host._broker_args["source_vm"] == host.name
host.release()

0 comments on commit 8668f35

Please sign in to comment.