def perform_migrate_iid(args): """ Should occur after the issues migration """ # access gitlab database with # gitlab-rails dbconsole gitlab = GitlabClient(args.gitlab_key, args.no_verify) gitlab_project = GitlabProject(args.gitlab_project_url, gitlab) gitlab_project_id = gitlab_project.get_id() regex_saved_iid = r'-RM-([0-9]+)-MR-(.*)' sql_cmd = sql.COUNT_UNMIGRATED_ISSUES.format( regex=regex_saved_iid, project_id=gitlab_project_id) output = sql.run_query(sql_cmd) try: m = re.match(r'\s*(\d+)\s*', output, re.DOTALL | re.MULTILINE) issues_count = int(m.group(1)) except (AttributeError, ValueError): raise ValueError( 'Invalid output from postgres command: "{}"'.format(output)) if issues_count > 0: log.info('Ready to recover iid for {} issues.'.format( issues_count)) else: log.error( "No issue to migrate iid, possible causes: " "you already migrated iid or you haven't migrated issues yet.") exit(1) if not args.check: # first we change the iid to large values to prevent a # duplicate key value violates unique_constraint "index_issues_on_project_id_and_iid" # KEY (project_id, iid)=(37, 83) already exists sql_cmd1 = sql.UPDATE_IID_ISSUES.format( regex=regex_saved_iid, project_id=gitlab_project_id) out1 = sql.run_query(sql_cmd1) sql_cmd2 = sql.MIGRATE_IID_ISSUES.format( regex=regex_saved_iid, project_id=gitlab_project_id) out2 = sql.run_query(sql_cmd2) try: m = re.match( r'\s*(\d+)\s*', output, re.DOTALL | re.MULTILINE) migrated_count = int(m.group(1)) log.info('Migrated successfully iid for {} issues'.format( migrated_count)) except (IndexError, AttributeError): raise ValueError( 'Invalid output from postgres command: "{}"'.format(output))
def perform_migrate_iid(args): """ Shoud occur after the issues migration """ gitlab = GitlabClient(args.gitlab_key) gitlab_project = GitlabProject(args.gitlab_project_url, gitlab) gitlab_project_id = gitlab_project.get_id() regex_saved_iid = r'-RM-([0-9]+)-MR-(.*)' sql_cmd = sql.COUNT_UNMIGRATED_ISSUES.format( regex=regex_saved_iid, project_id=gitlab_project_id) output = sql.run_query(sql_cmd) try: m = re.match(r'\s*(\d+)\s*', output, re.DOTALL | re.MULTILINE) issues_count = int(m.group(1)) except (AttributeError, ValueError): raise ValueError( 'Invalid output from postgres command: "{}"'.format(output)) if issues_count > 0: log.info('Ready to recover iid for {} issues.'.format( issues_count)) else: log.error( "No issue to migrate iid, possible causes: " "you already migrated iid or you haven't migrated issues yet.") exit(1) if not args.check: sql_cmd = sql.MIGRATE_IID_ISSUES.format( regex=regex_saved_iid, project_id=gitlab_project_id) out = sql.run_query(sql_cmd) try: m = re.match( r'\s*(\d+)\s*', output, re.DOTALL | re.MULTILINE) migrated_count = int(m.group(1)) log.info('Migrated successfully iid for {} issues'.format( migrated_count)) except (IndexError, AttributeError): raise ValueError( 'Invalid output from postgres command: "{}"'.format(output))