Add ability to specify controllers on command line

Change-Id: Ic88189dbf33d834a79597f108dd283ab478c9923
diff --git a/trellis/trellislib.py b/trellis/trellislib.py
index 8cf3c6c..23bc5c3 100644
--- a/trellis/trellislib.py
+++ b/trellis/trellislib.py
@@ -6,8 +6,10 @@
 
 import sys
 sys.path.append('..')
-from mininet.node import Host
+from mininet.node import Host, RemoteController
 from routinglib import RoutedHost, RoutedHost6, Router
+import argparse
+from mininet.net import Mininet
 
 class TaggedRoutedHost(RoutedHost):
     """Host that can be configured with multiple IP addresses."""
@@ -204,3 +206,52 @@
     low2 = mac_value & 0xffff
 
     return 'fe80::{:04x}:{:02x}ff:fe{:02x}:{:04x}'.format(high2, high1, low1, low2)
+
+# Parses Trellis parameters
+def parse_trellis_args():
+    parser = argparse.ArgumentParser(description="Trellis Arguments")
+    parser.add_argument("-c", "--controllers", help = "Comma Separated List of ONOS controllers",
+                        required = True, default = "")
+    return parser.parse_args()
+
+# Gets a mininet instance
+def get_mininet(arguments, topo, switch):
+    net = Mininet(topo=topo, controller=None, switch=switch)
+
+    if arguments.controllers:
+        controllers = arguments.controllers.split(',')
+        controller_number = 0
+        for controller in controllers:
+            net.addController(RemoteController('c' + str(controller_number), ip=controller))
+            controller_number += 1
+    return net
+
+# Generates the Zebra config files
+def set_up_zebra_config(controllers_string):
+    zebra_config = "log file /var/log/quagga/zebradbgp{}.log\n" \
+                   "hostname zebra-bgp{}\n" \
+                   "password quagga\n" \
+                    "!\n" \
+                    "! Default route via virtual management switch\n" \
+                    "!\n" \
+                    "ip route 0.0.0.0/0 172.16.0.1\n" \
+                    "!\n" \
+                    "fpm connection ip {} port 2620\n"
+    controllers = controllers_string.split(',')
+
+    controller1 = controllers[0]
+    if (len(controllers) > 1):
+        controller2 = controllers[1]
+    else:
+        controller2 = controller1
+
+
+    zebra1 = zebra_config.format("1", "1", controller1)
+    zebra2 = zebra_config.format("2", "2", controller2)
+
+    with open("zebradbgp1.conf", "w") as config_file_1:
+        config_file_1.write(zebra1)
+
+    with open("zebradbgp2.conf", "w") as config_file_2:
+        config_file_2.write(zebra2)
+