Closed Bug 1274297 Opened 8 years ago Closed 8 years ago

'mozreview create-repo' returns AuthorizationError during dev environment setup

Categories

(MozReview Graveyard :: Testing / Development Environment, defect)

Unspecified
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: mars, Unassigned)

Details

When setting up a new development environment, the 'mozreview create-repo ../test-repo' step fails with a 401 AuthenticationError.

Later, when running tests, the tests fail with messages about the missing repo:

$ ./run-tests hgext/reviewboard/tests/test-fetchreviews.t
...
remote: abort: repository /repo/hg/mozilla/test-repo not found!


I have set up environments on Ubuntu 14.04, 16.04, and Debian 8.4, all show this error.


Full traceback:

+ ./mozreview create-repo test-repo
Error running mach:

['create-repo', 'test-repo']

The error occurred in code that was called by the mach command. This is either
a bug in the called code itself or in the way that mach is calling it.

You should consider filing a bug for this issue.

If filing a bug, please include the full output of mach, including this error
message.

The details of the failure are as follows:

AuthorizationError: The username or password was not correct (HTTP 401, API Error 104)

File "/home/vagrant/mozreview/testing/vcttesting/mozreview_mach_commands.py", line 159, in create_repo
http_url, ssh_url, rbid = mr.create_repository(path)
File "/home/vagrant/mozreview/testing/vcttesting/mozreview.py", line 425, in create_repository
bugzilla_url=self.bugzilla_url)
File "/home/vagrant/mozreview/testing/vcttesting/reviewboard/__init__.py", line 52, in add_repository
root = c.get_root()
File "/home/vagrant/mozreview/venv/local/lib/python2.7/site-packages/rbtools/api/client.py", line 21, in get_root
return self._transport.get_root(*args, **kwargs)
File "/home/vagrant/mozreview/venv/local/lib/python2.7/site-packages/rbtools/api/transport/sync.py", line 47, in get_root
return self._execute_request(HttpRequest(self.server.url))
File "/home/vagrant/mozreview/venv/local/lib/python2.7/site-packages/rbtools/api/transport/sync.py", line 84, in _execute_request
rsp = self.server.make_request(request)
File "/home/vagrant/mozreview/venv/local/lib/python2.7/site-packages/rbtools/api/request.py", line 587, in make_request
self.process_error(e.code, e.read())
File "/home/vagrant/mozreview/venv/local/lib/python2.7/site-packages/rbtools/api/request.py", line 560, in process_error
rsp['err']['msg'])
I also verified that the username, password, and API endpoint are all correct when running this step of the setup:

debug> reviewboard endpoint: http://127.0.0.1:55556/
debug> connecting to reviewboard as user admin@example.com, pass: password
This error was being caused by the rbweb container back-end not being able to reach the bmoweb container.

When building a new test environment, the DOCKER_HOST environment variable's value is used as the base URL for the service endpoints.  I had this set to tcp://127.0.0.1.  The bmoweb container was then assigned http://127.0.0.1:someport/ as the base URL, which was then baked into the rbweb container as the rbweb endpoint.  However, the http://127.0.0.1:someport/ address was unreachable from within the rbweb container.  This prevented the rbweb back-end from being able to make an xmlrpc call to bmoweb to validate the admin login credentials, causing create-repo to fail.

I resolved the issue by telling my vagrant guest to use the private_network setting with a static IP, 192.168.33.33.  All container endpoints can now be reached from within every other container via 192.168.33.33.  I then configured the Docker HTTP API and DOCKER_HOST settings to use the static IP and re-built the test environment.  start-local-mozreview works without error and tests are passing.
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.