vagrant-registration 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +85 -15
- data/Rakefile +6 -0
- data/lib/vagrant-registration/action/register.rb +70 -35
- data/lib/vagrant-registration/action/unregister.rb +29 -14
- data/lib/vagrant-registration/config.rb +18 -109
- data/lib/vagrant-registration/plugin.rb +3 -2
- data/lib/vagrant-registration/version.rb +1 -1
- data/plugins/guests/redhat/cap/registration.rb +67 -0
- data/plugins/guests/redhat/cap/subscription_manager.rb +48 -1
- data/plugins/guests/redhat/plugin.rb +46 -6
- data/tests/helpers.sh +124 -0
- data/tests/run.sh +53 -0
- data/tests/vagrantfiles/Vagrantfile.rhel_multi_machine +19 -0
- data/tests/vagrantfiles/Vagrantfile.rhel_wrong_credentials +14 -0
- data/vagrant-registration.gemspec +2 -1
- data/vagrant-registration.spec +90 -0
- metadata +64 -12
- data/lib/vagrant-registration/env.rb +0 -21
- data/lib/vagrant-registration/errors.rb +0 -19
- data/locales/en.yml +0 -2
- data/plugins/guests/redhat/cap/register.rb +0 -33
- data/plugins/guests/redhat/cap/unregister.rb +0 -11
- data/tests/shell-scripts/test-rhel-eco-ident/Vagrantfile.centos +0 -14
- data/tests/shell-scripts/test-rhel-eco-ident/Vagrantfile.fedora +0 -14
- data/tests/shell-scripts/test-rhel-eco-ident/Vagrantfile.rhel +0 -14
- data/tests/shell-scripts/test-rhel-eco-ident/test-identification.sh +0 -114
@@ -28,7 +28,7 @@ module VagrantPlugins
|
|
28
28
|
|
29
29
|
name "Registration"
|
30
30
|
description <<-DESC
|
31
|
-
This plugin adds register and unregister functionality to Vagrant Guests that
|
31
|
+
This plugin adds register and unregister functionality to Vagrant Guests that
|
32
32
|
support the capability
|
33
33
|
DESC
|
34
34
|
|
@@ -38,12 +38,13 @@ module VagrantPlugins
|
|
38
38
|
action_hook(:registration_unregister, :machine_action_destroy, &method(:unregister))
|
39
39
|
|
40
40
|
config(:registration) do
|
41
|
+
setup_logging
|
41
42
|
require_relative 'config'
|
42
43
|
Config
|
43
44
|
end
|
44
45
|
|
45
46
|
# This sets up our log level to be whatever VAGRANT_LOG is
|
46
|
-
# for loggers prepended with '
|
47
|
+
# for loggers prepended with 'vagrant_registration'
|
47
48
|
def self.setup_logging
|
48
49
|
require 'log4r'
|
49
50
|
level = nil
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module GuestRedHat
|
3
|
+
module Cap
|
4
|
+
# This provides registration capabilities for vagrant-registration
|
5
|
+
#
|
6
|
+
# As we might support more registration options (managers), this
|
7
|
+
# just calls the capabilities of the selected registration manager
|
8
|
+
# (from config.registration.manager).
|
9
|
+
class Registration
|
10
|
+
# Register the given machine
|
11
|
+
def self.registration_register(machine)
|
12
|
+
cap = "#{self.registration_manager(machine).to_s}_register".to_sym
|
13
|
+
if machine.guest.capability?(cap)
|
14
|
+
machine.guest.capability(cap, machine.config.registration)
|
15
|
+
else
|
16
|
+
false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Unregister the given machine
|
21
|
+
def self.registration_unregister(machine)
|
22
|
+
cap = "#{self.registration_manager(machine).to_s}_unregister".to_sym
|
23
|
+
if machine.guest.capability?(cap)
|
24
|
+
machine.guest.capability(cap)
|
25
|
+
else
|
26
|
+
false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Check that the machine has the selected registration manager installed
|
31
|
+
def self.registration_manager_installed(machine)
|
32
|
+
cap = "#{self.registration_manager(machine).to_s}".to_sym
|
33
|
+
if machine.guest.capability?(cap)
|
34
|
+
machine.guest.capability(cap)
|
35
|
+
else
|
36
|
+
false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Required configuration options of the registration manager
|
41
|
+
def self.registration_credentials(machine)
|
42
|
+
cap = "#{self.registration_manager(machine).to_s}_credentials".to_sym
|
43
|
+
if machine.guest.capability?(cap)
|
44
|
+
machine.guest.capability(cap)
|
45
|
+
else
|
46
|
+
[]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Return secret options for the registration manager
|
51
|
+
def self.registration_secrets(machine)
|
52
|
+
cap = "#{self.registration_manager(machine).to_s}_secrets".to_sym
|
53
|
+
if machine.guest.capability?(cap)
|
54
|
+
machine.guest.capability(cap)
|
55
|
+
else
|
56
|
+
[]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# Return selected registration manager or default
|
61
|
+
def self.registration_manager(machine)
|
62
|
+
(machine.config.registration.manager || 'subscription_manager').to_sym
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -2,8 +2,55 @@ module VagrantPlugins
|
|
2
2
|
module GuestRedHat
|
3
3
|
module Cap
|
4
4
|
class SubscriptionManager
|
5
|
+
# Test that we have subscription-manager installed
|
5
6
|
def self.subscription_manager(machine)
|
6
|
-
|
7
|
+
machine.communicate.test("/sbin/subscription-manager", sudo: true)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Register the machine using 'register' option, config is (Open)Struct
|
11
|
+
def self.subscription_manager_register(machine, config)
|
12
|
+
command = "subscription-manager register #{configuration_to_options(config)}"
|
13
|
+
machine.communicate.execute("cmd=$(#{command}); if [ \"$?\" != \"0\" ]; then echo $cmd | grep 'This system is already registered' || (echo $cmd 1>&2 && exit 1) ; fi", sudo: true)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Unregister the machine using 'unregister' option
|
17
|
+
def self.subscription_manager_unregister(machine)
|
18
|
+
machine.communicate.execute("subscription-manager unregister || :", sudo: true)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Return required configuration options for subscription-manager
|
22
|
+
def self.subscription_manager_credentials(machine)
|
23
|
+
[:username, :password]
|
24
|
+
end
|
25
|
+
|
26
|
+
# Return secret options for subscription-manager
|
27
|
+
def self.subscription_manager_secrets(machine)
|
28
|
+
[:password]
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
# Build additional subscription-manager options based on plugin configuration
|
34
|
+
def self.configuration_to_options(config)
|
35
|
+
# Defaults
|
36
|
+
config.force = true unless config.force
|
37
|
+
config.auto_attach = true unless config.auto_attach
|
38
|
+
|
39
|
+
options = []
|
40
|
+
options << "--username=#{config.username}"
|
41
|
+
options << "--password=#{config.password}"
|
42
|
+
options << "--serverurl=#{config.serverurl}" if config.serverurl
|
43
|
+
options << "--baseurl=#{config.baseurl}" if config.baseurl
|
44
|
+
options << "--org=#{config.org}" if config.org
|
45
|
+
options << "--environment=#{config.environment}" if config.environment
|
46
|
+
options << "--name=#{config.name}" if config.name
|
47
|
+
options << "--auto-attach" if config.auto_attach
|
48
|
+
options << "--activationkey=#{config.activationkey}" if config.activationkey
|
49
|
+
options << "--servicelevel=#{config.servicelevel}" if config.servicelevel
|
50
|
+
options << "--release=#{config.release}" if config.release
|
51
|
+
options << "--force" if config.force
|
52
|
+
options << "--type=#{config.type}" if config.type
|
53
|
+
options.join(' ')
|
7
54
|
end
|
8
55
|
end
|
9
56
|
end
|
@@ -3,14 +3,34 @@ require "vagrant"
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module GuestRedHat
|
5
5
|
class Plugin < Vagrant.plugin("2")
|
6
|
-
guest_capability("redhat", "
|
7
|
-
require_relative "cap/
|
8
|
-
Cap::
|
6
|
+
guest_capability("redhat", "registration_register") do
|
7
|
+
require_relative "cap/registration"
|
8
|
+
Cap::Registration
|
9
9
|
end
|
10
10
|
|
11
|
-
guest_capability("redhat", "
|
12
|
-
require_relative "cap/
|
13
|
-
Cap::
|
11
|
+
guest_capability("redhat", "registration_unregister") do
|
12
|
+
require_relative "cap/registration"
|
13
|
+
Cap::Registration
|
14
|
+
end
|
15
|
+
|
16
|
+
guest_capability("redhat", "registration_manager_installed") do
|
17
|
+
require_relative "cap/registration"
|
18
|
+
Cap::Registration
|
19
|
+
end
|
20
|
+
|
21
|
+
guest_capability("redhat", "registration_credentials") do
|
22
|
+
require_relative "cap/registration"
|
23
|
+
Cap::Registration
|
24
|
+
end
|
25
|
+
|
26
|
+
guest_capability("redhat", "registration_secrets") do
|
27
|
+
require_relative "cap/registration"
|
28
|
+
Cap::Registration
|
29
|
+
end
|
30
|
+
|
31
|
+
guest_capability("redhat", "registration_manager") do
|
32
|
+
require_relative "cap/registration"
|
33
|
+
Cap::Registration
|
14
34
|
end
|
15
35
|
|
16
36
|
guest_capability("redhat", "subscription_manager") do
|
@@ -18,6 +38,26 @@ module VagrantPlugins
|
|
18
38
|
Cap::SubscriptionManager
|
19
39
|
end
|
20
40
|
|
41
|
+
guest_capability("redhat", "subscription_manager_register") do
|
42
|
+
require_relative "cap/subscription_manager"
|
43
|
+
Cap::SubscriptionManager
|
44
|
+
end
|
45
|
+
|
46
|
+
guest_capability("redhat", "subscription_manager_unregister") do
|
47
|
+
require_relative "cap/subscription_manager"
|
48
|
+
Cap::SubscriptionManager
|
49
|
+
end
|
50
|
+
|
51
|
+
guest_capability("redhat", "subscription_manager_credentials") do
|
52
|
+
require_relative "cap/subscription_manager"
|
53
|
+
Cap::SubscriptionManager
|
54
|
+
end
|
55
|
+
|
56
|
+
guest_capability("redhat", "subscription_manager_secrets") do
|
57
|
+
require_relative "cap/subscription_manager"
|
58
|
+
Cap::SubscriptionManager
|
59
|
+
end
|
60
|
+
|
21
61
|
guest_capability("redhat", "rhcert") do
|
22
62
|
require_relative "cap/redhat_certification_tool"
|
23
63
|
Cap::RedHatCertification
|
data/tests/helpers.sh
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
# Set up test environment
|
2
|
+
function setup_tests() {
|
3
|
+
check_credentials
|
4
|
+
install_dependencies
|
5
|
+
|
6
|
+
# Test results that should be printed at the end
|
7
|
+
TEST_RESULTS=''
|
8
|
+
FAILED=0
|
9
|
+
SUCCEDED=0
|
10
|
+
EXIT_CODE=0
|
11
|
+
}
|
12
|
+
|
13
|
+
# Print test results
|
14
|
+
function print_results() {
|
15
|
+
if [ "$TEST_RESULTS" != "" ]; then
|
16
|
+
printf "\n$TEST_RESULTS\n"
|
17
|
+
fi
|
18
|
+
printf "\n$SUCCEDED succeded, $FAILED failed.\n"
|
19
|
+
exit $EXIT_CODE
|
20
|
+
}
|
21
|
+
|
22
|
+
# Clean up before each test
|
23
|
+
function clean_up() {
|
24
|
+
# Clean up Vagrant metadata
|
25
|
+
rm -rf $DIR/.vagrant
|
26
|
+
}
|
27
|
+
|
28
|
+
# Check that we have credentials to run the test suite
|
29
|
+
function check_credentials() {
|
30
|
+
if [ "$VAGRANT_REGISTRATION_USERNAME" = "" ] || [ "$VAGRANT_REGISTRATION_PASSWORD" = "" ]; then
|
31
|
+
echo "VAGRANT_REGISTRATION_USERNAME and VAGRANT_REGISTRATION_PASSWORD needs to be provided."
|
32
|
+
exit 1
|
33
|
+
fi
|
34
|
+
}
|
35
|
+
|
36
|
+
# Install vagrant and vagrant-registration
|
37
|
+
function install_dependencies() {
|
38
|
+
# Install Vagrant if it's not present
|
39
|
+
PLUGIN_INSTALLED=$(vagrant --help)
|
40
|
+
if [ $? -ne 0 ]; then
|
41
|
+
sudo yum install vagrant-libvirt -y
|
42
|
+
fi
|
43
|
+
|
44
|
+
# Uninstall vagrant-registration if installed
|
45
|
+
# TODO: Uninstall RPM package if needed
|
46
|
+
PLUGIN_INSTALLED=$(vagrant plugin list | grep vagrant-registration)
|
47
|
+
if [ -z "$PLUGIN_INSTALLED" ]; then
|
48
|
+
vagrant plugin uninstall vagrant-registration
|
49
|
+
fi
|
50
|
+
|
51
|
+
# Install vagrant-registration from current sources
|
52
|
+
rm -rf pkg
|
53
|
+
rake build
|
54
|
+
vagrant plugin install pkg/vagrant-registration*.gem
|
55
|
+
}
|
56
|
+
|
57
|
+
# Test that command succeded
|
58
|
+
#
|
59
|
+
# Usage:
|
60
|
+
#
|
61
|
+
# test_success TEST_NAME COMMAND_TO_RUN
|
62
|
+
#
|
63
|
+
# Example:
|
64
|
+
#
|
65
|
+
# test_success "ls won't fail" "ls -all"
|
66
|
+
function test_success() {
|
67
|
+
eval $2 >&1 >/dev/null
|
68
|
+
if [ $? -ne 0 ]; then
|
69
|
+
printf "F"
|
70
|
+
FAILED=$((FAILED + 1))
|
71
|
+
EXIT_CODE=1
|
72
|
+
TEST_RESULTS="$TEST_RESULTS\nTest '$1' failed with command:"
|
73
|
+
TEST_RESULTS="$TEST_RESULTS\n $2"
|
74
|
+
else
|
75
|
+
SUCCEDED=$((SUCCEDED + 1))
|
76
|
+
printf '.'
|
77
|
+
fi
|
78
|
+
}
|
79
|
+
|
80
|
+
# Test that command failed
|
81
|
+
#
|
82
|
+
# Usage:
|
83
|
+
#
|
84
|
+
# test_failure TEST_NAME COMMAND_TO_RUN
|
85
|
+
#
|
86
|
+
# Example:
|
87
|
+
#
|
88
|
+
# test_failure "this should fail" "echoo"
|
89
|
+
function test_failure() {
|
90
|
+
eval $2 >&1 >/dev/null
|
91
|
+
if [ $? -ne 0 ]; then
|
92
|
+
SUCCEDED=$((SUCCEDED + 1))
|
93
|
+
printf '.'
|
94
|
+
else
|
95
|
+
printf "F"
|
96
|
+
FAILED=$((FAILED + 1))
|
97
|
+
EXIT_CODE=1
|
98
|
+
TEST_RESULTS="$TEST_RESULTS\nTest '$1' dit not fail with command:"
|
99
|
+
TEST_RESULTS="$TEST_RESULTS\n $2"
|
100
|
+
fi
|
101
|
+
}
|
102
|
+
|
103
|
+
# Test that command produced an expected output
|
104
|
+
#
|
105
|
+
# Usage:
|
106
|
+
#
|
107
|
+
# test_output TEST_NAME COMMAND_TO_RUN EXPECTED_OUTPUT
|
108
|
+
#
|
109
|
+
# Example:
|
110
|
+
#
|
111
|
+
# test_output "echo abc outputs abc" "echo 'abc'" "abc"
|
112
|
+
function test_output() {
|
113
|
+
eval $2 >&1| grep "$3" >/dev/null
|
114
|
+
if [ $? -ne 0 ]; then
|
115
|
+
printf "F"
|
116
|
+
FAILED=$((FAILED + 1))
|
117
|
+
EXIT_CODE=1
|
118
|
+
TEST_RESULTS="$TEST_RESULTS\nTest '$1' failed with command:"
|
119
|
+
TEST_RESULTS="$TEST_RESULTS\n $2 | grep '$3'"
|
120
|
+
else
|
121
|
+
SUCCEDED=$((SUCCEDED + 1))
|
122
|
+
printf '.'
|
123
|
+
fi
|
124
|
+
}
|
data/tests/run.sh
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# This tests test vagrant-registration plugin running on Fedora
|
4
|
+
# with libvirt. If you do not have Vagrant installed or if you
|
5
|
+
# have vagrant-libvirt package on your system, Vagrant will be
|
6
|
+
# installed or vagrant-libvirt removed respectively. In that case
|
7
|
+
# you need sudo to run the tests. If you do not run Fedora, make
|
8
|
+
# sure you have Vagrant installed (any provider should do if you
|
9
|
+
# add RHEL box called 'rhel-7').
|
10
|
+
#
|
11
|
+
# IMPORTANT: Tests need valid credentials to actually test
|
12
|
+
# registration. This can be provided in form of environment
|
13
|
+
# variables.
|
14
|
+
#
|
15
|
+
# For testing subscription-manager on RHEL export
|
16
|
+
# VAGRANT_REGISTRATION_USERNAME and
|
17
|
+
# VAGRANT_REGISTRATION_PASSWORD.
|
18
|
+
#
|
19
|
+
# NOTE: This will install a development version of
|
20
|
+
# vagrant-registration on your system.
|
21
|
+
#
|
22
|
+
|
23
|
+
DIR=$(dirname $(readlink -f "$0"))
|
24
|
+
|
25
|
+
# Import test helpers
|
26
|
+
. $DIR/helpers.sh
|
27
|
+
|
28
|
+
setup_tests
|
29
|
+
|
30
|
+
# Test correct credentials
|
31
|
+
clean_up
|
32
|
+
export VAGRANT_VAGRANTFILE=$DIR/vagrantfiles/Vagrantfile.rhel_multi_machine
|
33
|
+
|
34
|
+
test_success 'vagrant up on RHEL multi_machine setup' 'vagrant up'
|
35
|
+
|
36
|
+
test_output 'first machine is registered' \
|
37
|
+
'vagrant ssh rhel1-valid-credentials -c '\''sudo subscription-manager register'\''' \
|
38
|
+
'This system is already registered.'
|
39
|
+
|
40
|
+
test_output 'second machine is registered' \
|
41
|
+
'vagrant ssh rhel2-valid-credentials -c '\''sudo subscription-manager register'\''' \
|
42
|
+
'This system is already registered.'
|
43
|
+
|
44
|
+
test_success 'vagrant halt on RHEL multi_machine setup' 'vagrant halt rhel1-valid-credentials'
|
45
|
+
test_success 'vagrant halt on RHEL multi_machine setup' 'vagrant destroy'
|
46
|
+
|
47
|
+
# Test wrong credentials
|
48
|
+
clean_up
|
49
|
+
export VAGRANT_VAGRANTFILE=$DIR/vagrantfiles/Vagrantfile.rhel_wrong_credentials
|
50
|
+
test_failure 'vagrant up on RHEL with wrong credentials should fail' 'vagrant up'
|
51
|
+
test_success 'vagrant destroy on RHEL with wrong credentials' 'vagrant destroy'
|
52
|
+
|
53
|
+
print_results
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Spin 2 RHEL machines that will be registered
|
2
|
+
|
3
|
+
ENV['VAGRANT_DEFAULT_PROVIDER'] ||= 'libvirt'
|
4
|
+
ENV['VAGRANT_REGISTRATION_RHEL_BOX'] ||= 'rhel-7.0'
|
5
|
+
|
6
|
+
Vagrant.configure('2') do |config|
|
7
|
+
config.vm.box = ENV['VAGRANT_REGISTRATION_RHEL_BOX']
|
8
|
+
|
9
|
+
config.vm.define "rhel1-valid-credentials" do |c|
|
10
|
+
c.registration.username = ENV['VAGRANT_REGISTRATION_USERNAME']
|
11
|
+
c.registration.password = ENV['VAGRANT_REGISTRATION_PASSWORD']
|
12
|
+
end
|
13
|
+
|
14
|
+
config.vm.define "rhel2-valid-credentials" do |c|
|
15
|
+
c.registration.username = ENV['VAGRANT_REGISTRATION_USERNAME']
|
16
|
+
c.registration.password = ENV['VAGRANT_REGISTRATION_PASSWORD']
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# Spin 1 RHEL machine with wrong credentials
|
2
|
+
|
3
|
+
ENV['VAGRANT_DEFAULT_PROVIDER'] ||= 'libvirt'
|
4
|
+
ENV['VAGRANT_REGISTRATION_RHEL_BOX'] ||= 'rhel-7.0'
|
5
|
+
|
6
|
+
Vagrant.configure('2') do |config|
|
7
|
+
config.vm.box = ENV['VAGRANT_REGISTRATION_RHEL_BOX']
|
8
|
+
|
9
|
+
config.vm.define "rhel1-wrong-credentials" do |c|
|
10
|
+
c.registration.username = 'wrong_username'
|
11
|
+
c.registration.password = 'wrong_password'
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|