← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1793423] Re: Should not read config options while update cells

 

** Changed in: nova
       Status: In Progress => Invalid

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1793423

Title:
  Should not read config options while update cells

Status in OpenStack Compute (nova):
  Invalid

Bug description:
  When perform ``nova-manage cell_v2 update_cell`` command,
  we read the ``database_connection`` and ``transport_url`` from
  configuration file if the caller don't provide this info:
  http://git.openstack.org/cgit/openstack/nova/tree/nova/cmd/manage.py?h=stable/rocky#n1631
  and they are latter saved with cell_mapping.save()

  this is problematic because:
  1.If I did not pass config file with --config-file, it will use the file from default route and most probably it will be cell0 file, when I did not pass ``transport_url``
  and/or ``database_connection`` this will lead to that those file will be overridden
  by the value in the conf, which will fail in the latter uniqueness check as we already
  have the cell_0 db mapped.
  2.If I pass the nova-cell1.conf with --config-file, the command will probably unable to
  run because I do not have api_database connection in the config file as I should not
  perform upcall.
  3. It seems not appropriate at all that I have to always provide the config file for
  the cell I want to update when I call update cell, as I'm only updating a record in
  the API_DB.

  example:
  root@ubuntu:/opt/stack/nova# nova-manage cell_v2 list_cells
  +-------+--------------------------------------+---------------------------------------------------------+-------------------------------------------------------------+----------+
  |  Name |                 UUID                 |                      Transport URL                      |                     Database Connection                     | Disabled |
  +-------+--------------------------------------+---------------------------------------------------------+-------------------------------------------------------------+----------+
  | cell0 | 00000000-0000-0000-0000-000000000000 |                          none:/                         | mysql+pymysql://root:****@127.0.0.1/nova_cell0?charset=utf8 |  False   |
  | cell1 | 8eea3d64-2624-4d55-aa81-996fc8017402 | rabbit://stackrabbit:****@10.76.150.197:5672/nova_cell1 | mysql+pymysql://root:****@127.0.0.1/nova_cell1?charset=utf8 |  False   |
  +-------+--------------------------------------+---------------------------------------------------------+-------------------------------------------------------------+----------+

  for case 1:
  root@ubuntu:/opt/stack/nova# nova-manage --config-file /etc/nova/nova.conf cell_v2 update_cell --cell_uuid 8eea3d64-2624-4d55-aa81-996fc8017402 --disable
  transport_url and/or database_connection combination already exists for another cell with uuid 00000000-0000-0000-0000-000000000000.

  for case2:
  root@ubuntu:/opt/stack/nova# nova-manage --config-file /etc/nova/nova_cell1.conf cell_v2 update_cell --cell_uuid 8eea3d64-2624-4d55-aa81-996fc8017402 --disable
  An error has occurred:
  Traceback (most recent call last):
    File "/opt/stack/nova/nova/cmd/manage.py", line 2323, in main
      ret = fn(*fn_args, **fn_kwargs)
    File "/opt/stack/nova/nova/cmd/manage.py", line 1629, in update_cell
      cell_mapping = objects.CellMapping.get_by_uuid(ctxt, cell_uuid)
    File "/usr/local/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 184, in wrapper
      result = fn(cls, context, *args, **kwargs)
    File "/opt/stack/nova/nova/objects/cell_mapping.py", line 182, in get_by_uuid
      db_mapping = cls._get_by_uuid_from_db(context, uuid)
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 992, in wrapper
      with self._transaction_scope(context):
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
      return self.gen.next()
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 1042, in _transaction_scope
      context=context) as resource:
    File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
      return self.gen.next()
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 645, in _session
      bind=self.connection, mode=self.mode)
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 409, in _create_session
      self._start()
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 496, in _start
      engine_args, maker_args)
    File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 518, in _setup_for_connection
      "No sql_connection parameter is established")
  CantStartEngineError: No sql_connection parameter is established

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


References