diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..68c771a --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + diff --git a/README.md b/README.md index b46f948..57ac459 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ovn +# OVN #### Table of Contents @@ -6,74 +6,31 @@ 2. [Module Description - What the module does and why it is useful](#module-description) 3. [Setup - The basics of getting started with ovn](#setup) * [What ovn affects](#what-ovn-affects) - * [Setup requirements](#setup-requirements) - * [Beginning with ovn](#beginning-with-ovn) -4. [Usage - Configuration options and additional functionality](#usage) -5. [Reference - An under-the-hood peek at what the module is doing and how](#reference) -5. [Limitations - OS compatibility, etc.](#limitations) -6. [Development - Guide for contributing to the module](#development) ## Overview -A one-maybe-two sentence summary of what the module does/what problem it solves. -This is your 30 second elevator pitch for your module. Consider including -OS/Puppet version it works with. +Puppet module for the OVN project. At the moment this support OVN +installation in Redhat platform's only. One can add the support for +other platforms by defining them in ovn::params module ## Module Description -If applicable, this section should have a brief description of the technology -the module integrates with and what that integration enables. This section -should answer the questions: "What does this module *do*?" and "Why would I use -it?" - -If your module has a range of functionality (installation, configuration, -management, etc.) this is the time to mention it. +This module has two class +1. ovn::northd to be used in machines that needs to run ovn-northd daemon +2. ovn::controller to be used in the compute nodes ## Setup -### What ovn affects +### Effects -* A list of files, packages, services, or operations that the module will alter, - impact, or execute on the system it's installed on. -* This is a great place to stick any warnings. -* Can be in list or paragraph form. - -### Setup Requirements **OPTIONAL** - -If your module requires anything extra before setting up (pluginsync enabled, -etc.), mention it here. - -### Beginning with ovn - -The very basic steps needed for a user to get the module up and running. - -If your most recent release breaks compatibility or requires particular steps -for upgrading, you may wish to include an additional section here: Upgrading -(For an example, see http://forge.puppetlabs.com/puppetlabs/firewall). - -## Usage - -Put the classes, types, and resources for customizing, configuring, and doing -the fancy stuff with your module here. - -## Reference - -Here, list the classes, types, providers, facts, etc contained in your module. -This section should include all of the under-the-hood workings of your module so -people know what the module is touching on their system but don't need to mess -with things. (We are working on automating this section!) - -## Limitations - -This is where you list OS compatibility, version compatibility, etc. - -## Development - -Since your module is awesome, other users will want to play with it. Let them -know what the ground rules for contributing are. - -## Release Notes/Contributors/Etc **Optional** - -If you aren't using changelog, put your release notes here (though you should -consider using changelog). You may also add any additional sections you feel are -necessary or important to include here. Please use the `## ` header. +ovn::northd just installs the ovn package and starts the ovn-northd serivce. +ovn::controller installs ovn package and starts the ovn-controller service. +Before starting ovn-controller process it updates the external_ids column +of Open_vSwitch table in vswitchd ovsdb. It relies on external data for some +of its parameters +* ovn_remote_ip - This should point to the url where ovn-nb and ovn-sb + db server is running +* ovn_encap_ip - This should point to the ip address that other hypervisors + would use to tunnel to this hypervisor. +* ovn_encap_type - Encapsulation type to be used by this controller. Defaults + to geneve diff --git a/manifests/controller.pp b/manifests/controller.pp index 27c7cb0..207b0cb 100644 --- a/manifests/controller.pp +++ b/manifests/controller.pp @@ -1,5 +1,25 @@ +# ovn controller +# == Class: ovn::controller +# +# installs ovn and starts the ovn-controller service +# +# === Parameters: +# +# [*ovn_remote*] +# URL of the remote ovsdb-server that manages ovn-nb and ovn-sb dbs +# +# [*ovn_enap_type*] +# (Optional) The encapsulation type to be used +# Defaults to 'geneve' +# +# [*ovn_ecap_ip*] +# IP address of the hypervisor(in which this module is installed) to which +# the other controllers would use to create a tunnel to this controller +# class ovn::controller( - $ovn_remote = undef + $ovn_remote = undef, + $ovn_encap_type = "geneve", + $ovn_encap_ip = undef ) { include ovn::params include vswitch @@ -8,7 +28,9 @@ class ovn::controller( name => $::ovn::params::ovn_controller_service_name, ensure => true, enable => true, - require => Exec['ovn-remote'] + require => [Vs_config['external_ids:ovn-remote'], + Vs_config['external_ids:ovn-encap-type'], + Vs_config['external_ids:ovn-encap-ip']] } package { 'controller': @@ -17,15 +39,21 @@ class ovn::controller( before => Service['controller'] } - exec { 'ovn-remote': - command => "ovs-vsctl set open . external-ids:ovn-remote=$ovn_remote", - onlyif => "test `ovs-vsctl get open . external_ids:ovn-remote 2> /dev/null` != $ovn_remote", - require => Service['openvswitch'], - path => "/usr/bin:/usr/sbin" + vs_config { 'external_ids:ovn-remote': + ensure => present, + value => $ovn_remote, + require => Service['openvswitch'], } - vs_bridge {"br-int": - ensure => present, - subscribe => Service['controller'] + vs_config { "external_ids:ovn-encap-type": + ensure => present, + value => $ovn_encap_type, + require => Service['openvswitch'], + } + + vs_config { "external_ids:ovn-encap-ip": + ensure => present, + value => $ovn_encap_ip, + require => Service['openvswitch'], } } diff --git a/manifests/init.pp b/manifests/init.pp index 15b1e6d..6f52b6f 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,48 +1,16 @@ # Class: ovn # =========================== # -# Full description of class ovn here. -# -# Parameters -# ---------- -# -# Document parameters here. -# -# * `sample parameter` -# Explanation of what this parameter affects and what it defaults to. -# e.g. "Specify one or more upstream ntp servers as an array." -# -# Variables -# ---------- -# -# Here you should define a list of variables that this module would require. -# -# * `sample variable` -# Explanation of how this variable affects the function of this class and if -# it has a default. e.g. "The parameter enc_ntp_servers must be set by the -# External Node Classifier as a comma separated list of hostnames." (Note, -# global variables should be avoided in favor of class parameters as -# of Puppet 2.6.) -# -# Examples -# -------- -# -# @example -# class { 'ovn': -# servers => [ 'pool.ntp.org', 'ntp.local.company.com' ], -# } +# Install and configure the OVN services # # Authors # ------- # -# Author Name +# OVN and OpenStack contributer # # Copyright # --------- # -# Copyright 2016 Your name here, unless otherwise noted. +# Apache License 2.0 (see LICENSE file) # -class ovn { - - -} +class ovn {} diff --git a/manifests/northd.pp b/manifests/northd.pp index 90c6653..fe0fc39 100644 --- a/manifests/northd.pp +++ b/manifests/northd.pp @@ -1,3 +1,8 @@ +# ovn northd +# == Class: ovn::northd +# +# installs ovn package starts the ovn-northd service +# class ovn::northd() { include ovn::params service { 'northd': diff --git a/manifests/params.pp b/manifests/params.pp index f28b65e..73b01b6 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,3 +1,8 @@ +# ovn params +# == Class: ovn::params +# +# This class defines the variable like + class ovn::params { case $::osfamily { 'Redhat': { diff --git a/metadata.json b/metadata.json index 39afb35..af531bf 100644 --- a/metadata.json +++ b/metadata.json @@ -1,12 +1,12 @@ { "name": "openstack-ovn", "version": "0.1.0", - "author": "OVN and Openstack contributors", + "author": "OVN and OpenStack contributors", "summary": "Modules to setup ovn-northd and ovn-controller", "license": "Apache-2.0", "source": "", - "project_page": null, - "issues_url": null, + "project_page": "http://ovn.org", + "issues_url": "http://ovn.org/mlists/", "dependencies": [] }