FORGE: Added including script
[myslice.git] / forge / script / classDefinition.py
diff --git a/forge/script/classDefinition.py b/forge/script/classDefinition.py
new file mode 100644 (file)
index 0000000..77e8fc9
--- /dev/null
@@ -0,0 +1,141 @@
+#!/usr/bin/env python
+
+from serviceScript import *
+
+class String:
+       def __init__(self):
+               self.value = None
+       
+       def __str__(self):
+               if self.value == None:
+                       return "None"
+               else:
+                       return self.value
+
+class Device:
+       def __init__(self):
+               self.id_dev = None
+               self.ip = None
+       
+       def __str__(self):
+               if self.id_dev == None:
+                       return "It's a new Device"
+               else:
+                       return "Device "+self.id_dev+" --> "+self.ip
+
+class Host:
+       def __init__(self):
+               self.id_host = None
+               self.url = String()
+               self.ssh = None
+               self.devices = []
+               self.services = None
+               self.routes = []
+               self.hostType = String()
+       
+       def __str__(self):
+               if len(self.devices) == 0:
+                       return "It's a new Host"
+               else:
+                       return "Host "+str(self.id_host)+" on "+str(self.url)+" has "+str(len(self.devices))+" device(s)"
+
+class Slice:
+       def __str__(self):
+               if len(self.hosts) == 0:
+                       return "It's a new Slice"
+               else:
+                       return "Slice "+str(self.slice_name)+" contain "+str(len(self.hosts))+" host(s)"
+
+       def __init__(self):
+               self.slice_name = String()
+               self.hosts = []
+
+class HostLink:
+       def __init__(self):
+               self.slice_name = None
+               self.id_host = None
+               self.url = None
+               self.ssh = None
+               self.bridge_name = None
+
+       def __str__(self):
+               return str(self.slice_name)+"@"+str(self.url)+"->"+str(self.bridge_name)
+
+class Link:
+       def __init__(self):
+               self.host1 = None
+               self.host2 = None
+
+       def __str__(self):
+               return " "+str(self.host1)+" <===> "+str(self.host2)
+
+class Route:
+       def __init__(self, slice_name, host_url, ssh, host_id):
+               self.slice_name = slice_name
+               self.host_url = host_url
+               self.host_ssh = ssh
+               self.host_id = host_id
+               self.subnet = None
+               self.gateway = None
+               self.device = None
+       
+       def __str__(self):
+               if self.slice_name == None:
+                       return "Empty route"
+               else:
+                       return " On "+str(self.slice_name)+"@"+str(self.host_url)+" add "+self.subnet+" gw "+self.gateway+" dev "+self.device 
+       
+       def setRoute(self):
+               execute("sudo -S sh -c  \"echo \\\"add "+self.subnet+" gw "+self.gateway+" "+self.device+"\\\" > /vsys/vroute.in\"", self.host_ssh, display = True)
+
+class Service:
+       def __init__(self, slice_name, url, ssh):
+               self.slice_name = slice_name
+               self.host_url = url
+               self.host_ssh = ssh
+               self.services = []
+       
+       def __str__(self):
+               if len(self.services) == 0:
+                       retour = ''
+               else:
+                       retour = " On "+str(self.slice_name)+"@"+str(self.host_url)+" set:"
+                       for service, port in self.services:
+                               if port != '':
+                                       retour += "\n\t"+service+" on port "+port
+                               else:
+                                       retour += "\n\t"+service
+               return retour
+
+       def setService(self):
+               print "\tOn "+str(self.slice_name)+"@"+str(self.host_url)+" now setting :"
+               for i in range(len(self.services)):
+                       if self.services[i][0] == "x11":
+                               setXRedirect(self.host_ssh)
+                       elif self.services[i][0] == "httpd":
+                               if port != '':
+                                       self.services[i][1] = setHttpd(self.host_ssh, port, self.host_url)
+                               else:
+                                       print "Error you didn't specified the port used by httpd"
+                       elif self.services[i][0] == "wireshark":
+                               setWireshark(self.host_ssh)
+                       elif self.services[i][0] == "firefox":
+                               setFirefox(self.host_ssh)
+                       elif self.services[i][0] == "php" or self.services[i][0] == 'PHP':
+                               setPHP(self.host_ssh)
+                       else:
+                               print "The service "+service+" is not available"
+
+       def removeService(self):
+               for service, port in self.services:
+                       if service == "x11":
+                               removeXRedirect(self.host_ssh)
+                       elif service == "httpd":
+                               removeHttpd(self.host_ssh)
+                       elif service == "wireshark":
+                               removeWireshark(self.host_ssh)
+                       elif service == "firefox":
+                               removeFirefox(self.host_ssh)
+                       elif service == "php" or service == 'PHP':
+                               removePHP(self.host_ssh)
+