def update(bugid): pmig = phabdb.phdb(db=config.bzmigrate_db, user=config.bzmigrate_user, passwd=config.bzmigrate_passwd) epriority = pmig.sql_x("SELECT priority from task_relations where id = %s", bugid) if epriority and epriority[0] == ipriority['update_success']: log('skipping %s as blockers already updated' % (bugid,)) return True hq = "SELECT header FROM bugzilla_meta WHERE id = %s" header = pmig.sql_x(hq, (bugid,)) if not header: elog('no header found for %s' % (bugid,)) return False def extref(ticket): refid = phabdb.reference_ticket("%s%s" % (bzlib.prepend, ticket)) if not refid: return '' return refid[0] blocker_ref = extref(bugid) tinfo = json.loads(header[0][0]) if not tinfo['blocks']: log("%s doesn't block anything" % (str(bugid),)) return True for b in tinfo["blocks"]: blocked_ref = extref(b) log("%s is blocking %s" % (blocker_ref, blocked_ref)) if blocked_ref: log(phabdb.set_blocked_task(blocker_ref, blocked_ref)) else: log('%s is missing blocker %s' % (blocked_ref, blocker_ref)) blocks = phabdb.get_tasks_blocked(blocker_ref) vlog('%s is blocking %s' % (blocker_ref, str(blocks))) current = pmig.sql_x("SELECT * from task_relations where id = %s", bugid) if current: pmig.sql_x("UPDATE task_relations SET priority=%s, blocks=%s, modified=%s WHERE id = %s", (ipriority['update_success'], json.dumps(blocks), now(), bugid)) else: sql = "INSERT INTO task_relations (id, priority, blocks, modified) VALUES (%s, %s, %s, %s)" pmig.sql_x(sql, (bugid, ipriority['update_success'], json.dumps(blocks), now())) pmig.close() return True
def update(id): fabdb = phabdb.phdb(db='fab_migration') epriority = fabdb.sql_x("SELECT priority from task_relations where id = %s", id) if epriority and epriority[0] == ipriority['creation_success']: log('Skipping %s as blockers already updated' % (id,)) return True hq = "SELECT header FROM fab_meta WHERE id = %s" header = fabdb.sql_x(hq, (id,)) if not header: vlog('no header found for %s' % (id,)) return True def extref(ticket): refid = phabdb.reference_ticket("%s%s" % (fablib.prepend, ticket)) if not refid: return '' return refid[0] blocker_ref = extref(id) tinfo = json.loads(header[0]) vlog(tinfo) for b in tinfo['xblocking']: blocked_ref = extref(b) log("%s is blocking %s" % (blocker_ref, blocked_ref)) if blocked_ref: log(phabdb.set_blocked_task(blocker_ref, blocked_ref)) else: log('%s is missing blocker %s' % (blocked_ref, blocker_ref)) blocks = phabdb.get_tasks_blocked(blocker_ref) log('%s is blocking %s' % (blocker_ref, str(blocks))) current = fabdb.sql_x("SELECT * from task_relations where id = %s", id) if current: fabdb.sql_x("UPDATE task_relations SET priority=%s, blocks=%s, modified=%s WHERE id = %s", (ipriority['creation_success'], json.dumps(blocks), now(), id)) else: sql = "INSERT INTO task_relations (id, priority, blocks, modified) VALUES (%s, %s, %s, %s)" fabdb.sql_x(sql, (id, ipriority['creation_success'], json.dumps(blocks), now())) fabdb.close() return True
def update(bugid): pmig = phabdb.phdb(db=config.rtmigrate_db) epriority = pmig.sql_x("SELECT priority \ from task_relations \ where id = %s", bugid) if epriority and epriority[0] == ipriority['update_success']: log('skipping %s as blockers already updated' % (bugid,)) return True query = "SELECT header FROM rt_meta WHERE id = %s" header = pmig.sql_x(query, (bugid,)) if not header: elog('no header found for %s' % (bugid,)) return 'missing' def extref(ticket): refid = phabdb.reference_ticket("%s%s" % (rtlib.prepend, ticket)) if not refid: return '' return refid[0] blocker_ref = extref(bugid) tinfo = json.loads(header[0][0]) upstream = [] if 'parent' in tinfo['links']: upstream += tinfo['links']['parent'] if 'blocks' in tinfo['links']: upstream += tinfo['links']['blocks'] if upstream: for b in upstream: blocked_ref = extref(b) log("%s is blocking %s" % (blocker_ref, blocked_ref)) if blocked_ref: log(phabdb.set_blocked_task(blocker_ref, blocked_ref)) else: log('%s is missing blocker %s' % (blocked_ref, blocker_ref)) blocks = phabdb.get_tasks_blocked(blocker_ref) vlog('%s is blocking %s' % (blocker_ref, str(blocks))) current = pmig.sql_x("SELECT * \ from task_relations \ WHERE id = %s", bugid) if current: pmig.sql_x("UPDATE task_relations \ SET priority=%s, blocks=%s, modified=%s \ WHERE id = %s", (ipriority['update_success'], json.dumps(blocks), now(), bugid)) else: sql = "INSERT INTO task_relations \ (id, priority, blocks, modified) \ VALUES (%s, %s, %s, %s)" pmig.sql_x(sql, (bugid, ipriority['update_success'], json.dumps(blocks), now())) pmig.close() return True
def fetch(PHABTICKETID): PHABTICKETID = int(PHABTICKETID) parser = ConfigParser.SafeConfigParser() parser_mode = 'oldfab' parser.read(configfile) oldfab = Phabricator(parser.get(parser_mode, 'user'), parser.get(parser_mode, 'cert'), parser.get(parser_mode, 'host')) #dummy instance of phabapi phabm = phabmacros('', '', '') #assign newphab instance as self.con for dummyphab phabm.con = oldfab """ <Result: {u'authorPHID': u'PHID-USER-qbtllnzb6pwl3ttzqa3m', u'status': u'open', u'phid': u'PHID-TASK-qr3fpbtk6kdx4slhgnsd', u'description': u'', u'objectName': u'T10', u'title': u'Get icinga alerts into logstash', u'priorityColor': u'red', u'dependsOnTaskPHIDs': [], u'auxiliary': [], u'uri': u'http://fab.wmflabs.org/T10', u'ccPHIDs': [u'PHID-USER-qbtllnzb6pwl3ttzqa3m'], u'isClosed': False, u'dateModified': u'1399311492', u'ownerPHID': None, u'statusName': u'Open', u'dateCreated': u'1391716779', u'projectPHIDs': [u'PHID-PROJ-5ncvaivs3upngr7ijqy2'], u'id': u'10', u'priority': u'High'}> """ tinfo = oldfab.maniphest.info(task_id=PHABTICKETID).response vlog(tinfo) if 'objectName' in tinfo: log("Fetching %s" % (tinfo['objectName'])) comments = comments_by_task(tinfo['phid']) for i, c in comments.iteritems(): comments[i]['xcommenter'] = dict(oldfab.user.info(phid=c['xuserphid'])) ordered_comments = collections.OrderedDict(sorted(comments.items())) vlog(str(ordered_comments)) """ <Result: {u'userName': u'bd808', u'phid': u'PHID-USER-qbtllnzb6pwl3ttzqa3m', u'realName': u'Bryan Davis', u'roles': [u'admin',u'verified', u'approved', u'activated'], u'image': u'http://fab.wmflabs.org/file/data/fijwoqt62w6atpond4vb/PHID-FILE-37htsfegn7bnlfvzwsts/profile-profile-gravatar', u'uri': u'http://fab.wmflabs.org/p/bd808/'}> """ authorInfo = oldfab.user.info(phid=tinfo['authorPHID']) tinfo['xauthor'] = phabdb.email_by_userphid(authorInfo['phid']) lauthor = tinfo['xauthor'] or 'no author' vlog('author: ' + lauthor) ccs = [] if tinfo['ccPHIDs']: for c in tinfo['ccPHIDs']: ccInfo = oldfab.user.info(phid=c) ccs.append(phabdb.email_by_userphid(ccInfo['phid'])) tinfo['xccs'] = ccs vlog('ccs: ' + str(ccs)) if tinfo['ownerPHID']: tinfo['xowner'] = phabdb.email_by_userphid(tinfo['ownerPHID']) else: tinfo['xowner'] = None """ u'data': {u'PHID-PROJ-5ncvaivs3upngr7ijqy2': {u'phid': u'PHID-PROJ-5ncvaivs3upngr7ijqy2', u'name': u'logstash', u'dateCreated': u'1391641549', u'members': [u'PHID-USER-65zhggegfvhojb4nynay'], u'id': u'3', u'dateModified': u'1398282408', u'slugs': [u'logstash']}}, u'slugMap': []}> """ project_names = [] associated_projects = tinfo['projectPHIDs'] vlog('associated projects: %s' % (str(tinfo['projectPHIDs']))) #if we try to query for an empty list we get back ALLLLLL if associated_projects: pinfo = oldfab.project.query(phids=associated_projects) if pinfo['data']: for p in pinfo['data'].values(): project_names.append(p['name']) def norm(pname): return pname.lower().replace(' ', '_').replace('-', '_') norm_projects = [norm(p) for p in fablib.saved] saved_projects = [norm(p) in norm_projects for p in project_names] if not any(saved_projects): print "Skipping %s as it's not in a saved project" % (PHABTICKETID) return True vlog('project names: ' + str(project_names)) tinfo['xprojects'] = project_names status = tinfo['status'] if status != 'open': creation_priority = ipriority['na'] else: creation_priority = ipriority['unresolved'] blocked_tasks = phabdb.get_tasks_blocked(tinfo['phid']) if blocked_tasks: blocked = [] block_details = oldfab.maniphest.find(phids=blocked_tasks) for k, v in block_details.iteritems(): blocked.append(v['id']) else: blocked = [] vlog('blocking: %s' % (str(blocked))) tinfo['xblocking'] = blocked pmig = phabdb.phdb(db='fab_migration') current = pmig.sql_x("SELECT * from fab_meta where id = %s", PHABTICKETID) if current: log('updating current record %s' % (PHABTICKETID,)) update_values = (creation_priority, json.dumps(tinfo), json.dumps(comments), now(), PHABTICKETID) pmig.sql_x("UPDATE fab_meta SET priority=%s, header=%s, comments=%s, modified=%s WHERE id = %s", update_values) else: log('inserting new record %s' % (PHABTICKETID,)) insert_values = (PHABTICKETID, creation_priority, json.dumps(tinfo), json.dumps(comments), now(), now()) pmig.sql_x("INSERT INTO fab_meta (id, priority, header, comments, created, modified) VALUES (%s, %s, %s, %s, %s, %s)", insert_values) pmig.close() return True