Refactors how install method is selected
[integration/packaging/puppet-opendaylight.git] / README.markdown
index 1e59f4f486c55bb5454df444cc1e858e76c02a09..57d04c9a19b833bee32dce11cc6045ba22b4e864 100644 (file)
@@ -1,7 +1,5 @@
-[![Build Status](https://travis-ci.org/dfarrell07/dfarrell07-opendaylight.svg)](https://travis-ci.org/dfarrell07/dfarrell07-opendaylight)
-
-#### Table of Contents
-
+[![Build Status](https://travis-ci.org/dfarrell07/puppet-opendaylight.svg)](https://travis-ci.org/dfarrell07/puppet-opendaylight) [![Dependency Status](https://gemnasium.com/dfarrell07/puppet-opendaylight.svg)](https://gemnasium.com/dfarrell07/puppet-opendaylight) [![Join the chat at https://gitter.im/dfarrell07/puppet-opendaylight](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/dfarrell07/puppet-opendaylight?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+#### Table of Contents 
 1. [Overview](#overview)
 2. [Module Description - What the module does and why it is useful](#module-description)
 3. [Setup - The basics of getting started with opendaylight](#setup)
@@ -19,44 +17,73 @@ Puppet module for deploying the OpenDaylight Software Defined Networking (SDN) c
 
 ## 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?"
+Stands up the OpenDaylight SDN controller from an RPM, including systemd configuration.
 
-If your module has a range of functionality (installation, configuration, management, etc.) this is the time to mention it.
+The currently supported OpenDaylight version is Helium SR2 (0.2.2).
 
 ## Setup
 
 ### What opendaylight affects
 
-* 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. 
+* Installs OpenDaylight archive in /opt/ (may change as RPM matures).
+* Installs a [systemd unit file](https://github.com/dfarrell07/opendaylight-systemd/) for OpenDaylight.
+* Creates `odl:odl` user:group if they don't already exist.
 
-### Setup Requirements **OPTIONAL**
+### Beginning with opendaylight
 
-If your module requires anything extra before setting up (pluginsync enabled, etc.), mention it here. 
+To install and start OpenDaylight, include the `opendaylight` class: `include opendaylight`.
 
-### Beginning with opendaylight
+## Usage
 
-The very basic steps needed for a user to get the module up and running. 
+The most basic usage, passing no parameters to the OpenDaylight class, will install and start OepnDaylight with a default configuration.
 
-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).
+```
+class { 'opendaylight':
+}
+```
 
-## Usage
+To set extra Karaf features to be installed at OpenDaylight start time, pass them in a list to the `extra_features` param.
 
-Put the classes, types, and resources for customizing, configuring, and doing the fancy stuff with your module here. 
+```
+class { 'opendaylight':
+  extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+}
+```
+
+A set of default Karaf features will be set to be installed at ODL start automatically. To override them, pass replacement defaults to the `default_features` param.
+
+```
+class { 'opendaylight':
+  extra_features => ['odl-ovsdb-plugin', 'odl-ovsdb-openstack'],
+  default_features => ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management'],
+}
+```
 
 ## 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!)
+### Classes
+
+#### Public classes
+
+* `opendaylight`: This is the modules main class. It installs and configures OpenDaylight.
+
+#### Private classes
+
+* `opendaylight::params`: Manages default param values.
+* `opendaylight::config`: Manages the Karaf config file via a template.
+* `opendaylight::install`: Chooses the correct Yum repo URL based on OS, installs the OpenDaylight Yum repo, installs the OpenDaylight RPM.
+* `opendaylight::service`: Configures and starts the OpenDaylight service.
 
 ## Limitations
 
-This is where you list OS compatibility, version compatibility, etc.
+* The target OS must use systemd (Fedora 15+, CentOS 7+).
+* Only tested on Fedora 20, 21 and CentOS 7.
+* Currently only supports RPM-based installs.
 
 ## Development
 
-Since your module is awesome, other users will want to play with it. Let them know what the ground rules for contributing are.
+See [CONTRIBUTING.md](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTING.md) for details about how to contribute to this OpenDaylight Puppet module.
 
-## Release Notes/Contributors/Etc **Optional**
+## Release Notes/Contributors
 
-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. 
+See the [CHANGELOG](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CHANGELOG) for information about releases and [CONTRIBUTORS](https://github.com/dfarrell07/puppet-opendaylight/blob/master/CONTRIBUTORS) file for a list of folks who have contributed.