yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #74869
[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