aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcpettet <rush@wikimedia.org>2014-11-22 08:34:43 -0600
committercpettet <rush@wikimedia.org>2014-11-22 08:34:43 -0600
commit39dc0f33cdb4406a42f54f9189a10745d57dc36b (patch)
treebeac7e44c04c6537f9a9ca6cdd1400ee60937acb
parente80e40957279634a8bfa0c859ffaac1f606ef532 (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-xbugzilla_create.py9
-rwxr-xr-xbugzilla_reorder.py7
-rwxr-xr-xwmfphablib/phabapi.py29
-rwxr-xr-xwmfphablib/phabdb.py11
-rw-r--r--wmfphablib/util.py4
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):