vnflcm create fails due to "Unknown column 'vnf_instantiated_info_1.scale_status"

Bug #1907525 reported by Hariom Sharma
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tacker
Fix Committed
Medium
Yoshito Ito

Bug Description

I am using the following sample VNF package.

https://github.com/openstack/tacker/tree/master/samples/vnf_packages

VNF packgae onboaring is successful, but vnflcm create is failing with the following error.

Trying to create the VNF identifier with the following

[root@localhost vnf_pkg2(keystone_admin)]# openstack vnflcm create b1bb0ce7-ebca-4fa7-95ed-4840d70a1179
500-tackerFault

Here are the tacker logs:
---
2020-12-09 22:25:24.660 1204 DEBUG tacker.vnfm.vim_client [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] VIM id not provided. Attempting to find default VIM information get_vim /usr/local/lib/python3.6/site-packages/tacker/vnfm/vim_client.py:45
2020-12-09 22:25:24.666 1204 DEBUG tacker.vnfm.vim_client [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] VIM info found for vim id None get_vim /usr/local/lib/python3.6/site-packages/tacker/vnfm/vim_client.py:58
2020-12-09 22:25:24.666 1204 DEBUG tacker.vnfm.vim_client [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] VIM id is 525b29a1-16f9-43ca-a09d-3fd3693003c2 _build_vim_auth /usr/local/lib/python3.6/site-packages/tacker/vnfm/vim_client.py:76
2020-12-09 22:25:24.667 1204 DEBUG tacker.vnfm.vim_client [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] Attempting to open key file for vim id 525b29a1-16f9-43ca-a09d-3fd3693003c2 _find_vim_key /usr/local/lib/python3.6/site-packages/tacker/vnfm/vim_client.py:133
2020-12-09 22:25:24.674 1204 WARNING oslo_db.sqlalchemy.exc_filters [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] DBAPIError exception wrapped.: pymysql.err.InternalError: (1054, "Unknown column 'vnf_instantiated_info_1.scale_status' in 'field list'")
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters Traceback (most recent call last):
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters cursor, statement, parameters, context
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters cursor.execute(statement, parameters)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 170, in execute
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters result = self._query(query)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 328, in _query
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters conn.query(q)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 517, in query
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters self._affected_rows = self._read_query_result(unbuffered=unbuffered)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 732, in _read_query_result
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters result.read()
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1077, in read
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters first_packet = self.connection._read_packet()
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters packet.check_error()
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters err.raise_mysql_exception(self._data)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters File "/usr/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters raise errorclass(errno, errval)
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters pymysql.err.InternalError: (1054, "Unknown column 'vnf_instantiated_info_1.scale_status' in 'field list'")
2020-12-09 22:25:24.674 1204 ERROR oslo_db.sqlalchemy.exc_filters
2020-12-09 22:25:24.685 1204 ERROR tacker.api.vnflcm.v1.controller [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] vnf_package is not assigned: oslo_db.exception.DBError: (pymysql.err.InternalError) (1054, "Unknown column 'vnf_instantiated_info_1.scale_status' in 'field list'")
2020-12-09 22:25:24.686 1204 ERROR tacker.wsgi [req-113365b5-9605-4c93-bef4-478eb4f265e8 f1d2f47967304ee090970bb73c49ec9c 9b069c3f1cf942b98b6f855d6e788997 - default default] Unexpected exception in API method: webob.exc.HTTPInternalServerError: (pymysql.err.InternalError) (1054, "Unknown column 'vnf_instantiated_info_1.scale_status' in 'field list'")
[SQL: SELECT vnf_instances.created_at AS vnf_instances_created_at, vnf_instances.updated_at AS vnf_instances_updated_at, vnf_instances.deleted_at AS vnf_instances_deleted_at, vnf_instances.deleted AS vnf_instances_deleted, vnf_instances.id AS vnf_instances_id, vnf_instances.vnf_instance_name AS vnf_instances_vnf_instance_name, vnf_instances.vnf_instance_description AS vnf_instances_vnf_instance_description, vnf_instances.vnf_provider AS vnf_instances_vnf_provider, vnf_instances.vnf_product_name AS vnf_instances_vnf_product_name, vnf_instances.vnf_software_version AS vnf_instances_vnf_software_version, vnf_instances.vnfd_version AS vnf_instances_vnfd_version, vnf_instances.vnfd_id AS vnf_instances_vnfd_id, vnf_instances.instantiation_state AS vnf_instances_instantiation_state, vnf_instances.task_state AS vnf_instances_task_state, vnf_instances.vim_connection_info AS vnf_instances_vim_connection_info, vnf_instances.tenant_id AS vnf_instances_tenant_id, vnf_instances.vnf_pkg_id AS vnf_instances_vnf_pkg_id, vnf_instances.vnf_metadata AS vnf_instances_vnf_metadata, vnf_instantiated_info_1.created_at AS vnf_instantiated_info_1_created_at, vnf_instantiated_info_1.updated_at AS vnf_instantiated_info_1_updated_at, vnf_instantiated_info_1.deleted_at AS vnf_instantiated_info_1_deleted_at, vnf_instantiated_info_1.deleted AS vnf_instantiated_info_1_deleted, vnf_instantiated_info_1.id AS vnf_instantiated_info_1_id, vnf_instantiated_info_1.vnf_instance_id AS vnf_instantiated_info_1_vnf_instance_id, vnf_instantiated_info_1.flavour_id AS vnf_instantiated_info_1_flavour_id, vnf_instantiated_info_1.scale_status AS vnf_instantiated_info_1_scale_status, vnf_instantiated_info_1.ext_cp_info AS vnf_instantiated_info_1_ext_cp_info, vnf_instantiated_info_1.ext_virtual_link_info AS vnf_instantiated_info_1_ext_virtual_link_info, vnf_instantiated_info_1.ext_managed_virtual_link_info AS vnf_instantiated_info_1_ext_managed_virtual_link_info, vnf_instantiated_info_1.vnfc_resource_info AS vnf_instantiated_info_1_vnfc_resource_info, vnf_instantiated_info_1.vnf_virtual_link_resource_info AS vnf_instantiated_info_1_vnf_virtual_link_resource_info, vnf_instantiated_info_1.virtual_storage_resource_info AS vnf_instantiated_info_1_virtual_storage_resource_info, vnf_instantiated_info_1.vnfc_info AS vnf_instantiated_info_1_vnfc_info, vnf_instantiated_info_1.vnf_state AS vnf_instantiated_info_1_vnf_state, vnf_instantiated_info_1.instance_id AS vnf_instantiated_info_1_instance_id, vnf_instantiated_info_1.instantiation_level_id AS vnf_instantiated_info_1_instantiation_level_id, vnf_instantiated_info_1.additional_params AS vnf_instantiated_info_1_additional_params
FROM vnf_instances LEFT OUTER JOIN vnf_instantiated_info AS vnf_instantiated_info_1 ON vnf_instantiated_info_1.vnf_instance_id = vnf_instances.id AND vnf_instantiated_info_1.deleted = %(deleted_1)s
WHERE vnf_instances.deleted = %(deleted_2)s AND vnf_instances.id = %(id_1)s
 LIMIT %(param_1)s]
[parameters: {'deleted_1': 0, 'deleted_2': 0, 'id_1': '7d86fa16-6728-4f45-a023-fecc7bbbff62', 'param_1': 1}]

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :

Checked the table vnf_instantiated_info. It doesn't have the scale_status column.

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

Which release of Tacker do you use? If you have built your environment with master repository before, and if you have just pulled the newest files, you may need to migrate the DB to have the newest tables. Can you try to execute the following command if possible?

tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :

I pulled the latest release from the master branch. And the command "tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head" was executed during the manual installation steps.

Do I need to run the command one more time? will it affect my current running tacker installation?

How do I check exact tacker version. When I run tacker --version, it returns 1.4.0. I think that's tackerclient version. Please advise.

I am new to this, so my be asking silly questions. Really appreciate your help.

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

Please check the version of your Tacker DB with:

tacker-db-manage --config-file /etc/tacker/tacker.conf current

This command should show "329cd1619d41 (head)" for the latest master branch. If you find a different one, you need to execute the command:

tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head

This command upgrades the DB tables in Tacker. It may create new tables, add/remove fields, or change properties for the existing fields. So this may affect the operation for the existing VNFs already deployed with Tacker in your environment.

Welcome to Tacker! If you have questions, you can also use [1].

[1] https://answers.launchpad.net/tacker/+addquestion

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :
Download full text (11.7 KiB)

Version of Tacker DB is not matching with the head "329cd1619d41". I run the upgrade command, but getting some errors, and in the end DB is not updated.

[root@localhost orion-vnfd(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf current
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
8a7ca803e0d0
[root@localhost orion-vnfd(keystone_admin)]# cd
[root@localhost ~(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf current
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
8a7ca803e0d0
[root@localhost ~(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 8a7ca803e0d0 -> c47a733f425a, add_vnflcm_subscription
Traceback (most recent call last):
  File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context
    cursor, statement, parameters, context
  File "/usr/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/usr/lib/python3.6/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 517, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 732, in _read_query_result
    result.read()
  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 1077, in read
    first_packet = self.connection._read_packet()
  File "/usr/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
    packet.check_error()
  File "/usr/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/usr/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.InternalError: (1050, "Table 'vnf_lcm_subscriptions' already exists")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/bin/tacker-db-manage", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 178, in main
    CONF.command.func(config, CONF.command.name)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 68, in do_upgrade
    do_alembic_command(config, cmd, revision, sql=CONF.command.sql)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 47, in do_alembic_command
    getattr(alembic_command, cmd)(config, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/alembic/command.py", line 298, in upgrade
    script.run_env()
  ...

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

OK, it seems a little tricky situation. Your Tacker DB version is now at "8a7ca803e0d0" [1], but has already the next upgrade process in "c47a733f425a" [2]. I assume that you've got an error in DB creation in your manual installation (not sure exactly what it was).

The simplest and easiest way it to delete all Tacker DB tables and recreate it with the command in the manual installation. If you need to keep this environment, it may be possible to try to upgrade from "c47a733f425a" to "329cd1619d41 (head)" with the following command (but not sure it actually works for your situation...):

tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41

The latter way may also lead a tricky situation because I'm not sure the process in "c47a733f425a" was successfully done in the manual installation, and it may cause another failure in the coming operations. If you are familiar with SQL, you can get each migration process as SQL with "--sql" flag and try it manually:

tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41 --sql

[1] https://github.com/openstack/tacker/blob/master/tacker/db/migration/alembic_migrations/versions/8a7ca803e0d0_add_vnfc_info_to_instantiated_vnf_info.py
[2] https://github.com/openstack/tacker/blob/master/tacker/db/migration/alembic_migrations/versions/c47a733f425a_add_vnflcm_subscription.py

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :
Download full text (5.4 KiB)

Hi Yoshito, Thanks for your prompt reply and helping out on this one.

1. I tried upgrading from one to other revision but this command is failing :

[root@localhost ~(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41
  FAILED: Range revision not allowed
[root@localhost ~(keystone_admin)]#

2. I tried with --sql option and getting the following output:

[root@localhost orion-vnfd(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41 --sql
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Generating static SQL
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade c47a733f425a -> ee98bbc0789d, add scale column
-- Running upgrade c47a733f425a -> ee98bbc0789d

ALTER TABLE vnf_instantiated_info ADD COLUMN scale_status JSON;

UPDATE alembic_version SET version_num='ee98bbc0789d' WHERE alembic_version.version_num = 'c47a733f425a';

INFO [alembic.runtime.migration] Running upgrade ee98bbc0789d -> 2c5211036579, add placement table
-- Running upgrade ee98bbc0789d -> 2c5211036579

CREATE TABLE placement_constraint (
    id VARCHAR(36) NOT NULL,
    vnf_instance_id VARCHAR(36) NOT NULL,
    affinity_or_anti_affinity VARCHAR(255) NOT NULL,
    scope VARCHAR(255) NOT NULL,
    server_group_name VARCHAR(255) NOT NULL,
    resource JSON NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME,
    deleted_at DATETIME,
    deleted BOOL,
    PRIMARY KEY (id),
    CHECK (deleted IN (0, 1))
)ENGINE=InnoDB;

UPDATE alembic_version SET version_num='2c5211036579' WHERE alembic_version.version_num = 'ee98bbc0789d';

INFO [alembic.runtime.migration] Running upgrade 2c5211036579 -> d25c7c865ce8, mod_vnflcm_subscription
-- Running upgrade 2c5211036579 -> d25c7c865ce8

ALTER TABLE vnf_lcm_filters MODIFY subscription_uuid VARCHAR(36) NOT NULL;

Traceback (most recent call last):
  File "/usr/local/bin/tacker-db-manage", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 178, in main
    CONF.command.func(config, CONF.command.name)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 68, in do_upgrade
    do_alembic_command(config, cmd, revision, sql=CONF.command.sql)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 47, in do_alembic_command
    getattr(alembic_command, cmd)(config, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/alembic/command.py", line 298, in upgrade
    script.run_env()
  File "/usr/lib/python3.6/site-packages/alembic/script/base.py", line 489, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 98, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/lib/python3.6/site-packages/alembic/util/compat.py", line 173, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstr...

Read more...

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :

I fixed the problem of the scale_status column manually by running the following command:

ALTER TABLE vnf_instantiated_info ADD COLUMN scale_status JSON;

after this "openstack vnflcm create <ID>" command worked now successfully.

However now I am getting the new error for another table missing in the next "openstack vnflcm instantiate" command

[root@localhost vnf_pkg2(keystone_admin)]# openstack vnflcm instantiate cbe567a5-7465-4881-8fc9-2e8e04bdc327 ./param.json
500-tackerFault
[root@localhost vnf_pkg2(keystone_admin)]#

2020-12-10 20:48:01.512 1204 ERROR tacker.wsgi pymysql.err.ProgrammingError: (1146, "Table 'tacker.vnf_lcm_op_occs' doesn't exist")

In which version vnf_lcm_op_occs is created. Please advise.

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :
Download full text (4.1 KiB)

The required process to the newest version of Tacker DB is:
  c47a733f425a -> ee98bbc0789d
  ee98bbc0789d -> 2c5211036579
  2c5211036579 -> d25c7c865ce8
  d25c7c865ce8 -> 329cd1619d41

It means that you need to execute all SQL output of "tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41 --sql" if you do this manually.

My concern is that the output shows an Exception in your result and you don't have all required SQL. Please find the output in my env for each upgrade process:

===============================================
-- Running upgrade c47a733f425a -> ee98bbc0789d

ALTER TABLE vnf_instantiated_info ADD COLUMN scale_status JSON;

UPDATE alembic_version SET version_num='ee98bbc0789d' WHERE alembic_version.version_num = 'c47a733f425a';

-- Running upgrade ee98bbc0789d -> 2c5211036579

CREATE TABLE placement_constraint (
    id VARCHAR(36) NOT NULL,
    vnf_instance_id VARCHAR(36) NOT NULL,
    affinity_or_anti_affinity VARCHAR(255) NOT NULL,
    scope VARCHAR(255) NOT NULL,
    server_group_name VARCHAR(255) NOT NULL,
    resource JSON NOT NULL,
    created_at DATETIME NOT NULL,
    updated_at DATETIME,
    deleted_at DATETIME,
    deleted BOOL,
    PRIMARY KEY (id),
    CHECK (deleted IN (0, 1))
)ENGINE=InnoDB;

UPDATE alembic_version SET version_num='2c5211036579' WHERE alembic_version.version_num = 'ee98bbc0789d';

-- Running upgrade 2c5211036579 -> d25c7c865ce8
ALTER TABLE vnf_lcm_filters MODIFY subscription_uuid VARCHAR(36) NOT NULL;
ALTER TABLE vnf_lcm_filters MODIFY subscription_uuid VARCHAR(36) NOT NULL;
ALTER TABLE vnf_lcm_filters ADD COLUMN operation_types BLOB(65536) GENERATED ALWAYS AS (json_unquote(json_extract('filter','$.operationTypes')));
ALTER TABLE vnf_lcm_filters ADD COLUMN operation_types BLOB(65536) GENERATED ALWAYS AS (json_unquote(json_extract('filter','$.operationTypes')));
ALTER TABLE vnf_lcm_filters ADD COLUMN operation_types_len INTEGER GENERATED ALWAYS AS (ifnull(json_length('operation_types'),0));
ALTER TABLE vnf_lcm_filters ADD COLUMN operation_types_len INTEGER GENERATED ALWAYS AS (ifnull(json_length('operation_types'),0));
ALTER TABLE vnf_lcm_filters DROP COLUMN operation_states;
ALTER TABLE vnf_lcm_filters DROP COLUMN operation_states;
ALTER TABLE vnf_lcm_filters DROP COLUMN operation_states_len;
ALTER TABLE vnf_lcm_filters DROP COLUMN operation_states_len;
ALTER TABLE vnf_lcm_op_occs MODIFY operation_state VARCHAR(16) NULL;
ALTER TABLE vnf_lcm_op_occs MODIFY operation_state VARCHAR(16) NULL;
ALTER TABLE vnf_lcm_op_occs MODIFY operation VARCHAR(16) NULL;
ALTER TABLE vnf_lcm_op_occs MODIFY operation VARCHAR(16) NULL;
ALTER TABLE vnf_lcm_op_occs ADD COLUMN is_cancel_pending BOOL NOT NULL;
ALTER TABLE vnf_lcm_op_occs ADD COLUMN is_cancel_pending BOOL NOT NULL;
ALTER TABLE vnf_lcm_op_occs ADD CHECK (is_cancel_pending IN (0, 1));
ALTER TABLE vnf_lcm_op_occs ADD CHECK (is_cancel_pending IN (0, 1));
ALTER TABLE vnf_lcm_op_occs ADD COLUMN resource_changes JSON;
ALTER TABLE vnf_lcm_op_occs ADD COLUMN resource_changes JSON;
ALTER TABLE vnf_lcm_op_occs ADD COLUMN error_point INTEGER;
ALTER TABLE vnf_lcm_op_occs ADD COLUMN error_point INTEGER;
ALTER TABLE vnf_lcm_op_occs ADD CO...

Read more...

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

Can I ask your local env info like OS and its version, if possible? The exception in the output of "tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade c47a733f425a:329cd1619d41 --sql" seems weird for me, and I'd like to check if it's a bug or not.

-- Running upgrade 2c5211036579 -> d25c7c865ce8

ALTER TABLE vnf_lcm_filters MODIFY subscription_uuid VARCHAR(36) NOT NULL;

Traceback (most recent call last):
  File "/usr/local/bin/tacker-db-manage", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 178, in main
    CONF.command.func(config, CONF.command.name)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 68, in do_upgrade
    do_alembic_command(config, cmd, revision, sql=CONF.command.sql)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/cli.py", line 47, in do_alembic_command
    getattr(alembic_command, cmd)(config, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/alembic/command.py", line 298, in upgrade
    script.run_env()
  File "/usr/lib/python3.6/site-packages/alembic/script/base.py", line 489, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/usr/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 98, in load_python_file
    module = load_module_py(module_id, path)
  File "/usr/lib/python3.6/site-packages/alembic/util/compat.py", line 173, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/alembic_migrations/env.py", line 82, in <module>
    run_migrations_offline()
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/alembic_migrations/env.py", line 54, in run_migrations_offline
    context.run_migrations()
  File "<string>", line 8, in run_migrations
  File "/usr/lib/python3.6/site-packages/alembic/runtime/environment.py", line 846, in run_migrations
    self.get_context().run_migrations(**kw)
  File "/usr/lib/python3.6/site-packages/alembic/runtime/migration.py", line 518, in run_migrations
    step.migration_fn(**kw)
  File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/alembic_migrations/versions/d25c7c865ce8_mod_vnflcm_subscription.py", line 47, in upgrade
    sa.Computed(sta_str)))
AttributeError: module 'sqlalchemy' has no attribute 'Computed'

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :

It's centOS 8 OS version.

[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

[root@localhost ~]# uname -r
4.18.0-193.28.1.el8_2.x86_64
[root@localhost ~]#

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :
Download full text (8.2 KiB)

I have deleted all tables of the tacker database and run the command for created schema. It's updating till "8a7ca803e0d0 -> c47a733f425a" and after that giving following error :

 File "/usr/local/lib/python3.6/site-packages/tacker/db/migration/alembic_migrations/versions/c47a733f425a_add_vnflcm_subscription.py", line 60, in upgrade
    sa.Computed(noti_str)),
AttributeError: module 'sqlalchemy' has no attribute 'Computed'

== Complete output ==

[root@localhost ~(keystone_admin)]# tacker-db-manage --config-file /etc/tacker/tacker.conf upgrade head
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 1c6b0d82afcd, add tables for tacker framework
INFO [alembic.runtime.migration] Running upgrade 1c6b0d82afcd -> 81ffa86020d, rpc_proxy
INFO [alembic.runtime.migration] Running upgrade 81ffa86020d -> 4c31092895b8, empty message
INFO [alembic.runtime.migration] Running upgrade 4c31092895b8 -> 13c0e0661015, add description to vnf
INFO [alembic.runtime.migration] Running upgrade 13c0e0661015 -> 5958429bcb3c, modify datatype of value
INFO [alembic.runtime.migration] Running upgrade 5958429bcb3c -> 12a57080b277, Add Service related dbs
INFO [alembic.runtime.migration] Running upgrade 12a57080b277 -> 12a57080b278, Alter devices
INFO [alembic.runtime.migration] Running upgrade 12a57080b278 -> 2774a42c7163, remove service related
INFO [alembic.runtime.migration] Running upgrade 2774a42c7163 -> 24bec5f211c7, Alter value in deviceattributes
INFO [alembic.runtime.migration] Running upgrade 24bec5f211c7 -> 5246a6bd410f, multisite_vim
INFO [alembic.runtime.migration] Running upgrade 5246a6bd410f -> acf941e54075, Add error_reason to device
INFO [alembic.runtime.migration] Running upgrade acf941e54075 -> f958f58e5daa, uuid consistency
INFO [alembic.runtime.migration] Running upgrade f958f58e5daa -> 6e56d4474b2a, blob-to-json-text
INFO [alembic.runtime.migration] Running upgrade 6e56d4474b2a -> c7cde2f45f82, set-description-to-text
INFO [alembic.runtime.migration] Running upgrade c7cde2f45f82 -> b07673bb8654, set-status-type-tenant-id-length
INFO [alembic.runtime.migration] Running upgrade b07673bb8654 -> 354de64ba129, set-mandatory-columns-not-null
INFO [alembic.runtime.migration] Running upgrade 354de64ba129 -> 5f88e86b35c7, make VNFD/VNF/VIM name mandatory
INFO [alembic.runtime.migration] Running upgrade 5f88e86b35c7 -> 22f5385a3d3f, Add status to vims
INFO [alembic.runtime.migration] Running upgrade 22f5385a3d3f -> d4f265e8eb9d, add default to vim
INFO [alembic.runtime.migration] Running upgrade d4f265e8eb9d -> 22f5385a3d4f, remove proxydb related
INFO [alembic.runtime.migration] Running upgrade 22f5385a3d4f -> 22f5385a3d50, rename device db tables
INFO [alembic.runtime.migration] Running upgrade 22f5385a3d50 -> 2ff0a0e360f1, audit support
INFO [alembic.runtime.migration] Running upgrade 2ff0a0e360f1 -> 941b5a6fff9e, enable soft delete
INFO [alembic.runtime.migration] Running upgrade 941b5a6fff9e -> 4ee19c8a6d0a, audit_support_events
INFO [alembic.runtime.migration] Running upgrade 4ee19c8a6d0a -> 50712291880...

Read more...

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

Thank you for the logs. I've confirmed that this is a bug of the package requirement in Tacker. The attribute 'Computed' in sqlalchemy is supported from 1.3.11 [1] but our requirement shows it to be 1.3.0 [2]. I guess your sqlalchemy is lower version than 1.3.11. I'll report this as a new bug in Tacker.

You can try to upgrade your sqlalchemy to be equal to or later than 1.3.11 if possible (you may find another requirement issue). Or as I mentioned before, you can try to manually upgrade the DB with SQL I listed above.

[1] https://github.com/sqlalchemy/sqlalchemy/blob/28138ee6fbc1273f1bf16699927e09db81ae7870/doc/build/core/defaults.rst#computed-columns-generated-always-as
[2] https://github.com/openstack/tacker/blob/master/requirements.txt#L17

Revision history for this message
Hariom Sharma (hariomsharma75) wrote :

Thank you for finding the root cause. Upgrading the sqlalchemy has resolved the issue. I am able to move forward now.

Revision history for this message
Yoshito Ito (ito.yoshito) wrote :

I'm glad to hear that. Thank you for your report, it was a important feedback for us. The new bug report is created [1] and I also updated the bug-fix patch [2].

When you find another issue, please feel free to make a new bug report or to post a question in this launchpad.

[1] https://bugs.launchpad.net/tacker/+bug/1908003
[2] https://review.opendev.org/c/openstack/tacker/+/766907

Yasufumi Ogawa (yasufum)
Changed in tacker:
importance: Undecided → Medium
Yasufumi Ogawa (yasufum)
Changed in tacker:
assignee: nobody → Yoshito Ito (ito.yoshito)
status: New → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/tacker 5.0.0.0rc1

This issue was fixed in the openstack/tacker 5.0.0.0rc1 release candidate.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.