← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1781573] [NEW] Document "Install and configure controller node for Ubuntu in nova" has an incorrect command in section "Install and configure components", step 7

 

Public bug reported:

Description
===========

Following the OpenStack installation procedure for a minimal install of
Queens on Bionic, one of the "nova-manage" commands is not run as the
nova user when attempting to verify the installation, causing an
exception traceback and the creation of a spurious sqlite database. In
addition, the sample output is missing fields compared to the actual
output (see "Suggested fix" below).

Steps to reproduce
==================

Following the steps in the document "Install and configure controller
node for Ubuntu" for nova, when you reach section "Install and configure
components" step 7 it says to verify the installation by running "nova-
manage cell_v2 list_cells" after configuring nova on the controller.

Expected behaviour
==================

Output is::
  # nova-manage cell_v2 list_cells
  +-------+--------------------------------------+
  | Name  | UUID                                 |
  +-------+--------------------------------------+
  | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
  | cell0 | 00000000-0000-0000-0000-000000000000 |
  +-------+--------------------------------------+

Actual behaviour
================

Output is::
  # nova-manage cell_v2 list_cells
  An error has occurred:
  Traceback (most recent call last):
    File "/usr/lib/python2.7/dist-packages/nova/cmd/manage.py", line 1644, in main
      ret = fn(*fn_args, **fn_kwargs)
    File "/usr/lib/python2.7/dist-packages/nova/cmd/manage.py", line 1367, in list_cells
      context.get_admin_context())
    File "/usr/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 184, in wrapper
      result = fn(cls, context, *args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/nova/objects/cell_mapping.py", line 137, in get_all
      db_mappings = cls._get_all_from_db(context)
    File "/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 986, in wrapper
      return fn(*args, **kwargs)
    File "/usr/lib/python2.7/dist-packages/nova/objects/cell_mapping.py", line 133, in _get_all_from_db
      asc(api_models.CellMapping.id)).all()
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2703, in all
      return list(self)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
      return self._execute_and_instances(context)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
      result = conn.execute(querycontext.statement, self._params)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute
      return meth(self, multiparams, params)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
      return connection._execute_clauseelement(self, multiparams, params)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
      compiled_sql, distilled_params
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
      context)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1398, in _handle_dbapi_exception
      util.raise_from_cause(newraise, exc_info)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
      reraise(type(exception), exception, tb=exc_tb, cause=cause)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
      context)
    File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute
      cursor.execute(statement, parameters)
  DBNonExistentTable: (sqlite3.OperationalError) no such table: cell_mappings [SQL: u'SELECT cell_mappings.created_at AS cell_mappings_created_at, cell_mappings.updated_at AS cell_mappings_updated_at, cell_mappings.id AS cell_mappings_id, cell_mappings.uuid AS cell_mappings_uuid, cell_mappings.name AS cell_mappings_name, cell_mappings.transport_url AS cell_mappings_transport_url, cell_mappings.database_connection AS cell_mappings_database_connection \nFROM cell_mappings ORDER BY cell_mappings.id ASC']

In addition, a spurious empty sqlite database is created in /var/lib/nova::
  # ls -l /var/lib/nova/*.sqlite
  -rw------- 1 root root 0 Jul 13 11:27 /var/lib/nova/nova_api.sqlite

Suggested fix
=============

Amend the command to run as user "nova", as all the previous commands
are::

  # su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
  +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+
  |  Name |                 UUID                 |              Transport URL              |                 Database Connection                  |
  +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+
  | cell0 | 00000000-0000-0000-0000-000000000000 |                  none:/                 | mysql+pymysql://nova:****@controller/nova_cell0 |
  | cell1 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova    |
  +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+

- [x] This doc is inaccurate in this way: Command in section "Install and configure components" step 7 is incorrect
- [ ] This is a doc addition request.
- [x] I have a fix to the document that I can paste below including example: input and output. 

Replace:
nova-manage cell_v2 list_cells

With:
su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

-----------------------------------
Release: 17.0.6.dev47 on 2018-07-08 17:16
SHA: 7ae2dc840a0bccb868122bb4b77e8958a0e842a7
Source: https://git.openstack.org/cgit/openstack/nova/tree/doc/source/install/controller-install-ubuntu.rst
URL: https://docs.openstack.org/nova/queens/install/controller-install-ubuntu.html

** 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/1781573

Title:
  Document "Install and configure controller node for Ubuntu in nova"
  has an incorrect command in section "Install and configure
  components", step 7

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========

  Following the OpenStack installation procedure for a minimal install
  of Queens on Bionic, one of the "nova-manage" commands is not run as
  the nova user when attempting to verify the installation, causing an
  exception traceback and the creation of a spurious sqlite database. In
  addition, the sample output is missing fields compared to the actual
  output (see "Suggested fix" below).

  Steps to reproduce
  ==================

  Following the steps in the document "Install and configure controller
  node for Ubuntu" for nova, when you reach section "Install and
  configure components" step 7 it says to verify the installation by
  running "nova-manage cell_v2 list_cells" after configuring nova on the
  controller.

  Expected behaviour
  ==================

  Output is::
    # nova-manage cell_v2 list_cells
    +-------+--------------------------------------+
    | Name  | UUID                                 |
    +-------+--------------------------------------+
    | cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
    | cell0 | 00000000-0000-0000-0000-000000000000 |
    +-------+--------------------------------------+

  Actual behaviour
  ================

  Output is::
    # nova-manage cell_v2 list_cells
    An error has occurred:
    Traceback (most recent call last):
      File "/usr/lib/python2.7/dist-packages/nova/cmd/manage.py", line 1644, in main
        ret = fn(*fn_args, **fn_kwargs)
      File "/usr/lib/python2.7/dist-packages/nova/cmd/manage.py", line 1367, in list_cells
        context.get_admin_context())
      File "/usr/lib/python2.7/dist-packages/oslo_versionedobjects/base.py", line 184, in wrapper
        result = fn(cls, context, *args, **kwargs)
      File "/usr/lib/python2.7/dist-packages/nova/objects/cell_mapping.py", line 137, in get_all
        db_mappings = cls._get_all_from_db(context)
      File "/usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py", line 986, in wrapper
        return fn(*args, **kwargs)
      File "/usr/lib/python2.7/dist-packages/nova/objects/cell_mapping.py", line 133, in _get_all_from_db
        asc(api_models.CellMapping.id)).all()
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2703, in all
        return list(self)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2855, in __iter__
        return self._execute_and_instances(context)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/orm/query.py", line 2878, in _execute_and_instances
        result = conn.execute(querycontext.statement, self._params)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 945, in execute
        return meth(self, multiparams, params)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/elements.py", line 263, in _execute_on_connection
        return connection._execute_clauseelement(self, multiparams, params)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1053, in _execute_clauseelement
        compiled_sql, distilled_params
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1189, in _execute_context
        context)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1398, in _handle_dbapi_exception
        util.raise_from_cause(newraise, exc_info)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
        reraise(type(exception), exception, tb=exc_tb, cause=cause)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1182, in _execute_context
        context)
      File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 470, in do_execute
        cursor.execute(statement, parameters)
    DBNonExistentTable: (sqlite3.OperationalError) no such table: cell_mappings [SQL: u'SELECT cell_mappings.created_at AS cell_mappings_created_at, cell_mappings.updated_at AS cell_mappings_updated_at, cell_mappings.id AS cell_mappings_id, cell_mappings.uuid AS cell_mappings_uuid, cell_mappings.name AS cell_mappings_name, cell_mappings.transport_url AS cell_mappings_transport_url, cell_mappings.database_connection AS cell_mappings_database_connection \nFROM cell_mappings ORDER BY cell_mappings.id ASC']

  In addition, a spurious empty sqlite database is created in /var/lib/nova::
    # ls -l /var/lib/nova/*.sqlite
    -rw------- 1 root root 0 Jul 13 11:27 /var/lib/nova/nova_api.sqlite

  Suggested fix
  =============

  Amend the command to run as user "nova", as all the previous commands
  are::

    # su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
    +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+
    |  Name |                 UUID                 |              Transport URL              |                 Database Connection                  |
    +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+
    | cell0 | 00000000-0000-0000-0000-000000000000 |                  none:/                 | mysql+pymysql://nova:****@controller/nova_cell0 |
    | cell1 | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova    |
    +-------+--------------------------------------+-----------------------------------------+------------------------------------------------------+

  - [x] This doc is inaccurate in this way: Command in section "Install and configure components" step 7 is incorrect
  - [ ] This is a doc addition request.
  - [x] I have a fix to the document that I can paste below including example: input and output. 

  Replace:
  nova-manage cell_v2 list_cells

  With:
  su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

  -----------------------------------
  Release: 17.0.6.dev47 on 2018-07-08 17:16
  SHA: 7ae2dc840a0bccb868122bb4b77e8958a0e842a7
  Source: https://git.openstack.org/cgit/openstack/nova/tree/doc/source/install/controller-install-ubuntu.rst
  URL: https://docs.openstack.org/nova/queens/install/controller-install-ubuntu.html

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


Follow ups