def cload(alt=None): global crs2filename global crs_not_yet_evaluable rep = dict() if len(crs2filename) != 0 and not alt: Climaf_Cache_Error( "attempt to reset file index - would lead to inconsistency !") try: cacheIndexFile = file(os.path.expanduser(cacheIndexFileName), "r") if alt: rep = pickle.load(cacheIndexFile) else: crs2filename = pickle.load(cacheIndexFile) cacheIndexFile.close() except: pass # clogger.debug("no index file yet") # must_check_index_entries = False if must_check_index_entries: # We may have some crs inherited from past sessions and for which # some operator may have become non-standard, or some projects are yet # undeclared crs_not_yet_evaluable = dict() allow_error_on_ds() for crs in crs2filename.copy(): try: # print "evaluating crs="+crs eval(crs, sys.modules['__main__'].__dict__) except: print("Inconsistent cache object is skipped : %s" % crs) # clogger.debug("Inconsistent cache object is skipped : %s"%crs) p = guess_projects(crs) if p not in crs_not_yet_evaluable: crs_not_yet_evaluable[p] = dict() crs_not_yet_evaluable[p][crs] = crs2filename[crs] crs2filename.pop(crs) # Analyze projects of inconsistent cache objects projects = crs_not_yet_evaluable.keys() if projects: clogger.info( "The cache has %d objects for non-declared projects %s.\n" "For using it, consider including relevant project(s) " "declaration(s) in ~/.climaf and restarting CliMAF.\n" "You can also declare these projects right now and call 'csync(True)'\n" "Or you can erase corresponding data by 'crm(pattern=...project name...)'" % (len(crs_not_yet_evaluable), repr(list(projects)))) allow_error_on_ds(False) if alt: return rep
def cload() : global crs2filename global crs_not_yet_evaluable if len(crs2filename) != 0 : Climaf_Driver_Error( "attempt to reset file index - would lead to inconsistency !") try : cacheIndexFile=file(os.path.expanduser(cacheIndexFileName), "r") crs2filename=pickle.load(cacheIndexFile) cacheIndexFile.close() except: pass #clogger.debug("no index file yet") # must_check_index_entries=False if (must_check_index_entries) : # We may have some crs inherited from past sessions and for which # some operator may have become non-standard, or some projects are yet # undeclared crs_not_yet_evaluable=dict() allow_error_on_ds() for crs in crs2filename.copy() : try : #print "evaluating crs="+crs eval(crs, sys.modules['__main__'].__dict__) except: print ("Inconsistent cache object is skipped : %s"%crs) #clogger.debug("Inconsistent cache object is skipped : %s"%crs) p=guess_projects(crs) if p not in crs_not_yet_evaluable : crs_not_yet_evaluable[p]=dict() crs_not_yet_evaluable[p][crs]=crs2filename[crs] crs2filename.pop(crs) # Analyze projects of inconsistent cache objects projects= crs_not_yet_evaluable.keys() if projects : clogger.info( "The cache has %d objects for non-declared projects %s.\n" "For using it, consider including relevant project(s) " "declaration(s) in ~/.climaf and restarting CliMAF.\n" "You can also declare these projects right now and call 'csync(True)'\n" "Or you can erase corresponding data by 'crm(pattern=...project name...)'"% \ (len(crs_not_yet_evaluable),`list(projects)`)) allow_error_on_ds(False)
def cload() : global crs2filename if len(crs2filename) != 0 : Climaf_Driver_Error( "attempt to reset file index - would lead to inconsistency !") try : cacheIndexFile=file(os.path.expanduser(cacheIndexFileName), "r") crs2filename=pickle.load(cacheIndexFile) cacheIndexFile.close() except: pass #clogger.debug("no index file yet") # inconsistents=[] for crs in crs2filename.copy() : # We may have some crs inherited from past sessions and for which # some operator may have become non-standard try : eval(crs, sys.modules['__main__'].__dict__) except: #clogger.debug("Inconsistent cache object is skipped : %s"%crs) crs2filename.pop(crs) inconsistents.append(crs) # Analyze projects of inconsistent cache objects projects=set() for crs in inconsistents : ps=guess_projects(crs) for p in ps : if p not in cprojects : projects.add(p) if projects : clogger.error( "The cache has %d objects for non-declared projects %s.\n" "For using it, consider including relevant project(s) " "declaration(s) in ~/.climaf and restarting CliMAF.\n" "You can also declare these projects right now and call 'csync(True)'\n" "Or you can erase corresponding data by 'crm(pattern=...project name...)'"% \ (len(inconsistents),`list(projects)`))