Glanceclient crashes on mkdir $HOME

Bug #1446096 reported by Thomas Goirand
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Glance Client
Fix Released
High
Unassigned
Kilo
Fix Committed
High
Unassigned

Bug Description

When building glanceclient using Jenkins, glanceclient tries to write into /var/lib/jenkins (which is the $HOME of glanceclient in this case). Instead, glanceclient should simply ignore the error.

FAIL: tests.test_shell.ShellTest.test_auth_plugin_invocation_without_auth_url_with_v2
tests.test_shell.ShellTest.test_auth_plugin_invocation_without_auth_url_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 329, in test_auth_plugin_invocation_without_auth_url_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

======================================================================
FAIL: tests.test_shell.ShellTest.test_auth_plugin_invocation_without_tenant_with_v2
tests.test_shell.ShellTest.test_auth_plugin_invocation_without_tenant_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 349, in test_auth_plugin_invocation_without_tenant_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

======================================================================
FAIL: tests.test_shell.ShellTest.test_auth_plugin_invocation_without_username_with_v2
tests.test_shell.ShellTest.test_auth_plugin_invocation_without_username_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 315, in test_auth_plugin_invocation_without_username_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

======================================================================
FAIL: tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_auth_url_with_v2
tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_auth_url_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 329, in test_auth_plugin_invocation_without_auth_url_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

======================================================================
FAIL: tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_tenant_with_v2
tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_tenant_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 349, in test_auth_plugin_invocation_without_tenant_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

======================================================================
FAIL: tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_username_with_v2
tests.test_shell.ShellTestWithKeystoneV3Auth.test_auth_plugin_invocation_without_username_with_v2
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mock.py", line 1210, in patched
    return func(*args, **keywargs)
  File "/��PKGBUILDDIR��/tests/test_shell.py", line 315, in test_auth_plugin_invocation_without_username_with_v2
    self.assertRaises(exc.CommandError, glance_shell.main, args.split())
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 410, in assertRaises
    self.assertThat(our_callable, matcher)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 421, in assertThat
    mismatch_error = self._matchHelper(matchee, matcher, message, verbose)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 471, in _matchHelper
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 108, in match
    mismatch = self.exception_matcher.match(exc_info)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_higherorder.py", line 62, in match
    mismatch = matcher.match(matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 402, in match
    reraise(*matchee)
  File "/usr/lib/python2.7/dist-packages/testtools/matchers/_exception.py", line 101, in match
    result = matchee()
  File "/usr/lib/python2.7/dist-packages/testtools/testcase.py", line 932, in __call__
    return self._callable_object(*self._args, **self._kwargs)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 610, in main
    self._cache_schemas(options)
  File "/��PKGBUILDDIR��/glanceclient/shell.py", line 559, in _cache_schemas
    os.makedirs(homedir)
  File "/usr/lib/python2.7/os.py", line 150, in makedirs
    makedirs(head, mode)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/var/lib/jenkins'

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-glanceclient (master)

Reviewed: https://review.openstack.org/175300
Committed: https://git.openstack.org/cgit/openstack/python-glanceclient/commit/?id=1686d6aa535562ae2ea6e04b6dfd59b86c998c8a
Submitter: Jenkins
Branch: master

commit 1686d6aa535562ae2ea6e04b6dfd59b86c998c8a
Author: Thomas Goirand <email address hidden>
Date: Mon Apr 20 10:26:31 2015 +0200

    Do not crash on homedir mkdir

    Glanceclient is trying to create ~/.glanceclient, and crashes if it can't
    do that. In some environment (for example, when building the package
    under Jenkins), writing on $HOME is simply not allowed, and Glanceclient
    can simply ignore it. This patch allows the mkdir() to fail, which fixes
    the issue.

    Closes-Bug: #1446096
    Change-Id: Ib3591fb4e54ccd2fe63a1a4815551ac10ef5b961

Changed in python-glanceclient:
status: New → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to python-glanceclient (stable/kilo)

Fix proposed to branch: stable/kilo
Review: https://review.openstack.org/185240

Changed in python-glanceclient:
importance: Undecided → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to python-glanceclient (stable/kilo)

Reviewed: https://review.openstack.org/185240
Committed: https://git.openstack.org/cgit/openstack/python-glanceclient/commit/?id=7771d3b55d36e58cede0bc827433a3046e492143
Submitter: Jenkins
Branch: stable/kilo

commit 7771d3b55d36e58cede0bc827433a3046e492143
Author: Thomas Goirand <email address hidden>
Date: Mon Apr 20 10:26:31 2015 +0200

    Do not crash on homedir mkdir

    Glanceclient is trying to create ~/.glanceclient, and crashes if it can't
    do that. In some environment (for example, when building the package
    under Jenkins), writing on $HOME is simply not allowed, and Glanceclient
    can simply ignore it. This patch allows the mkdir() to fail, which fixes
    the issue.

    Closes-Bug: #1446096
    Change-Id: Ib3591fb4e54ccd2fe63a1a4815551ac10ef5b961
    (cherry picked from commit 1686d6aa535562ae2ea6e04b6dfd59b86c998c8a)

Changed in python-glanceclient:
milestone: none → 0.19.0
Changed in python-glanceclient:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.