Adding ICN PlanetLab large experiment scenarios
[nepi.git] / src / nepi / testbeds / planetlab / node.py
index e863f4a..a924e12 100644 (file)
@@ -76,6 +76,7 @@ class Node(object):
     
     DEPENDS_PIDFILE = '/tmp/nepi-depends.pid'
     DEPENDS_LOGFILE = '/tmp/nepi-depends.log'
+
     RPM_FUSION_URL = 'http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm'
     RPM_FUSION_URL_F12 = 'http://download1.rpmfusion.org/free/fedora/releases/12/Everything/x86_64/os/rpmfusion-free-release-12-1.noarch.rpm'
     
@@ -296,7 +297,7 @@ class Node(object):
 
             def resolvable(node_id):
                 try:
-                    addr = socket.gethostbyname(hostnames[node_id])
+                    addr = server.gethostbyname(hostnames[node_id])
                     return addr is not None
                 except:
                     return False
@@ -436,7 +437,7 @@ class Node(object):
             orig_attrs['server_key'] = self.server_key
             self.server_key = info['ssh_rsa_key']
         
-        self.hostip = socket.gethostbyname(self.hostname)
+        self.hostip = server.gethostbyname(self.hostname)
         
         try:
             self.__orig_attrs
@@ -477,17 +478,17 @@ class Node(object):
                     RPM_FUSION_URL = self.RPM_FUSION_URL
                     
                 rpmFusion = (
-                  'rpm -q $(rpm -q -p %(RPM_FUSION_URL)s) || sudo -S rpm -i %(RPM_FUSION_URL)s'
+                  'rpm -q rpmfusion-free-release || sudo -S rpm -i %(RPM_FUSION_URL)s'
                 ) % {
                     'RPM_FUSION_URL' : RPM_FUSION_URL
                 }
             else:
                 rpmFusion = ''
-            
+           
             if rpmFusion:
                 (out,err),proc = server.popen_ssh_command(
                     rpmFusion,
-                    host = self.hostname,
+                    host = self.hostip,
                     port = None,
                     user = self.slicename,
                     agent = None,
@@ -499,7 +500,7 @@ class Node(object):
                 if proc.wait():
                     if self.check_bad_host(out,err):
                         self.blacklist()
-                    raise RuntimeError, "Failed to set up application: %s %s" % (out,err,)
+                    raise RuntimeError, "Failed to set up application on host %s: %s %s" % (self.hostname, out,err,)
             
             # Launch p2p yum dependency installer
             self._yum_dependencies.async_setup()
@@ -537,7 +538,7 @@ class Node(object):
         # they have to be created for deployment
         (out,err),proc = server.eintr_retry(server.popen_ssh_command)(
             "echo 'ALIVE'",
-            host = self.hostname,
+            host = self.hostip,
             port = None,
             user = self.slicename,
             agent = None,
@@ -562,8 +563,6 @@ class Node(object):
     def destroy(self):
         if self.enable_proc_cleanup:
             self.do_proc_cleanup()
-        if self.enable_home_cleanup:
-            self.do_home_cleanup()
     
     def blacklist(self):
         if self._node_id:
@@ -594,7 +593,7 @@ class Node(object):
                 cmd % {
                     'slicename' : self.slicename ,
                 },
-                host = self.hostname,
+                host = self.hostip,
                 port = None,
                 user = self.slicename,
                 agent = None,
@@ -614,7 +613,7 @@ class Node(object):
         self._logger.info("Cleaning up home on %s", self.hostname)
         
         cmds = [
-            "find . -maxdepth 1 ! -name '.bash*' ! -name '.' -execdir rm -rf {} + "
+            "find . -maxdepth 1  \( -name '.cache' -o -name '.local' -o -name '.config' -o -name 'nepi-*' \) -execdir rm -rf {} + "
         ]
 
         for cmd in cmds:
@@ -623,7 +622,7 @@ class Node(object):
                 cmd % {
                     'slicename' : self.slicename ,
                 },
-                host = self.hostname,
+                host = self.hostip,
                 port = None,
                 user = self.slicename,
                 agent = None,
@@ -672,7 +671,7 @@ class Node(object):
         
         vsys_vnet = ipaddr.IPv4Network(vsys_vnet)
         for route in routes:
-            dest, prefix, nexthop, metric = route
+            dest, prefix, nexthop, metric, device = route
             dest = ipaddr.IPv4Network("%s/%d" % (dest,prefix))
             nexthop = ipaddr.IPAddress(nexthop)
             if dest not in vsys_vnet or nexthop not in vsys_vnet:
@@ -681,7 +680,7 @@ class Node(object):
         return 'vroute'
     
     def format_route(self, route, dev, method, action):
-        dest, prefix, nexthop, metric = route
+        dest, prefix, nexthop, metric, device = route
         if method == 'vroute':
             return (
                 "%s %s%s gw %s %s" % (
@@ -804,7 +803,7 @@ class Node(object):
             "( sudo -S bash -c 'cat /vsys/%(method)s.out >&2' & ) ; sudo -S bash -c 'cat > /vsys/%(method)s.in' ; sleep 0.5" % dict(
                 home = server.shell_escape(self.home_path),
                 method = method),
-            host = self.hostname,
+            host = self.hostip,
             port = None,
             user = self.slicename,
             agent = None,