Validate Node configuration
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Fri, 22 Apr 2011 13:50:17 +0000 (15:50 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Fri, 22 Apr 2011 13:50:17 +0000 (15:50 +0200)
src/nepi/testbeds/planetlab/metadata_v01.py
src/nepi/testbeds/planetlab/node.py

index 0080436..42133e5 100644 (file)
@@ -136,6 +136,11 @@ def configure_tuniface(testbed_instance, guid):
 def configure_node(testbed_instance, guid):
     node = testbed_instance._elements[guid]
     
+    # Just inject configuration stuff
+    node.home_path = "nepi-node-%s" % (guid,)
+    node.ident_path = testbed_instance.sliceSSHKey
+    node.slicename = testbed_instance.slicename
+    
     # If we have only one candidate, simply use it
     candidates = node.find_candidates(
         filter_slice_id = testbed_instance.slice_id)
index dd5e416..f5d159a 100644 (file)
@@ -6,6 +6,7 @@ import plcapi
 import operator
 import rspawn
 import time
+import os
 
 class Node(object):
     BASEFILTERS = {
@@ -52,6 +53,7 @@ class Node(object):
         # Testbed-derived attributes
         self.slicename = None
         self.ident_path = None
+        self.home_path = None
         
         # Those are filled when an actual node is allocated
         self._node_id = None
@@ -158,7 +160,12 @@ class Node(object):
             self.max_num_external_ifaces = len(info['interface_ids'])
 
     def validate(self):
-        pass
+        if self.home_path is None:
+            raise AssertionError, "Misconfigured node: missing home path"
+        if self.ident_path is None or not os.access(self.ident_path, os.R_OK):
+            raise AssertionError, "Misconfigured node: missing slice SSH key"
+        if self.slicename is None:
+            raise AssertionError, "Misconfigured node: unspecified slice"
 
     def install_dependencies(self):
         if self.required_packages: