from PLC.InterfaceTags import InterfaceTag, InterfaceTags
from PLC.NodeTags import NodeTag, NodeTags
+from PLC.Debug import log
+
from PLC.Accessors.Accessors_standard import * # import node accessors
# could not define this in the class..
def cleantrash (self):
for file in self.trash:
if self.DEBUG:
- print 'DEBUG -- preserving',file
+ print >> log, 'DEBUG -- preserving',file
else:
os.unlink(file)
raise PLCInvalidArgument, "File %s not under %s"%(filename,self.WORKDIR)
### output should not exist (concurrent runs ..)
+ # numerous reports of issues with this policy
+ # looks like people sometime suspend/cancel their download
+ # and this leads to the old file sitting in there forever
+ # so, if the file is older than 5 minutes, we just trash
+ grace=5
+ if os.path.exists(filename) and (time.time()-os.path.getmtime(filename)) >= (grace*60):
+ os.unlink(filename)
if os.path.exists(filename):
- raise PLCInvalidArgument, "Resulting file %s already exists"%filename
+ raise PLCInvalidArgument, "Resulting file %s already exists - please try again in %d minutes"%\
+ (filename,grace)
### we can now safely create the file,
### either we are admin or under a controlled location
log_file)
if self.DEBUG:
- print "The build command line is %s" % command
+ print >> log, "The build command line is %s" % command
return command
raise PLCInvalidArgument, "No such node %r"%node_id_or_hostname
node = nodes[0]
- if self.DEBUG: print "%s required on node %s. Node type is: %s" \
+ if self.DEBUG:
+ print >> log, "%s requested on node %s. Node type is: %s" \
% (action, node['node_id'], node['node_type'])
# check the required action against the node type
result = file(node_image).read()
self.trash.append(node_image)
self.cleantrash()
- return base64.b64encode(result)
+ print >> log, "GetBootMedium - done with build.sh"
+ encoded_result = base64.b64encode(result)
+ print >> log, "GetBootMedium - done with base64 encoding - lengths=%s - %s"\
+ %(len(result),len(encoded_result))
+ return encoded_result
except:
self.cleantrash()
raise