← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1794493] [NEW] The behaviors of creating and updating mapping cell0 differ

 

Public bug reported:

Description
===========
The behaviors of creating and updating cell0 differ. Given that the parameters to nova-manage did not change, I would have expected no changes made to the cell_mappings table other than updating updated_at.

Steps to reproduce
==================
NOTE: Be sure to replace <MUST_BE_A_VALID_NOVA_API_DB_CONNECTION_STRING> in api.conf with a valid db connection string.
OPTIONAL NOTE: In order to restart nova-api and run "nova service-list" successfully, replace "mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem" in api.conf with a valid db connection string.

controller1:~ # mkdir -p /etc/novabug
controller1:~ # cat << EOF > /etc/novabug/api.conf
[database]
backend = sqlalchemy
connection = mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem
[api_database]
connection = <MUST_BE_A_VALID_NOVA_API_DB_CONNECTION_STRING>
EOF
controller1:~ # cat << EOF > /etc/novabug/nova.conf
[DEFAULT]
transport_url = rabbit://rabbit:rabbitpwd@vip:5671/
EOF
controller1:~ # chown -R nova:nova /etc/novabug
controller1:~ # /usr/local/bin/nova-manage --config-file /etc/novabug/nova.conf --config-file /etc/novabug/api.conf cell_v2 map_cell0
controller1:~ # mysql -D nova_api -e "select * from cell_mappings"
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
| created_at          | updated_at          | id | uuid                                 | name  | transport_url                                              | database_connection                                                                                      |
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
| 2018-09-26 09:14:21 | NULL                |  1 | 00000000-0000-0000-0000-000000000000 | cell0 | none:///                                                   | mysql+pymysql://nova:novapwd@vip/nova_cell0?ssl_ca=/etc/ssl/ca-bundle.pem                                |
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+

controller1:~ # /usr/local/bin/nova-manage --config-file /etc/novabug/nova.conf --config-file /etc/novabug/api.conf cell_v2 update_cell --cell_uuid 00000000-0000-0000-0000-000000000000
controller1:~ # mysql -D nova_api -e "select * from cell_mappings"
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
| created_at          | updated_at          | id | uuid                                 | name  | transport_url                                              | database_connection                                                                                |
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
| 2018-09-26 09:14:21 | 2018-09-26 09:15:01 |  1 | 00000000-0000-0000-0000-000000000000 | cell0 | rabbit://rabbit:rabbitpwd@vip:5671/                        | mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem                                |
+---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+

Expected result
===============
Given that the parameters to nova-manage did not change, I would have expected no changes made to the transport_url and database_connection values of cell0.

Actual result
=============
After running "cell_v2 update_cell --cell_uuid 00000000-0000-0000-0000-000000000000", the transport_url changed from the hardcoded "none:///" from CellV2Commands.map_cell0() to the actual transport URL from nova.conf and the database_connection value lost it's string "_cell0" previously added by the nested function CellV2Commands.map_cell0().cell0_default_connection(). These changes cause ripple effects like the duplication of all rows in the output of "nova service-list" [as well as in Horizon]. See below.

controller1:~ # service nova-api restart
controller1:~ # nova service-list
+----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host           | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-conductor   | controller1    | internal | enabled | up    | 2018-09-26T09:19:13.000000 | -               |
| 2  | nova-scheduler   | controller1    | internal | enabled | up    | 2018-09-26T09:19:05.000000 | -               |
| 3  | nova-consoleauth | controller1    | internal | enabled | up    | 2018-09-26T09:19:07.000000 | -               |
| 6  | nova-compute     | compute001     | nova     | enabled | up    | 2018-09-26T09:19:09.000000 | -               |
| 1  | nova-conductor   | controller1    | internal | enabled | up    | 2018-09-26T09:19:13.000000 | -               |
| 2  | nova-scheduler   | controller1    | internal | enabled | up    | 2018-09-26T09:19:05.000000 | -               |
| 3  | nova-consoleauth | controller1    | internal | enabled | up    | 2018-09-26T09:19:07.000000 | -               |
| 6  | nova-compute     | compute001     | nova     | enabled | up    | 2018-09-26T09:19:09.000000 | -               |
+----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+

Environment
===========
Version: Current master branch

Workaround
==========
We are having to avoid using the --config-file parameters altogether and duplicate the cell0 logic from nova/cmd/manage.py in our own scripts by:
1) For "cell_v2 map_cell0", specifying --database_connection containing "_cell0"
2) For "cell_v2 update_cell" of cell0, specifying --database_connection containing "_cell0" and --transport-url of "none:///"
3) For creating or updating cell1, specifying --database_connection not containing "_cell0" and the actual --transport-url

** Affects: nova
     Importance: Undecided
         Status: New

-- 
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/1794493

Title:
  The behaviors of creating and updating mapping cell0 differ

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========
  The behaviors of creating and updating cell0 differ. Given that the parameters to nova-manage did not change, I would have expected no changes made to the cell_mappings table other than updating updated_at.

  Steps to reproduce
  ==================
  NOTE: Be sure to replace <MUST_BE_A_VALID_NOVA_API_DB_CONNECTION_STRING> in api.conf with a valid db connection string.
  OPTIONAL NOTE: In order to restart nova-api and run "nova service-list" successfully, replace "mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem" in api.conf with a valid db connection string.

  controller1:~ # mkdir -p /etc/novabug
  controller1:~ # cat << EOF > /etc/novabug/api.conf
  [database]
  backend = sqlalchemy
  connection = mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem
  [api_database]
  connection = <MUST_BE_A_VALID_NOVA_API_DB_CONNECTION_STRING>
  EOF
  controller1:~ # cat << EOF > /etc/novabug/nova.conf
  [DEFAULT]
  transport_url = rabbit://rabbit:rabbitpwd@vip:5671/
  EOF
  controller1:~ # chown -R nova:nova /etc/novabug
  controller1:~ # /usr/local/bin/nova-manage --config-file /etc/novabug/nova.conf --config-file /etc/novabug/api.conf cell_v2 map_cell0
  controller1:~ # mysql -D nova_api -e "select * from cell_mappings"
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
  | created_at          | updated_at          | id | uuid                                 | name  | transport_url                                              | database_connection                                                                                      |
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+
  | 2018-09-26 09:14:21 | NULL                |  1 | 00000000-0000-0000-0000-000000000000 | cell0 | none:///                                                   | mysql+pymysql://nova:novapwd@vip/nova_cell0?ssl_ca=/etc/ssl/ca-bundle.pem                                |
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+

  controller1:~ # /usr/local/bin/nova-manage --config-file /etc/novabug/nova.conf --config-file /etc/novabug/api.conf cell_v2 update_cell --cell_uuid 00000000-0000-0000-0000-000000000000
  controller1:~ # mysql -D nova_api -e "select * from cell_mappings"
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
  | created_at          | updated_at          | id | uuid                                 | name  | transport_url                                              | database_connection                                                                                |
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+
  | 2018-09-26 09:14:21 | 2018-09-26 09:15:01 |  1 | 00000000-0000-0000-0000-000000000000 | cell0 | rabbit://rabbit:rabbitpwd@vip:5671/                        | mysql+pymysql://nova:novapwd@vip/nova?ssl_ca=/etc/ssl/ca-bundle.pem                                |
  +---------------------+---------------------+----+--------------------------------------+-------+------------------------------------------------------------+----------------------------------------------------------------------------------------------------+

  Expected result
  ===============
  Given that the parameters to nova-manage did not change, I would have expected no changes made to the transport_url and database_connection values of cell0.

  Actual result
  =============
  After running "cell_v2 update_cell --cell_uuid 00000000-0000-0000-0000-000000000000", the transport_url changed from the hardcoded "none:///" from CellV2Commands.map_cell0() to the actual transport URL from nova.conf and the database_connection value lost it's string "_cell0" previously added by the nested function CellV2Commands.map_cell0().cell0_default_connection(). These changes cause ripple effects like the duplication of all rows in the output of "nova service-list" [as well as in Horizon]. See below.

  controller1:~ # service nova-api restart
  controller1:~ # nova service-list
  +----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+
  | Id | Binary           | Host           | Zone     | Status  | State | Updated_at                 | Disabled Reason |
  +----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+
  | 1  | nova-conductor   | controller1    | internal | enabled | up    | 2018-09-26T09:19:13.000000 | -               |
  | 2  | nova-scheduler   | controller1    | internal | enabled | up    | 2018-09-26T09:19:05.000000 | -               |
  | 3  | nova-consoleauth | controller1    | internal | enabled | up    | 2018-09-26T09:19:07.000000 | -               |
  | 6  | nova-compute     | compute001     | nova     | enabled | up    | 2018-09-26T09:19:09.000000 | -               |
  | 1  | nova-conductor   | controller1    | internal | enabled | up    | 2018-09-26T09:19:13.000000 | -               |
  | 2  | nova-scheduler   | controller1    | internal | enabled | up    | 2018-09-26T09:19:05.000000 | -               |
  | 3  | nova-consoleauth | controller1    | internal | enabled | up    | 2018-09-26T09:19:07.000000 | -               |
  | 6  | nova-compute     | compute001     | nova     | enabled | up    | 2018-09-26T09:19:09.000000 | -               |
  +----+------------------+----------------+----------+---------+-------+----------------------------+-----------------+

  Environment
  ===========
  Version: Current master branch

  Workaround
  ==========
  We are having to avoid using the --config-file parameters altogether and duplicate the cell0 logic from nova/cmd/manage.py in our own scripts by:
  1) For "cell_v2 map_cell0", specifying --database_connection containing "_cell0"
  2) For "cell_v2 update_cell" of cell0, specifying --database_connection containing "_cell0" and --transport-url of "none:///"
  3) For creating or updating cell1, specifying --database_connection not containing "_cell0" and the actual --transport-url

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