Merge lp:~james-page/charms/trusty/neutron-api/kilo-dvr into lp:~openstack-charmers-archive/charms/trusty/neutron-api/next

Proposed by James Page on 2015-05-06
Status: Merged
Merged at revision: 112
Proposed branch: lp:~james-page/charms/trusty/neutron-api/kilo-dvr
Merge into: lp:~openstack-charmers-archive/charms/trusty/neutron-api/next
Diff against target: 171 lines (+47/-28)
5 files modified
config.yaml (+3/-2)
hooks/neutron_api_context.py (+16/-12)
templates/icehouse/ml2_conf.ini (+2/-2)
templates/kilo/ml2_conf.ini (+2/-2)
unit_tests/test_neutron_api_context.py (+24/-10)
To merge this branch: bzr merge lp:~james-page/charms/trusty/neutron-api/kilo-dvr
Reviewer Review Type Date Requested Status
Liam Young 2015-05-06 Approve on 2015-05-08
Review via email: mp+258370@code.launchpad.net

Description of the Change

Adds:

a) gre, vxlan and vlan with DVR on Kilo

b) support for multiple overlay network types

To post a comment you must log in.

charm_lint_check #4408 neutron-api-next for james-page mp258370
    LINT OK: passed

Build: http://10.245.162.77:8080/job/charm_lint_check/4408/

charm_unit_test #4133 neutron-api-next for james-page mp258370
    UNIT OK: passed

Build: http://10.245.162.77:8080/job/charm_unit_test/4133/

charm_amulet_test #4007 neutron-api-next for james-page mp258370
    AMULET OK: passed

Build: http://10.245.162.77:8080/job/charm_amulet_test/4007/

115. By James Page on 2015-05-07

Align drivers and network types with configured overlay network types

Liam Young (gnuoy) wrote :

I've run a L3 HA vrrp deployment and tested router failover with this. Approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'config.yaml'
2--- config.yaml 2015-04-16 19:58:18 +0000
3+++ config.yaml 2015-05-07 08:44:19 +0000
4@@ -84,11 +84,12 @@
5 default: gre
6 type: string
7 description: |
8- Overlay network type to use choose one of:
9+ Overlay network types to use, valid options include:
10 .
11 gre
12- vxlan
13+ vxlan
14 .
15+ Multiple types can be provided - field is space delimited.
16 flat-network-providers:
17 type: string
18 default:
19
20=== modified file 'hooks/neutron_api_context.py'
21--- hooks/neutron_api_context.py 2015-04-15 14:08:39 +0000
22+++ hooks/neutron_api_context.py 2015-05-07 08:44:19 +0000
23@@ -14,6 +14,11 @@
24 os_release,
25 )
26
27+VLAN = 'vlan'
28+VXLAN = 'vxlan'
29+GRE = 'gre'
30+OVERLAY_NET_TYPES = [VXLAN, GRE]
31+
32
33 def get_l2population():
34 plugin = config('neutron-plugin')
35@@ -21,10 +26,12 @@
36
37
38 def get_overlay_network_type():
39- overlay_net = config('overlay-network-type')
40- if overlay_net not in ['vxlan', 'gre']:
41- raise Exception('Unsupported overlay-network-type')
42- return overlay_net
43+ overlay_networks = config('overlay-network-type').split()
44+ for overlay_net in overlay_networks:
45+ if overlay_net not in OVERLAY_NET_TYPES:
46+ raise ValueError('Unsupported overlay-network-type %s'
47+ % overlay_net)
48+ return ','.join(overlay_networks)
49
50
51 def get_l3ha():
52@@ -32,10 +39,6 @@
53 if os_release('neutron-server') < 'juno':
54 log('Disabling L3 HA, enable-l3ha is not valid before Juno')
55 return False
56- if config('overlay-network-type') not in ['vlan', 'gre', 'vxlan']:
57- log('Disabling L3 HA, enable-l3ha requires the use of the vxlan, '
58- 'vlan or gre overlay network')
59- return False
60 if get_l2population():
61 log('Disabling L3 HA, l2-population must be disabled with L3 HA')
62 return False
63@@ -49,10 +52,11 @@
64 if os_release('neutron-server') < 'juno':
65 log('Disabling DVR, enable-dvr is not valid before Juno')
66 return False
67- if config('overlay-network-type') != 'vxlan':
68- log('Disabling DVR, enable-dvr requires the use of the vxlan '
69- 'overlay network')
70- return False
71+ if os_release('neutron-server') == 'juno':
72+ if VXLAN not in config('overlay-network-type').split():
73+ log('Disabling DVR, enable-dvr requires the use of the vxlan '
74+ 'overlay network for OpenStack Juno')
75+ return False
76 if get_l3ha():
77 log('Disabling DVR, enable-l3ha must be disabled with dvr')
78 return False
79
80=== modified file 'templates/icehouse/ml2_conf.ini'
81--- templates/icehouse/ml2_conf.ini 2015-04-10 17:42:31 +0000
82+++ templates/icehouse/ml2_conf.ini 2015-05-07 08:44:19 +0000
83@@ -4,8 +4,8 @@
84 # Configuration file maintained by Juju. Local changes may be overwritten.
85 ###############################################################################
86 [ml2]
87-type_drivers = gre,vxlan,vlan,flat
88-tenant_network_types = gre,vxlan,vlan,flat
89+type_drivers = {{ overlay_network_type }},vlan,flat
90+tenant_network_types = {{ overlay_network_type }},vlan,flat
91 mechanism_drivers = openvswitch,hyperv,l2population
92
93 [ml2_type_gre]
94
95=== modified file 'templates/kilo/ml2_conf.ini'
96--- templates/kilo/ml2_conf.ini 2015-04-15 14:25:38 +0000
97+++ templates/kilo/ml2_conf.ini 2015-05-07 08:44:19 +0000
98@@ -4,8 +4,8 @@
99 # Configuration file maintained by Juju. Local changes may be overwritten.
100 ###############################################################################
101 [ml2]
102-type_drivers = gre,vxlan,vlan,flat
103-tenant_network_types = gre,vxlan,vlan,flat
104+type_drivers = {{ overlay_network_type }},vlan,flat
105+tenant_network_types = {{ overlay_network_type }},vlan,flat
106 mechanism_drivers = openvswitch,l2population
107
108 [ml2_type_gre]
109
110=== modified file 'unit_tests/test_neutron_api_context.py'
111--- unit_tests/test_neutron_api_context.py 2015-04-15 14:08:39 +0000
112+++ unit_tests/test_neutron_api_context.py 2015-05-07 08:44:19 +0000
113@@ -34,12 +34,16 @@
114 self.test_config.set('overlay-network-type', 'gre')
115 self.assertEquals(context.get_overlay_network_type(), 'gre')
116
117+ def test_get_overlay_network_type_multi(self):
118+ self.test_config.set('overlay-network-type', 'gre vxlan')
119+ self.assertEquals(context.get_overlay_network_type(), 'gre,vxlan')
120+
121 def test_get_overlay_network_type_unsupported(self):
122 self.test_config.set('overlay-network-type', 'tokenring')
123- with self.assertRaises(Exception) as _exceptctxt:
124+ with self.assertRaises(ValueError) as _exceptctxt:
125 context.get_overlay_network_type()
126 self.assertEqual(_exceptctxt.exception.message,
127- 'Unsupported overlay-network-type')
128+ 'Unsupported overlay-network-type tokenring')
129
130 def test_get_l3ha(self):
131 self.test_config.set('enable-l3ha', True)
132@@ -65,14 +69,6 @@
133 self.os_release.return_value = 'juno'
134 self.assertEquals(context.get_l3ha(), False)
135
136- def test_get_l3ha_badoverlay(self):
137- self.test_config.set('enable-l3ha', True)
138- self.test_config.set('overlay-network-type', 'tokenring')
139- self.test_config.set('neutron-plugin', 'ovs')
140- self.test_config.set('l2-population', False)
141- self.os_release.return_value = 'juno'
142- self.assertEquals(context.get_l3ha(), False)
143-
144 def test_get_dvr(self):
145 self.test_config.set('enable-dvr', True)
146 self.test_config.set('enable-l3ha', False)
147@@ -109,6 +105,24 @@
148 self.os_release.return_value = 'juno'
149 self.assertEquals(context.get_dvr(), False)
150
151+ def test_get_dvr_gre_kilo(self):
152+ self.test_config.set('enable-dvr', True)
153+ self.test_config.set('enable-l3ha', False)
154+ self.test_config.set('overlay-network-type', 'gre')
155+ self.test_config.set('neutron-plugin', 'ovs')
156+ self.test_config.set('l2-population', True)
157+ self.os_release.return_value = 'kilo'
158+ self.assertEquals(context.get_dvr(), True)
159+
160+ def test_get_dvr_vxlan_kilo(self):
161+ self.test_config.set('enable-dvr', True)
162+ self.test_config.set('enable-l3ha', False)
163+ self.test_config.set('overlay-network-type', 'vxlan')
164+ self.test_config.set('neutron-plugin', 'ovs')
165+ self.test_config.set('l2-population', True)
166+ self.os_release.return_value = 'kilo'
167+ self.assertEquals(context.get_dvr(), True)
168+
169 def test_get_dvr_l3ha_on(self):
170 self.test_config.set('enable-dvr', True)
171 self.test_config.set('enable-l3ha', True)

Subscribers

People subscribed via source and target branches