------------------------------------------------------------------------------
To reply, visit https://hellosplat.com/s/beanbag/tickets/4773/
------------------------------------------------------------------------------

New update by charles-dyfis-net
For Beanbag, Inc. > RBTools > Ticket #4773


Reply:

    Here is the output when the process hangs while running the update command. 
This doesn't happen when -u is not specified. This script basically runs when 
jenkins runs to automatically create PR review requests. not sure why its 
hanging if it completes.
    
    cd neb-api && git checkout bc-NEB-4651-default-listing-type-action && yes | 
rbt post --repository=neb-api 
--tracking-branch="origin/bc-NEB-4651-default-listing-type-action" 
--parent="origin/feature-charting" 
--branch="bc-NEB-4651-default-listing-type-action" --guess-fields=auto 
--target-groups=PR_Reviewers --publish --server="http://hidden"; 
--username="admin" --password="hidden" --submit-as="hidden" 
--bugs-closed="NEB-4040" --description="Adds API for default listing type get 
call* NEB-4040 add getListingTypeByName and unit tests* NEB-4040 remove static 
model methods and update unit tests* NEB-4040 add API for default listing 
types* NEB-4040 refactor unit tests and update swagger jira link 
https://hidden.atlassian.net/browse/NEB-4040"; -u -d 
    Your branch is up to date with 
'origin/bc-NEB-4651-default-listing-type-action'.
    Already on 'bc-NEB-4651-default-listing-type-action'
    >>> RBTools 1.0.1
    >>> Python 2.7.14 |Anaconda, Inc.| (default, Dec  7 2017, 11:07:58) 
    [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
    >>> Running on Darwin-17.5.0-x86_64-i386-64bit
    >>> Home = /Users/grantzukel
    >>> Current directory = /Users/grantzukel/Projects/neb-scratch/neb-api
    >>> Command line: rbt post --repository=neb-api 
--tracking-branch=origin/bc-NEB-4651-default-listing-type-action 
--parent=origin/feature-charting 
--branch=bc-NEB-4651-default-listing-type-action --guess-fields=auto 
--target-groups=PR_Reviewers --publish --server=http://hidden --username=hidden 
--password=hidden --submit-as=hidden --bugs-closed=NEB-4040 "--description=Adds 
API for default listing type get call* NEB-4040 add getListingTypeByName and 
unit tests* NEB-4040 remove static model methods and update unit tests* 
NEB-4040 add API for default listing types* NEB-4040 refactor unit tests and 
update swagger jira link https://hidden.atlassian.net/browse/NEB-4040"; -u -d
    >>> Running: tf vc help
    >>> Checking for a Subversion repository...
    >>> Running: svn --non-interactive info
    >>> Command exited with rc 1: [u'svn', u'--non-interactive', u'info']
    >>> Checking for a Git repository...
    >>> Running: git rev-parse --git-dir
    >>> Running: git config core.bare
    >>> Running: git rev-parse --show-toplevel
    >>> Running: git symbolic-ref -q HEAD
    >>> Running: git config --get remote.origin.url
    >>> Repository info: Path: https://@bitbucket.org/hidden/hidden.git, Base 
path: , Supports changesets: False
    >>> Checking for a Mercurial repository...
    >>> Unable to execute "hg --help": skipping Mercurial
    >>> Checking for a CVS repository...
    >>> Unable to execute "cvs": skipping CVS
    >>> Checking for a Perforce repository...
    >>> Unable to execute "p4 help": skipping Perforce
    >>> Checking for a Plastic repository...
    >>> Unable to execute "cm version": skipping Plastic
    >>> Checking for a ClearCase repository...
    >>> Unable to execute "cleartool help": skipping ClearCase
    >>> Checking for a Bazaar repository...
    >>> Unable to execute "bzr help": skipping Bazaar
    >>> Checking for a Team Foundation Server repository...
    >>> Unable to execute "tf help": skipping TFS
    >>> Making HTTP GET request to http://hidden/api/
    >>> Running: git rev-parse 
refs/heads/bc-NEB-4651-default-listing-type-action
    >>> Running: git rev-parse origin/feature-charting
    >>> Running: git rev-list 385d74957e61c071daf5b5ab0a44da493f702f8d --not 
--remotes=origin
    >>> Running: git status --porcelain --untracked-files=no 
--ignore-submodules=dirty
    >>> Running: git version
    >>> Running: git -c core.quotepath=false -c diff.noprefix=false diff 
--no-color --full-index --ignore-submodules -M --no-ext-diff 
385d74957e61c071daf5b5ab0a44da493f702f8d..fe7c71f0d6f5316028d62c64bcda03bd48806bb8
    >>> Generated diff size: 8023 bytes
    >>> Making HTTP GET request to http://hidden/api/validation/diffs/
    >>> Cached response for HTTP GET http://hidden/api/validation/diffs/ 
expired and was modified
    >>> Making HTTP POST request to http://hidden/api/validation/diffs/
    >>> Making HTTP GET request to 
http://hidden/api/repositories/?only-links=&only-fields=id%2Cname%2Cmirror_path%2Cpath
    >>> Cached response for HTTP GET 
http://hidden/api/repositories/?only-links=&only-fields=id%2Cname%2Cmirror_path%2Cpath
 expired and was modified
    >>> Making HTTP GET request to 
http://hidden/api/review-requests/?status=pending&from-user=bcalisch&repository=1&only-fields=id%2Csummary%2Cdescription%2Cdraft%2Curl%2Cabsolute_url&only-links=draft&expand=draft&show-all-unpublished=True
    >>> Cached response for HTTP GET 
http://hidden/api/review-requests/?status=pending&from-user=hidden&repository=1&only-fields=id%2Csummary%2Cdescription%2Cdraft%2Curl%2Cabsolute_url&only-links=draft&expand=draft&show-all-unpublished=True
 expired and was modified
    >>> Running: git log --reverse --pretty=format:%s%n%n%b 
^385d74957e61c071daf5b5ab0a44da493f702f8d 
fe7c71f0d6f5316028d62c64bcda03bd48806bb8
    Update Review Request #67: "NEB-4651 add getListingTypeByName and unit 
tests"?  [Yes/No]: >>> Making HTTP GET request to 
http://reviews.nebula.care/api/review-requests/67/?only-links=diffs%2Cdraft&only-fields=absolute_url%2Cbugs_closed%2Cid%2Cstatus%2Cpublic
    >>> Cached response for HTTP GET 
http://hidden/api/review-requests/67/?only-links=diffs%2Cdraft&only-fields=absolute_url%2Cbugs_closed%2Cid%2Cstatus%2Cpublic
 expired and was not modified
    >>> Making HTTP GET request to 
http://hidden/api/review-requests/67/diffs/?only-fields=
    >>> Cached response for HTTP GET 
http://hidden/api/review-requests/67/diffs/?only-fields= expired and was 
modified
    >>> Making HTTP POST request to http://hidden/api/review-requests/67/diffs/
    >>> Making HTTP GET request to 
http://hidden/api/review-requests/67/draft/?only-fields=commit_id
    >>> Cached response for HTTP GET 
http://hidden/api/review-requests/67/draft/?only-fields=commit_id expired and 
was modified
    >>> Making HTTP PUT request to http://hidden/api/review-requests/67/draft/
    Review request #67 posted.
    
    http://hidden/r/67/
    http://hidden/r/67/diff/
    
    
    
    
    #!/usr/bin/env python
    # encoding=utf8
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    import subprocess
    from subprocess import PIPE
    import json
    import re
    import simplejson as json
    from restkit import Resource, BasicAuth, request
    import os
    import commands
    
    
    def run_command(command):
    
        p = subprocess.Popen(command, stdout=subprocess.PIPE, 
stderr=subprocess.PIPE, shell=True)
        out, err = p.communicate()
        if err:
            if "bash" in command:
                return err
            else:
                if "already been used" in str(err):
                    return err
                else:
                    print err
        return out
    
    def update_jira_ticket_with_comment(ticket_id, reviewboard_link):
        server_url = "https://hidden.atlassian.net/rest/api/2/issue";
        sub_url = ""
        #server_url = os.environ["TICKET_URL"]
        username = os.environ["TICKET_USER"]
        password = os.environ["TICKET_PASSWORD"]
        project = os.environ["TICKET_PROJECT_ID"]
        desc = os.environ["TICKET_DESC"]
        task_summary = os.environ["TICKET_SUMMARY"]
    
        complete_url = server_url + "/" + ticket_id + "/comment"
        headers = { "Content-Type": "application/json"}
        comment_payload = {
            "body": "There is a review board review for this ticket and it can 
be found at the following URL: " + reviewboard_link
        }
        auth = BasicAuth(os.environ["BIT_BUCKET_USER"], 
os.environ["BIT_BUCKET_PASSWORD"])
        resource = Resource(complete_url, filters=[auth])
        response = resource.post(headers={'Content-Type': 'application/json'}, 
payload=json.dumps(comment_payload))
        return response
    
    def clone_repo(bit_bucket_user, bit_bucket_password, repo):
        if os.path.exists("./" + repo):
            print "Repo exists, we will erase it and clone a fresh copy."
            command_output = run_command("rm -rf " + repo)
            curl_command = ("git clone 
https://%s:%[email protected]/hidden/%s.git"; % (bit_bucket_user, 
bit_bucket_password, repo))
            json_returned = run_command(curl_command)
            print "Repo Cloned"
        else:
            print "Repo doesn't exist locally to build the diff for the review 
requests, cloning repo: " + repo
            curl_command = ("git clone 
https://%s:%[email protected]/hidden/%s.git"; % (bit_bucket_user, 
bit_bucket_password, repo))
            json_returned = run_command(curl_command)
            print "Repo Cloned"
    
    def get_bit_bucket_prs(repo, bit_bucket_user, bit_bucket_password):
        curl_command = (
                    "curl 
https://api.bitbucket.org/2.0/repositories/hidden/%s/pullrequests -u %s:%s 
--request GET --header 'Content-Type: application/json'" % (
            repo, bit_bucket_user, bit_bucket_password))
        json_returned = run_command(curl_command)
        json_returned = json_returned.encode('ascii', 'ignore').decode('ascii')
        json_object = json.loads(str(json_returned))
        return json_object
    
    bit_bucket_user = os.environ["BIT_BUCKET_USER"]
    bit_bucket_password = os.environ["BIT_BUCKET_PASSWORD"]
    review_board_user = os.environ["REVIEW_BOARD_USER"]
    review_board_password = os.environ["REVIEW_BOARD_PASSWORD"]
    repo = os.environ["SELECT_REPO"]
    
    print "Clone repo."
    clone_repo(bit_bucket_user, bit_bucket_password, repo)
    json_object = get_bit_bucket_prs(repo, bit_bucket_user, bit_bucket_password)
    
    for obj in json_object["values"]:
    
        origin_branch = obj["destination"]["branch"]["name"]
        branch_being_merged = obj["source"]["branch"]["name"]
        jira_code = obj["title"]
        PR_ID = obj["id"]
        desc = obj["description"].replace("\n", "").strip().replace("\r", "")
        author_username = obj["author"]["username"]
        p = re.compile("(NEB-\d{4})")
        jira_code = p.findall(jira_code)[0]
        jira_link = "https://hidden.atlassian.net/browse/"; + jira_code
        summary = obj["summary"]["raw"].replace("\n", "").strip().replace("\r", 
"") + " jira url " + jira_link
        desc = desc + " jira link " + jira_link
        server_reviews = "http://hidden";
    
    
        try:
            rb_command = ("""cd %s && git checkout %s && rbt post 
--repository=%s --tracking-branch="origin/%s" --parent="origin/%s" 
--branch="%s" --guess-fields=auto --target-groups=%s --publish --server="%s" 
--username="%s" --password="%s" --submit-as="%s" --bugs-closed="%s" 
--description="%s" -d """ % (repo,branch_being_merged, repo, 
branch_being_merged, origin_branch, branch_being_merged, "PR_Reviewers", 
server_reviews, review_board_user, review_board_password, author_username, 
jira_code, desc))
            rb_command_output = run_command(rb_command).encode('utf-8', 
'ignore').decode('utf-8')
            print rb_command_output
    
            if "commit ID specified has already been used" in rb_command_output:
                rb_command = ("""cd %s && git checkout %s && yes | rbt post 
--repository=%s --tracking-branch="origin/%s" --parent="origin/%s" 
--branch="%s" --guess-fields=auto --target-groups=%s --publish --server="%s" 
--username="%s" --password="%s" --submit-as="%s" --bugs-closed="%s" 
--description="%s" -u -d """ % (repo, branch_being_merged, repo, 
branch_being_merged, origin_branch, branch_being_merged,"PR_Reviewers", 
server_reviews, review_board_user, review_board_password, author_username, 
jira_code,desc))
                print rb_command
                #this is the command it hangs on
                rb_command_output = run_command(rb_command).encode('utf-8', 
'ignore').decode('utf-8')
                if rb_command_output:
                    print rb_command_output
                else:
                    print "your review request has been updated."
        except Exception as e:
            print e

-- 
You received this message because you are subscribed to the Google Groups 
"reviewboard-issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/reviewboard-issues.
For more options, visit https://groups.google.com/d/optout.

Reply via email to