Creating the .midonetrc file

Introduce rspec tests for this functionality

Change-Id: Ib52d2d3d7cfe4301af0f423d186fe01c3590918f
This commit is contained in:
Jaume Devesa 2015-06-10 15:41:04 +02:00
parent 8c353be83b
commit 74bcc6babd
10 changed files with 165 additions and 6 deletions

7
.fixtures.yml Normal file
View File

@ -0,0 +1,7 @@
fixtures:
forge_modules:
apt:
repo: "puppetlabs-apt"
ref: "1.8.0"
stdlib: "puppetlabs-stdlib"
inifile: "puppetlabs-inifile"

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
/InstalledFiles
**/pkg/
/spec/reports/
/spec/fixtures/modules/*
/test/tmp/
/test/version_tmp/
/tmp/

View File

@ -1,6 +1,7 @@
require 'rubygems'
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
require 'rspec/core/rake_task'
PuppetLint.configuration.send('disable_80chars')
PuppetLint.configuration.send('disable_autoloader_layout')
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]

View File

@ -0,0 +1,22 @@
Puppet::Type.type(:midonet_client_conf).provide(
:ini_setting,
:parent => Puppet::Type.type(:ini_setting).provider(:ruby)
) do
def section
resource[:name].split('/', 2).first
end
def setting
resource[:name].split('/', 2).last
end
def setparator
'='
end
def file_path
'/root/.midonetrc'
end
end

View File

@ -0,0 +1,29 @@
Puppet::Type.newtype(:midonet_client_conf) do
ensurable
newparam(:name, :namevar => true) do
desc 'Section/setting name to manage from .midonetrc'
newvalues(/\S+\/\S+/)
end
autorequire(:package) do ['python-midonetclient'] end
newproperty(:value) do
desc 'The value of the setting to be defined.'
munge do |value|
value = value.to_s.strip
value.capitalize! if value =~ /^(true|false)$/i
value
end
def is_to_s( currentvalue )
return currentvalue
end
def should_to_s( newvalue )
return newvalue
end
end
end

View File

@ -30,12 +30,25 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
class midonet::midonet_cli {
class midonet::midonet_cli(
$api_endpoint='http://127.0.0.1:8080/midonet-api',
$username='admin',
$password='admin',
$tenant_name='admin',
) {
require midonet::repository
require midonet::repository
package {'python-midonetclient':
ensure => present,
require => Exec['update-midonet-repos']
}
midonet_client_conf {
'cli/api_url': value => $api_endpoint;
'cli/username': value => $username;
'cli/password': value => $password;
'cli/project_id': value => $tenant_name;
}
package {'python-midonetclient':
ensure => present,
require => Exec['update-midonet-repos']
}
}

View File

@ -9,6 +9,7 @@
"issues_url": "https://midonet.atlassian.net/projects/MDT",
"dependencies": [
{ "name":"ripienaar-module_data","version_requirement":">=0.0.3" },
{ "name": "puppetlabs/inifile", "version_requirement": ">=1.0.0 <2.0.0" },
{ "name":"midonet-zookeeper","version_requirement":">=1.0.0" },
{ "name":"midonet-cassandra","version_requirement":">=1.0.0" },
{ "name":"puppetlabs-apt","version_requirement":">=1.7.0 <2.0.0" },

View File

@ -0,0 +1,68 @@
require 'spec_helper'
describe 'midonet::midonet_cli' do
let :pre_condition do
"class {'midonet::repository':
midonet_repo => 'fake',
midonet_openstack_repo => 'fake',
midonet_thirdparty_repo => 'fake',
midonet_stage => 'fake',
openstack_release => 'fake',
midonet_key => '35FEEF2BAD40EA777D0C5BA6FCE340D250F18FCF',
midonet_key_url => 'http://repo.midonet.org/packages.midokura.com'
}"
end
let :default_params do
{
:api_endpoint => 'http://87.23.43.2:8080/midonet-api',
:username => 'midonet',
:password => 'dummy',
:tenant_name => 'midonet'
}
end
shared_examples_for 'midonet client' do
let :params do
{}
end
before do
params.merge!(default_params)
end
it 'should have the package installed' do
is_expected.to contain_package('python-midonetclient')
end
it 'should create .midonetrc file' do
is_expected.to contain_midonet_client_conf('cli/api_url').with_value(params[:api_endpoint])
is_expected.to contain_midonet_client_conf('cli/username').with_value(params[:username])
is_expected.to contain_midonet_client_conf('cli/password').with_value(params[:password])
is_expected.to contain_midonet_client_conf('cli/project_id').with_value(params[:tenant_name])
end
end
context 'on Debian' do
let :facts do
{
:osfamily => 'Debian',
:lsbdistrelease => '14.04',
:lsbdistid => 'Ubuntu'
}
end
it_configures 'midonet client'
end
context 'on RedHat' do
let :facts do
{
:osfamily => 'RedHat',
:operatingsystemmajrelease => 7,
}
end
it_configures 'midonet client'
end
end

12
spec/spec_helper.rb Normal file
View File

@ -0,0 +1,12 @@
require 'rspec-puppet'
require 'puppetlabs_spec_helper/module_spec_helper'
fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))
RSpec.configure do |c|
c.alias_it_should_behave_like_to :it_configures, 'configures'
c.alias_it_should_behave_like_to :it_raises, 'raises'
c.module_path = File.join(fixture_path, 'modules')
c.manifest_dir = File.join(fixture_path, 'manifests')
end

View File

@ -153,3 +153,8 @@ get_distro
exit 1;
esac
}
@test 'midonetrc file is created' {
run bash -c "file /root/.midonetrc"
[ "$status" -eq 0 ]
}