again
[plcapi.git] / PLC / Methods / GetBootMedium.py
index 0db990f..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',
@@ -177,7 +176,7 @@ class GetBootMedium(Method):
             file += 'NODE_ID="%d"\n' % node['node_id']
             file += 'NODE_KEY="%s"\n' % node['key']
             # not used anywhere, just a note for operations people
-            file += 'KEY_RENEWAL_DATE="%s"\n' % time.strftime('%Y-%m-%d at %H:%M:%S +0000',time.gmtime())
+            file += 'KEY_RENEWAL_DATE="%s"\n' % time.strftime('%Y/%m/%d at %H:%M +0000',time.gmtime())
 
         if primary['mac']:
             file += 'NET_DEVICE="%s"\n' % primary['mac'].lower()
@@ -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('hangcheck_reboot=0')
+                    build_sh_spec['kargs'].append('hcheck_reboot0')
                 else:
                     raise PLCInvalidArgument, "unknown option %s"%option
 
@@ -360,6 +355,13 @@ class GetBootMedium(Method):
                         raise PLCPermissionDenied, "Could not create dir %s"%filedir
 
         
+        # log call
+        if node:
+            self.message='GetBootMedium on node %s - action=%s'%(nodename,action)
+            self.event_objects={'Node': [ node ['node_id'] ]}
+        else:
+            self.message='GetBootMedium - generic - action=%s'%action
+
         ### generic media
         if action == 'generic-iso' or action == 'generic-usb':
             if options:
@@ -432,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_options['-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
@@ -441,7 +443,7 @@ class GetBootMedium(Method):
                                                                          floppy_file,
                                                                          node_image,
                                                                          type,
-                                                                         serial_arg,
+                                                                         build_sh_options,
                                                                          log_file)
                 if self.DEBUG:
                     print 'build command:',build_command