FORGE: Added including script
[myslice.git] / forge / script / classDefinition.py
1 #!/usr/bin/env python
2
3 from serviceScript import *
4
5 class String:
6         def __init__(self):
7                 self.value = None
8         
9         def __str__(self):
10                 if self.value == None:
11                         return "None"
12                 else:
13                         return self.value
14
15 class Device:
16         def __init__(self):
17                 self.id_dev = None
18                 self.ip = None
19         
20         def __str__(self):
21                 if self.id_dev == None:
22                         return "It's a new Device"
23                 else:
24                         return "Device "+self.id_dev+" --> "+self.ip
25
26 class Host:
27         def __init__(self):
28                 self.id_host = None
29                 self.url = String()
30                 self.ssh = None
31                 self.devices = []
32                 self.services = None
33                 self.routes = []
34                 self.hostType = String()
35         
36         def __str__(self):
37                 if len(self.devices) == 0:
38                         return "It's a new Host"
39                 else:
40                         return "Host "+str(self.id_host)+" on "+str(self.url)+" has "+str(len(self.devices))+" device(s)"
41
42 class Slice:
43         def __str__(self):
44                 if len(self.hosts) == 0:
45                         return "It's a new Slice"
46                 else:
47                         return "Slice "+str(self.slice_name)+" contain "+str(len(self.hosts))+" host(s)"
48
49         def __init__(self):
50                 self.slice_name = String()
51                 self.hosts = []
52
53 class HostLink:
54         def __init__(self):
55                 self.slice_name = None
56                 self.id_host = None
57                 self.url = None
58                 self.ssh = None
59                 self.bridge_name = None
60
61         def __str__(self):
62                 return str(self.slice_name)+"@"+str(self.url)+"->"+str(self.bridge_name)
63
64 class Link:
65         def __init__(self):
66                 self.host1 = None
67                 self.host2 = None
68
69         def __str__(self):
70                 return " "+str(self.host1)+" <===> "+str(self.host2)
71
72 class Route:
73         def __init__(self, slice_name, host_url, ssh, host_id):
74                 self.slice_name = slice_name
75                 self.host_url = host_url
76                 self.host_ssh = ssh
77                 self.host_id = host_id
78                 self.subnet = None
79                 self.gateway = None
80                 self.device = None
81         
82         def __str__(self):
83                 if self.slice_name == None:
84                         return "Empty route"
85                 else:
86                         return " On "+str(self.slice_name)+"@"+str(self.host_url)+" add "+self.subnet+" gw "+self.gateway+" dev "+self.device 
87         
88         def setRoute(self):
89                 execute("sudo -S sh -c  \"echo \\\"add "+self.subnet+" gw "+self.gateway+" "+self.device+"\\\" > /vsys/vroute.in\"", self.host_ssh, display = True)
90
91 class Service:
92         def __init__(self, slice_name, url, ssh):
93                 self.slice_name = slice_name
94                 self.host_url = url
95                 self.host_ssh = ssh
96                 self.services = []
97         
98         def __str__(self):
99                 if len(self.services) == 0:
100                         retour = ''
101                 else:
102                         retour = " On "+str(self.slice_name)+"@"+str(self.host_url)+" set:"
103                         for service, port in self.services:
104                                 if port != '':
105                                         retour += "\n\t"+service+" on port "+port
106                                 else:
107                                         retour += "\n\t"+service
108                 return retour
109
110         def setService(self):
111                 print "\tOn "+str(self.slice_name)+"@"+str(self.host_url)+" now setting :"
112                 for i in range(len(self.services)):
113                         if self.services[i][0] == "x11":
114                                 setXRedirect(self.host_ssh)
115                         elif self.services[i][0] == "httpd":
116                                 if port != '':
117                                         self.services[i][1] = setHttpd(self.host_ssh, port, self.host_url)
118                                 else:
119                                         print "Error you didn't specified the port used by httpd"
120                         elif self.services[i][0] == "wireshark":
121                                 setWireshark(self.host_ssh)
122                         elif self.services[i][0] == "firefox":
123                                 setFirefox(self.host_ssh)
124                         elif self.services[i][0] == "php" or self.services[i][0] == 'PHP':
125                                 setPHP(self.host_ssh)
126                         else:
127                                 print "The service "+service+" is not available"
128
129         def removeService(self):
130                 for service, port in self.services:
131                         if service == "x11":
132                                 removeXRedirect(self.host_ssh)
133                         elif service == "httpd":
134                                 removeHttpd(self.host_ssh)
135                         elif service == "wireshark":
136                                 removeWireshark(self.host_ssh)
137                         elif service == "firefox":
138                                 removeFirefox(self.host_ssh)
139                         elif service == "php" or service == 'PHP':
140                                 removePHP(self.host_ssh)
141