summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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)