Merge lp:~junaidali/charms/trusty/neutron-api-plumgrid/oil-sapi-changes into lp:charms/trusty/neutron-api-plumgrid

Proposed by Junaid Ali
Status: Needs review
Proposed branch: lp:~junaidali/charms/trusty/neutron-api-plumgrid/oil-sapi-changes
Merge into: lp:charms/trusty/neutron-api-plumgrid
Diff against target: 529 lines (+308/-34)
11 files modified
LICENSE (+202/-0)
Makefile (+2/-3)
README.md (+3/-1)
config.yaml (+22/-1)
copyright (+13/-6)
hooks/neutron_plumgrid_context.py (+2/-0)
hooks/neutron_plumgrid_hooks.py (+8/-4)
hooks/neutron_plumgrid_utils.py (+42/-18)
metadata.yaml (+3/-0)
templates/kilo/plumlib.ini (+6/-0)
unit_tests/test_neutron_plumgrid_plugin_context.py (+5/-1)
To merge this branch: bzr merge lp:~junaidali/charms/trusty/neutron-api-plumgrid/oil-sapi-changes
Reviewer Review Type Date Requested Status
James Page Pending
Review via email: mp+308650@code.launchpad.net

Description of the change

Added charm series in metadata.yaml file
Updated networking-plumgrid version mappings
Added support for deb networking install - PG ONS 6.X.X
Added new configs in plumlib.ini

To post a comment you must log in.

Unmerged revisions

11. By Junaid Ali

Changes:
    Added charm series in metadata.yaml file
    Updated networking-plumgrid version mappings
    Added support for deb networking install - PG ONS 6.X.X
    Added new configs in plumlib.ini

10. By Junaid Ali

Changes:
  Added charm series in metadata.yaml file
  Added charm series in metadata.yaml file
  Added support for deb networking install - PG ONS 6.X.X
  Added new configs in plumlib.ini
  Ensured neutron-server is restarted after a package update

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'LICENSE'
2--- LICENSE 1970-01-01 00:00:00 +0000
3+++ LICENSE 2016-10-17 17:20:39 +0000
4@@ -0,0 +1,202 @@
5+
6+ Apache License
7+ Version 2.0, January 2004
8+ http://www.apache.org/licenses/
9+
10+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
11+
12+ 1. Definitions.
13+
14+ "License" shall mean the terms and conditions for use, reproduction,
15+ and distribution as defined by Sections 1 through 9 of this document.
16+
17+ "Licensor" shall mean the copyright owner or entity authorized by
18+ the copyright owner that is granting the License.
19+
20+ "Legal Entity" shall mean the union of the acting entity and all
21+ other entities that control, are controlled by, or are under common
22+ control with that entity. For the purposes of this definition,
23+ "control" means (i) the power, direct or indirect, to cause the
24+ direction or management of such entity, whether by contract or
25+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
26+ outstanding shares, or (iii) beneficial ownership of such entity.
27+
28+ "You" (or "Your") shall mean an individual or Legal Entity
29+ exercising permissions granted by this License.
30+
31+ "Source" form shall mean the preferred form for making modifications,
32+ including but not limited to software source code, documentation
33+ source, and configuration files.
34+
35+ "Object" form shall mean any form resulting from mechanical
36+ transformation or translation of a Source form, including but
37+ not limited to compiled object code, generated documentation,
38+ and conversions to other media types.
39+
40+ "Work" shall mean the work of authorship, whether in Source or
41+ Object form, made available under the License, as indicated by a
42+ copyright notice that is included in or attached to the work
43+ (an example is provided in the Appendix below).
44+
45+ "Derivative Works" shall mean any work, whether in Source or Object
46+ form, that is based on (or derived from) the Work and for which the
47+ editorial revisions, annotations, elaborations, or other modifications
48+ represent, as a whole, an original work of authorship. For the purposes
49+ of this License, Derivative Works shall not include works that remain
50+ separable from, or merely link (or bind by name) to the interfaces of,
51+ the Work and Derivative Works thereof.
52+
53+ "Contribution" shall mean any work of authorship, including
54+ the original version of the Work and any modifications or additions
55+ to that Work or Derivative Works thereof, that is intentionally
56+ submitted to Licensor for inclusion in the Work by the copyright owner
57+ or by an individual or Legal Entity authorized to submit on behalf of
58+ the copyright owner. For the purposes of this definition, "submitted"
59+ means any form of electronic, verbal, or written communication sent
60+ to the Licensor or its representatives, including but not limited to
61+ communication on electronic mailing lists, source code control systems,
62+ and issue tracking systems that are managed by, or on behalf of, the
63+ Licensor for the purpose of discussing and improving the Work, but
64+ excluding communication that is conspicuously marked or otherwise
65+ designated in writing by the copyright owner as "Not a Contribution."
66+
67+ "Contributor" shall mean Licensor and any individual or Legal Entity
68+ on behalf of whom a Contribution has been received by Licensor and
69+ subsequently incorporated within the Work.
70+
71+ 2. Grant of Copyright License. Subject to the terms and conditions of
72+ this License, each Contributor hereby grants to You a perpetual,
73+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
74+ copyright license to reproduce, prepare Derivative Works of,
75+ publicly display, publicly perform, sublicense, and distribute the
76+ Work and such Derivative Works in Source or Object form.
77+
78+ 3. Grant of Patent License. Subject to the terms and conditions of
79+ this License, each Contributor hereby grants to You a perpetual,
80+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
81+ (except as stated in this section) patent license to make, have made,
82+ use, offer to sell, sell, import, and otherwise transfer the Work,
83+ where such license applies only to those patent claims licensable
84+ by such Contributor that are necessarily infringed by their
85+ Contribution(s) alone or by combination of their Contribution(s)
86+ with the Work to which such Contribution(s) was submitted. If You
87+ institute patent litigation against any entity (including a
88+ cross-claim or counterclaim in a lawsuit) alleging that the Work
89+ or a Contribution incorporated within the Work constitutes direct
90+ or contributory patent infringement, then any patent licenses
91+ granted to You under this License for that Work shall terminate
92+ as of the date such litigation is filed.
93+
94+ 4. Redistribution. You may reproduce and distribute copies of the
95+ Work or Derivative Works thereof in any medium, with or without
96+ modifications, and in Source or Object form, provided that You
97+ meet the following conditions:
98+
99+ (a) You must give any other recipients of the Work or
100+ Derivative Works a copy of this License; and
101+
102+ (b) You must cause any modified files to carry prominent notices
103+ stating that You changed the files; and
104+
105+ (c) You must retain, in the Source form of any Derivative Works
106+ that You distribute, all copyright, patent, trademark, and
107+ attribution notices from the Source form of the Work,
108+ excluding those notices that do not pertain to any part of
109+ the Derivative Works; and
110+
111+ (d) If the Work includes a "NOTICE" text file as part of its
112+ distribution, then any Derivative Works that You distribute must
113+ include a readable copy of the attribution notices contained
114+ within such NOTICE file, excluding those notices that do not
115+ pertain to any part of the Derivative Works, in at least one
116+ of the following places: within a NOTICE text file distributed
117+ as part of the Derivative Works; within the Source form or
118+ documentation, if provided along with the Derivative Works; or,
119+ within a display generated by the Derivative Works, if and
120+ wherever such third-party notices normally appear. The contents
121+ of the NOTICE file are for informational purposes only and
122+ do not modify the License. You may add Your own attribution
123+ notices within Derivative Works that You distribute, alongside
124+ or as an addendum to the NOTICE text from the Work, provided
125+ that such additional attribution notices cannot be construed
126+ as modifying the License.
127+
128+ You may add Your own copyright statement to Your modifications and
129+ may provide additional or different license terms and conditions
130+ for use, reproduction, or distribution of Your modifications, or
131+ for any such Derivative Works as a whole, provided Your use,
132+ reproduction, and distribution of the Work otherwise complies with
133+ the conditions stated in this License.
134+
135+ 5. Submission of Contributions. Unless You explicitly state otherwise,
136+ any Contribution intentionally submitted for inclusion in the Work
137+ by You to the Licensor shall be under the terms and conditions of
138+ this License, without any additional terms or conditions.
139+ Notwithstanding the above, nothing herein shall supersede or modify
140+ the terms of any separate license agreement you may have executed
141+ with Licensor regarding such Contributions.
142+
143+ 6. Trademarks. This License does not grant permission to use the trade
144+ names, trademarks, service marks, or product names of the Licensor,
145+ except as required for reasonable and customary use in describing the
146+ origin of the Work and reproducing the content of the NOTICE file.
147+
148+ 7. Disclaimer of Warranty. Unless required by applicable law or
149+ agreed to in writing, Licensor provides the Work (and each
150+ Contributor provides its Contributions) on an "AS IS" BASIS,
151+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
152+ implied, including, without limitation, any warranties or conditions
153+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
154+ PARTICULAR PURPOSE. You are solely responsible for determining the
155+ appropriateness of using or redistributing the Work and assume any
156+ risks associated with Your exercise of permissions under this License.
157+
158+ 8. Limitation of Liability. In no event and under no legal theory,
159+ whether in tort (including negligence), contract, or otherwise,
160+ unless required by applicable law (such as deliberate and grossly
161+ negligent acts) or agreed to in writing, shall any Contributor be
162+ liable to You for damages, including any direct, indirect, special,
163+ incidental, or consequential damages of any character arising as a
164+ result of this License or out of the use or inability to use the
165+ Work (including but not limited to damages for loss of goodwill,
166+ work stoppage, computer failure or malfunction, or any and all
167+ other commercial damages or losses), even if such Contributor
168+ has been advised of the possibility of such damages.
169+
170+ 9. Accepting Warranty or Additional Liability. While redistributing
171+ the Work or Derivative Works thereof, You may choose to offer,
172+ and charge a fee for, acceptance of support, warranty, indemnity,
173+ or other liability obligations and/or rights consistent with this
174+ License. However, in accepting such obligations, You may act only
175+ on Your own behalf and on Your sole responsibility, not on behalf
176+ of any other Contributor, and only if You agree to indemnify,
177+ defend, and hold each Contributor harmless for any liability
178+ incurred by, or claims asserted against, such Contributor by reason
179+ of your accepting any such warranty or additional liability.
180+
181+ END OF TERMS AND CONDITIONS
182+
183+ APPENDIX: How to apply the Apache License to your work.
184+
185+ To apply the Apache License to your work, attach the following
186+ boilerplate notice, with the fields enclosed by brackets "[]"
187+ replaced with your own identifying information. (Don't include
188+ the brackets!) The text should be enclosed in the appropriate
189+ comment syntax for the file format. We also recommend that a
190+ file or class name and description of purpose be included on the
191+ same "printed page" as the copyright notice for easier
192+ identification within third-party archives.
193+
194+ Copyright [yyyy] [name of copyright owner]
195+
196+ Licensed under the Apache License, Version 2.0 (the "License");
197+ you may not use this file except in compliance with the License.
198+ You may obtain a copy of the License at
199+
200+ http://www.apache.org/licenses/LICENSE-2.0
201+
202+ Unless required by applicable law or agreed to in writing, software
203+ distributed under the License is distributed on an "AS IS" BASIS,
204+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
205+ See the License for the specific language governing permissions and
206+ limitations under the License.
207
208=== modified file 'Makefile'
209--- Makefile 2016-05-25 16:26:49 +0000
210+++ Makefile 2016-10-17 17:20:39 +0000
211@@ -4,12 +4,11 @@
212 virtualenv:
213 virtualenv .venv
214 .venv/bin/pip install flake8 nose coverage mock pyyaml netifaces \
215- netaddr jinja2 pyflakes pep8 six pbr funcsigs psutil charm-tools \
216- simplejson
217+ netaddr jinja2 pyflakes pep8 six pbr funcsigs psutil
218
219 lint: virtualenv
220 .venv/bin/flake8 --exclude hooks/charmhelpers hooks unit_tests tests --ignore E402
221- @.venv/bin/charm-proof
222+ @charm proof
223
224 unit_test: virtualenv
225 @echo Starting tests...
226
227=== modified file 'README.md'
228--- README.md 2016-04-15 11:03:21 +0000
229+++ README.md 2016-10-17 17:20:39 +0000
230@@ -23,7 +23,7 @@
231
232 # Known Limitations and Issues
233
234-The charm currently only supports Kilo Openstack Release.
235+This charm currently doesn't support Ubuntu 16.04.
236
237 # Configuration
238
239@@ -44,3 +44,5 @@
240 # Contact Information
241
242 Bilal Baqar <bbaqar@plumgrid.com>
243+Javeria Khan <javeriak@plumgrid.com>
244+Junaid Ali <junaidali@plumgrid.com>
245
246=== modified file 'config.yaml'
247--- config.yaml 2016-06-21 17:30:37 +0000
248+++ config.yaml 2016-10-17 17:20:39 +0000
249@@ -15,7 +15,14 @@
250 default: 'latest'
251 type: string
252 description: |
253- Provide the build version of PLUMgrid packages that needs to be installed
254+ Provide the build version of plumgrid-pythonlib package that needs to be installed
255+ networking-build:
256+ type: string
257+ default:
258+ description: |
259+ Provide the build version of networking-plumgrid package that needs to be installed.
260+ Accepted values are either 'latest' (which installs latest networking-plumgrid
261+ package available) or a specific version for the package.
262 networking-plumgrid-version:
263 default: null
264 type: string
265@@ -57,3 +64,17 @@
266 type: string
267 default: Default
268 description: Keystone project domain name
269+ enable-deb-networking-install:
270+ type: boolean
271+ default: False
272+ description: |
273+ If enabled networking plumgrid is installed from deb package on LCM instead of
274+ installation using pip
275+ enable-flow-tap:
276+ type: boolean
277+ default: True
278+ description: Toggles reverse flow creation for tap based policies
279+ enable-metaconfig:
280+ type: boolean
281+ default: True
282+ description: Enables/disables nova communication for metaconfig
283
284=== modified file 'copyright'
285--- copyright 2015-07-29 18:35:16 +0000
286+++ copyright 2016-10-17 17:20:39 +0000
287@@ -1,9 +1,16 @@
288 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0
289
290 Files: *
291-Copyright: 2015, PLUMgrid Inc.
292-License: GPL-3
293-
294-License: GPL-3
295- On Debian GNU/Linux system you can find the complete text of the
296- GPL-3 license in '/usr/share/common-licenses/GPL-3'
297+Copyright: 2016, PLUMgrid Inc., All Rights Reserved.
298+License: Apache-2.0
299+ Licensed under the Apache License, Version 2.0 (the "License"); you may
300+ not use this file except in compliance with the License. You may obtain
301+ a copy of the License at
302+
303+ http://www.apache.org/licenses/LICENSE-2.0
304+
305+ Unless required by applicable law or agreed to in writing, software
306+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
307+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
308+ License for the specific language governing permissions and limitations
309+ under the License.
310
311=== modified file 'hooks/neutron_plumgrid_context.py'
312--- hooks/neutron_plumgrid_context.py 2016-06-21 17:30:37 +0000
313+++ hooks/neutron_plumgrid_context.py 2016-10-17 17:20:39 +0000
314@@ -120,6 +120,8 @@
315 pg_ctxt['connector_type'] = config('connector-type')
316 pg_ctxt['user_domain_name'] = config('user-domain-name')
317 pg_ctxt['project_domain_name'] = config('project-domain-name')
318+ pg_ctxt['enable_reverse_flow_tap'] = config('enable-flow-tap')
319+ pg_ctxt['nova_metaconfig'] = config('enable-metaconfig')
320 if enable_metadata:
321 plumgrid_edge_ctxt = _edge_context()
322 pg_ctxt['nova_metadata_proxy_secret'] = \
323
324=== modified file 'hooks/neutron_plumgrid_hooks.py'
325--- hooks/neutron_plumgrid_hooks.py 2016-05-22 15:53:34 +0000
326+++ hooks/neutron_plumgrid_hooks.py 2016-10-17 17:20:39 +0000
327@@ -6,7 +6,6 @@
328 # in this file.
329
330 import sys
331-from charmhelpers.core.host import service_running
332 from charmhelpers.core.hookenv import (
333 Hooks,
334 UnregisteredHookError,
335@@ -17,7 +16,9 @@
336
337 from charmhelpers.core.host import (
338 restart_on_change,
339- service_restart
340+ service_start,
341+ service_stop,
342+ service_running
343 )
344
345 from charmhelpers.fetch import (
346@@ -64,6 +65,7 @@
347 charm_config = config()
348 if (charm_config.changed('install_sources') or
349 charm_config.changed('plumgrid-build') or
350+ charm_config.changed('networking-build') or
351 charm_config.changed('install_keys')):
352 status_set('maintenance', 'Upgrading apt packages')
353 if charm_config.changed('install_sources'):
354@@ -73,12 +75,14 @@
355 pkgs = determine_packages()
356 for pkg in pkgs:
357 apt_install(pkg, options=['--force-yes'], fatal=True)
358- service_restart('neutron-server')
359+ service_stop('neutron-server')
360 if (charm_config.changed('networking-plumgrid-version') or
361 charm_config.changed('pip-proxy')):
362 ensure_files()
363- service_restart('neutron-server')
364+ service_stop('neutron-server')
365 CONFIGS.write_all()
366+ if not service_running('neutron-server'):
367+ service_start('neutron-server')
368
369
370 @hooks.hook('neutron-plugin-api-relation-joined')
371
372=== modified file 'hooks/neutron_plumgrid_utils.py'
373--- hooks/neutron_plumgrid_utils.py 2016-08-26 06:21:37 +0000
374+++ hooks/neutron_plumgrid_utils.py 2016-10-17 17:20:39 +0000
375@@ -12,6 +12,7 @@
376 from charmhelpers.contrib.openstack.neutron import neutron_plugin_attribute
377 from charmhelpers.contrib.python.packages import pip_install
378 from charmhelpers.fetch import (
379+ apt_install,
380 apt_cache
381 )
382 from charmhelpers.core.hookenv import (
383@@ -27,7 +28,8 @@
384 TEMPLATES = 'templates/'
385
386 PG_PACKAGES = [
387- 'plumgrid-pythonlib'
388+ 'plumgrid-pythonlib',
389+ 'networking-plumgrid'
390 ]
391
392 NEUTRON_CONF_DIR = "/etc/neutron"
393@@ -56,10 +58,16 @@
394 }),
395 ])
396
397-NETWORKING_PLUMGRID_VERSION = OrderedDict([
398- ('kilo', '2015.1.5.4'),
399- ('liberty', '2015.2.5.4'),
400- ('mitaka', '2016.1.1.2'),
401+# PG-ONS 6.X.X
402+NETWORKING_PLUMGRID_PIP_VERSION = OrderedDict([
403+ ('kilo', '2015.1.5.4'),
404+ ('liberty', '2015.2.6.4'),
405+ ('mitaka', '2016.1.6.4'),
406+])
407+NETWORKING_PLUMGRID_DEB_VERSION = OrderedDict([
408+ ('kilo', '2015.1.5.4'),
409+ ('liberty', '2015.2.6.4'),
410+ ('mitaka', '2016.1.6.4.xenial1'),
411 ])
412
413
414@@ -85,11 +93,20 @@
415 enable PLUMgrid in Openstack.
416 '''
417 pkgs = []
418- tag = config('plumgrid-build')
419 for pkg in PG_PACKAGES:
420+ tag = ''
421+ if pkg == 'plumgrid-pythonlib':
422+ tag = config('plumgrid-build')
423+ elif (pkg == 'networking-plumgrid' and
424+ config('enable-deb-networking-install')):
425+ if config('networking-build'):
426+ tag = config('networking-build')
427+ else:
428+ release = os_release('neutron-common', base='kilo')
429+ tag = NETWORKING_PLUMGRID_DEB_VERSION[release]
430 if tag == 'latest':
431 pkgs.append(pkg)
432- else:
433+ elif tag:
434 if tag in [i.ver_str for i in apt_cache()[pkg].version_list]:
435 pkgs.append('%s=%s' % (pkg, tag))
436 else:
437@@ -167,17 +184,24 @@
438 Installs networking-plumgrid package
439 '''
440 release = os_release('neutron-common', base='kilo')
441- if config('networking-plumgrid-version') is None:
442- package_version = NETWORKING_PLUMGRID_VERSION[release]
443- else:
444- package_version = config('networking-plumgrid-version')
445- package_name = 'networking-plumgrid==%s' % package_version
446- if config('pip-proxy') != "None":
447- pip_install(package_name, fatal=True, proxy=config('pip-proxy'))
448- else:
449- pip_install(package_name, fatal=True)
450- if is_leader() and package_version != '2015.1.1.1':
451- migrate_neutron_db()
452+ if not config('enable-deb-networking-install'):
453+ if config('networking-plumgrid-version') is None:
454+ package_version = NETWORKING_PLUMGRID_PIP_VERSION[release]
455+ else:
456+ package_version = config('networking-plumgrid-version')
457+ package_name = 'networking-plumgrid==%s' % package_version
458+ if config('pip-proxy') != "None":
459+ pip_install(package_name, fatal=True, proxy=config('pip-proxy'))
460+ else:
461+ pip_install(package_name, fatal=True)
462+ if is_leader() and package_version != '2015.1.1.1':
463+ migrate_neutron_db()
464+ else:
465+ apt_install('networking-plumgrid=%s' %
466+ NETWORKING_PLUMGRID_DEB_VERSION[release],
467+ options=['--force-yes'], fatal=True)
468+ if is_leader():
469+ migrate_neutron_db()
470
471
472 def migrate_neutron_db():
473
474=== modified file 'metadata.yaml'
475--- metadata.yaml 2016-05-04 14:03:49 +0000
476+++ metadata.yaml 2016-10-17 17:20:39 +0000
477@@ -14,6 +14,9 @@
478 reduce the deployment time of OpenStack clouds, enables users to create
479 private Virtual Domains™ for their projects and is compatible with the
480 leading OpenStack distributions.
481+series:
482+ - xenial
483+ - trusty
484 tags:
485 - openstack
486 subordinate: true
487
488=== modified file 'templates/kilo/plumlib.ini'
489--- templates/kilo/plumlib.ini 2016-06-21 17:30:37 +0000
490+++ templates/kilo/plumlib.ini 2016-10-17 17:20:39 +0000
491@@ -14,9 +14,15 @@
492 # Reverse Flow Flag
493 enable_reverse_flow = True
494
495+# Reverse Flow Flag Tap
496+enable_reverse_flow_tap = {{ enable_reverse_flow_tap }}
497+
498 # Flag to enable/disable virtual appliance creation
499 vapp_flag = False
500
501+# Flag to enable/disable nova communication for metaconfig
502+nova_metaconfig = {{ nova_metaconfig }}
503+
504 # Metadata Flags. If "metadata_ns" is set to false, respective
505 # namespace for metadata won't be created on this node
506 [PLUMgridMetadata]
507
508=== modified file 'unit_tests/test_neutron_plumgrid_plugin_context.py'
509--- unit_tests/test_neutron_plumgrid_plugin_context.py 2016-06-21 17:40:31 +0000
510+++ unit_tests/test_neutron_plumgrid_plugin_context.py 2016-10-17 17:20:39 +0000
511@@ -61,7 +61,9 @@
512 'switch-password': 'plumgrid',
513 'connector-type': 'service',
514 'user-domain-name': 'Default',
515- 'project-domain-name': 'Default'
516+ 'project-domain-name': 'Default',
517+ 'enable-flow-tap': 'True',
518+ 'enable-metaconfig': 'True',
519 }
520
521 def mock_config(key=None):
522@@ -98,5 +100,7 @@
523 'pg_metadata_ip': '169.254.169.254',
524 'pg_metadata_subnet': '169.254.169.254/30',
525 'pg_metadata_port': '8775',
526+ 'enable_reverse_flow_tap': 'True',
527+ 'nova_metaconfig': 'True',
528 }
529 self.assertEquals(expect, napi_ctxt())

Subscribers

People subscribed via source and target branches

to all changes: