Heat allows creation of subnet on a provider network but neutron wants a gateway: 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource [req-ac776e7e-1c57-4ffc-b861-4c0e79fe1772 7ea99de0a18b4a7bb449a40f063f0752 3eb74e3b60394da3af0d257c93701051 - - -] create failed: No details. 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource Traceback (most recent call last): 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/api/v2/resource.py", line 93, in resource 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource result = method(request=request, **args) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/api/v2/base.py", line 431, in create 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return self._create(request, body, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 88, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 84, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 151, in wrapper 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource ectxt.value = e.inner_exc 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 139, in wrapper 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 124, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource traceback.format_exc()) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 119, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/api/v2/base.py", line 544, in _create 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/api/v2/base.py", line 526, in do_create 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource request.context, reservation.reservation_id) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/api/v2/base.py", line 519, in do_create 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return obj_creator(request.context, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/common/utils.py", line 807, in inner 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(self, context, *args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 159, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return method(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 88, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource setattr(e, '_RETRY_EXCEEDED', True) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 84, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 151, in wrapper 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource ectxt.value = e.inner_exc 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_db/api.py", line 139, in wrapper 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 124, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource traceback.format_exc()) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__ 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource self.force_reraise() 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource six.reraise(self.type_, self.value, self.tb) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 119, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return f(*dup_args, **dup_kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/plugins/ml2/plugin.py", line 1011, in create_subnet 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource result, mech_context = self._create_subnet_db(context, subnet) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/plugins/ml2/plugin.py", line 998, in _create_subnet_db 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource result = super(Ml2Plugin, self).create_subnet(context, subnet) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/api.py", line 159, in wrapped 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return method(*args, **kwargs) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/db_base_plugin_v2.py", line 729, in create_subnet 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource return self._create_subnet(context, subnet, subnetpool_id) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/db_base_plugin_v2.py", line 631, in _create_subnet 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource subnet) 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource File "/usr/lib/python2.7/site-packages/neutron/db/db_base_plugin_v2.py", line 602, in _update_router_gw_ports 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource fips = [f for f in external_gateway_info['external_fixed_ips'] 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource TypeError: 'NoneType' object has no attribute '__getitem__' 2018-05-02 02:31:11.774 148213 ERROR neutron.api.v2.resource Simple way to reproduce this issue is to use: public_net: type: OS::Neutron::ProviderNet properties: name: public_net physical_network: datacentre router_external: true network_type: flat public: type: OS::Neutron::Subnet depends_on: public_net properties: name: public network_id: { get_resource: public_net } cidr: "192.168.122.0/24" allocation_pools: [ { "start": "192.168.122.150", "end": "192.168.122.160" } ] dns_nameservers: [ "8.8.8.8", "8.8.4.4" ] ip_version: 4 instead of: public_net: type: OS::Neutron::ProviderNet properties: name: public_net physical_network: datacentre router_external: true network_type: flat public: type: OS::Neutron::Subnet depends_on: public_net properties: name: public network_id: { get_resource: public_net } cidr: "192.168.122.0/24" allocation_pools: [ { "start": "192.168.122.150", "end": "192.168.122.160" } ] dns_nameservers: [ "8.8.8.8", "8.8.4.4" ] gateway_ip: "192.168.122.1" ip_version: 4