Public bug reported:

When adding an image member to a shared image, we get the following
traceback on glance-api:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1427, in 
__call__
    request, **action_args)
  File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1470, in 
dispatch
    return method(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/glance/common/utils.py", line 417, in 
wrapped
    return func(self, req, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/glance/api/v2/image_members.py", line 
117, in create
    member_repo.add(new_member)
  File "/usr/lib/python2.7/site-packages/glance/api/authorization.py", line 
170, in add
    self.member_repo.add(image_member)
  File "/usr/lib/python2.7/site-packages/glance/notifier.py", line 556, in add
    super(ImageMemberRepoProxy, self).add(member)
  File "/usr/lib/python2.7/site-packages/glance/domain/proxy.py", line 121, in 
add
    self.base.add(self.member_proxy_helper.unproxy(member))
  File "/usr/lib/python2.7/site-packages/glance/api/policy.py", line 254, in add
    self.member_repo.add(member)
  File "/usr/lib/python2.7/site-packages/glance/location.py", line 567, in add
    self._set_acls()
  File "/usr/lib/python2.7/site-packages/glance/location.py", line 563, in 
_set_acls
    context=self.context)
  File "/usr/lib/python2.7/site-packages/glance_store/backend.py", line 550, in 
set_acls
    loc = location.get_location_from_uri(location_uri, conf=CONF)
  File "/usr/lib/python2.7/site-packages/glance_store/location.py", line 77, in 
get_location_from_uri
    raise exceptions.UnknownScheme(scheme=pieces.scheme)
UnknownScheme: Unknown scheme 'file' found in URI

Related config is:
[DEFAULT]
enabled_backends = gpfs:file
[gpfs]
filesystem_store_datadir = /path/to/Openstack/Glance

If I'm reading this right, the issue is related to
glance_store.location.SCHEME_TO_CLS_MAP being empty. This causes
backend.get_location_from_uri to fail to look up the scheme.

I think this is happening because backend.py is populating
location.SCHEME_TO_CLS_MAP, but  multi_backend is populating
location.SCHEME_TO_CLS_BACKEND_MAP. Because
location.get_location_from_uri is only looking at SCHEME_TO_CLS_MAP,
when it is called with a multi-backend config, it fails to find any
registered schemes.

** Affects: glance
     Importance: Undecided
         Status: New

** Description changed:

  When adding an image member to a shared image, we get the following
  traceback on glance-api:
  
  Traceback (most recent call last):
-   File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1427, 
in __call__
-     request, **action_args)
-   File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1470, 
in dispatch
-     return method(*args, **kwargs)
-   File "/usr/lib/python2.7/site-packages/glance/common/utils.py", line 417, 
in wrapped
-     return func(self, req, *args, **kwargs)
-   File "/usr/lib/python2.7/site-packages/glance/api/v2/image_members.py", 
line 117, in create
-     member_repo.add(new_member)
-   File "/usr/lib/python2.7/site-packages/glance/api/authorization.py", line 
170, in add
-     self.member_repo.add(image_member)
-   File "/usr/lib/python2.7/site-packages/glance/notifier.py", line 556, in add
-     super(ImageMemberRepoProxy, self).add(member)
-   File "/usr/lib/python2.7/site-packages/glance/domain/proxy.py", line 121, 
in add
-     self.base.add(self.member_proxy_helper.unproxy(member))
-   File "/usr/lib/python2.7/site-packages/glance/api/policy.py", line 254, in 
add
-     self.member_repo.add(member)
-   File "/usr/lib/python2.7/site-packages/glance/location.py", line 567, in add
-     self._set_acls()
-   File "/usr/lib/python2.7/site-packages/glance/location.py", line 563, in 
_set_acls
-     context=self.context)
-   File "/usr/lib/python2.7/site-packages/glance_store/backend.py", line 550, 
in set_acls
-     loc = location.get_location_from_uri(location_uri, conf=CONF)
-   File "/usr/lib/python2.7/site-packages/glance_store/location.py", line 77, 
in get_location_from_uri
-     raise exceptions.UnknownScheme(scheme=pieces.scheme)
+   File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1427, 
in __call__
+     request, **action_args)
+   File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1470, 
in dispatch
+     return method(*args, **kwargs)
+   File "/usr/lib/python2.7/site-packages/glance/common/utils.py", line 417, 
in wrapped
+     return func(self, req, *args, **kwargs)
+   File "/usr/lib/python2.7/site-packages/glance/api/v2/image_members.py", 
line 117, in create
+     member_repo.add(new_member)
+   File "/usr/lib/python2.7/site-packages/glance/api/authorization.py", line 
170, in add
+     self.member_repo.add(image_member)
+   File "/usr/lib/python2.7/site-packages/glance/notifier.py", line 556, in add
+     super(ImageMemberRepoProxy, self).add(member)
+   File "/usr/lib/python2.7/site-packages/glance/domain/proxy.py", line 121, 
in add
+     self.base.add(self.member_proxy_helper.unproxy(member))
+   File "/usr/lib/python2.7/site-packages/glance/api/policy.py", line 254, in 
add
+     self.member_repo.add(member)
+   File "/usr/lib/python2.7/site-packages/glance/location.py", line 567, in add
+     self._set_acls()
+   File "/usr/lib/python2.7/site-packages/glance/location.py", line 563, in 
_set_acls
+     context=self.context)
+   File "/usr/lib/python2.7/site-packages/glance_store/backend.py", line 550, 
in set_acls
+     loc = location.get_location_from_uri(location_uri, conf=CONF)
+   File "/usr/lib/python2.7/site-packages/glance_store/location.py", line 77, 
in get_location_from_uri
+     raise exceptions.UnknownScheme(scheme=pieces.scheme)
  UnknownScheme: Unknown scheme 'file' found in URI
- 
  
  Related config is:
  [DEFAULT]
  enabled_backends = gpfs:file
  [gpfs]
  filesystem_store_datadir = /path/to/Openstack/Glance
  
- 
- If I'm reading this right, the issue is related to 
glance_store.location.SCHEME_TO_CLS_MAP being empty. This causes 
backend.get_location_from_uri to fail to look up the scheme. 
+ If I'm reading this right, the issue is related to
+ glance_store.location.SCHEME_TO_CLS_MAP being empty. This causes
+ backend.get_location_from_uri to fail to look up the scheme.
  
  I think this is happening because backend.py is populating
  location.SCHEME_TO_CLS_MAP, but  multi_backend is populating
  location.SCHEME_TO_CLS_BACKEND_MAP. Because
  location.get_location_from_uri is only looking at SCHEME_TO_CLS_MAP,
  when it is called with a multi-backend config, it fails to find any
  registered schemes.
- 
- It looks like backend.py populates this
- 
- glance_store/multi_backend.py function create_multi_stores calling
- glance_store/location.py register_scheme_backend_map

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1838332

Title:
  Glance adding image member fails with multibackend

Status in Glance:
  New

Bug description:
  When adding an image member to a shared image, we get the following
  traceback on glance-api:

  Traceback (most recent call last):
    File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1427, 
in __call__
      request, **action_args)
    File "/usr/lib/python2.7/site-packages/glance/common/wsgi.py", line 1470, 
in dispatch
      return method(*args, **kwargs)
    File "/usr/lib/python2.7/site-packages/glance/common/utils.py", line 417, 
in wrapped
      return func(self, req, *args, **kwargs)
    File "/usr/lib/python2.7/site-packages/glance/api/v2/image_members.py", 
line 117, in create
      member_repo.add(new_member)
    File "/usr/lib/python2.7/site-packages/glance/api/authorization.py", line 
170, in add
      self.member_repo.add(image_member)
    File "/usr/lib/python2.7/site-packages/glance/notifier.py", line 556, in add
      super(ImageMemberRepoProxy, self).add(member)
    File "/usr/lib/python2.7/site-packages/glance/domain/proxy.py", line 121, 
in add
      self.base.add(self.member_proxy_helper.unproxy(member))
    File "/usr/lib/python2.7/site-packages/glance/api/policy.py", line 254, in 
add
      self.member_repo.add(member)
    File "/usr/lib/python2.7/site-packages/glance/location.py", line 567, in add
      self._set_acls()
    File "/usr/lib/python2.7/site-packages/glance/location.py", line 563, in 
_set_acls
      context=self.context)
    File "/usr/lib/python2.7/site-packages/glance_store/backend.py", line 550, 
in set_acls
      loc = location.get_location_from_uri(location_uri, conf=CONF)
    File "/usr/lib/python2.7/site-packages/glance_store/location.py", line 77, 
in get_location_from_uri
      raise exceptions.UnknownScheme(scheme=pieces.scheme)
  UnknownScheme: Unknown scheme 'file' found in URI

  Related config is:
  [DEFAULT]
  enabled_backends = gpfs:file
  [gpfs]
  filesystem_store_datadir = /path/to/Openstack/Glance

  If I'm reading this right, the issue is related to
  glance_store.location.SCHEME_TO_CLS_MAP being empty. This causes
  backend.get_location_from_uri to fail to look up the scheme.

  I think this is happening because backend.py is populating
  location.SCHEME_TO_CLS_MAP, but  multi_backend is populating
  location.SCHEME_TO_CLS_BACKEND_MAP. Because
  location.get_location_from_uri is only looking at SCHEME_TO_CLS_MAP,
  when it is called with a multi-backend config, it fails to find any
  registered schemes.

To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1838332/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to