Stack creation fails when connecting a Nova::Server instance with a created network

Bug #1503060 reported by Mingyu Li
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Heat
Fix Released
High
Steve Baker

Bug Description

In an OpenStack environment installed with Devstack and stable/liberty branch, stack creation fails when I use some templates that worked well with stable/kilo, such as the following template:

heat_template_version: 2014-10-16

resources:
  private_net1:
    type: OS::Neutron::Net
    properties:
      name: demo_net_a

  private_subnet1:
    type: OS::Neutron::Subnet
    properties:
      network_id: { get_resource: private_net1 }
      cidr: 192.168.1.0/24

  server1:
    type: OS::Nova::Server
    properties:
      name: Server1
      image: cirros-0.3.4-x86_64-uec
      flavor: m1.nano
      networks: [{"network":{ get_resource: private_net1 }}]

The response is " ERROR: Unable to find network with name 'None' ".

It seems that Heat does not find the network { get_resource: private_net1 }

Revision history for this message
Steve Baker (steve-stevebaker) wrote :

Also affects master

2015-10-06 12:32:36.429 ERROR heat.engine.stack [req-7220f9e7-4425-41b1-843f-39523c85581c None demo] Exception: Unable to find network with name 'None'
2015-10-06 12:32:36.429 TRACE heat.engine.stack Traceback (most recent call last):
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/stack.py", line 647, in validate
2015-10-06 12:32:36.429 TRACE heat.engine.stack result = res.validate()
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/resources/openstack/nova/server.py", line 1200, in validate
2015-10-06 12:32:36.429 TRACE heat.engine.stack self._validate_network(network)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/resources/openstack/nova/server_network_mixin.py", line 78, in _validate_network
2015-10-06 12:32:36.429 TRACE heat.engine.stack self._validate_belonging_subnet_to_net(network)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/resources/openstack/nova/server_network_mixin.py", line 82, in _validate_belonging_subnet_to_net
2015-10-06 12:32:36.429 TRACE heat.engine.stack net = self._get_network_id(network)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/resources/openstack/nova/server_network_mixin.py", line 237, in _get_network_id
2015-10-06 12:32:36.429 TRACE heat.engine.stack net, self.NETWORK_ID, self.NETWORK_UUID)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/clients/os/neutron.py", line 83, in resolve_network
2015-10-06 12:32:36.429 TRACE heat.engine.stack return self._resolve(props, net_key, net_id_key, 'network')
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/clients/os/neutron.py", line 78, in _resolve
2015-10-06 12:32:36.429 TRACE heat.engine.stack props, key, key_type)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/home/steveb/dev/localstack/heat/heat/engine/clients/os/neutron.py", line 73, in find_neutron_resource
2015-10-06 12:32:36.429 TRACE heat.engine.stack self.client(), key_type, props.get(key))
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/usr/lib/python2.7/site-packages/neutronclient/neutron/v2_0/__init__.py", line 133, in find_resourceid_by_name_or_id
2015-10-06 12:32:36.429 TRACE heat.engine.stack parent_id, fields='id')['id']
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/usr/lib/python2.7/site-packages/neutronclient/neutron/v2_0/__init__.py", line 125, in find_resource_by_name_or_id
2015-10-06 12:32:36.429 TRACE heat.engine.stack fields)
2015-10-06 12:32:36.429 TRACE heat.engine.stack File "/usr/lib/python2.7/site-packages/neutronclient/neutron/v2_0/__init__.py", line 111, in _find_resource_by_name
2015-10-06 12:32:36.429 TRACE heat.engine.stack message=not_found_message, status_code=404)
2015-10-06 12:32:36.429 TRACE heat.engine.stack NeutronClientException: Unable to find network with name 'None'

Changed in heat:
status: New → Triaged
importance: Undecided → High
milestone: none → mitaka-1
Changed in heat:
assignee: nobody → Steve Baker (steve-stevebaker)
status: Triaged → In Progress
tags: added: liberty-rc-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

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

Changed in heat:
status: Triaged → In Progress
Thierry Carrez (ttx)
no longer affects: heat/mitaka
no longer affects: heat/liberty
Changed in heat:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)

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

commit 4f8287d381d464dc91a3b7cd097158a39bb0bdd1
Author: Steve Baker <email address hidden>
Date: Tue Oct 6 12:54:24 2015 +1300

    Do no net/subnet checks during validate

    Currently validation fails if the network or the subnet are defined in
    the same template as the server because they don't exist during
    validate.

    _validate_belonging_subnet_to_net is called during _build_nics so this
    check still happens when the required resources actually exist.

    Also, test method validate_internal_port_subnet_not_this_network was not
    running because its name was not prefixed with test_. Fixing and
    updating this test revealed issues with the validation failed message.

    Closes-Bug: #1503060
    Change-Id: I2e062abf5b9fb7446b979ba6acc2e2b531d957d6

Changed in heat:
status: In Progress → Fix Committed
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (stable/liberty)

Fix proposed to branch: stable/liberty
Review: https://review.openstack.org/231805

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (stable/liberty)

Reviewed: https://review.openstack.org/231805
Committed: https://git.openstack.org/cgit/openstack/heat/commit/?id=4348b7ababd1048e17ec354ca38c903c908cd74e
Submitter: Jenkins
Branch: stable/liberty

commit 4348b7ababd1048e17ec354ca38c903c908cd74e
Author: Steve Baker <email address hidden>
Date: Tue Oct 6 12:54:24 2015 +1300

    Do no net/subnet checks during validate

    Currently validation fails if the network or the subnet are defined in
    the same template as the server because they don't exist during
    validate.

    _validate_belonging_subnet_to_net is called during _build_nics so this
    check still happens when the required resources actually exist.

    Also, test method validate_internal_port_subnet_not_this_network was not
    running because its name was not prefixed with test_. Fixing and
    updating this test revealed issues with the validation failed message.

    Closes-Bug: #1503060
    Change-Id: I2e062abf5b9fb7446b979ba6acc2e2b531d957d6

tags: added: in-stable-liberty
Thierry Carrez (ttx)
Changed in heat:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in heat:
milestone: liberty-rc2 → 5.0.0
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to heat (master)

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

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to heat (master)
Download full text (9.5 KiB)

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

commit 4348b7ababd1048e17ec354ca38c903c908cd74e
Author: Steve Baker <email address hidden>
Date: Tue Oct 6 12:54:24 2015 +1300

    Do no net/subnet checks during validate

    Currently validation fails if the network or the subnet are defined in
    the same template as the server because they don't exist during
    validate.

    _validate_belonging_subnet_to_net is called during _build_nics so this
    check still happens when the required resources actually exist.

    Also, test method validate_internal_port_subnet_not_this_network was not
    running because its name was not prefixed with test_. Fixing and
    updating this test revealed issues with the validation failed message.

    Closes-Bug: #1503060
    Change-Id: I2e062abf5b9fb7446b979ba6acc2e2b531d957d6

commit 7e911cec083e98f344bfcfeb7e2e843ce2330d5d
Author: Pratik Mallya <email address hidden>
Date: Mon Oct 5 00:34:12 2015 -0500

    Correctly filter events on resource name

    Filtering on resource name can be accomplished by using the db
    filters instead of using a filter method. Furthermore, using a
    custom filter breaks certain assumptions made by other parts of
    the codebase, which lead to pagination being broken.
    Specifically, custom filter for resource name is applied only
    after other filtering is finished. As a result, we try to find
    result from only 1 event and this event belongs to whole
    stack and thus its resource_name is equal to the stack name.
    This returns an event not found error instead of returning
    the first event assosciated with the resource name.

    Change-Id: Ie7d28ffb88a79d6e0f516f0db385be2eed59f7f0
    Closes-Bug: #1502751
    (cherry picked from commit 6322ff6fceabdfa226e5359328bde292d189e703)

commit fecc2bacb51c7dabdb83b87313df48dea527feae
Author: Pratik Mallya <email address hidden>
Date: Thu Oct 1 17:41:09 2015 -0500

    Check if os-interface extension is present before saving ports

    If that extension is not present, then the code to extract and
    save ports created during server create by nova will fail.

    Change-Id: I6008a0da0c16a34c40e343af4e7237520db4ae36
    Closes-Bug: #1499877
    (cherry picked from commit 46d8c276b70e7698438988faa9d997577a7e1750)

commit 6c3fa4e25d3e35adf53ad1e80d5455bf9f7a924a
Author: Peter Razumovsky <email address hidden>
Date: Mon Sep 14 17:43:49 2015 +0300

    Fix translating for props with get_param value

    If some map or list type properties specified with
    json-type or commadelimitedlist parameters, error
    raised in case of wrong properties data parsing.
    Fix this case by adding check if data is GetParam
    instance, resolve it. Other function can be safely
    replaced without resolve.

    Change-Id: I0c9a6af29b56b629cbdad2acb868c3033e38b5ef
    Closes-bug: #1494364
    (cherry picked from commit aea59ecdac6ed6635125eb2064554140e3e645fc)

commit 8810a28a9016b3bfa515fc11efd5f5dfa103b380
Author: OpenStack Propos...

Read more...

Revision history for this message
Thierry Carrez (ttx) wrote : Fix included in openstack/heat 6.0.0.0b1

This issue was fixed in the openstack/heat 6.0.0.0b1 development milestone.

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.