Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ group :test do
gem "metadata-json-lint"
gem "travis"
gem "travis-lint"
gem "rspec-puppet-facts", :require => false
end

group :local_only do
Expand Down
5 changes: 5 additions & 0 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@
# Sets routing node for VPP deployments. Defaults to ''.
# [*java_opts*]
# Sets Java options for ODL in a string format. Defaults to '-Djava.net.preferIPv4Stack=true'.
# [*manage_repositories*]
# (Boolean) Should this module manage the apt or yum repositories for the
# package installation.
# Defaults to true
#
class opendaylight (
$default_features = $::opendaylight::params::default_features,
Expand All @@ -48,6 +52,7 @@
$security_group_mode = $::opendaylight::params::security_group_mode,
$vpp_routing_node = $::opendaylight::params::vpp_routing_node,
$java_opts = $::opendaylight::params::java_opts,
$manage_repositories = $::opendaylight::params::manage_repositories,
) inherits ::opendaylight::params {

# Validate OS family
Expand Down
60 changes: 15 additions & 45 deletions manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -6,59 +6,29 @@
# system state should be functionally equivalent.
#
class opendaylight::install {
if $::osfamily == 'RedHat' {
# Add OpenDaylight's Yum repository
yumrepo { $opendaylight::rpm_repo:
# 'ensure' isn't supported with Puppet <3.5
# Seems to default to present, but docs don't say
# https://docs.puppetlabs.com/references/3.4.0/type.html#yumrepo
# https://docs.puppetlabs.com/references/3.5.0/type.html#yumrepo
baseurl => "http://cbs.centos.org/repos/nfv7-${opendaylight::rpm_repo}/\$basearch/os/",
descr => 'OpenDaylight SDN Controller',
enabled => 1,
# NB: RPM signing is an active TODO, but is not done. We will enable
# this gpgcheck once the RPM supports it.
gpgcheck => 0,
before => Package['opendaylight'],
}

# Install the OpenDaylight RPM
package { 'opendaylight':
ensure => present,
require => Yumrepo[$opendaylight::rpm_repo],
}
->
if $::opendaylight::manage_repositories {
require ::opendaylight::repos
}

package { 'opendaylight':
ensure => present,
}

if $::osfamily == 'RedHat' {
# Configure the systemd file with Java options
file_line { 'java_options_systemd':
ensure => present,
path => '/usr/lib/systemd/system/opendaylight.service',
line => "Environment=_JAVA_OPTIONS=\'${opendaylight::java_opts}\'",
match => '^Environment.*',
after => 'ExecStart=/opt/opendaylight/bin/start',
ensure => present,
path => '/usr/lib/systemd/system/opendaylight.service',
line => "Environment=_JAVA_OPTIONS=\'${::opendaylight::java_opts}\'",
match => '^Environment.*',
after => 'ExecStart=/opt/opendaylight/bin/start',
require => Package['opendaylight'],
}
->
exec {'reload_systemd_units':
command => 'systemctl daemon-reload',
path => '/bin'
}
}

elsif $::osfamily == 'Debian'{

include apt

# Add ODL ppa repository
apt::ppa{ $opendaylight::deb_repo: }

# Install Opendaylight .deb pkg
package { 'opendaylight':
ensure => present,
require => Apt::Ppa[$opendaylight::deb_repo],
}

Apt::Ppa[$opendaylight::deb_repo] -> Package['opendaylight']
}
else {
fail("Unknown operating system method: ${::osfamily}")
}
}
1 change: 1 addition & 0 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@
$security_group_mode = 'stateful'
$vpp_routing_node = ''
$java_opts = '-Djava.net.preferIPv4Stack=true'
$manage_repositories = true
}
52 changes: 52 additions & 0 deletions manifests/repos.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# == Class: opendaylight::repos
#
# Manages the installation of the OpenDaylight repositories for RedHat and
# Debian
#
# === Parameters
#
# [*deb_repo*]
# The name of the debppa repo to configure. Ignored if on a RHEL based system.
# Defaults to $::opendaylight::deb_repo
#
# [*rpm_repo*]
# The name of the rpm repo to configure. Ignored if on a Debian based system
# Defaults to $::opendaylight::rpm_repo
#
# [*rpm_repo_enabled*]
# Flag to indicate if the the rpm repo should be enabled or disabled.
# Defualts to 1.
#
# [*rpm_repo_gpgcheck*]
# Flag to indicate if the rpm repo should be configured with gpgcheck.
# Defaults to 0.
#
class opendaylight::repos (
$deb_repo = $::opendaylight::deb_repo,
$rpm_repo = $::opendaylight::rpm_repo,
$rpm_repo_enabled = 1,
$rpm_repo_gpgcheck = 0,
) inherits ::opendaylight {
if $::osfamily == 'RedHat' {
# Add OpenDaylight's Yum repository
yumrepo { $rpm_repo:
# 'ensure' isn't supported with Puppet <3.5
# Seems to default to present, but docs don't say
# https://docs.puppetlabs.com/references/3.4.0/type.html#yumrepo
# https://docs.puppetlabs.com/references/3.5.0/type.html#yumrepo
baseurl => "http://cbs.centos.org/repos/nfv7-${rpm_repo}/\$basearch/os/",
descr => 'OpenDaylight SDN Controller',
enabled => $rpm_repo_enabled,
# NB: RPM signing is an active TODO, but is not done. We will enable
# this gpgcheck once the RPM supports it.
gpgcheck => $rpm_repo_gpgcheck,
}
} elsif ($::osfamily == 'Debian') {
include ::apt

# Add ODL ppa repository
apt::ppa{ $deb_repo: }
} else {
fail("Unknown operating system method: ${::osfamily}")
}
}
2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
{
"operatingsystem": "Ubuntu",
"operatingsystemrelease": [
"14.04"
"16.04"
]
}
],
Expand Down
73 changes: 73 additions & 0 deletions spec/classes/opendaylight_repos_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
require 'spec_helper'

describe 'opendaylight::repos' do
shared_examples_for "opendaylight::repos on Debian" do
context "with defaults" do
it { should contain_class('opendaylight::repos') }
it { should contain_class('apt') }
it { should contain_apt__ppa('ppa:odl-team/boron') }
end

context "with custom deb_repo" do
let(:params) do
{ :deb_repo => 'ppa:foo/testing' }
end

it { should contain_apt__ppa('ppa:foo/testing') }
end
end
shared_examples_for "opendaylight::repos on RedHat" do
context "with defaults" do
it { should contain_class('opendaylight::repos') }
it {
should contain_yumrepo('opendaylight-5-testing').with(
:baseurl => 'http://cbs.centos.org/repos/nfv7-opendaylight-5-testing/$basearch/os/',
:enabled => 1,
:gpgcheck => 0,
)
}
end

context "with custom rpm repo options" do
let(:params) do
{
:rpm_repo => 'testing',
:rpm_repo_enabled => 0,
:rpm_repo_gpgcheck => 1,
}
end
it {
should contain_yumrepo('testing').with(
:baseurl => 'http://cbs.centos.org/repos/nfv7-testing/$basearch/os/',
:enabled => 0,
:gpgcheck => 1,
)
}

end
end

describe "on unsupported os" do
context "when on Solaris" do
let(:facts) do
{:osfamily => 'Solaris', :operatingsystem => 'Solaris'}
end


it 'should fail' do
expect { is_expected.to raise_error(Puppet::Error) }
end
end
end

on_supported_os.each do |os, facts|
context "on #{os}" do
let (:facts) do
facts
end

it_behaves_like "opendaylight::repos on #{facts[:osfamily]}"
end
end

end
2 changes: 2 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts'
include RspecPuppetFacts

# Customize filters to ignore 3rd-party code
# If the coverage report shows not-our-code results, add it here
Expand Down