def save(self): vlan_pint = self.cleaned_data['vlan_pint'] vlan_vint = self.cleaned_data['vlan_vint'] with DBSync(): qs = models.Interfaces.objects.filter(int_interface=vlan_pint) if not qs.exists(): vlan_interface = models.Interfaces( int_interface=vlan_pint, int_name=vlan_pint, int_dhcp=False, int_ipv6auto=False, int_options='up', ) vlan_interface.save() else: vlan_interface = qs[0] if 'up' not in vlan_interface.int_options: vlan_interface.int_options += ' up' vlan_interface.save() if not models.Interfaces.objects.filter( int_interface=vlan_vint).exists(): models.Interfaces.objects.create( int_interface=vlan_vint, int_name=vlan_vint, int_dhcp=False, int_ipv6auto=False, ) return super(VLANForm, self).save()
def save(self, *args, **kwargs): # Search for a available slot for laggX interface interface_names = [ v[0] for v in models.Interfaces.objects.all() .values_list('int_interface') ] candidate_index = 0 while ("lagg%d" % (candidate_index)) in interface_names: candidate_index += 1 lagg_name = "lagg%d" % candidate_index lagg_protocol = self.cleaned_data['lagg_protocol'] lagg_member_list = self.cleaned_data['lagg_interfaces'] with DBSync(): model_objs = [] try: # Step 1: Create an entry in interface table that # represents the lagg interface lagg_interface = models.Interfaces( int_interface=lagg_name, int_name=lagg_name, int_dhcp=False, int_ipv6auto=False ) lagg_interface.save() model_objs.append(lagg_interface) # Step 2: Write associated lagg attributes lagg_interfacegroup = models.LAGGInterface( lagg_interface=lagg_interface, lagg_protocol=lagg_protocol ) lagg_interfacegroup.save() model_objs.append(lagg_interfacegroup) # Step 3: Write lagg's members in the right order order = 0 for interface in lagg_member_list: lagg_member_entry = models.LAGGInterfaceMembers( lagg_interfacegroup=lagg_interfacegroup, lagg_ordernum=order, lagg_physnic=interface, ) model_objs.append(models.Interfaces.objects.create( int_interface=interface, int_name=f'member of {lagg_name}', )) lagg_member_entry.save() model_objs.append(lagg_member_entry) order = order + 1 except Exception: for obj in reversed(model_objs): obj.delete() raise self.instance = lagg_interfacegroup return lagg_interfacegroup
def delete(self, *args, **kwargs): with DBSync(): super(InterfacesForm, self).delete(*args, **kwargs) with client as c: c.call('interfaces.sync') try: c.call('routes.sync') except Exception: # Syncing routes may fail if the interface changes network # and old default gateway is still in place # TODO: Issue an warning pass
def save(self, *args, **kwargs): # Search for a available slot for laggX interface interface_names = [ v[0] for v in models.Interfaces.objects.all() .values_list('int_interface') ] candidate_index = 0 while ("lagg%d" % (candidate_index)) in interface_names: candidate_index += 1 lagg_name = "lagg%d" % candidate_index lagg_protocol = self.cleaned_data['lagg_protocol'] lagg_member_list = self.cleaned_data['lagg_interfaces'] with DBSync(): with transaction.atomic(): # Step 1: Create an entry in interface table that # represents the lagg interface lagg_interface = models.Interfaces( int_interface=lagg_name, int_name=lagg_name, int_dhcp=False, int_ipv6auto=False ) lagg_interface.save() # Step 2: Write associated lagg attributes lagg_interfacegroup = models.LAGGInterface( lagg_interface=lagg_interface, lagg_protocol=lagg_protocol ) lagg_interfacegroup.save() # Step 3: Write lagg's members in the right order order = 0 for interface in lagg_member_list: lagg_member_entry = models.LAGGInterfaceMembers( lagg_interfacegroup=lagg_interfacegroup, lagg_ordernum=order, lagg_physnic=interface, lagg_deviceoptions='up' ) lagg_member_entry.save() order = order + 1 self.instance = lagg_interfacegroup return lagg_interfacegroup
def save(self): vlan_pint = self.cleaned_data['vlan_pint'] vlan_vint = self.cleaned_data['vlan_vint'] with DBSync(): if len(models.Interfaces.objects.filter(int_interface=vlan_pint)) == 0: vlan_interface = models.Interfaces( int_interface=vlan_pint, int_name=vlan_pint, int_dhcp=False, int_ipv6auto=False, int_options='up', ) vlan_interface.save() models.Interfaces.objects.create( int_interface=vlan_vint, int_name=vlan_vint, int_dhcp=False, int_ipv6auto=False, ) return super(VLANForm, self).save()
def save(self, *args, **kwargs): with DBSync(): return super(LAGGInterfaceMemberForm, self).save(*args, **kwargs)
def delete(self, *args, **kwargs): with DBSync(): super(LAGGInterfaceMemberForm, self).delete(*args, **kwargs) notifier().start("network")
def delete(self, *args, **kwargs): with DBSync(): super(VLANForm, self).delete(*args, **kwargs) notifier().start("network")
def save(self, *args, **kwargs): with DBSync(): return super(InterfacesForm, self).save(*args, **kwargs)
def save(self, *args, **kwargs): with DBSync(): return super(AliasForm, self).save(*args, **kwargs)