summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heat/engine/resources/openstack/neutron/net.py10
-rw-r--r--heat/engine/resources/openstack/neutron/provider_net.py13
-rw-r--r--heat/engine/resources/openstack/neutron/router.py13
-rw-r--r--heat/tests/openstack/neutron/test_neutron_net.py3
-rw-r--r--heat/tests/openstack/neutron/test_neutron_provider_net.py9
-rw-r--r--heat/tests/openstack/neutron/test_neutron_router.py3
-rw-r--r--releasenotes/notes/availability_zone_hints_Neutron_network_router-d01df1463193d9e6.yaml5
7 files changed, 48 insertions, 8 deletions
diff --git a/heat/engine/resources/openstack/neutron/net.py b/heat/engine/resources/openstack/neutron/net.py
index d0d2ebd8d..156c03042 100644
--- a/heat/engine/resources/openstack/neutron/net.py
+++ b/heat/engine/resources/openstack/neutron/net.py
@@ -33,11 +33,11 @@ class Net(neutron.NeutronResource):
PROPERTIES = (
NAME, VALUE_SPECS, ADMIN_STATE_UP, TENANT_ID, SHARED,
DHCP_AGENT_IDS, PORT_SECURITY_ENABLED, QOS_POLICY,
- DNS_DOMAIN, TAGS,
+ DNS_DOMAIN, AVAILABILITY_ZONE_HINTS, TAGS,
) = (
'name', 'value_specs', 'admin_state_up', 'tenant_id', 'shared',
'dhcp_agent_ids', 'port_security_enabled', 'qos_policy',
- 'dns_domain', 'tags',
+ 'dns_domain', 'availability_zone_hints', 'tags',
)
ATTRIBUTES = (
@@ -118,6 +118,12 @@ class Net(neutron.NeutronResource):
update_allowed=True,
support_status=support.SupportStatus(version='7.0.0')
),
+ AVAILABILITY_ZONE_HINTS: properties.Schema(
+ properties.Schema.LIST,
+ _('Availability zone candidates for the network. It requires the '
+ 'availability_zone extension to be available.'),
+ support_status=support.SupportStatus(version='19.0.0')
+ ),
TAGS: properties.Schema(
properties.Schema.LIST,
_('The tags to be added to the network.'),
diff --git a/heat/engine/resources/openstack/neutron/provider_net.py b/heat/engine/resources/openstack/neutron/provider_net.py
index 9f5a038c7..899b29590 100644
--- a/heat/engine/resources/openstack/neutron/provider_net.py
+++ b/heat/engine/resources/openstack/neutron/provider_net.py
@@ -37,11 +37,13 @@ class ProviderNet(net.Net):
PROPERTIES = (
NAME, PROVIDER_NETWORK_TYPE, PROVIDER_PHYSICAL_NETWORK,
PROVIDER_SEGMENTATION_ID, ADMIN_STATE_UP, SHARED,
- PORT_SECURITY_ENABLED, ROUTER_EXTERNAL, DNS_DOMAIN, TAGS,
+ PORT_SECURITY_ENABLED, ROUTER_EXTERNAL, DNS_DOMAIN,
+ AVAILABILITY_ZONE_HINTS, TAGS,
) = (
'name', 'network_type', 'physical_network',
'segmentation_id', 'admin_state_up', 'shared',
- 'port_security_enabled', 'router_external', 'dns_domain', 'tags',
+ 'port_security_enabled', 'router_external', 'dns_domain',
+ 'availability_zone_hints', 'tags',
)
@@ -119,6 +121,13 @@ class ProviderNet(net.Net):
update_allowed=True,
support_status=support.SupportStatus(version='15.0.0')
),
+ AVAILABILITY_ZONE_HINTS: properties.Schema(
+ properties.Schema.LIST,
+ _('Availability zone candidates for the network. It requires the '
+ 'availability_zone extension to be available.'),
+ update_allowed=True,
+ support_status=support.SupportStatus(version='19.0.0')
+ ),
}
attributes_schema = {
diff --git a/heat/engine/resources/openstack/neutron/router.py b/heat/engine/resources/openstack/neutron/router.py
index 1127a2c10..72f7dbbdd 100644
--- a/heat/engine/resources/openstack/neutron/router.py
+++ b/heat/engine/resources/openstack/neutron/router.py
@@ -35,10 +35,12 @@ class Router(neutron.NeutronResource):
PROPERTIES = (
NAME, EXTERNAL_GATEWAY, VALUE_SPECS, ADMIN_STATE_UP,
- L3_AGENT_ID, L3_AGENT_IDS, DISTRIBUTED, HA, TAGS,
+ L3_AGENT_ID, L3_AGENT_IDS, DISTRIBUTED, HA, AVAILABILITY_ZONE_HINTS,
+ TAGS,
) = (
'name', 'external_gateway_info', 'value_specs', 'admin_state_up',
- 'l3_agent_id', 'l3_agent_ids', 'distributed', 'ha', 'tags',
+ 'l3_agent_id', 'l3_agent_ids', 'distributed', 'ha',
+ 'availability_zone_hints', 'tags',
)
_EXTERNAL_GATEWAY_KEYS = (
@@ -171,6 +173,13 @@ class Router(neutron.NeutronResource):
'do not support distributed and ha at the same time.'),
support_status=support.SupportStatus(version='2015.1')
),
+ AVAILABILITY_ZONE_HINTS: properties.Schema(
+ properties.Schema.LIST,
+ _('Availability zone candidates for the router. It requires the '
+ 'availability_zone extension to be available.'),
+ update_allowed=True,
+ support_status=support.SupportStatus(version='19.0.0')
+ ),
TAGS: properties.Schema(
properties.Schema.LIST,
_('The tags to be added to the router.'),
diff --git a/heat/tests/openstack/neutron/test_neutron_net.py b/heat/tests/openstack/neutron/test_neutron_net.py
index 63a68c582..f45479806 100644
--- a/heat/tests/openstack/neutron/test_neutron_net.py
+++ b/heat/tests/openstack/neutron/test_neutron_net.py
@@ -40,6 +40,8 @@ resources:
- 28c25a04-3f73-45a7-a2b4-59e183943ddc
port_security_enabled: False
dns_domain: openstack.org.
+ availability_zone_hints:
+ - az1
value_specs: {'mtu': 1500}
tags:
- tag1
@@ -186,6 +188,7 @@ class NeutronNetTest(common.HeatTestCase):
'dns_domain': u'openstack.org.',
'shared': True,
'port_security_enabled': False,
+ 'availability_zone_hints': ['az1'],
'mtu': 1500}
}
)
diff --git a/heat/tests/openstack/neutron/test_neutron_provider_net.py b/heat/tests/openstack/neutron/test_neutron_provider_net.py
index a528c4d4d..9909f160e 100644
--- a/heat/tests/openstack/neutron/test_neutron_provider_net.py
+++ b/heat/tests/openstack/neutron/test_neutron_provider_net.py
@@ -40,6 +40,8 @@ resources:
segmentation_id: 101
router_external: False
shared: true
+ availability_zone_hints:
+ - az1
tags:
- tag1
- tag2
@@ -128,7 +130,8 @@ class NeutronProviderNetTest(common.HeatTestCase):
'provider:physical_network': 'physnet_1',
'provider:segmentation_id': '101',
'router:external': False,
- 'shared': True
+ 'shared': True,
+ 'availability_zone_hints': ['az1'],
}
})
self.mockclient.replace_tag.assert_called_with(
@@ -180,7 +183,8 @@ class NeutronProviderNetTest(common.HeatTestCase):
'provider:physical_network': 'physnet_1',
'provider:segmentation_id': '101',
'router:external': False,
- 'shared': True}
+ 'shared': True,
+ 'availability_zone_hints': ['az1']}
})
self.mockclient.replace_tag.assert_called_with(
resource_type,
@@ -243,6 +247,7 @@ class NeutronProviderNetTest(common.HeatTestCase):
'port_security_enabled': True,
'segmentation_id': None,
'router_external': False,
+ 'availability_zone_hints': [],
'tags': ['tag1', 'tag2'],
}
diff --git a/heat/tests/openstack/neutron/test_neutron_router.py b/heat/tests/openstack/neutron/test_neutron_router.py
index 442668a2b..6c489301b 100644
--- a/heat/tests/openstack/neutron/test_neutron_router.py
+++ b/heat/tests/openstack/neutron/test_neutron_router.py
@@ -36,6 +36,8 @@ resources:
properties:
l3_agent_ids:
- 792ff887-6c85-4a56-b518-23f24fa65581
+ availability_zone_hints:
+ - az1
router_interface:
type: OS::Neutron::RouterInterface
@@ -262,6 +264,7 @@ class NeutronRouterTest(common.HeatTestCase):
create_body = {
'router': {
'name': utils.PhysName(stack.name, 'router'),
+ 'availability_zone_hints': ['az1'],
'admin_state_up': True}}
router_base_info = {
'router': {
diff --git a/releasenotes/notes/availability_zone_hints_Neutron_network_router-d01df1463193d9e6.yaml b/releasenotes/notes/availability_zone_hints_Neutron_network_router-d01df1463193d9e6.yaml
new file mode 100644
index 000000000..83ee5628f
--- /dev/null
+++ b/releasenotes/notes/availability_zone_hints_Neutron_network_router-d01df1463193d9e6.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - |
+ Adds the 'availability_zone_hints' property for the OS::Neutron::Router,
+ OS::Neutron::Net and OS::Neutron::ProviderNet resources.