summaryrefslogtreecommitdiffstats
path: root/func
diff options
context:
space:
mode:
authorJasper Capel <capel@stone-it.com>2008-09-30 09:21:07 +0200
committerJasper Capel <capel@stone-it.com>2008-09-30 09:21:07 +0200
commit886d7c16a2a2b93a81ed865604fda6598592b3e8 (patch)
treefe91096118d68440abff72eeab739c20092e2d7b /func
parent2bbab70e9f83bd8f0cadec000c1aca258c791472 (diff)
downloadfunc-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.py39
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)