Внедрение зависимостей в промежуточное ПО Keystone (openstack)

В моем промежуточном программном обеспечении keystone я пытаюсь вызвать функцию assignment_api get_project_by_name.

Я пытаюсь сделать это с помощью внедрения зависимостей, но вместо этого я вижу следующую ошибку в журнале отладки:

AttributeError: у объекта 'ProjectsByDemand' нет атрибута 'assignment_api'

Смотрите код ниже:

from keystone.openstack.common import log as logging
from keystone.common import dependency
from keystone import config
from keystone import exception
from keystone.common import cache
from keystone.common import wsgi

@dependency.requires('assignment_api')
class ProjectsByDemand(wsgi.Middleware):
  def __init__(self, app, conf):
    self.conf = conf
    self.app = app
    self.internal_l = ['admin','neutron','glance','cinder','nova']
    self.log = logging.getLogger(__name__)

   .
   .
   .

  def process_request(self, environ, start_response):
    auth = self.get_username(environ)
    if auth is not None:
      if auth[0] is not self.internal_l:
        self.log.debug('middleware-debug: Authenticating with: %s' % (auth[0]) )
        project_ref = self.assignment_api.get_project_by_name(username, "default")
        self.log.debug("middleware-debug: Project ref is: %s", project_ref)
    return self.app(environ, start_response)

Есть идеи, чего не хватает?

1 ответ

Вы перепутали символы табуляции и пробелы, а также запутали отступы, попробуйте запустить скрипт с python -tt чтобы проверить это.

Другие вопросы по тегам