RBTools not working.

77 views
Skip to first unread message

Agoston David

unread,
Jul 13, 2023, 3:22:47 PM7/13/23
to Review Board Community
Hi,

I successfully managed to install and configure a reviewboard server on my intranet.

I am accessing the reviewboard via an Nginx reverse proxy.

The site itself looks good and works as an I expected.

I configure two repos, one self-hosted gitlab repo and a subversion repo.

When I try to run "rbt post" in  this repos, I get errors: (arch Linux)

In the subversion repo:
"> rbt post  
CRITICAL: 'ListResource' object has no attribute 'get_diffs'"

In the git repo:
> rbt post
Validating commits...                                                      [0/1]
CRITICAL: This ValidateDiffCommitResource does not have an attribute "validation_info".



I am not found any helpful help with Google or with GPT4 :)

Here are the "-d" outputs:
Subversion:
> rbt post -d
>>> RBTools 4.1
>>> Python 3.11.3 (main, Apr  5 2023, 15:52:25) [GCC 12.2.1 20230201]
>>> Running on Linux-6.1.31-1-lts-x86_64-with-glibc2.37
>>> Home = /home/as
>>> Current directory = /home/as/work/buildbot
>>> Command line: rbt post -d
>>> Making HTTP GET request to http://review.YYY.com/api/
>>> [scan] Checking for available SCMs for /home/as/work/buildbot...
>>> [scan] Considering all repository types
>>> [scan] Skipping Bazaar: Command line tools (one of ('brz', 'bzr')) are missing.
>>> [scan] Skipping VersionVault / ClearCase: Command line tools ('cleartool') are missing.
>>> [scan] Skipping CVS: Command line tools ('cvs') are missing.
>>> [scan] Checking for a Git repository...
>>> Running: git rev-parse --git-dir
>>> Command exited with rc=128 (errors ignored): git rev-parse --git-dir
>>> Command stdout=b'fatal: not a git repository (or any parent up to mount point /home/as)\nStopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).\n'
>>> Command stderr=None
>>> [scan] Checking for a Mercurial repository...
>>> Running: hg showconfig
>>> [scan] Skipping Perforce: Command line tools ('p4') are missing.
>>> [scan] Skipping Plastic: Command line tools ('cm') are missing.
>>> [scan] Skipping Cliosoft SOS: Command line tools ('soscmd') are missing.
>>> [scan] Checking for a Subversion repository...
>>> Running: svn --non-interactive info
>>> Running: tf vc help
>>> Command not found (tf vc help)
>>> [scan] Skipping Team Foundation Server: Command line tools (one of ('VS2017+ tf', 'Team Explorer Everywhere tf.cmd', 'Our wrapper (rbt install tfs)')) are missing.
>>> [scan] SCM scan complete. Found svn (/home/as/work/buildbot)
>>> [scan] Verifying repository information...
>>> Running: svn --non-interactive --version -q
>>> [scan] Successfully found repository information: <SVNRepositoryInfo(path='svn://svn.YYY.us/buildbot', base_path='/', local_path='/home/as/work/buildbot')>
>>> [diff tool scan] Scanning for installed diff tools...
>>> Running: /usr/bin/diff --version
>>> [diff tool scan] Found GNU Diff (diff (GNU diffutils) 3.10)
>>> Running: /usr/bin/diff --version
>>> [diff tool scan] Scan complete.
>>> Making HTTP GET request to http://review.YYY.com/api/repositories/?name=buildbot&only-fields=id%2Cname%2Cmirror_path%2Cpath&only-links=info&tool=Subversion
>>> HTTP GET request to http://review.YYY.com/api/repositories/?name=buildbot&only-fields=id%2Cname%2Cmirror_path%2Cpath&only-links=info&tool=Subversion cannot be cached
>>> Making HTTP GET request to http://review.YYY.com/api/repositories/2/info/
>>> HTTP GET request to http://review.YYY.com/api/repositories/2/info/ cannot be cached
>>> Running: svn --non-interactive status -q --ignore-externals
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE --no-diff-deleted
>>> Running: svn --non-interactive info scripts/aa_pinball_env
>>> Running: svn --non-interactive info scripts
>>> Making HTTP GET request to http://review.YYY.com/api/validation/diffs/
>>> HTTP GET request to http://review.YYY.com/api/validation/diffs/ cannot be cached
>>> Making HTTP POST request to http://review.YYY.com/api/validation/diffs/
>>> Making HTTP GET request to http://review.YYY.com/api/review-requests/?only-fields=&only-links=create
>>> HTTP GET request to http://review.YYY.com/api/review-requests/?only-fields=&only-links=create cannot be cached
>>> Making HTTP POST request to http://review.YYY.com/api/review-requests/
Traceback (most recent call last):
  File "/home/as/.local/bin/rbt", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/main.py", line 207, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/__init__.py", line 1118, in run_from_argv
    exit_code = self.main(*args) or 0
                ^^^^^^^^^^^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/post.py", line 968, in main
    review_request_id, review_request_url = self.post_request(
                                            ^^^^^^^^^^^^^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/post.py", line 675, in post_request
    review_request.get_diffs(only_fields='').upload_diff(
    ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ListResource' object has no attribute 'get_diffs'

Git:
> rbt post -d
>>> RBTools 4.1
>>> Python 3.11.3 (main, Apr  5 2023, 15:52:25) [GCC 12.2.1 20230201]
>>> Running on Linux-6.1.31-1-lts-x86_64-with-glibc2.37
>>> Home = /home/as
>>> Current directory = /home/as/work_ssd/ansible
>>> Command line: rbt post -d
>>> Making HTTP GET request to http://review.YYY.com/api/
>>> [scan] Checking for available SCMs for /home/as/work_ssd/ansible...
>>> [scan] Considering all repository types
>>> [scan] Skipping Bazaar: Command line tools (one of ('brz', 'bzr')) are missing.
>>> [scan] Skipping VersionVault / ClearCase: Command line tools ('cleartool') are missing.
>>> [scan] Skipping CVS: Command line tools ('cvs') are missing.
>>> [scan] Checking for a Git repository...
>>> Running: git rev-parse --git-dir
>>> Running: git config --get core.bare
>>> Running: git rev-parse --show-toplevel
>>> [scan] Checking for a Mercurial repository...
>>> Running: hg showconfig
>>> [scan] Skipping Perforce: Command line tools ('p4') are missing.
>>> [scan] Skipping Plastic: Command line tools ('cm') are missing.
>>> [scan] Skipping Cliosoft SOS: Command line tools ('soscmd') are missing.
>>> [scan] Checking for a Subversion repository...
>>> Running: svn --non-interactive info
>>> Command exited with rc=1 (errors ignored): svn --non-interactive info
>>> Command stdout=b''
>>> Command stderr=b"svn: E155007: '/home/as/work_ssd/ansible' is not a working copy\n"
>>> Running: tf vc help
>>> Command not found (tf vc help)
>>> [scan] Skipping Team Foundation Server: Command line tools (one of ('VS2017+ tf', 'Team Explorer Everywhere tf.cmd', 'Our wrapper (rbt install tfs)')) are missing.
>>> [scan] SCM scan complete. Found git (/home/as/work_ssd/ansible)
>>> [scan] Verifying repository information...
>>> Running: git rev-parse --git-dir
>>> Running: git config --get core.bare
>>> Running: git rev-parse --show-toplevel
>>> Running: git symbolic-ref -q HEAD
>>> Running: git show-ref --verify refs/remotes/p4/master
>>> Command errored with rc=128: git show-ref --verify refs/remotes/p4/master
>>> Command stdout=b''
>>> Command stderr=b"fatal: 'refs/remotes/p4/master' - not a valid ref\n"
>>> Running: git config --get branch.ssh.merge
>>> Running: git config --get branch.ssh.remote
>>> Running: git config --get remote.origin.url
>>> [scan] Successfully found repository information: <RepositoryInfo(path='g...@git.YYY.us:YYY/ansible.git', base_path='', local_path='/home/as/work_ssd/ansible')>
>>> Making HTTP GET request to http://review.YYY.com/api/repositories/?name=Ansible+GitLab&only-fields=id%2Cname%2Cmirror_path%2Cpath&only-links=info&tool=Git%2CPerforce%2CSubversion
>>> HTTP GET request to http://review.YYY.com/api/repositories/?name=Ansible+GitLab&only-fields=id%2Cname%2Cmirror_path%2Cpath&only-links=info&tool=Git%2CPerforce%2CSubversion cannot be cached
>>> Making HTTP GET request to http://review.YYY.com/api/repositories/1/info/
>>> Got API Error 209 (HTTP code 501): The specified repository is not able to perform this action.
>>> Error data: {'err': {'code': 209, 'msg': 'The specified repository is not able to perform this action.'}, 'stat': 'fail'}
>>> Running: git rev-parse refs/heads/ssh
>>> Running: git config --get branch.ssh.merge
>>> Running: git config --get branch.ssh.remote
>>> Running: git branch --remotes
>>> Running: git rev-parse origin/ssh
>>> Running: git rev-list dd0df75205c6f501f48b6cb9654119a9dc50d513 --not --remotes=origin
>>> Running: git status --porcelain --untracked-files=no --ignore-submodules=dirty
>>> Running: git log -z --reverse --pretty=format:%H%x1f%P%x1f%an%x1f%ae%x1f%ad%x1f%cn%x1f%ce%x1f%cd%x1f%B --date=iso8601-strict dd0df75205c6f501f48b6cb9654119a9dc50d513..b616754ad91b6e07f33d77c56956c1d9b62bd84a
>>> Running: git version
>>> Running: git -c core.quotepath=false -c diff.noprefix=false diff --no-color --full-index --ignore-submodules --find-renames --no-ext-diff dd0df75205c6f501f48b6cb9654119a9dc50d513..b616754ad91b6e07f33d77c56956c1d9b62bd84a
>>> Running: git -c core.quotepath=false -c diff.noprefix=false diff --no-color --full-index --ignore-submodules --find-renames --no-ext-diff dd0df75205c6f501f48b6cb9654119a9dc50d513..b616754ad91b6e07f33d77c56956c1d9b62bd84a
>>> Making HTTP GET request to http://review.YYY.com/api/validation/commits/
>>> HTTP GET request to http://review.YYY.com/api/validation/commits/ cannot be cached
Validating commits...                                                      [0/1]>>> Making HTTP POST request to http://review.YYY.com/api/validation/commits/
Validating commits...                                                      [0/1]
Traceback (most recent call last):
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/api/resource.py", line 848, in __getattr__
    field_payload = self._fields[name]
                    ~~~~~~~~~~~~^^^^^^
KeyError: 'validation_info'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/as/.local/bin/rbt", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/main.py", line 207, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/__init__.py", line 1118, in run_from_argv
    exit_code = self.main(*args) or 0
                ^^^^^^^^^^^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/post.py", line 957, in main
    diff_history = self._validate_diff_history(diff_history)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/commands/post.py", line 1594, in _validate_diff_history
    validation_info = validation_rsp.validation_info
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/api/resource.py", line 850, in __getattr__
    raise AttributeError('This %s does not have an attribute "%s".'
AttributeError: This ValidateDiffCommitResource does not have an attribute "validation_info".

Christian Hammond

unread,
Jul 14, 2023, 4:04:55 PM7/14/23
to revie...@googlegroups.com
Hi Agoston,

Can you verify for me which version of Review Board is installed?

It looks like while HTTP GET operations are working fine, HTTP POST operations are coming back with some kind of results that aren't expected.

To debug this, we'll need to know a bit more about what it's seeing. Can you:

1. Check your reviewboard.log on the Review Board server (enable this and repeat the test if not enabled), and see if it's showing any errors on that end?

2. If you're comfortable with it, hand-modify /home/as/.local/pipx/venvs/rbtools/lib/python3.11/site-packages/rbtools/api/resource.py to be:

            print(self._payload)
            raise AttributeError('This %s does not have an attribute "%s".'
                                 % (self.__class__.__name__, name))

   This is temporary. We'll just want to see what it's getting back from that request.

3. Re-attempt the same Git test and see what output we get. (Make sure there's no sensitive information included before posting results.)

Christian

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "Review Board Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/reviewboard/124f4ebe-6bcf-4d1c-83fc-baab2c6166b6n%40googlegroups.com.


--
Christian Hammond
President/CEO of Beanbag
Makers of Review Board

Agoston David

unread,
Jul 17, 2023, 8:37:36 AM7/17/23
to Review Board Community
ReviewBoard==5.0.5
RBTools 4.1 (Python 3.11.3)

I made the requested modification and as I can see it will be prints a lot to the attached logs.

in the git repo:
>rbt post -d
output:
find the attached file : rbt_post_git_out.txt 
reviewboard.log :
2023-07-17 12:21:17,001 - ERROR - None - as - /api/repositories/1/info/ - django.request - Not Implemented: /api/repositories/1/info/

in the svn repo:
>rbt post -d
output:
find the attached file : rbt_post_svn_out.txt 
reviewboard.log :
 - no new entry

please tell If I can provide any more information or run any new tests.
David
rbt_post_git_out.txt
rbt_post_svn_out.txt

Agoston David

unread,
Jul 18, 2023, 8:19:50 AM7/18/23
to Review Board Community
Dear Christian, 

Your hint: "It looks like while HTTP GET operations are working fine, HTTP POST operations are coming back with some kind of results that aren't expected." helped me find the solution.

The problem was in the reverse proxy configuration; 
this is a snippet of the working config:

location / {    # For regular webserver support
    proxy_pass http://10.4.0.104:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_redirect off;
}

I appreciate your help, 
David

Christian Hammond

unread,
Jul 21, 2023, 7:21:13 PM7/21/23
to revie...@googlegroups.com
Hi David,

I'm glad you got it figured out! What was the missing/fixed piece in the configuration?

Christian

Reply all
Reply to author
Forward
0 new messages