def update_catalog(parser, options, target): # Check the server is not started, or started in read-only mode server = Server(target, read_only=True, cache_size=options.cache_size) # Ask message = 'Update the catalog (y/N)? ' if ask_confirmation(message, options.confirm) is False: return # Server reindex server.reindex_catalog(as_test=options.test, quiet=options.quiet, quick=options.quick)
def update_catalog(parser, options, target): # Check the server is not started, or started in read-only mode server = Server(target, read_only=True, cache_size=options.cache_size) # Ask message = 'Update the catalog (y/N)? ' if ask_confirmation(message, options.confirm) is False: return # Server reindex server.reindex_catalog( as_test=options.test, quiet=options.quiet, quick=options.quick)
def update(parser, options, target): confirm = options.confirm # Check the server is not started, or started in read-only mode pid = get_pid('%s/pid' % target) if pid is not None: print 'Cannot proceed, the server is running in read-write mode.' return # Check for database consistency if options.quick is False and check_database(target) is False: return 1 # Load the modules config = get_config(target) load_modules(config) ####################################################################### # STAGE 1: Find out the versions to upgrade ####################################################################### server = Server(target) database = server.database # Build a fake context context = get_fake_context(database) context.server = server context.init_context() # Local variables root = server.root print 'STAGE 1: Find out the versions to upgrade (may take a while).' version, paths = find_versions_to_update(root, options.force) while version: message = 'STAGE 1: Upgrade %d resources to version %s (y/N)? ' message = message % (len(paths), version) if ask_confirmation(message, confirm) is False: abort() update_versions(target, database, version, paths, root, options.force) # Reset the state database.cache.clear() database.cache[root.metadata.key] = root.metadata print 'STAGE 1: Finish upgrading to version %s' % version version, paths = find_versions_to_update(root, options.force) print 'STAGE 1: Done.' # It is Done print '*' print '* To finish the upgrade process update the catalog:' print '*' print '* $ icms-update-catalog.py %s' % target print '*'
def update(parser, options, target): confirm = options.confirm # Check the server is not started, or started in read-only mode pid = get_pid("%s/pid" % target) if pid is not None: print "Cannot proceed, the server is running in read-write mode." return # Check for database consistency if options.quick is False and check_database(target) is False: return 1 # Load the modules config = get_config(target) load_modules(config) ####################################################################### # STAGE 1: Find out the versions to upgrade ####################################################################### server = Server(target) database = server.database # Build a fake context context = get_fake_context(database) context.server = server context.init_context() # Local variables root = server.root print "STAGE 1: Find out the versions to upgrade (may take a while)." version, paths = find_versions_to_update(root, options.force) while version: message = "STAGE 1: Upgrade %d resources to version %s (y/N)? " message = message % (len(paths), version) if ask_confirmation(message, confirm) is False: abort() update_versions(target, database, version, paths, root, options.force) # Reset the state database.cache.clear() database.cache[root.metadata.key] = root.metadata print "STAGE 1: Finish upgrading to version %s" % version version, paths = find_versions_to_update(root, options.force) print "STAGE 1: Done." # It is Done print "*" print "* To finish the upgrade process update the catalog:" print "*" print "* $ icms-update-catalog.py %s" % target print "*"
def update_catalog(parser, options, target): # Check the server is not started, or started in read-only mode try: server = Server(target, read_only=True, cache_size=options.cache_size) except LookupError: print('Error: {} instance do not exists'.format(target)) exit(1) # Ask message = 'Update the catalog (y/N)? ' if ask_confirmation(message, options.confirm) is False: return # Server reindex server.reindex_catalog(as_test=options.test, quiet=options.quiet, quick=options.quick)
def update_catalog(parser, options, target): # Check the server is not started, or started in read-only mode server = Server(target, read_only=True, cache_size=options.cache_size) if server.is_running_in_rw_mode(): print 'Cannot proceed, the server is running in read-write mode.' return # Check for database consistency if options.quick is False and check_database(target) is False: return 1 # Ask message = 'Update the catalog (y/N)? ' if ask_confirmation(message, options.confirm) is False: return # Create a temporary new catalog catalog_path = '%s/catalog.new' % target if lfs.exists(catalog_path): lfs.remove(catalog_path) catalog = make_catalog(catalog_path, get_register_fields()) # Get the root root = server.root # Build a fake context context = get_fake_context(server.database) context.server = server # Update t0, v0 = time(), vmsize() doc_n = 0 error_detected = False if options.test: log = open('%s/log/update-catalog' % target, 'w').write for obj in root.traverse_resources(): if not isinstance(obj, Resource): continue if not options.quiet: print doc_n, obj.abspath doc_n += 1 context.resource = obj # Index the document try: catalog.index_document(obj) except Exception: if options.test: error_detected = True log('*** Error detected ***\n') log('Abspath of the resource: %r\n\n' % str(obj.abspath)) log(format_exc()) log('\n') else: raise # Free Memory del obj server.database.make_room() if not error_detected: if options.test: # Delete the empty log file remove('%s/log/update-catalog' % target) # Update / Report t1, v1 = time(), vmsize() v = (v1 - v0)/1024 print '[Update] Time: %.02f seconds. Memory: %s Kb' % (t1 - t0, v) # Commit print '[Commit]', sys.stdout.flush() catalog.save_changes() # Commit / Replace old_catalog_path = '%s/catalog' % target if lfs.exists(old_catalog_path): lfs.remove(old_catalog_path) lfs.move(catalog_path, old_catalog_path) # Commit / Report t2, v2 = time(), vmsize() v = (v2 - v1)/1024 print 'Time: %.02f seconds. Memory: %s Kb' % (t2 - t1, v) else: print '[Update] Error(s) detected, the new catalog was NOT saved' print ('[Update] You can find more infos in %r' % join(target, 'log/update-catalog'))
def update(parser, options, target): confirm = options.confirm # Check the server is not started, or started in read-only mode pid = get_pid('%s/pid' % target) if pid is not None: print 'Cannot proceed, the server is running in read-write mode.' return # Check for database consistency if options.quick is False and check_database(target) is False: return 1 # Load the modules config = get_config(target) load_modules(config) ####################################################################### # STAGE 0: Set mtime/author # XXX Specific to the migration from 0.61 to 0.62 ####################################################################### server = Server(target) database = server.database # Build a fake context context = get_fake_context(database) context.server = server context.init_context() # Local variables root = server.root mtime = root.get_value('mtime') if mtime is None or options.mtime: message = 'STAGE 0: Set mtime and author in the metadata (y/N)? ' if ask_confirmation(message, confirm) is False: abort() # Find out set of valid usernames usernames = root.get_names('users') usernames = set(usernames) print 'STAGE 0: Initializing mtime/author' # Load cache git_cache = {} for commit in database.worktree.git_log(include_files=True): if commit['author_name'] not in usernames: commit['author_name'] = None for path in commit['paths']: if path not in git_cache or not git_cache[path]['author_name']: git_cache[path] = commit # Set mtime/author for resource in root.traverse_resources(): if not isinstance(resource, DBResource): continue files = resource.get_files_to_archive() last_commit = None for file in files: commit = git_cache.get(file) if not commit: continue if not last_commit or commit['author_date'] > last_commit['author_date']: last_commit = commit metadata = resource.metadata metadata.set_property('mtime', last_commit['author_date']) metadata.set_property('last_author', last_commit['author_name']) # Commit context.git_message = u'Upgrade: set mtime/author' context.set_mtime = False # Do not override the mtime/author database.save_changes() ####################################################################### # STAGE 1: Find out the versions to upgrade ####################################################################### print 'STAGE 1: Find out the versions to upgrade (may take a while).' version, paths = find_versions_to_update(root, options.force) while version: message = 'STAGE 1: Upgrade %d resources to version %s (y/N)? ' message = message % (len(paths), version) if ask_confirmation(message, confirm) is False: abort() update_versions(target, database, version, paths, root, options.force) # Reset the state database.cache.clear() database.cache[root.metadata.key] = root.metadata print 'STAGE 1: Finish upgrading to version %s' % version version, paths = find_versions_to_update(root, options.force) print 'STAGE 1: Done.' # It is Done print '*' print '* To finish the upgrade process update the catalog:' print '*' print '* $ icms-update-catalog.py %s' % target print '*'
def update_catalog(parser, options, target): # Check the server is not started, or started in read-only mode server = Server(target, read_only=True, cache_size=options.cache_size) if server.is_running_in_rw_mode(): print 'Cannot proceed, the server is running in read-write mode.' return # Check for database consistency if options.quick is False and check_database(target) is False: return 1 # Ask message = 'Update the catalog (y/N)? ' if ask_confirmation(message, options.confirm) is False: return # Create a temporary new catalog catalog_path = '%s/catalog.new' % target if lfs.exists(catalog_path): lfs.remove(catalog_path) catalog = make_catalog(catalog_path, get_register_fields()) # Get the root root = server.root # Build a fake context context = get_fake_context(server.database) context.server = server # Update t0, v0 = time(), vmsize() doc_n = 0 error_detected = False if options.test: log = open('%s/log/update-catalog' % target, 'w').write for obj in root.traverse_resources(): if not isinstance(obj, Resource): continue if not options.quiet: print doc_n, obj.abspath doc_n += 1 context.resource = obj # Index the document try: catalog.index_document(obj) except Exception: if options.test: error_detected = True log('*** Error detected ***\n') log('Abspath of the resource: %r\n\n' % str(obj.abspath)) log(format_exc()) log('\n') else: raise # Free Memory del obj server.database.make_room() if not error_detected: if options.test: # Delete the empty log file remove('%s/log/update-catalog' % target) # Update / Report t1, v1 = time(), vmsize() v = (v1 - v0) / 1024 print '[Update] Time: %.02f seconds. Memory: %s Kb' % (t1 - t0, v) # Commit print '[Commit]', sys.stdout.flush() catalog.save_changes() # Commit / Replace old_catalog_path = '%s/catalog' % target if lfs.exists(old_catalog_path): lfs.remove(old_catalog_path) lfs.move(catalog_path, old_catalog_path) # Commit / Report t2, v2 = time(), vmsize() v = (v2 - v1) / 1024 print 'Time: %.02f seconds. Memory: %s Kb' % (t2 - t1, v) else: print '[Update] Error(s) detected, the new catalog was NOT saved' print('[Update] You can find more infos in %r' % join(target, 'log/update-catalog'))