Merge lp:~springfield-team/charm-helpers/trunk into lp:charm-helpers

Proposed by Shiv Prasad Rao
Status: Merged
Merged at revision: 165
Proposed branch: lp:~springfield-team/charm-helpers/trunk
Merge into: lp:charm-helpers
Diff against target: 157 lines (+74/-7)
4 files modified
charmhelpers/contrib/openstack/context.py (+22/-0)
charmhelpers/contrib/openstack/neutron.py (+14/-0)
tests/contrib/openstack/test_neutron_utils.py (+10/-4)
tests/contrib/openstack/test_os_contexts.py (+28/-3)
To merge this branch: bzr merge lp:~springfield-team/charm-helpers/trunk
Reviewer Review Type Date Requested Status
Jorge Niedbalski (community) Approve
OpenStack Charmers Pending
Review via email: mp+223667@code.launchpad.net

Description of the change

Changes made to support Cisco N1kv for nova-cloud-controller

charmhelpers/contrib/openstack/context.py
Context for cisco_plugins.ini

charmhelpers/contrib/openstack/neutron.py
neutron_plugin details for Cisco N1kv

To post a comment you must log in.
163. By Liam Young

[jamespage, r=gnuoy] Fixup problem with fstab parsing if tabs are used instead of spaces

Revision history for this message
Jorge Niedbalski (niedbalski) wrote :

Hello Shiv,

I added a couple of unit tests to provide coverage for the added lines of code. Other than that, the change LGTM +1.

review: Approve
164. By James Page

[corey.bryant,r=james-page] Add helper classes for writing amulet tests in Charms.

NOTE: needs unit tests but deferring for now - Corey will follow up with these.

165. By James Page

[shivrao,r=james-page,r=niedbalski] Add support for n1kv neutron plugin.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'charmhelpers/contrib/openstack/context.py'
2--- charmhelpers/contrib/openstack/context.py 2014-05-02 14:53:54 +0000
3+++ charmhelpers/contrib/openstack/context.py 2014-06-19 17:11:58 +0000
4@@ -541,6 +541,26 @@
5
6 return nvp_ctxt
7
8+ def n1kv_ctxt(self):
9+ driver = neutron_plugin_attribute(self.plugin, 'driver',
10+ self.network_manager)
11+ n1kv_config = neutron_plugin_attribute(self.plugin, 'config',
12+ self.network_manager)
13+ n1kv_ctxt = {
14+ 'core_plugin': driver,
15+ 'neutron_plugin': 'n1kv',
16+ 'neutron_security_groups': self.neutron_security_groups,
17+ 'local_ip': unit_private_ip(),
18+ 'config': n1kv_config,
19+ 'vsm_ip': config('n1kv-vsm-ip'),
20+ 'vsm_username': config('n1kv-vsm-username'),
21+ 'vsm_password': config('n1kv-vsm-password'),
22+ 'restrict_policy_profiles': config(
23+ 'n1kv_restrict_policy_profiles'),
24+ }
25+
26+ return n1kv_ctxt
27+
28 def neutron_ctxt(self):
29 if https():
30 proto = 'https'
31@@ -572,6 +592,8 @@
32 ctxt.update(self.ovs_ctxt())
33 elif self.plugin in ['nvp', 'nsx']:
34 ctxt.update(self.nvp_ctxt())
35+ elif self.plugin == 'n1kv':
36+ ctxt.update(self.n1kv_ctxt())
37
38 alchemy_flags = config('neutron-alchemy-flags')
39 if alchemy_flags:
40
41=== modified file 'charmhelpers/contrib/openstack/neutron.py'
42--- charmhelpers/contrib/openstack/neutron.py 2014-05-03 06:40:08 +0000
43+++ charmhelpers/contrib/openstack/neutron.py 2014-06-19 17:11:58 +0000
44@@ -128,6 +128,20 @@
45 'server_packages': ['neutron-server',
46 'neutron-plugin-vmware'],
47 'server_services': ['neutron-server']
48+ },
49+ 'n1kv': {
50+ 'config': '/etc/neutron/plugins/cisco/cisco_plugins.ini',
51+ 'driver': 'neutron.plugins.cisco.network_plugin.PluginV2',
52+ 'contexts': [
53+ context.SharedDBContext(user=config('neutron-database-user'),
54+ database=config('neutron-database'),
55+ relation_prefix='neutron',
56+ ssl_dir=NEUTRON_CONF_DIR)],
57+ 'services': [],
58+ 'packages': [['neutron-plugin-cisco']],
59+ 'server_packages': ['neutron-server',
60+ 'neutron-plugin-cisco'],
61+ 'server_services': ['neutron-server']
62 }
63 }
64 if release >= 'icehouse':
65
66=== modified file 'tests/contrib/openstack/test_neutron_utils.py'
67--- tests/contrib/openstack/test_neutron_utils.py 2014-05-03 06:40:08 +0000
68+++ tests/contrib/openstack/test_neutron_utils.py 2014-06-19 17:11:58 +0000
69@@ -47,22 +47,28 @@
70 def test_quantum_plugins(self):
71 self.config.return_value = 'foo'
72 plugins = neutron.quantum_plugins()
73- self.assertEquals(plugins['ovs']['services'], ['quantum-plugin-openvswitch-agent'])
74+ self.assertEquals(plugins['ovs']['services'],
75+ ['quantum-plugin-openvswitch-agent'])
76 self.assertEquals(plugins['nvp']['services'], [])
77
78 def test_neutron_plugins_preicehouse(self):
79 self.config.return_value = 'foo'
80 self.os_release.return_value = 'havana'
81 plugins = neutron.neutron_plugins()
82- self.assertEquals(plugins['ovs']['config'], '/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini')
83+ self.assertEquals(plugins['ovs']['config'],
84+ '/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini')
85 self.assertEquals(plugins['nvp']['services'], [])
86
87 def test_neutron_plugins(self):
88 self.config.return_value = 'foo'
89 self.os_release.return_value = 'icehouse'
90 plugins = neutron.neutron_plugins()
91- self.assertEquals(plugins['ovs']['config'], '/etc/neutron/plugins/ml2/ml2_conf.ini')
92- self.assertEquals(plugins['nvp']['config'], '/etc/neutron/plugins/vmware/nsx.ini')
93+ self.assertEquals(plugins['ovs']['config'],
94+ '/etc/neutron/plugins/ml2/ml2_conf.ini')
95+ self.assertEquals(plugins['nvp']['config'],
96+ '/etc/neutron/plugins/vmware/nsx.ini')
97+ self.assertEquals(plugins['n1kv']['config'],
98+ '/etc/neutron/plugins/cisco/cisco_plugins.ini')
99 self.assertEquals(plugins['nvp']['services'], [])
100 self.assertEquals(plugins['nsx'], plugins['nvp'])
101
102
103=== modified file 'tests/contrib/openstack/test_os_contexts.py'
104--- tests/contrib/openstack/test_os_contexts.py 2014-05-04 23:09:50 +0000
105+++ tests/contrib/openstack/test_os_contexts.py 2014-06-19 17:11:58 +0000
106@@ -511,7 +511,8 @@
107 }
108 _open.assert_called_once_with(ssl_dir + '/rabbit-client-ca.pem', 'w')
109 self.assertEquals(result, expected)
110- self.assertEquals([call(AMQP_RELATION_WITH_SSL['ssl_ca'])], self.b64decode.call_args_list)
111+ self.assertEquals([call(AMQP_RELATION_WITH_SSL['ssl_ca'])],
112+ self.b64decode.call_args_list)
113
114 def test_amqp_context_with_data_ssl_noca(self):
115 '''Test amqp context with all required data with ssl but missing ca'''
116@@ -880,6 +881,28 @@
117 'neutron_security_groups': True,
118 'local_ip': '10.0.0.1'}, neutron.nvp_ctxt())
119
120+ @patch.object(context, 'config')
121+ @patch.object(context.NeutronContext, 'neutron_security_groups')
122+ @patch.object(context, 'unit_private_ip')
123+ @patch.object(context, 'neutron_plugin_attribute')
124+ def test_neutron_n1kv_plugin_context(self, attr, ip, sec_groups, config):
125+ ip.return_value = '10.0.0.1'
126+ sec_groups.__get__ = MagicMock(return_value=True)
127+ attr.return_value = 'some.quantum.driver.class'
128+ config.return_value = 'n1kv'
129+ neutron = context.NeutronContext()
130+ self.assertEquals({
131+ 'core_plugin': 'some.quantum.driver.class',
132+ 'neutron_plugin': 'n1kv',
133+ 'neutron_security_groups': True,
134+ 'local_ip': '10.0.0.1',
135+ 'config': 'some.quantum.driver.class',
136+ 'vsm_ip': 'n1kv',
137+ 'vsm_username': 'n1kv',
138+ 'vsm_password': 'n1kv',
139+ 'restrict_policy_profiles': 'n1kv',
140+ }, neutron.n1kv_ctxt())
141+
142 @patch('charmhelpers.contrib.openstack.context.unit_get')
143 @patch.object(context.NeutronContext, 'network_manager')
144 def test_neutron_neutron_ctxt(self, mock_network_manager,
145@@ -980,9 +1003,11 @@
146 @patch.object(context.NeutronContext, 'plugin')
147 @patch.object(context.NeutronContext, '_ensure_packages')
148 @patch.object(context.NeutronContext, 'network_manager')
149- def test_neutron_main_context_gen_nvp_and_alchemy(self, mock_network_manager,
150+ def test_neutron_main_context_gen_nvp_and_alchemy(self,
151+ mock_network_manager,
152 mock_ensure_packages,
153- mock_plugin, mock_nvp_ctxt,
154+ mock_plugin,
155+ mock_nvp_ctxt,
156 mock_save_flag_file,
157 mock_neutron_ctxt):
158

Subscribers

People subscribed via source and target branches