tweaks for reservable nodes
[plcapi.git] / PLC / Methods / GetBootMedium.py
index e8e796d..64458e2 100644 (file)
@@ -20,15 +20,22 @@ from PLC.Accessors.Accessors_standard import *                      # import node accessors
 
 # could not define this in the class..
 # create a dict with the allowed actions for each type of node
+# reservable nodes being more recent, we do not support the floppy stuff anymore
 allowed_actions = {
-                'regular' : [ 'node-preview',
-                              'node-floppy',
-                              'node-iso',
-                              'node-usb',
-                              'generic-iso',
-                              'generic-usb',
-                               ],
-                }
+    'regular' : 
+    [ 'node-preview',
+      'node-floppy',
+      'node-iso',
+      'node-usb',
+      'generic-iso',
+      'generic-usb',
+      ],
+    'reservable': 
+    [ 'node-preview',
+      'node-iso',
+      'node-usb',
+      ],
+    }
 
 # compute a new key
 def compute_key():
@@ -70,6 +77,8 @@ class GetBootMedium(Method):
 
     Apart for the preview mode, this method generates a new node key for the
     specified node, effectively invalidating any old boot medium.
+    Note that 'reservable' nodes do not support 'node-floppy', 
+    'generic-iso' nor 'generic-usb'.
 
     In addition, two return mechanisms are supported.
     (*) The default behaviour is that the file's content is returned as a 
@@ -244,10 +253,10 @@ class GetBootMedium(Method):
         return file
 
     # see also GetNodeFlavour that does similar things
-    def get_nodefamily (self, node):
+    def get_nodefamily (self, node, auth):
         pldistro = self.api.config.PLC_FLAVOUR_NODE_PLDISTRO
         fcdistro = self.api.config.PLC_FLAVOUR_NODE_FCDISTRO
-        arch: arch = self.api.config.PLC_FLAVOUR_NODE_ARCH
+        arch = self.api.config.PLC_FLAVOUR_NODE_ARCH
         if not node:
             return (pldistro,fcdistro,arch)
         
@@ -328,7 +337,7 @@ class GetBootMedium(Method):
 
         # regular node, make build's arguments
         # and build the full command line to be called
-        if node_type == 'regular':
+        if node_type in [ 'regular', 'reservable' ]:
 
             build_sh_options=""
             if "cramfs" in build_sh_spec: 
@@ -407,7 +416,7 @@ class GetBootMedium(Method):
                     if tag['tagname'] == 'kvariant':
                         build_sh_spec['variant'] = tag['value']
                     if tag['tagname'] == 'kargs':
-                        build_sh_spec['kargs'].append(tag['value'].split())
+                        build_sh_spec['kargs'] += tag['value'].split()
                     if tag['tagname'] == 'no-hangcheck':
                         build_sh_spec['kargs'].append('hcheck_reboot0')
             # then options can override tags
@@ -441,7 +450,7 @@ class GetBootMedium(Method):
             nodename = "".join(map(hexa2,tempbytes))
 
         # get nodefamily
-        (pldistro,fcdistro,arch) = self.get_nodefamily(node)
+        (pldistro,fcdistro,arch) = self.get_nodefamily(node,auth)
         self.nodefamily="%s-%s-%s"%(pldistro,fcdistro,arch)
 
         # apply on globals