diff options
author | Jasper Capel <capel@stone-it.com> | 2008-09-30 09:21:07 +0200 |
---|---|---|
committer | Jasper Capel <capel@stone-it.com> | 2008-09-30 09:21:07 +0200 |
commit | 886d7c16a2a2b93a81ed865604fda6598592b3e8 (patch) | |
tree | fe91096118d68440abff72eeab739c20092e2d7b /func | |
parent | 2bbab70e9f83bd8f0cadec000c1aca258c791472 (diff) | |
download | func-886d7c16a2a2b93a81ed865604fda6598592b3e8.tar.gz func-886d7c16a2a2b93a81ed865604fda6598592b3e8.tar.xz func-886d7c16a2a2b93a81ed865604fda6598592b3e8.zip |
Added add_permanent and delete_permanent methods to vlan module.
Diffstat (limited to 'func')
-rw-r--r-- | func/minion/modules/vlan.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/func/minion/modules/vlan.py b/func/minion/modules/vlan.py index a88a1dc..9a2171f 100644 --- a/func/minion/modules/vlan.py +++ b/func/minion/modules/vlan.py @@ -32,6 +32,8 @@ class Vlan(func_module.FuncModule): ignorevlans = [ ] vconfig = "/sbin/vconfig" ip = "/sbin/ip" + ifup = "/sbin/ifup" + ifdown = "/sbin/ifdown" def list(self): # Returns a dictionary, elements look like this: @@ -70,6 +72,30 @@ class Vlan(func_module.FuncModule): return exitcode + def add_permanent(self, interface, vlanid, ipaddr=None, netmask=None, gateway=None): + # Permanently adds a VLAN by writing to an ifcfg-file + vlanid = int(vlanid) + device = "%s.%s" % (interface, vlanid) + if vlanid not in self.ignorevlans: + filename = "/etc/sysconfig/network-scripts/ifcfg-%s" % device + fp = open(filename, "w") + filelines = [ "DEVICE=%s\n" % device, "VLAN=yes\n", "ONBOOT=yes\n" ] + if ipaddr != None: + filelines.append("BOOTPROTO=static\n") + filelines.append("IPADDR=%s\n" % ipaddr) + else: + filelines.append("BOOTPROTO=none\n") + if netmask != None: + filelines.append("NETMASK=%s\n" % netmask) + if gateway != None: + filelines.append("GATEWAY=%s\n" % gateway) + fp.writelines(filelines) + fp.close() + exitcode = os.spawnv(os.P_WAIT, self.ifup, [ self.ifup, device ]) + else: + exitcode = -1 + return exitcode + def delete(self, interface, vlanid): # Deletes a vlan with vlanid from interface vintfname = interface + "." + str(vlanid) @@ -80,6 +106,19 @@ class Vlan(func_module.FuncModule): return exitcode + def delete_permanent(self, interface, vlanid): + if vlanid not in self.ignorevlans: + device = "%s.%s" % (interface, vlanid) + filename = "/etc/sysconfig/network-scripts/ifcfg-%s" % device + self.down(interface, vlanid) + self.delete(interface, vlanid) + if os.path.exists(filename): + os.remove(filename) + exitcode = 0 + else: + exitcode = -1 + return exitcode + def up(self, interface, vlanid): # Marks a vlan interface as up vintfname = interface + "." + str(vlanid) |