HEAT HOT template fails to create trove instance when using neutron

Bug #1312474 reported by Wayne Foley
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
Undecided
Pavlo Shchelokovskyy

Bug Description

Using the following HOT template for creating a trove instance fails on a DevStack that is using Neutron.

Trove is trying to create the instance, but because it's using neutron, it finds multiple networks available and fails. Using the trove client, a user can specify a network-id and an instance can be created. (for example "trove create dbinstance 2 --nic net-id=<network id>")

The HEAT/HOT template need to be updated/extended to allow the user to specify a network-id for the instance.

Template:
------
heat_template_version: 2013-05-23

resources:
  MyDbInstance:
    type: OS::Trove::Instance
    properties:
      databases: [{"name": "MyDB" }]
      flavor: "m1.small"
      name: "MyDbInstance"
      size: 1
      users: [{"password": "password", "name": "dbuser", "databases": ["MyDB"]}]
--------

Stack Track from Trove Task Manager:
---------
2014-04-24 23:25:00.588 ERROR trove.taskmanager.models [req-6ed77f3c-d779-4f7a-bfa7-f2a062a59ea5 19ad7aab8787455b9ed6defe8216eaed 127a2fdf0bf34889a43ec90407fb12bc] Error creating server for instance b939abb7-aac3-4dbb-ad2f-3e8fbc9d3b5b
2014-04-24 23:25:00.588 ERROR trove.taskmanager.models [req-6ed77f3c-d779-4f7a-bfa7-f2a062a59ea5 19ad7aab8787455b9ed6defe8216eaed 127a2fdf0bf34889a43ec90407fb12bc] Multiple possible networks found, use a Network ID to be more specific. (HTTP 400) (Request-ID: req-251c9d7d-138d-438a-b8ea-c9eddc8a648d)
2014-04-24 23:25:00.589 ERROR trove.taskmanager.models [req-6ed77f3c-d779-4f7a-bfa7-f2a062a59ea5 19ad7aab8787455b9ed6defe8216eaed 127a2fdf0bf34889a43ec90407fb12bc] Traceback (most recent call last):
  File "/mnt/stack/trove/trove/taskmanager/models.py", line 462, in _create_server_volume_individually
    availability_zone, nics)
  File "/mnt/stack/trove/trove/taskmanager/models.py", line 575, in _create_server
    availability_zone=availability_zone, nics=nics)
  File "/mnt/stack/python-novaclient/novaclient/v1_1/servers.py", line 879, in create
    **boot_kwargs)
  File "/mnt/stack/python-novaclient/novaclient/v1_1/servers.py", line 542, in _boot
    return_raw=return_raw, **kwargs)
  File "/mnt/stack/python-novaclient/novaclient/base.py", line 152, in _create
    _resp, body = self.api.client.post(url, body=body)
  File "/mnt/stack/python-novaclient/novaclient/client.py", line 314, in post
    return self._cs_request(url, 'POST', **kwargs)
  File "/mnt/stack/python-novaclient/novaclient/client.py", line 288, in _cs_request
    **kwargs)
  File "/mnt/stack/python-novaclient/novaclient/client.py", line 270, in _time_request
    resp, body = self.request(url, method, **kwargs)
  File "/mnt/stack/python-novaclient/novaclient/client.py", line 264, in request
    raise exceptions.from_response(resp, body, url, method)
BadRequest: Multiple possible networks found, use a Network ID to be more specific. (HTTP 400) (Request-ID: req-251c9d7d-138d-438a-b8ea-c9eddc8a648d)

2014-04-24 23:25:00.592 DEBUG trove.db.models [req-6ed77f3c-d779-4f7a-bfa7-f2a062a59ea5 19ad7aab8787455b9ed6defe8216eaed 127a2fdf0bf34889a43ec90407fb12bc] Saving DBInstance: {u'task_start_time': None, u'updated': datetime.datetime(2014, 4, 24, 23, 25, 0, 592516), '_sa_instance_state': <sqlalchemy.orm.state.InstanceState object at 0x32280d0>, u'name': u'MyDbInstance', u'task_id': 81, u'created': datetime.datetime(2014, 4, 24, 23, 24, 56), u'deleted': 0, u'tenant_id': u'127a2fdf0bf34889a43ec90407fb12bc', u'compute_instance_id': None, u'hostname': None, u'configuration_id': None, u'server_status': None, u'task_description': 'Build error: Server.', u'volume_size': 1L, 'errors': {}, u'flavor_id': 2L, u'volume_id': u'14aca398-41d0-4fcd-abbe-3ca0bd9d2dbd', u'deleted_at': None, u'id': u'b939abb7-aac3-4dbb-ad2f-3e8fbc9d3b5b', u'datastore_version_id': u'ded8c448-b881-41c8-9e35-cba42bc5cc13'} from (pid=17071) save /mnt/stack/trove/trove/db/models.py:61
2014-04-24 23:25:00.597 ERROR trove.openstack.common.rpc.amqp [req-6ed77f3c-d779-4f7a-bfa7-f2a062a59ea5 19ad7aab8787455b9ed6defe8216eaed 127a2fdf0bf34889a43ec90407fb12bc] Exception during message handling
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp Traceback (most recent call last):
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/openstack/common/rpc/amqp.py", line 440, in _process_data
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp **args)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/openstack/common/rpc/dispatcher.py", line 172, in dispatch
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp result = getattr(proxyobj, method)(ctxt, **kwargs)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/taskmanager/manager.py", line 90, in create_instance
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp overrides)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/taskmanager/models.py", line 214, in create_instance
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp nics)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/taskmanager/models.py", line 469, in _create_server_volume_individually
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp self._log_and_raise(e, msg, err)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp File "/mnt/stack/trove/trove/taskmanager/models.py", line 503, in _log_and_raise
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp raise TroveError(message=message)
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp TroveError: Error creating server for instance b939abb7-aac3-4dbb-ad2f-3e8fbc9d3b5b
2014-04-24 23:25:00.597 TRACE trove.openstack.common.rpc.amqp
----------------

Changed in heat:
status: New → Confirmed
Changed in heat:
assignee: nobody → Pavlo Shchelokovskyy (pshchelo)
Revision history for this message
Pavlo Shchelokovskyy (pshchelo) wrote :

to fix this the troveclient in global requirements must be updated [1], as 1.0.3 does not support providing nic while creating trove instance

[1] https://review.openstack.org/#/c/86542/

Revision history for this message
Openstack Gerrit (openstack-gerrit) wrote : Fix proposed to heat (master)

Fix proposed to branch: master
Review: https://review.openstack.org/91088

Changed in heat:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

Reviewed: https://review.openstack.org/91088
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=cab25ee8e07008ce5ccae0ec5336e4b3486e2ff4
Submitter: Jenkins
Branch: master

commit cab25ee8e07008ce5ccae0ec5336e4b3486e2ff4
Author: Pavlo Shchelokovskyy <email address hidden>
Date: Fri Apr 25 19:22:15 2014 +0300

    Add networks property to OS::Trove::Instance

    Trove client recently added possibility to provide NICS while creating
    Trove instances, which is required in presence of multiple Neutron
    networks. This patch adds such property to OS::Trove::Instance resource,
    allowing usage of this new feature in Heat.

    Closes-Bug: #1312474
    Change-Id: Ie691702bb2e2537397ed7ae657eb8d088424d890

Changed in heat:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in heat:
milestone: none → juno-3
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in heat:
milestone: juno-3 → 2014.2
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.