again
[plcapi.git] / PLC / Methods / GetBootMedium.py
index 076ad9a..083e08f 100644 (file)
@@ -12,8 +12,7 @@ from PLC.Auth import Auth
 
 from PLC.Nodes import Node, Nodes
 from PLC.Interfaces import Interface, Interfaces
-from PLC.InterfaceSettings import InterfaceSetting, InterfaceSettings
-from PLC.NodeTags import NodeTags
+from PLC.InterfaceTags import InterfaceTag, InterfaceTags
 
 # could not define this in the class..
 boot_medium_actions = [ 'node-preview',
@@ -197,7 +196,7 @@ class GetBootMedium(Method):
         file += 'DOMAIN_NAME="%s"\n' % domain
 
         # define various interface settings attached to the primary interface
-        settings = InterfaceSettings (self.api, {'interface_id':interface['interface_id']})
+        settings = InterfaceTags (self.api, {'interface_id':interface['interface_id']})
 
         categories = set()
         for setting in settings:
@@ -205,7 +204,7 @@ class GetBootMedium(Method):
                 categories.add(setting['category'])
         
         for category in categories:
-            category_settings = InterfaceSettings(self.api,{'interface_id':interface['interface_id'],
+            category_settings = InterfaceTags(self.api,{'interface_id':interface['interface_id'],
                                                               'category':category})
             if category_settings:
                 file += '### Category : %s\n'%category
@@ -234,15 +233,11 @@ class GetBootMedium(Method):
             return (pldistro,arch)
 
         node_id=node['node_id']
-        # cannot use accessors in the API itself
-        # the 'arch' tag type is assumed to exist, see db-config
-        arch_tags = NodeTags (self.api, {'tagname':'arch','node_id':node_id},['tagvalue'])
-        if arch_tags:
-            arch=arch_tags[0]['tagvalue']
-        # ditto
-        pldistro_tags = NodeTags (self.api, {'tagname':'pldistro','node_id':node_id},['tagvalue'])
-        if pldistro_tags:
-            pldistro=pldistro_tags[0]['tagvalue']
+
+        tag=Nodes(self.api,[node_id],['arch'])[0]['arch']
+        if tag: arch=tag
+        tag=Nodes(self.api,[node_id],['pldistro'])[0]['pldistro']
+        if tag: pldistro=tag
 
         return (pldistro,arch)
 
@@ -283,7 +278,7 @@ class GetBootMedium(Method):
                 raise PLCInvalidArgument, "Options are not supported for node configs"
         else:
             # create a dict for build.sh 
-            build_sh_spec={'-k':[]}
+            build_sh_spec={'kargs':[]}
             for option in options:
                 if option == "cramfs":
                     build_sh_spec['cramfs']=True
@@ -297,7 +292,7 @@ class GetBootMedium(Method):
                 elif option.find("serial:") == 0:
                     build_sh_spec['serial']=option.replace("serial:","")
                 elif option == "no-hangcheck":
-                    build_sh_spec['-k'].append('hcheck_reboot=0')
+                    build_sh_spec['kargs'].append('hcheck_reboot0')
                 else:
                     raise PLCInvalidArgument, "unknown option %s"%option
 
@@ -439,8 +434,8 @@ class GetBootMedium(Method):
                 if "serial" in build_sh_spec: 
                     build_sh_options += " -s %s"%build_sh_spec['serial']
                 
-                for k_option in build_sh_spec['-k']:
-                    build_sh_options += " -k %s"%k_option
+                for karg in build_sh_spec['kargs']:
+                    build_sh_options += ' -k "%s"'%karg
 
                 log_file="%s.log"%node_image
                 # invoke build.sh