Merge pull request #1989 from AlanCoding/delete_networks

Delete network canvas objects in delete inventory task
This commit is contained in:
Alan Rominger 2018-05-31 13:57:13 -04:00 committed by GitHub
commit dd944319f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 1 deletions

View File

@ -558,6 +558,9 @@ def delete_inventory(self, inventory_id, user_id):
i = Inventory.objects.get(id=inventory_id)
for host in i.hosts.iterator():
host.job_events_as_primary_host.update(host=None)
for topology_rel in i.topologyinventory_set.iterator():
topology_rel.topology.delete()
topology_rel.delete()
i.delete()
emit_channel_notification(
'inventories-status_changed',

View File

@ -1,6 +1,13 @@
import pytest
import inspect
from awx.network_ui.models import Device, Topology, Interface
from awx.network_ui.models import Device, Topology, Interface, Link
from awx.main.models import Organization, Inventory
from awx.main.tasks import delete_inventory
from django.db.models import Model
def test_device():
@ -13,3 +20,35 @@ def test_topology():
def test_interface():
assert str(Interface(name="foo")) == "foo"
@pytest.mark.django_db
def test_deletion():
org = Organization.objects.create(name='Default')
inv = Inventory.objects.create(name='inv', organization=org)
host1 = inv.hosts.create(name='foo')
host2 = inv.hosts.create(name='bar')
topology = Topology.objects.create(
name='inv', scale=1.0, panX=0.0, panY=0.0
)
inv.topologyinventory_set.create(topology=topology)
device1 = topology.device_set.create(name='foo', host=host1, x=0.0, y=0.0, cid=1)
interface1 = Interface.objects.create(device=device1, name='foo', cid=2)
device2 = topology.device_set.create(name='bar', host=host2, x=0.0, y=0.0, cid=3)
interface2 = Interface.objects.create(device=device2, name='bar', cid=4)
Link.objects.create(
from_device=device1, to_device=device2,
from_interface=interface1, to_interface=interface2,
cid=10
)
network_ui_models = []
from awx.network_ui import models as network_models
for name, model in vars(network_models).items():
if not inspect.isclass(model) or not issubclass(model, Model):
continue
network_ui_models.append(model)
delete_inventory.run(inv.pk, None)
for cls in network_ui_models:
assert cls.objects.count() == 0, cls