** Description changed: [Impact] - when a user tries to + when a user tries to create nested templates, the network id cannot be + retrieved raising an error, this works fine in Kilo. [Test Case] * Deploy openstack with heat enabled - $ bzr branch lp:openstack-charm-testing - $ cd openstack-charm-testing - $ juju deployer -c default.yaml -d -v -s 10 wily-liberty - $ juju action do heat/0 domain-setup - $ ./configure - $ cat << EOF > minimal_portneutron.yaml + $ bzr branch lp:openstack-charm-testing + $ cd openstack-charm-testing + $ juju deployer -c default.yaml -d -v -s 10 wily-liberty + $ juju action do heat/0 domain-setup + $ ./configure + $ cat << EOF > minimal_portneutron.yaml heat_template_version: 2014-10-16 description: "Works well in Darmstadt Liberty LAB" resources: - network: - type: network.yaml - properties: - name: - list_join: - - '_' - - [ heat, { get_param: 'OS::stack_name' } ] - port: - type: OS::Neutron::Port - properties: - network_id: { get_attr: [ network, network ] } + network: + type: network.yaml + properties: + name: + list_join: + - '_' + - [ heat, { get_param: 'OS::stack_name' } ] + port: + type: OS::Neutron::Port + properties: + network_id: { get_attr: [ network, network ] } EOF - $ cat << EOF > minimal_portnested.yaml + $ cat << EOF > minimal_portnested.yaml heat_template_version: 2014-10-16 description: "ERROR: Failed to validate: : resources.port: : At least one of the following properties must be specified: network, network_id" resources: + network: + type: network.yaml + properties: + name: + list_join: + - '_' + - [ heat, { get_param: 'OS::stack_name' } ] + port: + type: port.yaml # Fails with 'Either network or network_id should be specified.' + properties: + network_id: { get_attr: [ network, network ] } + $ cat << EOF > port.yaml + heat_template_version: 2014-10-16 + parameters: + network_id: + type: string + resources: + port: + type: OS::Neutron::Port + properties: + network_id: { get_param: network_id } + $ cat << EOF > network.yaml + heat_template_version: 2014-10-16 + description: > + Creates a Neutron network/subnet combination, along with a security group + that allows all traffic from the subnet. + parameters: + name: + description: The name for the created network. + type: string + resources: network: - type: network.yaml + type: OS::Neutron::Net properties: - name: - list_join: - - '_' - - [ heat, { get_param: 'OS::stack_name' } ] - port: - type: port.yaml # Fails with 'Either network or network_id should be specified.' - properties: - network_id: { get_attr: [ network, network ] } - $ source novarc - $ heat stack-create -f minimal_portneutron.yaml minimal_portneutron - $ heat stack-create -f minimal_portnested.yaml minimal_portnested + name: { get_param: name } + outputs: + network: + description: The neutron network created. + value: { get_resource: network } + $ source novarc + $ heat stack-create -f minimal_portneutron.yaml minimal_portneutron + $ heat stack-create -f minimal_portnested.yaml minimal_portnested Expected: The nested port is created Actual result: Traceback (most recent call last): - File "/usr/bin/heat", line 10, in <module> - sys.exit(main()) - File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 705, in main - HeatShell().main(args) - File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 655, in main - args.func(client, args) - File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 140, in do_stack_create - hc.stacks.create(**fields) - File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 136, in create - data=kwargs, headers=headers) - File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in post - return self.request(url, 'POST', **kwargs) - File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 317, in request - raise exc.from_response(resp) + File "/usr/bin/heat", line 10, in <module> + sys.exit(main()) + File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 705, in main + HeatShell().main(args) + File "/usr/lib/python2.7/dist-packages/heatclient/shell.py", line 655, in main + args.func(client, args) + File "/usr/lib/python2.7/dist-packages/heatclient/v1/shell.py", line 140, in do_stack_create + hc.stacks.create(**fields) + File "/usr/lib/python2.7/dist-packages/heatclient/v1/stacks.py", line 136, in create + data=kwargs, headers=headers) + File "/usr/lib/python2.7/dist-packages/keystoneclient/adapter.py", line 176, in post + return self.request(url, 'POST', **kwargs) + File "/usr/lib/python2.7/dist-packages/heatclient/common/http.py", line 317, in request + raise exc.from_response(resp) heatclient.exc.HTTPBadRequest: ERROR: Failed to validate: : resources.port: : At least one of the following properties must be specified: network, network_id [Regression Potential] * This patch was tested in a production environment and also it was already merged in the Liberty stable branch https://review.openstack.org/306293 , so the regression potential is minimum. [Other Info] * Upstream bug 1518676
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1579891 Title: [SRU] Validating a stack fails as one nested stack can't find an id from another To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/heat/+bug/1579891/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs