From 88f5430f05711d14fb2ac839bdbbb0749407b856 Mon Sep 17 00:00:00 2001 From: Marco Ceppi Date: Thu, 9 Jul 2020 14:49:23 -0400 Subject: [PATCH] Update startup scripts to update or create records rather than get/create --- docker/startup_scripts/001_tenants.py | 2 +- docker/startup_scripts/030_regions.py | 2 +- docker/startup_scripts/040_sites.py | 2 +- docker/startup_scripts/050_manufacturers-required.py | 2 +- docker/startup_scripts/060_device_types-required.py | 2 +- docker/startup_scripts/070_rack_roles-required.py | 2 +- docker/startup_scripts/080_racks.py | 2 +- docker/startup_scripts/090_device_roles-required.py | 2 +- docker/startup_scripts/110_devices.py | 2 +- docker/startup_scripts/120_interfaces.py | 9 +++++++-- 10 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docker/startup_scripts/001_tenants.py b/docker/startup_scripts/001_tenants.py index f1ef7c8c2..1142f0978 100644 --- a/docker/startup_scripts/001_tenants.py +++ b/docker/startup_scripts/001_tenants.py @@ -14,7 +14,7 @@ with file.open('r') as stream: if tenants is not None: for params in tenants: - tenant, created = Tenant.objects.get_or_create(**params) + tenant, created = Tenant.objects.update_or_create(name=params['name'], defaults=params) if created: print("🏠 Created tenant", tenant.name) diff --git a/docker/startup_scripts/030_regions.py b/docker/startup_scripts/030_regions.py index d9e7bdf8a..70845f33e 100644 --- a/docker/startup_scripts/030_regions.py +++ b/docker/startup_scripts/030_regions.py @@ -25,7 +25,7 @@ with file.open('r') as stream: params[assoc] = model.objects.get(**query) - region, created = Region.objects.get_or_create(**params) + region, created = Region.objects.update_or_create(name=params['name'], defaults=params) if created: print("🌐 Created region", region.name) diff --git a/docker/startup_scripts/040_sites.py b/docker/startup_scripts/040_sites.py index 27be05334..c721f5a38 100644 --- a/docker/startup_scripts/040_sites.py +++ b/docker/startup_scripts/040_sites.py @@ -29,7 +29,7 @@ with file.open('r') as stream: params[assoc] = model.objects.get(**query) - site, created = Site.objects.get_or_create(**params) + site, created = Site.objects.update_or_create(name=params['name'], defaults=params) if created: if custom_fields is not None: diff --git a/docker/startup_scripts/050_manufacturers-required.py b/docker/startup_scripts/050_manufacturers-required.py index 2f8d85014..b99bf2c7f 100644 --- a/docker/startup_scripts/050_manufacturers-required.py +++ b/docker/startup_scripts/050_manufacturers-required.py @@ -13,7 +13,7 @@ with file.open('r') as stream: if manufacturers is not None: for params in manufacturers: - manufacturer, created = Manufacturer.objects.get_or_create(**params) + manufacturer, created = Manufacturer.objects.update_or_create(name=params['name'], defaults=params) if created: print("🏭 Created Manufacturer", manufacturer.name) diff --git a/docker/startup_scripts/060_device_types-required.py b/docker/startup_scripts/060_device_types-required.py index b806cfcd5..b8c87efd1 100644 --- a/docker/startup_scripts/060_device_types-required.py +++ b/docker/startup_scripts/060_device_types-required.py @@ -39,7 +39,7 @@ with file.open('r') as stream: params[assoc] = model.objects.get(**query) - device_type, created = DeviceType.objects.get_or_create(**params) + device_type, created = DeviceType.objects.update_or_create(model=params['model'], manufacturer=params['manufacturer'], defaults=params) if created: if custom_fields is not None: diff --git a/docker/startup_scripts/070_rack_roles-required.py b/docker/startup_scripts/070_rack_roles-required.py index 94618b93a..0fe451552 100644 --- a/docker/startup_scripts/070_rack_roles-required.py +++ b/docker/startup_scripts/070_rack_roles-required.py @@ -22,7 +22,7 @@ with file.open('r') as stream: if color in color_tpl: params['color'] = color_tpl[0] - rack_role, created = RackRole.objects.get_or_create(**params) + rack_role, created = RackRole.objects.update_or_create(name=params['name'], defaults=params) if created: print("🎨 Created rack role", rack_role.name) diff --git a/docker/startup_scripts/080_racks.py b/docker/startup_scripts/080_racks.py index ed7713d8a..30cd29070 100644 --- a/docker/startup_scripts/080_racks.py +++ b/docker/startup_scripts/080_racks.py @@ -40,7 +40,7 @@ with file.open('r') as stream: params[assoc] = model.objects.get(**query) - rack, created = Rack.objects.get_or_create(**params) + rack, created = Rack.objects.update_or_create(name=params['name'], site=params['site'], defaults=params) if created: if custom_fields is not None: diff --git a/docker/startup_scripts/090_device_roles-required.py b/docker/startup_scripts/090_device_roles-required.py index 433f94a74..2cad879e6 100644 --- a/docker/startup_scripts/090_device_roles-required.py +++ b/docker/startup_scripts/090_device_roles-required.py @@ -23,7 +23,7 @@ with file.open('r') as stream: if color in color_tpl: params['color'] = color_tpl[0] - device_role, created = DeviceRole.objects.get_or_create(**params) + device_role, created = DeviceRole.objects.update_or_create(name=params['name'], defaults=params) if created: print("🎨 Created device role", device_role.name) diff --git a/docker/startup_scripts/110_devices.py b/docker/startup_scripts/110_devices.py index 6acabb146..ee9e99b49 100644 --- a/docker/startup_scripts/110_devices.py +++ b/docker/startup_scripts/110_devices.py @@ -55,7 +55,7 @@ with file.open('r') as stream: params[assoc] = model.objects.get(**query) - device, created = Device.objects.get_or_create(**params) + device, created = Device.objects.update_or_create(name=params['name'], defaults=params) if created: if custom_fields is not None: diff --git a/docker/startup_scripts/120_interfaces.py b/docker/startup_scripts/120_interfaces.py index 5054c1fa3..8fcdcbcb1 100644 --- a/docker/startup_scripts/120_interfaces.py +++ b/docker/startup_scripts/120_interfaces.py @@ -17,8 +17,13 @@ def template_customer_locker(devices, port_count): name = '{}-{}'.format(strand0, strand1) i += 2 + interface_data = { + 'name': name, + 'device': locker, + 'type': 'keystone', + } - interface, created = Interface.objects.get_or_create(name=name, device=locker, type='keystone') + interface, created = Interface.objects.update_or_create(name=name, device=locker, defaults=interface_data) if created: print("🔗 Created interface {} for {}".format(interface.name, locker.name)) @@ -29,7 +34,7 @@ def template_efr(devices, port_count): for switch in devices: i = 1 while i <= port_count: - interface, created = Interface.objects.get_or_create(name=f'xe-0/0/{i}', device=switch, type='10gbase-x-sfpp') + interface, created = Interface.objects.update_or_create(name=f'xe-0/0/{i}', device=switch, defaults={'device': switch, 'type': '10gbase-x-sfpp'}) i += 1 if created: print("🔗 Created interface {} for {}".format(interface.name, switch.name))