+ Implemented option to cleanup directories on PlanetLab slivers.
[nepi.git] / src / nepi / testbeds / planetlab / execute.py
index cd9e06c..467d9fe 100644 (file)
@@ -80,14 +80,14 @@ class TestbedController(testbed_impl.TestbedController):
             if not self.sfa:
                 self._sliceapi = self.plcapi
             else:
-                import sfiapi
-                self._sliceapi = sfiapi.sfiapi()
+                from nepi.util import sfiapi
+                self._sliceapi = sfiapi.sfiapi(self.slice_id)
         return self._sliceapi
 
     @property
     def slice_id(self):
         if not self._slice_id:
-            self._slice_id = self.plcapi.GetSliceId(self.slicename)
+            self._slice_id = self.sliceapi.GetSliceId(self.slicename)
         return self._slice_id
     
     @property
@@ -143,8 +143,10 @@ class TestbedController(testbed_impl.TestbedController):
             get_attribute_value("tapPortBase")
         self.p2pDeployment = self._attributes.\
             get_attribute_value("p2pDeployment")
-        self.dedicatedSlice = self._attributes.\
-            get_attribute_value("dedicatedSlice")
+        self.cleanProc = self._attributes.\
+            get_attribute_value("cleanProc")
+        self.cleanHome = self._attributes.\
+            get_attribute_value("cleanHome")
         self.sfa = self._attributes.\
             get_attribute_value("sfa")
         if self.sfa:
@@ -247,7 +249,7 @@ class TestbedController(testbed_impl.TestbedController):
                         to_provision.add(node_id)
                         reserved.add(hostname)
                     elif not candidates:
-                        raise RuntimeError, "Cannot assign resources for node %s, no candidates sith %s" % (guid,
+                        raise RuntimeError, "Cannot assign resources for node %s, no candidates with %s" % (guid,
                             node.make_filter_description())
             finally:
                 reserve_lock.release()
@@ -531,6 +533,12 @@ class TestbedController(testbed_impl.TestbedController):
         # TODO: take on account schedule time for the task
         element = self._elements[guid]
         if element:
+            if name == "up":
+                if value == True:
+                    element.if_up()
+                else:
+                    element.if_down()
+
             try:
                 setattr(element, name, value)
             except:
@@ -678,6 +686,7 @@ class TestbedController(testbed_impl.TestbedController):
                     Parallel(metadata.NS3DEPENDENCY),
                     Parallel(metadata.DEPENDENCY),
                     Parallel(metadata.APPLICATION),
+                    Parallel(metadata.CCNXDAEMON),
                 ])
 
             # Tunnels are not harmed by configuration after
@@ -730,7 +739,8 @@ class TestbedController(testbed_impl.TestbedController):
     def _make_node(self, parameters):
         args = dict({'sliceapi': self.sliceapi})
         node = self._make_generic(parameters, self._node.Node, **args)
-        node.enable_cleanup = self.dedicatedSlice
+        node.enable_proc_cleanup = self.cleanProc
+        node.enable_home_cleanup = self.cleanHome
         return node
 
     def _make_node_iface(self, parameters):
@@ -748,8 +758,10 @@ class TestbedController(testbed_impl.TestbedController):
     def _make_internet(self, parameters):
         return self._make_generic(parameters, self._interfaces.Internet)
 
-    def _make_application(self, parameters):
-        return self._make_generic(parameters, self._app.Application)
+    def _make_application(self, parameters, clazz = None):
+        if not clazz:
+            clazz = self._app.Application
+        return self._make_generic(parameters, clazz)
 
     def _make_dependency(self, parameters):
         return self._make_generic(parameters, self._app.Dependency)