diff options
author | cpettet <rush@wikimedia.org> | 2014-11-22 08:34:43 -0600 |
---|---|---|
committer | cpettet <rush@wikimedia.org> | 2014-11-22 08:34:43 -0600 |
commit | 39dc0f33cdb4406a42f54f9189a10745d57dc36b (patch) | |
tree | beac7e44c04c6537f9a9ca6cdd1400ee60937acb | |
parent | e80e40957279634a8bfa0c859ffaac1f606ef532 (diff) |
lessons learned during migratain
* close a few dangling sockets
* set perms on uploads for sec tickets
* do project checking via db not api
-rwxr-xr-x | bugzilla_create.py | 9 | ||||
-rwxr-xr-x | bugzilla_reorder.py | 7 | ||||
-rwxr-xr-x | wmfphablib/phabapi.py | 29 | ||||
-rwxr-xr-x | wmfphablib/phabdb.py | 11 | ||||
-rw-r--r-- | wmfphablib/util.py | 4 |
5 files changed, 38 insertions, 22 deletions
diff --git a/bugzilla_create.py b/bugzilla_create.py index a57b013..ad3d42a 100755 --- a/bugzilla_create.py +++ b/bugzilla_create.py @@ -51,6 +51,7 @@ def create(bugid): if current: import_priority, buginfo, com, created, modified = current[0] else: + pmig.close() elog('%s not present for migration' % (bugid,)) return False @@ -58,6 +59,7 @@ def create(bugid): refexists = phabdb.reference_ticket('%s%s' % (bzlib.prepend, id)) if refexists: + pmig.close() return refexists if get_ref(bugid): @@ -112,8 +114,13 @@ def create(bugid): vlog('ignoring obsolete attachment: %s' % (str(a))) a['ignore'] = 'obsolete' else: + if buginfo["secstate"] == 'none': + viewpolicy = 'public' + else: + viewpolicy = phabdb.get_project_phid('security') try: - upload = phabm.upload_file(a['file_name'], a['data'].data) + #upload = phabm.upload_file(a['file_name'], a['data'].data) + upload = phabm.upload_file(a['file_name'], a['data'].data, viewpolicy) a['phid'] = upload['phid'] a['name'] = upload['name'] a['objectName'] = upload['objectName'] diff --git a/bugzilla_reorder.py b/bugzilla_reorder.py index af2f106..11e8ba8 100755 --- a/bugzilla_reorder.py +++ b/bugzilla_reorder.py @@ -23,9 +23,10 @@ from wmfphablib import bzlib from wmfphablib import ipriority def reorder(first, start, end, placeholder=300001): - pmig = phabdb.phdb(db=config.bzmigrate_db, - user=config.bzmigrate_user, - passwd=config.bzmigrate_passwd) + #pmig = phabdb.phdb(db=config.bzmigrate_db, + # user=config.bzmigrate_user, + # passwd=config.bzmigrate_passwd) + # range of issues to renumber issues = range(int(start), int(end) + 1) first_issue = issues[0] diff --git a/wmfphablib/phabapi.py b/wmfphablib/phabapi.py index d6df30d..9f2dbe7 100755 --- a/wmfphablib/phabapi.py +++ b/wmfphablib/phabapi.py @@ -93,36 +93,43 @@ class phabapi: :param pmembers: list :param view: str :param edit str""" - - existing_proj = self.con.project.query(names=[project_name]) - - - if not existing_proj['data']: + existing_proj = phabdb.get_project_phid(project_name) + #print "EXISTING PROJ: ", existing_proj + #print "EXISTING PROJ TYPE: ", type(existing_proj) + #existing_proj = self.con.project.query(names=[project_name]) + if not existing_proj: log('need to create project(s) ' + project_name) try: new_proj = self.con.project.create(name=project_name, members=pmembers) #XXX: Bug where we have to specify a members array! except phabricator.APIError: pass - existing_proj = self.con.project.query(names=[project_name]) - log(str(existing_proj)) - phid = existing_proj['data'][existing_proj['data'].keys()[0]]['phid'] + phid = phabdb.get_project_phid(project_name) + if not phid: + raise Exception("Project %s does not exist still." % (project_name,)) + #existing_proj = self.con.project.query(names=[project_name]) + #log(str(existing_proj)) + #phid = existing_proj['data'][existing_proj['data'].keys()[0]]['phid'] phabdb.set_project_policy(phid, view, edit) else: - phid = existing_proj['data'][existing_proj['data'].keys()[0]]['phid'] + phid = existing_proj + #phid = existing_proj['data'][existing_proj['data'].keys()[0]]['phid'] log(project_name + ' exists') return phid - def upload_file(self, name, data, dump=False): + def upload_file(self, name, data, viewPolicy, dump=False): if dump: with open(name, 'wb') as f: f.write(data) + log("upload policy for %s is %s" % (name, viewPolicy)) out = {} self.con.timeout = config.file_upload_timeout encoded = base64.b64encode(data) - uploadphid = self.con.file.upload(name=name, data_base64=encoded) + uploadphid = self.con.file.upload(name=name, + data_base64=encoded, + viewPolicy=viewPolicy) out['phid'] = uploadphid log("%s upload response: %s" % (name, uploadphid.response)) fileid = phabdb.get_file_id_by_phid(uploadphid.response) diff --git a/wmfphablib/phabdb.py b/wmfphablib/phabdb.py index d4ddf2d..220ff5f 100755 --- a/wmfphablib/phabdb.py +++ b/wmfphablib/phabdb.py @@ -239,6 +239,7 @@ def is_bot(userphid): from user where phid=%s", (userphid,), limit=1) p.close() + if not isbot: raise Exception("user is not a present") if int(isbot[0][0]) > 0: @@ -352,6 +353,7 @@ def set_comment_author(transxphid, userphid): SET authorPHID=%s \ WHERE transactionPHID=%s", (userphid, transxphid)) + p.close() def set_task_mtime(taskphid, mtime): """set manual epoch modtime for task @@ -416,8 +418,8 @@ def get_emails(modtime=0): user=phuser_user, passwd=phuser_passwd) query = "SELECT address from user_email" - _ = pmig.sql_x(query, (), limit=None) - pmig.close() + _ = p.sql_x(query, (), limit=None) + p.close() if not _: return '' return _ @@ -804,9 +806,8 @@ def remove_reference(refname): :param refname: str """ - p = phdb(db='phabricator_maniphest', - user=phmanifest_user, - passwd=phmanifest_passwd) + p = phdb(db='phabricator_maniphest', user=phuser_user, passwd=phuser_passwd) + _ = p.sql_x("DELETE from \ maniphest_customfieldstringindex \ WHERE indexValue=%s", (refname,)) diff --git a/wmfphablib/util.py b/wmfphablib/util.py index 7ec1e36..c22c649 100644 --- a/wmfphablib/util.py +++ b/wmfphablib/util.py @@ -141,8 +141,8 @@ def remove_issue_by_bugid(bugid, ref): notice("!Removing issue T%s!" % (issueid,)) out = '' out += destroy_issue(issueid) - out += phabdb.remove_reference("%s%s" % (ref, bugid)) - out += phabdb.reference_ticket("%s%s" % (ref, bugid)) + out += str(phabdb.remove_reference("%s%s" % (ref, bugid))) + out += str(phabdb.reference_ticket("%s%s" % (ref, bugid))) return out def return_bug_list(dbcon=None, priority=None): |