You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lens.apache.org by "amareshwarisr ." <am...@gmail.com> on 2015/08/03 08:25:57 UTC

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Rajat,

Is the commit correct? Seems not. May be the file was not attached on the
jira? The one i reviewed has doc changes not a .py file.

On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:

> Repository: incubator-lens
> Updated Branches:
>   refs/heads/master bffa78c97 -> 898e0a82e
>
>
> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>
>
> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
> Commit:
> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
> Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
> Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>
> Branch: refs/heads/master
> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
> Parents: bffa78c
> Author: Rajat Khandelwal <pr...@apache.org>
> Authored: Mon Aug 3 11:49:05 2015 +0530
> Committer: Yash Sharma <ya...@snapdeal.com>
> Committed: Mon Aug 3 11:49:05 2015 +0530
>
> ----------------------------------------------------------------------
>  tools/scripts/lens-patch-review.py | 130 ++++++++++++++++++++++++++++++++
>  1 file changed, 130 insertions(+)
> ----------------------------------------------------------------------
>
>
>
> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
> ----------------------------------------------------------------------
> diff --git a/tools/scripts/lens-patch-review.py
> b/tools/scripts/lens-patch-review.py
> new file mode 100644
> index 0000000..48cf478
> --- /dev/null
> +++ b/tools/scripts/lens-patch-review.py
> @@ -0,0 +1,130 @@
> +#!/usr/bin/env python
> +
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +# http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS,
> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +# See the License for the specific language governing permissions and
> +# limitations under the License.
> +
> +
> +# Modified based on Kafka's patch review tool
> +
> +# Required Modules:
> +# - python-argparse
> +
> +import argparse
> +import sys
> +import os
> +import time
> +import datetime
> +import tempfile
> +from jira.client import JIRA
> +
> +def get_jira():
> +  options = {
> +    'server': 'https://issues.apache.org/jira'
> +  }
> +  # read the config file
> +  home=jira_home=os.getenv('HOME')
> +  home=home.rstrip('/')
> +  jira_config = dict(line.strip().split('=') for line in open(home +
> '/jira.ini'))
> +  jira = JIRA(options,basic_auth=(jira_config['user'],
> jira_config['password']))
> +  return jira
> +
> +def main():
> +  ''' main(), shut up, pylint '''
> +  popt = argparse.ArgumentParser(description='Apache Lens patch review
> tool')
> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
> required=True, help='Tracking branch to create diff against')
> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
> required=True, help='JIRA corresponding to the reviewboard')
> +  popt.add_argument('-s', '--summary', action='store', dest='summary',
> required=False, help='Summary for the reviewboard')
> +  popt.add_argument('-d', '--description', action='store',
> dest='description', required=False, help='Description for reviewboard')
> +  popt.add_argument('-r', '--rb', action='store', dest='reviewboard',
> required=False, help='Review board that needs to be updated')
> +  popt.add_argument('-t', '--testing-done', action='store',
> dest='testing', required=False, help='Text for the Testing Done section of
> the reviewboard')
> +  popt.add_argument('-db', '--debug', action='store_true',
> required=False, help='Enable debug mode')
> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
> dest='reviewboard_user', required=True, help='Review board user name')
> +  popt.add_argument('-rbp', '--reviewboard-password', action='store',
> dest='reviewboard_password', required=True, help='Review board user
> password')
> +  popt.add_argument('-v', '--version', action='store', dest='version',
> required=False, help='Version for patch')
> +  opt = popt.parse_args()
> +
> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." + opt.version +
> ".patch"
> +  if opt.reviewboard:
> +    ts = time.time()
> +    st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
> '.patch'
> +
> +  git_remote_update="git remote update"
> +  print "Updating your remote branches to pull the latest changes"
> +  p=os.popen(git_remote_update)
> +  p.close()
> +
> +  rb_command="post-review --publish --tracking-branch " + opt.branch + "
> --target-groups=lens --bugs-closed=" + opt.jira
> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
> --password " + opt.reviewboard_password
> +
> +  if opt.debug:
> +    rb_command=rb_command + " --debug"
> +  summary="Patch for " + opt.jira
> +  if opt.summary:
> +    summary=opt.summary
> +  rb_command=rb_command + " --summary \"" + summary + "\""
> +  if opt.description:
> +    rb_command=rb_command + " --description \"" + opt.description + "\""
> +  if opt.reviewboard:
> +    rb_command=rb_command + " -r " + opt.reviewboard
> +  if opt.testing:
> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
> +  if opt.debug:
> +    print rb_command
> +  p=os.popen(rb_command)
> +  rb_url=""
> +  for line in p:
> +    print line
> +    if line.startswith('http'):
> +      rb_url = line
> +    elif line.startswith("There don't seem to be any diffs"):
> +      print 'ERROR: Your reviewboard was not created/updated since there
> was no diff to upload. The reasons that can cause this issue are 1) Your
> diff is not checked into your local branch. Please check in the diff to the
> local branch and retry 2) You are not specifying the local branch name as
> part of the --branch option. Please specify the remote branch name obtained
> from git branch -r'
> +      p.close()
> +      sys.exit(1)
> +    elif line.startswith("Your review request still exists, but the diff
> is not attached") and not opt.debug:
> +      print 'ERROR: Your reviewboard was not created/updated. Please run
> the script with the --debug option to troubleshoot the problem'
> +      p.close()
> +      sys.exit(1)
> +  p.close()
> +  if opt.debug:
> +    print 'rb url=',rb_url
> +
> +  git_command="git diff " + opt.branch + " > " + patch_file
> +  if opt.debug:
> +    print git_command
> +  p=os.popen(git_command)
> +  p.close()
> +
> +  print 'Creating diff against', opt.branch, 'and uploading patch to
> JIRA',opt.jira
> +  jira=get_jira()
> +  issue = jira.issue(opt.jira)
> +  attachment=open(patch_file)
> +  jira.add_attachment(issue,attachment)
> +  attachment.close()
> +
> +  comment="Created reviewboard "
> +  if not opt.reviewboard:
> +    print 'Created a new reviewboard ',rb_url
> +  else:
> +    print 'Updated reviewboard',opt.reviewboard
> +    comment="Updated reviewboard "
> +
> +  comment = comment + rb_url
> +  jira.add_comment(opt.jira, comment)
> +
> +if __name__ == '__main__':
> +  sys.exit(main())
> +
>
>

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Posted by Yash Sharma <ya...@gmail.com>.
Great.

On Mon, Aug 3, 2015 at 12:16 PM, amareshwarisr . <am...@gmail.com>
wrote:

> Parked https://issues.apache.org/jira/browse/LENS-708
>
> On Mon, Aug 3, 2015 at 12:14 PM, Yash Sharma <ya...@gmail.com> wrote:
>
>> Oh. I was confused with the via thing. So I used the style in the commit
>> doc. It had the name of author after via.
>> Will update doc as well :)
>>
>> Thanks
>>
>> On Mon, Aug 3, 2015 at 12:11 PM, Rajat Khandelwal <pr...@apache.org>
>> wrote:
>>
>>> Yes. And the via thing is wrong in your commit message. It's other way
>>> round.
>>>
>>> On Mon, Aug 3, 2015, 11:59 Yash Sharma <ya...@gmail.com> wrote:
>>>
>>>> Oh my bad. The most recent file is named LENS-541_01.patch.
>>>> I picked the one with name LENS-541.03.patch.
>>>>
>>>> On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <amareshwari@gmail.com
>>>> > wrote:
>>>>
>>>>> Rajat,
>>>>>
>>>>> Is the commit correct? Seems not. May be the file was not attached on
>>>>> the jira? The one i reviewed has doc changes not a .py file.
>>>>>
>>>>> On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:
>>>>>
>>>>>> Repository: incubator-lens
>>>>>> Updated Branches:
>>>>>>   refs/heads/master bffa78c97 -> 898e0a82e
>>>>>>
>>>>>>
>>>>>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>>>>>>
>>>>>>
>>>>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
>>>>>> Commit:
>>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
>>>>>> Tree:
>>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
>>>>>> Diff:
>>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>>>>>>
>>>>>> Branch: refs/heads/master
>>>>>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
>>>>>> Parents: bffa78c
>>>>>> Author: Rajat Khandelwal <pr...@apache.org>
>>>>>> Authored: Mon Aug 3 11:49:05 2015 +0530
>>>>>> Committer: Yash Sharma <ya...@snapdeal.com>
>>>>>> Committed: Mon Aug 3 11:49:05 2015 +0530
>>>>>>
>>>>>> ----------------------------------------------------------------------
>>>>>>  tools/scripts/lens-patch-review.py | 130
>>>>>> ++++++++++++++++++++++++++++++++
>>>>>>  1 file changed, 130 insertions(+)
>>>>>> ----------------------------------------------------------------------
>>>>>>
>>>>>>
>>>>>>
>>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
>>>>>> ----------------------------------------------------------------------
>>>>>> diff --git a/tools/scripts/lens-patch-review.py
>>>>>> b/tools/scripts/lens-patch-review.py
>>>>>> new file mode 100644
>>>>>> index 0000000..48cf478
>>>>>> --- /dev/null
>>>>>> +++ b/tools/scripts/lens-patch-review.py
>>>>>> @@ -0,0 +1,130 @@
>>>>>> +#!/usr/bin/env python
>>>>>> +
>>>>>> +# Licensed to the Apache Software Foundation (ASF) under one
>>>>>> +# or more contributor license agreements.  See the NOTICE file
>>>>>> +# distributed with this work for additional information
>>>>>> +# regarding copyright ownership.  The ASF licenses this file
>>>>>> +# to you under the Apache License, Version 2.0 (the
>>>>>> +# "License"); you may not use this file except in compliance
>>>>>> +# with the License.  You may obtain a copy of the License at
>>>>>> +#
>>>>>> +# http://www.apache.org/licenses/LICENSE-2.0
>>>>>> +#
>>>>>> +# Unless required by applicable law or agreed to in writing, software
>>>>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>>> implied.
>>>>>> +# See the License for the specific language governing permissions and
>>>>>> +# limitations under the License.
>>>>>> +
>>>>>> +
>>>>>> +# Modified based on Kafka's patch review tool
>>>>>> +
>>>>>> +# Required Modules:
>>>>>> +# - python-argparse
>>>>>> +
>>>>>> +import argparse
>>>>>> +import sys
>>>>>> +import os
>>>>>> +import time
>>>>>> +import datetime
>>>>>> +import tempfile
>>>>>> +from jira.client import JIRA
>>>>>> +
>>>>>> +def get_jira():
>>>>>> +  options = {
>>>>>> +    'server': 'https://issues.apache.org/jira'
>>>>>> +  }
>>>>>> +  # read the config file
>>>>>> +  home=jira_home=os.getenv('HOME')
>>>>>> +  home=home.rstrip('/')
>>>>>> +  jira_config = dict(line.strip().split('=') for line in open(home +
>>>>>> '/jira.ini'))
>>>>>> +  jira = JIRA(options,basic_auth=(jira_config['user'],
>>>>>> jira_config['password']))
>>>>>> +  return jira
>>>>>> +
>>>>>> +def main():
>>>>>> +  ''' main(), shut up, pylint '''
>>>>>> +  popt = argparse.ArgumentParser(description='Apache Lens patch
>>>>>> review tool')
>>>>>> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
>>>>>> required=True, help='Tracking branch to create diff against')
>>>>>> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
>>>>>> required=True, help='JIRA corresponding to the reviewboard')
>>>>>> +  popt.add_argument('-s', '--summary', action='store',
>>>>>> dest='summary', required=False, help='Summary for the reviewboard')
>>>>>> +  popt.add_argument('-d', '--description', action='store',
>>>>>> dest='description', required=False, help='Description for reviewboard')
>>>>>> +  popt.add_argument('-r', '--rb', action='store',
>>>>>> dest='reviewboard', required=False, help='Review board that needs to be
>>>>>> updated')
>>>>>> +  popt.add_argument('-t', '--testing-done', action='store',
>>>>>> dest='testing', required=False, help='Text for the Testing Done section of
>>>>>> the reviewboard')
>>>>>> +  popt.add_argument('-db', '--debug', action='store_true',
>>>>>> required=False, help='Enable debug mode')
>>>>>> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
>>>>>> dest='reviewboard_user', required=True, help='Review board user name')
>>>>>> +  popt.add_argument('-rbp', '--reviewboard-password',
>>>>>> action='store', dest='reviewboard_password', required=True, help='Review
>>>>>> board user password')
>>>>>> +  popt.add_argument('-v', '--version', action='store',
>>>>>> dest='version', required=False, help='Version for patch')
>>>>>> +  opt = popt.parse_args()
>>>>>> +
>>>>>> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." +
>>>>>> opt.version + ".patch"
>>>>>> +  if opt.reviewboard:
>>>>>> +    ts = time.time()
>>>>>> +    st =
>>>>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
>>>>>> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
>>>>>> '.patch'
>>>>>> +
>>>>>> +  git_remote_update="git remote update"
>>>>>> +  print "Updating your remote branches to pull the latest changes"
>>>>>> +  p=os.popen(git_remote_update)
>>>>>> +  p.close()
>>>>>> +
>>>>>> +  rb_command="post-review --publish --tracking-branch " + opt.branch
>>>>>> + " --target-groups=lens --bugs-closed=" + opt.jira
>>>>>> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
>>>>>> --password " + opt.reviewboard_password
>>>>>> +
>>>>>> +  if opt.debug:
>>>>>> +    rb_command=rb_command + " --debug"
>>>>>> +  summary="Patch for " + opt.jira
>>>>>> +  if opt.summary:
>>>>>> +    summary=opt.summary
>>>>>> +  rb_command=rb_command + " --summary \"" + summary + "\""
>>>>>> +  if opt.description:
>>>>>> +    rb_command=rb_command + " --description \"" + opt.description +
>>>>>> "\""
>>>>>> +  if opt.reviewboard:
>>>>>> +    rb_command=rb_command + " -r " + opt.reviewboard
>>>>>> +  if opt.testing:
>>>>>> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
>>>>>> +  if opt.debug:
>>>>>> +    print rb_command
>>>>>> +  p=os.popen(rb_command)
>>>>>> +  rb_url=""
>>>>>> +  for line in p:
>>>>>> +    print line
>>>>>> +    if line.startswith('http'):
>>>>>> +      rb_url = line
>>>>>> +    elif line.startswith("There don't seem to be any diffs"):
>>>>>> +      print 'ERROR: Your reviewboard was not created/updated since
>>>>>> there was no diff to upload. The reasons that can cause this issue are 1)
>>>>>> Your diff is not checked into your local branch. Please check in the diff
>>>>>> to the local branch and retry 2) You are not specifying the local branch
>>>>>> name as part of the --branch option. Please specify the remote branch name
>>>>>> obtained from git branch -r'
>>>>>> +      p.close()
>>>>>> +      sys.exit(1)
>>>>>> +    elif line.startswith("Your review request still exists, but the
>>>>>> diff is not attached") and not opt.debug:
>>>>>> +      print 'ERROR: Your reviewboard was not created/updated. Please
>>>>>> run the script with the --debug option to troubleshoot the problem'
>>>>>> +      p.close()
>>>>>> +      sys.exit(1)
>>>>>> +  p.close()
>>>>>> +  if opt.debug:
>>>>>> +    print 'rb url=',rb_url
>>>>>> +
>>>>>> +  git_command="git diff " + opt.branch + " > " + patch_file
>>>>>> +  if opt.debug:
>>>>>> +    print git_command
>>>>>> +  p=os.popen(git_command)
>>>>>> +  p.close()
>>>>>> +
>>>>>> +  print 'Creating diff against', opt.branch, 'and uploading patch to
>>>>>> JIRA',opt.jira
>>>>>> +  jira=get_jira()
>>>>>> +  issue = jira.issue(opt.jira)
>>>>>> +  attachment=open(patch_file)
>>>>>> +  jira.add_attachment(issue,attachment)
>>>>>> +  attachment.close()
>>>>>> +
>>>>>> +  comment="Created reviewboard "
>>>>>> +  if not opt.reviewboard:
>>>>>> +    print 'Created a new reviewboard ',rb_url
>>>>>> +  else:
>>>>>> +    print 'Updated reviewboard',opt.reviewboard
>>>>>> +    comment="Updated reviewboard "
>>>>>> +
>>>>>> +  comment = comment + rb_url
>>>>>> +  jira.add_comment(opt.jira, comment)
>>>>>> +
>>>>>> +if __name__ == '__main__':
>>>>>> +  sys.exit(main())
>>>>>> +
>>>>>>
>>>>>>
>>>>>
>>>>
>>
>

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Posted by "amareshwarisr ." <am...@gmail.com>.
Parked https://issues.apache.org/jira/browse/LENS-708

On Mon, Aug 3, 2015 at 12:14 PM, Yash Sharma <ya...@gmail.com> wrote:

> Oh. I was confused with the via thing. So I used the style in the commit
> doc. It had the name of author after via.
> Will update doc as well :)
>
> Thanks
>
> On Mon, Aug 3, 2015 at 12:11 PM, Rajat Khandelwal <pr...@apache.org>
> wrote:
>
>> Yes. And the via thing is wrong in your commit message. It's other way
>> round.
>>
>> On Mon, Aug 3, 2015, 11:59 Yash Sharma <ya...@gmail.com> wrote:
>>
>>> Oh my bad. The most recent file is named LENS-541_01.patch.
>>> I picked the one with name LENS-541.03.patch.
>>>
>>> On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <am...@gmail.com>
>>> wrote:
>>>
>>>> Rajat,
>>>>
>>>> Is the commit correct? Seems not. May be the file was not attached on
>>>> the jira? The one i reviewed has doc changes not a .py file.
>>>>
>>>> On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:
>>>>
>>>>> Repository: incubator-lens
>>>>> Updated Branches:
>>>>>   refs/heads/master bffa78c97 -> 898e0a82e
>>>>>
>>>>>
>>>>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>>>>>
>>>>>
>>>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
>>>>> Commit:
>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
>>>>> Tree:
>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
>>>>> Diff:
>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>>>>>
>>>>> Branch: refs/heads/master
>>>>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
>>>>> Parents: bffa78c
>>>>> Author: Rajat Khandelwal <pr...@apache.org>
>>>>> Authored: Mon Aug 3 11:49:05 2015 +0530
>>>>> Committer: Yash Sharma <ya...@snapdeal.com>
>>>>> Committed: Mon Aug 3 11:49:05 2015 +0530
>>>>>
>>>>> ----------------------------------------------------------------------
>>>>>  tools/scripts/lens-patch-review.py | 130
>>>>> ++++++++++++++++++++++++++++++++
>>>>>  1 file changed, 130 insertions(+)
>>>>> ----------------------------------------------------------------------
>>>>>
>>>>>
>>>>>
>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
>>>>> ----------------------------------------------------------------------
>>>>> diff --git a/tools/scripts/lens-patch-review.py
>>>>> b/tools/scripts/lens-patch-review.py
>>>>> new file mode 100644
>>>>> index 0000000..48cf478
>>>>> --- /dev/null
>>>>> +++ b/tools/scripts/lens-patch-review.py
>>>>> @@ -0,0 +1,130 @@
>>>>> +#!/usr/bin/env python
>>>>> +
>>>>> +# Licensed to the Apache Software Foundation (ASF) under one
>>>>> +# or more contributor license agreements.  See the NOTICE file
>>>>> +# distributed with this work for additional information
>>>>> +# regarding copyright ownership.  The ASF licenses this file
>>>>> +# to you under the Apache License, Version 2.0 (the
>>>>> +# "License"); you may not use this file except in compliance
>>>>> +# with the License.  You may obtain a copy of the License at
>>>>> +#
>>>>> +# http://www.apache.org/licenses/LICENSE-2.0
>>>>> +#
>>>>> +# Unless required by applicable law or agreed to in writing, software
>>>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>>> implied.
>>>>> +# See the License for the specific language governing permissions and
>>>>> +# limitations under the License.
>>>>> +
>>>>> +
>>>>> +# Modified based on Kafka's patch review tool
>>>>> +
>>>>> +# Required Modules:
>>>>> +# - python-argparse
>>>>> +
>>>>> +import argparse
>>>>> +import sys
>>>>> +import os
>>>>> +import time
>>>>> +import datetime
>>>>> +import tempfile
>>>>> +from jira.client import JIRA
>>>>> +
>>>>> +def get_jira():
>>>>> +  options = {
>>>>> +    'server': 'https://issues.apache.org/jira'
>>>>> +  }
>>>>> +  # read the config file
>>>>> +  home=jira_home=os.getenv('HOME')
>>>>> +  home=home.rstrip('/')
>>>>> +  jira_config = dict(line.strip().split('=') for line in open(home +
>>>>> '/jira.ini'))
>>>>> +  jira = JIRA(options,basic_auth=(jira_config['user'],
>>>>> jira_config['password']))
>>>>> +  return jira
>>>>> +
>>>>> +def main():
>>>>> +  ''' main(), shut up, pylint '''
>>>>> +  popt = argparse.ArgumentParser(description='Apache Lens patch
>>>>> review tool')
>>>>> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
>>>>> required=True, help='Tracking branch to create diff against')
>>>>> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
>>>>> required=True, help='JIRA corresponding to the reviewboard')
>>>>> +  popt.add_argument('-s', '--summary', action='store',
>>>>> dest='summary', required=False, help='Summary for the reviewboard')
>>>>> +  popt.add_argument('-d', '--description', action='store',
>>>>> dest='description', required=False, help='Description for reviewboard')
>>>>> +  popt.add_argument('-r', '--rb', action='store', dest='reviewboard',
>>>>> required=False, help='Review board that needs to be updated')
>>>>> +  popt.add_argument('-t', '--testing-done', action='store',
>>>>> dest='testing', required=False, help='Text for the Testing Done section of
>>>>> the reviewboard')
>>>>> +  popt.add_argument('-db', '--debug', action='store_true',
>>>>> required=False, help='Enable debug mode')
>>>>> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
>>>>> dest='reviewboard_user', required=True, help='Review board user name')
>>>>> +  popt.add_argument('-rbp', '--reviewboard-password', action='store',
>>>>> dest='reviewboard_password', required=True, help='Review board user
>>>>> password')
>>>>> +  popt.add_argument('-v', '--version', action='store',
>>>>> dest='version', required=False, help='Version for patch')
>>>>> +  opt = popt.parse_args()
>>>>> +
>>>>> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." +
>>>>> opt.version + ".patch"
>>>>> +  if opt.reviewboard:
>>>>> +    ts = time.time()
>>>>> +    st =
>>>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
>>>>> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
>>>>> '.patch'
>>>>> +
>>>>> +  git_remote_update="git remote update"
>>>>> +  print "Updating your remote branches to pull the latest changes"
>>>>> +  p=os.popen(git_remote_update)
>>>>> +  p.close()
>>>>> +
>>>>> +  rb_command="post-review --publish --tracking-branch " + opt.branch
>>>>> + " --target-groups=lens --bugs-closed=" + opt.jira
>>>>> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
>>>>> --password " + opt.reviewboard_password
>>>>> +
>>>>> +  if opt.debug:
>>>>> +    rb_command=rb_command + " --debug"
>>>>> +  summary="Patch for " + opt.jira
>>>>> +  if opt.summary:
>>>>> +    summary=opt.summary
>>>>> +  rb_command=rb_command + " --summary \"" + summary + "\""
>>>>> +  if opt.description:
>>>>> +    rb_command=rb_command + " --description \"" + opt.description +
>>>>> "\""
>>>>> +  if opt.reviewboard:
>>>>> +    rb_command=rb_command + " -r " + opt.reviewboard
>>>>> +  if opt.testing:
>>>>> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
>>>>> +  if opt.debug:
>>>>> +    print rb_command
>>>>> +  p=os.popen(rb_command)
>>>>> +  rb_url=""
>>>>> +  for line in p:
>>>>> +    print line
>>>>> +    if line.startswith('http'):
>>>>> +      rb_url = line
>>>>> +    elif line.startswith("There don't seem to be any diffs"):
>>>>> +      print 'ERROR: Your reviewboard was not created/updated since
>>>>> there was no diff to upload. The reasons that can cause this issue are 1)
>>>>> Your diff is not checked into your local branch. Please check in the diff
>>>>> to the local branch and retry 2) You are not specifying the local branch
>>>>> name as part of the --branch option. Please specify the remote branch name
>>>>> obtained from git branch -r'
>>>>> +      p.close()
>>>>> +      sys.exit(1)
>>>>> +    elif line.startswith("Your review request still exists, but the
>>>>> diff is not attached") and not opt.debug:
>>>>> +      print 'ERROR: Your reviewboard was not created/updated. Please
>>>>> run the script with the --debug option to troubleshoot the problem'
>>>>> +      p.close()
>>>>> +      sys.exit(1)
>>>>> +  p.close()
>>>>> +  if opt.debug:
>>>>> +    print 'rb url=',rb_url
>>>>> +
>>>>> +  git_command="git diff " + opt.branch + " > " + patch_file
>>>>> +  if opt.debug:
>>>>> +    print git_command
>>>>> +  p=os.popen(git_command)
>>>>> +  p.close()
>>>>> +
>>>>> +  print 'Creating diff against', opt.branch, 'and uploading patch to
>>>>> JIRA',opt.jira
>>>>> +  jira=get_jira()
>>>>> +  issue = jira.issue(opt.jira)
>>>>> +  attachment=open(patch_file)
>>>>> +  jira.add_attachment(issue,attachment)
>>>>> +  attachment.close()
>>>>> +
>>>>> +  comment="Created reviewboard "
>>>>> +  if not opt.reviewboard:
>>>>> +    print 'Created a new reviewboard ',rb_url
>>>>> +  else:
>>>>> +    print 'Updated reviewboard',opt.reviewboard
>>>>> +    comment="Updated reviewboard "
>>>>> +
>>>>> +  comment = comment + rb_url
>>>>> +  jira.add_comment(opt.jira, comment)
>>>>> +
>>>>> +if __name__ == '__main__':
>>>>> +  sys.exit(main())
>>>>> +
>>>>>
>>>>>
>>>>
>>>
>

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Posted by Yash Sharma <ya...@gmail.com>.
Oh. I was confused with the via thing. So I used the style in the commit
doc. It had the name of author after via.
Will update doc as well :)

Thanks

On Mon, Aug 3, 2015 at 12:11 PM, Rajat Khandelwal <pr...@apache.org> wrote:

> Yes. And the via thing is wrong in your commit message. It's other way
> round.
>
> On Mon, Aug 3, 2015, 11:59 Yash Sharma <ya...@gmail.com> wrote:
>
>> Oh my bad. The most recent file is named LENS-541_01.patch.
>> I picked the one with name LENS-541.03.patch.
>>
>> On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <am...@gmail.com>
>> wrote:
>>
>>> Rajat,
>>>
>>> Is the commit correct? Seems not. May be the file was not attached on
>>> the jira? The one i reviewed has doc changes not a .py file.
>>>
>>> On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:
>>>
>>>> Repository: incubator-lens
>>>> Updated Branches:
>>>>   refs/heads/master bffa78c97 -> 898e0a82e
>>>>
>>>>
>>>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>>>>
>>>>
>>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
>>>> Commit:
>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
>>>> Tree:
>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
>>>> Diff:
>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>>>>
>>>> Branch: refs/heads/master
>>>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
>>>> Parents: bffa78c
>>>> Author: Rajat Khandelwal <pr...@apache.org>
>>>> Authored: Mon Aug 3 11:49:05 2015 +0530
>>>> Committer: Yash Sharma <ya...@snapdeal.com>
>>>> Committed: Mon Aug 3 11:49:05 2015 +0530
>>>>
>>>> ----------------------------------------------------------------------
>>>>  tools/scripts/lens-patch-review.py | 130
>>>> ++++++++++++++++++++++++++++++++
>>>>  1 file changed, 130 insertions(+)
>>>> ----------------------------------------------------------------------
>>>>
>>>>
>>>>
>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
>>>> ----------------------------------------------------------------------
>>>> diff --git a/tools/scripts/lens-patch-review.py
>>>> b/tools/scripts/lens-patch-review.py
>>>> new file mode 100644
>>>> index 0000000..48cf478
>>>> --- /dev/null
>>>> +++ b/tools/scripts/lens-patch-review.py
>>>> @@ -0,0 +1,130 @@
>>>> +#!/usr/bin/env python
>>>> +
>>>> +# Licensed to the Apache Software Foundation (ASF) under one
>>>> +# or more contributor license agreements.  See the NOTICE file
>>>> +# distributed with this work for additional information
>>>> +# regarding copyright ownership.  The ASF licenses this file
>>>> +# to you under the Apache License, Version 2.0 (the
>>>> +# "License"); you may not use this file except in compliance
>>>> +# with the License.  You may obtain a copy of the License at
>>>> +#
>>>> +# http://www.apache.org/licenses/LICENSE-2.0
>>>> +#
>>>> +# Unless required by applicable law or agreed to in writing, software
>>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> +# See the License for the specific language governing permissions and
>>>> +# limitations under the License.
>>>> +
>>>> +
>>>> +# Modified based on Kafka's patch review tool
>>>> +
>>>> +# Required Modules:
>>>> +# - python-argparse
>>>> +
>>>> +import argparse
>>>> +import sys
>>>> +import os
>>>> +import time
>>>> +import datetime
>>>> +import tempfile
>>>> +from jira.client import JIRA
>>>> +
>>>> +def get_jira():
>>>> +  options = {
>>>> +    'server': 'https://issues.apache.org/jira'
>>>> +  }
>>>> +  # read the config file
>>>> +  home=jira_home=os.getenv('HOME')
>>>> +  home=home.rstrip('/')
>>>> +  jira_config = dict(line.strip().split('=') for line in open(home +
>>>> '/jira.ini'))
>>>> +  jira = JIRA(options,basic_auth=(jira_config['user'],
>>>> jira_config['password']))
>>>> +  return jira
>>>> +
>>>> +def main():
>>>> +  ''' main(), shut up, pylint '''
>>>> +  popt = argparse.ArgumentParser(description='Apache Lens patch review
>>>> tool')
>>>> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
>>>> required=True, help='Tracking branch to create diff against')
>>>> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
>>>> required=True, help='JIRA corresponding to the reviewboard')
>>>> +  popt.add_argument('-s', '--summary', action='store', dest='summary',
>>>> required=False, help='Summary for the reviewboard')
>>>> +  popt.add_argument('-d', '--description', action='store',
>>>> dest='description', required=False, help='Description for reviewboard')
>>>> +  popt.add_argument('-r', '--rb', action='store', dest='reviewboard',
>>>> required=False, help='Review board that needs to be updated')
>>>> +  popt.add_argument('-t', '--testing-done', action='store',
>>>> dest='testing', required=False, help='Text for the Testing Done section of
>>>> the reviewboard')
>>>> +  popt.add_argument('-db', '--debug', action='store_true',
>>>> required=False, help='Enable debug mode')
>>>> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
>>>> dest='reviewboard_user', required=True, help='Review board user name')
>>>> +  popt.add_argument('-rbp', '--reviewboard-password', action='store',
>>>> dest='reviewboard_password', required=True, help='Review board user
>>>> password')
>>>> +  popt.add_argument('-v', '--version', action='store', dest='version',
>>>> required=False, help='Version for patch')
>>>> +  opt = popt.parse_args()
>>>> +
>>>> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." +
>>>> opt.version + ".patch"
>>>> +  if opt.reviewboard:
>>>> +    ts = time.time()
>>>> +    st =
>>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
>>>> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
>>>> '.patch'
>>>> +
>>>> +  git_remote_update="git remote update"
>>>> +  print "Updating your remote branches to pull the latest changes"
>>>> +  p=os.popen(git_remote_update)
>>>> +  p.close()
>>>> +
>>>> +  rb_command="post-review --publish --tracking-branch " + opt.branch +
>>>> " --target-groups=lens --bugs-closed=" + opt.jira
>>>> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
>>>> --password " + opt.reviewboard_password
>>>> +
>>>> +  if opt.debug:
>>>> +    rb_command=rb_command + " --debug"
>>>> +  summary="Patch for " + opt.jira
>>>> +  if opt.summary:
>>>> +    summary=opt.summary
>>>> +  rb_command=rb_command + " --summary \"" + summary + "\""
>>>> +  if opt.description:
>>>> +    rb_command=rb_command + " --description \"" + opt.description +
>>>> "\""
>>>> +  if opt.reviewboard:
>>>> +    rb_command=rb_command + " -r " + opt.reviewboard
>>>> +  if opt.testing:
>>>> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
>>>> +  if opt.debug:
>>>> +    print rb_command
>>>> +  p=os.popen(rb_command)
>>>> +  rb_url=""
>>>> +  for line in p:
>>>> +    print line
>>>> +    if line.startswith('http'):
>>>> +      rb_url = line
>>>> +    elif line.startswith("There don't seem to be any diffs"):
>>>> +      print 'ERROR: Your reviewboard was not created/updated since
>>>> there was no diff to upload. The reasons that can cause this issue are 1)
>>>> Your diff is not checked into your local branch. Please check in the diff
>>>> to the local branch and retry 2) You are not specifying the local branch
>>>> name as part of the --branch option. Please specify the remote branch name
>>>> obtained from git branch -r'
>>>> +      p.close()
>>>> +      sys.exit(1)
>>>> +    elif line.startswith("Your review request still exists, but the
>>>> diff is not attached") and not opt.debug:
>>>> +      print 'ERROR: Your reviewboard was not created/updated. Please
>>>> run the script with the --debug option to troubleshoot the problem'
>>>> +      p.close()
>>>> +      sys.exit(1)
>>>> +  p.close()
>>>> +  if opt.debug:
>>>> +    print 'rb url=',rb_url
>>>> +
>>>> +  git_command="git diff " + opt.branch + " > " + patch_file
>>>> +  if opt.debug:
>>>> +    print git_command
>>>> +  p=os.popen(git_command)
>>>> +  p.close()
>>>> +
>>>> +  print 'Creating diff against', opt.branch, 'and uploading patch to
>>>> JIRA',opt.jira
>>>> +  jira=get_jira()
>>>> +  issue = jira.issue(opt.jira)
>>>> +  attachment=open(patch_file)
>>>> +  jira.add_attachment(issue,attachment)
>>>> +  attachment.close()
>>>> +
>>>> +  comment="Created reviewboard "
>>>> +  if not opt.reviewboard:
>>>> +    print 'Created a new reviewboard ',rb_url
>>>> +  else:
>>>> +    print 'Updated reviewboard',opt.reviewboard
>>>> +    comment="Updated reviewboard "
>>>> +
>>>> +  comment = comment + rb_url
>>>> +  jira.add_comment(opt.jira, comment)
>>>> +
>>>> +if __name__ == '__main__':
>>>> +  sys.exit(main())
>>>> +
>>>>
>>>>
>>>
>>

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Posted by Rajat Khandelwal <pr...@apache.org>.
Yes. And the via thing is wrong in your commit message. It's other way
round.

On Mon, Aug 3, 2015, 11:59 Yash Sharma <ya...@gmail.com> wrote:

> Oh my bad. The most recent file is named LENS-541_01.patch.
> I picked the one with name LENS-541.03.patch.
>
> On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <am...@gmail.com>
> wrote:
>
>> Rajat,
>>
>> Is the commit correct? Seems not. May be the file was not attached on the
>> jira? The one i reviewed has doc changes not a .py file.
>>
>> On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:
>>
>>> Repository: incubator-lens
>>> Updated Branches:
>>>   refs/heads/master bffa78c97 -> 898e0a82e
>>>
>>>
>>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
>>> Commit:
>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
>>> Tree:
>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
>>> Diff:
>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>>>
>>> Branch: refs/heads/master
>>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
>>> Parents: bffa78c
>>> Author: Rajat Khandelwal <pr...@apache.org>
>>> Authored: Mon Aug 3 11:49:05 2015 +0530
>>> Committer: Yash Sharma <ya...@snapdeal.com>
>>> Committed: Mon Aug 3 11:49:05 2015 +0530
>>>
>>> ----------------------------------------------------------------------
>>>  tools/scripts/lens-patch-review.py | 130
>>> ++++++++++++++++++++++++++++++++
>>>  1 file changed, 130 insertions(+)
>>> ----------------------------------------------------------------------
>>>
>>>
>>>
>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
>>> ----------------------------------------------------------------------
>>> diff --git a/tools/scripts/lens-patch-review.py
>>> b/tools/scripts/lens-patch-review.py
>>> new file mode 100644
>>> index 0000000..48cf478
>>> --- /dev/null
>>> +++ b/tools/scripts/lens-patch-review.py
>>> @@ -0,0 +1,130 @@
>>> +#!/usr/bin/env python
>>> +
>>> +# Licensed to the Apache Software Foundation (ASF) under one
>>> +# or more contributor license agreements.  See the NOTICE file
>>> +# distributed with this work for additional information
>>> +# regarding copyright ownership.  The ASF licenses this file
>>> +# to you under the Apache License, Version 2.0 (the
>>> +# "License"); you may not use this file except in compliance
>>> +# with the License.  You may obtain a copy of the License at
>>> +#
>>> +# http://www.apache.org/licenses/LICENSE-2.0
>>> +#
>>> +# Unless required by applicable law or agreed to in writing, software
>>> +# distributed under the License is distributed on an "AS IS" BASIS,
>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> +# See the License for the specific language governing permissions and
>>> +# limitations under the License.
>>> +
>>> +
>>> +# Modified based on Kafka's patch review tool
>>> +
>>> +# Required Modules:
>>> +# - python-argparse
>>> +
>>> +import argparse
>>> +import sys
>>> +import os
>>> +import time
>>> +import datetime
>>> +import tempfile
>>> +from jira.client import JIRA
>>> +
>>> +def get_jira():
>>> +  options = {
>>> +    'server': 'https://issues.apache.org/jira'
>>> +  }
>>> +  # read the config file
>>> +  home=jira_home=os.getenv('HOME')
>>> +  home=home.rstrip('/')
>>> +  jira_config = dict(line.strip().split('=') for line in open(home +
>>> '/jira.ini'))
>>> +  jira = JIRA(options,basic_auth=(jira_config['user'],
>>> jira_config['password']))
>>> +  return jira
>>> +
>>> +def main():
>>> +  ''' main(), shut up, pylint '''
>>> +  popt = argparse.ArgumentParser(description='Apache Lens patch review
>>> tool')
>>> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
>>> required=True, help='Tracking branch to create diff against')
>>> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
>>> required=True, help='JIRA corresponding to the reviewboard')
>>> +  popt.add_argument('-s', '--summary', action='store', dest='summary',
>>> required=False, help='Summary for the reviewboard')
>>> +  popt.add_argument('-d', '--description', action='store',
>>> dest='description', required=False, help='Description for reviewboard')
>>> +  popt.add_argument('-r', '--rb', action='store', dest='reviewboard',
>>> required=False, help='Review board that needs to be updated')
>>> +  popt.add_argument('-t', '--testing-done', action='store',
>>> dest='testing', required=False, help='Text for the Testing Done section of
>>> the reviewboard')
>>> +  popt.add_argument('-db', '--debug', action='store_true',
>>> required=False, help='Enable debug mode')
>>> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
>>> dest='reviewboard_user', required=True, help='Review board user name')
>>> +  popt.add_argument('-rbp', '--reviewboard-password', action='store',
>>> dest='reviewboard_password', required=True, help='Review board user
>>> password')
>>> +  popt.add_argument('-v', '--version', action='store', dest='version',
>>> required=False, help='Version for patch')
>>> +  opt = popt.parse_args()
>>> +
>>> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." + opt.version
>>> + ".patch"
>>> +  if opt.reviewboard:
>>> +    ts = time.time()
>>> +    st =
>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
>>> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
>>> '.patch'
>>> +
>>> +  git_remote_update="git remote update"
>>> +  print "Updating your remote branches to pull the latest changes"
>>> +  p=os.popen(git_remote_update)
>>> +  p.close()
>>> +
>>> +  rb_command="post-review --publish --tracking-branch " + opt.branch +
>>> " --target-groups=lens --bugs-closed=" + opt.jira
>>> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
>>> --password " + opt.reviewboard_password
>>> +
>>> +  if opt.debug:
>>> +    rb_command=rb_command + " --debug"
>>> +  summary="Patch for " + opt.jira
>>> +  if opt.summary:
>>> +    summary=opt.summary
>>> +  rb_command=rb_command + " --summary \"" + summary + "\""
>>> +  if opt.description:
>>> +    rb_command=rb_command + " --description \"" + opt.description + "\""
>>> +  if opt.reviewboard:
>>> +    rb_command=rb_command + " -r " + opt.reviewboard
>>> +  if opt.testing:
>>> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
>>> +  if opt.debug:
>>> +    print rb_command
>>> +  p=os.popen(rb_command)
>>> +  rb_url=""
>>> +  for line in p:
>>> +    print line
>>> +    if line.startswith('http'):
>>> +      rb_url = line
>>> +    elif line.startswith("There don't seem to be any diffs"):
>>> +      print 'ERROR: Your reviewboard was not created/updated since
>>> there was no diff to upload. The reasons that can cause this issue are 1)
>>> Your diff is not checked into your local branch. Please check in the diff
>>> to the local branch and retry 2) You are not specifying the local branch
>>> name as part of the --branch option. Please specify the remote branch name
>>> obtained from git branch -r'
>>> +      p.close()
>>> +      sys.exit(1)
>>> +    elif line.startswith("Your review request still exists, but the
>>> diff is not attached") and not opt.debug:
>>> +      print 'ERROR: Your reviewboard was not created/updated. Please
>>> run the script with the --debug option to troubleshoot the problem'
>>> +      p.close()
>>> +      sys.exit(1)
>>> +  p.close()
>>> +  if opt.debug:
>>> +    print 'rb url=',rb_url
>>> +
>>> +  git_command="git diff " + opt.branch + " > " + patch_file
>>> +  if opt.debug:
>>> +    print git_command
>>> +  p=os.popen(git_command)
>>> +  p.close()
>>> +
>>> +  print 'Creating diff against', opt.branch, 'and uploading patch to
>>> JIRA',opt.jira
>>> +  jira=get_jira()
>>> +  issue = jira.issue(opt.jira)
>>> +  attachment=open(patch_file)
>>> +  jira.add_attachment(issue,attachment)
>>> +  attachment.close()
>>> +
>>> +  comment="Created reviewboard "
>>> +  if not opt.reviewboard:
>>> +    print 'Created a new reviewboard ',rb_url
>>> +  else:
>>> +    print 'Updated reviewboard',opt.reviewboard
>>> +    comment="Updated reviewboard "
>>> +
>>> +  comment = comment + rb_url
>>> +  jira.add_comment(opt.jira, comment)
>>> +
>>> +if __name__ == '__main__':
>>> +  sys.exit(main())
>>> +
>>>
>>>
>>
>

Re: incubator-lens git commit: LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)

Posted by Yash Sharma <ya...@gmail.com>.
Oh my bad. The most recent file is named LENS-541_01.patch.
I picked the one with name LENS-541.03.patch.

On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <am...@gmail.com>
wrote:

> Rajat,
>
> Is the commit correct? Seems not. May be the file was not attached on the
> jira? The one i reviewed has doc changes not a .py file.
>
> On Mon, Aug 3, 2015 at 11:51 AM, <ya...@apache.org> wrote:
>
>> Repository: incubator-lens
>> Updated Branches:
>>   refs/heads/master bffa78c97 -> 898e0a82e
>>
>>
>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal)
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
>> Commit:
>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82
>> Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82
>> Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82
>>
>> Branch: refs/heads/master
>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf
>> Parents: bffa78c
>> Author: Rajat Khandelwal <pr...@apache.org>
>> Authored: Mon Aug 3 11:49:05 2015 +0530
>> Committer: Yash Sharma <ya...@snapdeal.com>
>> Committed: Mon Aug 3 11:49:05 2015 +0530
>>
>> ----------------------------------------------------------------------
>>  tools/scripts/lens-patch-review.py | 130 ++++++++++++++++++++++++++++++++
>>  1 file changed, 130 insertions(+)
>> ----------------------------------------------------------------------
>>
>>
>>
>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py
>> ----------------------------------------------------------------------
>> diff --git a/tools/scripts/lens-patch-review.py
>> b/tools/scripts/lens-patch-review.py
>> new file mode 100644
>> index 0000000..48cf478
>> --- /dev/null
>> +++ b/tools/scripts/lens-patch-review.py
>> @@ -0,0 +1,130 @@
>> +#!/usr/bin/env python
>> +
>> +# Licensed to the Apache Software Foundation (ASF) under one
>> +# or more contributor license agreements.  See the NOTICE file
>> +# distributed with this work for additional information
>> +# regarding copyright ownership.  The ASF licenses this file
>> +# to you under the Apache License, Version 2.0 (the
>> +# "License"); you may not use this file except in compliance
>> +# with the License.  You may obtain a copy of the License at
>> +#
>> +# http://www.apache.org/licenses/LICENSE-2.0
>> +#
>> +# Unless required by applicable law or agreed to in writing, software
>> +# distributed under the License is distributed on an "AS IS" BASIS,
>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> +# See the License for the specific language governing permissions and
>> +# limitations under the License.
>> +
>> +
>> +# Modified based on Kafka's patch review tool
>> +
>> +# Required Modules:
>> +# - python-argparse
>> +
>> +import argparse
>> +import sys
>> +import os
>> +import time
>> +import datetime
>> +import tempfile
>> +from jira.client import JIRA
>> +
>> +def get_jira():
>> +  options = {
>> +    'server': 'https://issues.apache.org/jira'
>> +  }
>> +  # read the config file
>> +  home=jira_home=os.getenv('HOME')
>> +  home=home.rstrip('/')
>> +  jira_config = dict(line.strip().split('=') for line in open(home +
>> '/jira.ini'))
>> +  jira = JIRA(options,basic_auth=(jira_config['user'],
>> jira_config['password']))
>> +  return jira
>> +
>> +def main():
>> +  ''' main(), shut up, pylint '''
>> +  popt = argparse.ArgumentParser(description='Apache Lens patch review
>> tool')
>> +  popt.add_argument('-b', '--branch', action='store', dest='branch',
>> required=True, help='Tracking branch to create diff against')
>> +  popt.add_argument('-j', '--jira', action='store', dest='jira',
>> required=True, help='JIRA corresponding to the reviewboard')
>> +  popt.add_argument('-s', '--summary', action='store', dest='summary',
>> required=False, help='Summary for the reviewboard')
>> +  popt.add_argument('-d', '--description', action='store',
>> dest='description', required=False, help='Description for reviewboard')
>> +  popt.add_argument('-r', '--rb', action='store', dest='reviewboard',
>> required=False, help='Review board that needs to be updated')
>> +  popt.add_argument('-t', '--testing-done', action='store',
>> dest='testing', required=False, help='Text for the Testing Done section of
>> the reviewboard')
>> +  popt.add_argument('-db', '--debug', action='store_true',
>> required=False, help='Enable debug mode')
>> +  popt.add_argument('-rbu', '--reviewboard-user', action='store',
>> dest='reviewboard_user', required=True, help='Review board user name')
>> +  popt.add_argument('-rbp', '--reviewboard-password', action='store',
>> dest='reviewboard_password', required=True, help='Review board user
>> password')
>> +  popt.add_argument('-v', '--version', action='store', dest='version',
>> required=False, help='Version for patch')
>> +  opt = popt.parse_args()
>> +
>> +  patch_file=tempfile.gettempdir() + "/" + opt.jira + "." + opt.version
>> + ".patch"
>> +  if opt.reviewboard:
>> +    ts = time.time()
>> +    st =
>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S')
>> +    patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st +
>> '.patch'
>> +
>> +  git_remote_update="git remote update"
>> +  print "Updating your remote branches to pull the latest changes"
>> +  p=os.popen(git_remote_update)
>> +  p.close()
>> +
>> +  rb_command="post-review --publish --tracking-branch " + opt.branch + "
>> --target-groups=lens --bugs-closed=" + opt.jira
>> +  rb_command=rb_command + " --username " + opt.reviewboard_user + "
>> --password " + opt.reviewboard_password
>> +
>> +  if opt.debug:
>> +    rb_command=rb_command + " --debug"
>> +  summary="Patch for " + opt.jira
>> +  if opt.summary:
>> +    summary=opt.summary
>> +  rb_command=rb_command + " --summary \"" + summary + "\""
>> +  if opt.description:
>> +    rb_command=rb_command + " --description \"" + opt.description + "\""
>> +  if opt.reviewboard:
>> +    rb_command=rb_command + " -r " + opt.reviewboard
>> +  if opt.testing:
>> +    rb_command=rb_command + " --testing-done=\"" + opt.testing + "\""
>> +  if opt.debug:
>> +    print rb_command
>> +  p=os.popen(rb_command)
>> +  rb_url=""
>> +  for line in p:
>> +    print line
>> +    if line.startswith('http'):
>> +      rb_url = line
>> +    elif line.startswith("There don't seem to be any diffs"):
>> +      print 'ERROR: Your reviewboard was not created/updated since there
>> was no diff to upload. The reasons that can cause this issue are 1) Your
>> diff is not checked into your local branch. Please check in the diff to the
>> local branch and retry 2) You are not specifying the local branch name as
>> part of the --branch option. Please specify the remote branch name obtained
>> from git branch -r'
>> +      p.close()
>> +      sys.exit(1)
>> +    elif line.startswith("Your review request still exists, but the diff
>> is not attached") and not opt.debug:
>> +      print 'ERROR: Your reviewboard was not created/updated. Please run
>> the script with the --debug option to troubleshoot the problem'
>> +      p.close()
>> +      sys.exit(1)
>> +  p.close()
>> +  if opt.debug:
>> +    print 'rb url=',rb_url
>> +
>> +  git_command="git diff " + opt.branch + " > " + patch_file
>> +  if opt.debug:
>> +    print git_command
>> +  p=os.popen(git_command)
>> +  p.close()
>> +
>> +  print 'Creating diff against', opt.branch, 'and uploading patch to
>> JIRA',opt.jira
>> +  jira=get_jira()
>> +  issue = jira.issue(opt.jira)
>> +  attachment=open(patch_file)
>> +  jira.add_attachment(issue,attachment)
>> +  attachment.close()
>> +
>> +  comment="Created reviewboard "
>> +  if not opt.reviewboard:
>> +    print 'Created a new reviewboard ',rb_url
>> +  else:
>> +    print 'Updated reviewboard',opt.reviewboard
>> +    comment="Updated reviewboard "
>> +
>> +  comment = comment + rb_url
>> +  jira.add_comment(opt.jira, comment)
>> +
>> +if __name__ == '__main__':
>> +  sys.exit(main())
>> +
>>
>>
>