Skip to content

Commit

Permalink
Merge pull request #138 from mwhahaha/repositories
Browse files Browse the repository at this point in the history
Allow for disabling repository configuration
  • Loading branch information
dfarrell07 authored Mar 17, 2017
2 parents a0e6327 + 861416b commit 72146d9
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 46 deletions.
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,35 +6,24 @@
# 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':
Expand All @@ -43,23 +32,4 @@
refreshonly => true,
}
}

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

0 comments on commit 72146d9

Please sign in to comment.