[Openstack] net-create issue

Erich Weiler weiler at soe.ucsc.edu
Mon Mar 31 22:57:18 UTC 2014


As a follow up on this, neutron seems to be having trouble creating 
other neutron DB tables as well.  I see in the neutron-server startup logs:

2014-03-31 15:39:42.338 15778 INFO neutron.common.config [-] Logging 
enabled!
2014-03-31 15:39:42.339 15778 ERROR neutron.common.legacy [-] Skipping 
unknown group key: firewall_driver
2014-03-31 15:39:42.344 15778 INFO neutron.common.config [-] Config 
paste file: /etc/neutron/api-paste.ini
2014-03-31 15:39:42.400 15778 INFO neutron.manager [-] Loading core 
plugin: neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2
2014-03-31 15:39:42.537 15778 WARNING 
neutron.openstack.common.db.sqlalchemy.session [-] This application has 
not enabled MySQL traditional mode, which means silent data corruption 
may occur. Please encourage the application developers to enable this mode.
2014-03-31 15:39:42.581 15778 INFO neutron.db.api [-] Database 
registration exception: (OperationalError) (1005, "Can't create table 
'neutron.networkdhcpagentbindings' (errno: 150)") '\nCREATE TABLE 
networkdhcpagentbindings (\n\tnetwork_id VARCHAR(36) NOT NULL, 
\n\tdhcp_agent_id VARCHAR(36) NOT NULL, \n\tPRIMARY KEY (network_id, 
dhcp_agent_id), \n\tFOREIGN KEY(network_id) REFERENCES networks (id) ON 
DELETE CASCADE, \n\tFOREIGN KEY(dhcp_agent_id) REFERENCES agents (id) ON 
DELETE CASCADE\n)ENGINE=InnoDB\n\n' ()

The rest of the startup items go OK.  I confirmed that the neutron mysql 
username and password referenced in /etc/neutron/neutron.conf were correct.

I decided to log in as the neutron user to mysql and create the table 
referenced above in the error logs myself - it failed:

# mysql -u neutron -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.1.73-log Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input 
statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| neutron            |
+--------------------+
2 rows in set (0.00 sec)

mysql> use neutron;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> CREATE TABLE networkdhcpagentbindings (network_id VARCHAR(36) NOT 
NULL, dhcp_agent_id VARCHAR(36) NOT NULL, PRIMARY KEY (network_id, 
dhcp_agent_id), FOREIGN KEY(network_id) REFERENCES networks (id) ON 
DELETE CASCADE, FOREIGN KEY(dhcp_agent_id) REFERENCES agents (id) ON 
DELETE CASCADE)ENGINE=InnoDB;
ERROR 1005 (HY000): Can't create table 
'neutron.networkdhcpagentbindings' (errno: 150)

Just for fun I created another table just to be sure I could create 
tables at all:

mysql> CREATE TABLE testtable (c CHAR(20) CHARACTER SET utf8 COLLATE 
utf8_bin);
Query OK, 0 rows affected (0.01 sec)

mysql> drop table testtable;
Query OK, 0 rows affected (0.00 sec)

Could this be a bug in the table create code for neutron?  I'm not savvy 
enough in mysql to see where the issue is, maybe something to do with 
the foreign key?

Anyway, if anyone sees something obvious, please let me know...  ;)

-erich

On 03/31/14 15:00, Erich Weiler wrote:
> Hey Y'all,
>
> I'm working on the latest RDO icehouse release of openstack and am
> following the redhat guide to set this stuff up (which looks almost like
> all the other guides with a few differences), and am stuck on the
> Neutron part.  I *think* I have all the backend services set up
> (neutron-server on the controller, and neutron agents on the network
> node), and want to create my first public network, but I'm getting an
> error:
>
> # neutron net-create ext-net --router:external=True
> Request Failed: internal server error while processing your request.
>
> Looking in the neutron server logs, I see:
>
> 2014-03-31 14:50:47.746 3192 INFO urllib3.connectionpool [-] Starting
> new HTTP connection (1): my-internal-server.edu
> 2014-03-31 14:50:47.854 3192 ERROR neutron.api.v2.resource
> [req-d20aad3f-d200-484c-b73a-9556efe62386 None] create failed
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource Traceback
> (most recent call last):
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/api/v2/resource.py", line 87,
> in resource
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     result =
> method(request=request, **args)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/api/v2/base.py", line 411, in
> create
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     obj =
> obj_creator(request.context, **kwargs)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/plugins/openvswitch/ovs_neutron_plugin.py",
> line 501, in create_network
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     network)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/db/db_base_plugin_v2.py", line
> 927, in create_network
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> self._make_network_dict(network, process_extensions=False)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/db/db_base_plugin_v2.py", line
> 842, in _make_network_dict
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     for
> subnet in network['subnets']]}
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib/python2.6/site-packages/neutron/openstack/common/db/sqlalchemy/models.py",
> line 57, in __getitem__
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> getattr(self, key)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/attributes.py",
> line 168, in __get__
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> self.impl.get(instance_state(instance),dict_)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/attributes.py",
> line 453, in get
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     value =
> self.callable_(state, passive)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/strategies.py",
> line 508, in _load_for_state
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> self._emit_lazyload(session, state, ident_key)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/strategies.py",
> line 574, in _emit_lazyload
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     result =
> q.all()
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
> line 2115, in all
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> list(self)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
> line 2227, in __iter__
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     return
> self._execute_and_instances(context)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
> line 2242, in _execute_and_instances
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     result =
> conn.execute(querycontext.statement, self._params)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1449, in execute
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     params)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1584, in _execute_clauseelement
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource compiled_sql,
> distilled_params
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1698, in _execute_context
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     context)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
> line 1691, in _execute_context
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     context)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/SQLAlchemy-0.7.8-py2.6-linux-x86_64.egg/sqlalchemy/engine/default.py",
> line 331, in do_execute
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource
> cursor.execute(statement, parameters)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 173, in
> execute
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource
> self.errorhandler(self, exc, value)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource   File
> "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in
> defaulterrorhandler
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource     raise
> errorclass, errorvalue
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource
> ProgrammingError: (ProgrammingError) (1146, "Table
> 'neutron.ipallocationpools' doesn't exist") 'SELECT subnets.tenant_id AS
> subnets_tenant_id, subnets.id AS subnets_id, subnets.name AS
> subnets_name, subnets.network_id AS subnets_network_id,
> subnets.ip_version AS subnets_ip_version, subnets.cidr AS subnets_cidr,
> subnets.gateway_ip AS subnets_gateway_ip, subnets.enable_dhcp AS
> subnets_enable_dhcp, subnets.shared AS subnets_shared,
> ipavailabilityranges_1.allocation_pool_id AS
> ipavailabilityranges_1_allocation_pool_id,
> ipavailabilityranges_1.first_ip AS ipavailabilityranges_1_first_ip,
> ipavailabilityranges_1.last_ip AS ipavailabilityranges_1_last_ip,
> ipallocationpools_1.id AS ipallocationpools_1_id,
> ipallocationpools_1.subnet_id AS ipallocationpools_1_subnet_id,
> ipallocationpools_1.first_ip AS ipallocationpools_1_first_ip,
> ipallocationpools_1.last_ip AS ipallocationpools_1_last_ip \nFROM
> subnets LEFT OUTER JOIN ipallocationpools AS ipallocationpools_1 ON
> subnets.id = ipallocationpools_1.subnet_id LEFT OUTER JOIN
> ipavailabilityranges AS ipavailabilityranges_1 ON ipallocationpools_1.id
> = ipavailabilityranges_1.allocation_pool_id \nWHERE %s =
> subnets.network_id' ('ca36a372-5d73-420b-ab3c-d4530e2c2a2a',)
> 2014-03-31 14:50:47.854 3192 TRACE neutron.api.v2.resource
> 2014-03-31 14:50:47.857 3192 INFO neutron.wsgi
> [req-d20aad3f-d200-484c-b73a-9556efe62386 None]
> 112.113.114.115,10.1.1.147 - - [31/Mar/2014 14:50:47] "POST
> /v2.0/networks.json HTTP/1.1" 500 296 0.113226
>
> If I had to guess, I'd say that, based on the above error messages, the
> mysql "neutron.ipallocationpools" table does not exist (checking...
> Nope, it's not there).  Other neutron tables are in the neutron database
> however, just not that one.
>
> I thought Neutron sort of automatically creates tables as needed, I
> wonder why it didn't work here?  Or maybe I'm on the wrong trail?
>
> Any hints would be greatly appreciated!!
>
> -erich




More information about the Openstack mailing list