vagrant-registration 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile +10 -2
- data/README.md +78 -2
- data/Rakefile +58 -3
- data/lib/vagrant-registration/action/register.rb +2 -6
- data/lib/vagrant-registration/plugin.rb +33 -17
- data/lib/vagrant-registration/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5986f6c0eaf90532c64bfb1c4ccf4763f8dcd130
|
4
|
+
data.tar.gz: 939849b4c8ddadb8edb6bfcb684faeb4c6e474cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05881a0cf219ee185fce48f1d41b92cabdfa9125b4faea4408f124512bc176c3e996723b169d8e458e448d8c02a7f93a06d83b3274cc2fe0625a14e767247a4c
|
7
|
+
data.tar.gz: 75696d5f372a0ef19e0da1a7eea93110693998de0293e502f2beae6b16517d4bd80029a836e891d133e2205ce3b8297d7f92269ce0b24398ad229a14a2fa2f3a
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
@@ -3,9 +3,17 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
gem 'vagrant',
|
7
|
-
gem 'gem-compare'
|
6
|
+
gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
|
8
7
|
gem 'rake'
|
8
|
+
gem 'cucumber', '~> 2.1'
|
9
|
+
gem 'aruba', '~> 0.13'
|
10
|
+
gem 'komenda', '~> 0.1.6'
|
11
|
+
gem 'launchy'
|
12
|
+
gem 'gem-compare'
|
13
|
+
gem 'mechanize'
|
14
|
+
gem 'vagrant-vbguest'
|
15
|
+
gem 'vagrant-libvirt' if RUBY_PLATFORM =~ /linux/i
|
16
|
+
gem 'fog-libvirt', '0.0.3' if RUBY_PLATFORM =~ /linux/i # https://github.com/pradels/vagrant-libvirt/issues/568
|
9
17
|
end
|
10
18
|
|
11
19
|
group :plugins do
|
data/README.md
CHANGED
@@ -1,10 +1,30 @@
|
|
1
1
|
# vagrant-registration
|
2
2
|
|
3
|
+
<!-- MarkdownTOC -->
|
4
|
+
|
5
|
+
- [Installation](#installation)
|
6
|
+
- [Usage](#usage)
|
7
|
+
- [Plugin Configuration](#plugin-configuration)
|
8
|
+
- [Credentials Configuration](#credentials-configuration)
|
9
|
+
- [subscription-manager Configuration](#subscription-manager-configuration)
|
10
|
+
- [subscription-manager Default Options](#subscription-manager-default-options)
|
11
|
+
- [subscription-manager Options Reference](#subscription-manager-options-reference)
|
12
|
+
- [rhn-register Configuration](#rhn-register-configuration)
|
13
|
+
- [rhn-register Default Options](#rhn-register-default-options)
|
14
|
+
- [rhn-register Options Reference](#rhn-register-options-reference)
|
15
|
+
- [Development](#development)
|
16
|
+
- [Tests](#tests)
|
17
|
+
- [Shell script based tests](#shell-script-based-tests)
|
18
|
+
- [Acceptance tests](#acceptance-tests)
|
19
|
+
- [Acknowledgements](#acknowledgements)
|
20
|
+
|
21
|
+
<!-- /MarkdownTOC -->
|
22
|
+
|
3
23
|
vagrant-registration plugin for Vagrant allows developers to easily register their guests for updates on systems with a subscription model (like Red Hat Enterprise Linux).
|
4
24
|
|
5
25
|
This plugin would run *register* action on `vagrant up` before any provisioning and *unregister* on `vagrant halt` or `vagrant destroy`. The actions then call the registration capabilities that have to be provided for given OS.
|
6
26
|
|
7
|
-
|
27
|
+
<a name="installation"></a>
|
8
28
|
## Installation
|
9
29
|
|
10
30
|
Install vagrant-registration as any other Vagrant plugin:
|
@@ -19,6 +39,7 @@ If you are on Fedora, you can install the packaged version of the plugin by runn
|
|
19
39
|
# dnf install vagrant-registration
|
20
40
|
```
|
21
41
|
|
42
|
+
<a name="usage"></a>
|
22
43
|
## Usage
|
23
44
|
|
24
45
|
The plugin is designed in an registration-manager-agnostic way which means that plugin itself does not depend on any OS nor way of registration. vagrant-registration only calls registration capabilities for given guest, passes the configuration options to them and handles interactive registration.
|
@@ -33,6 +54,7 @@ Vagrant.configure('2') do |config|
|
|
33
54
|
end
|
34
55
|
```
|
35
56
|
|
57
|
+
<a name="plugin-configuration"></a>
|
36
58
|
### Plugin Configuration
|
37
59
|
|
38
60
|
- **skip** skips the registration. If you wish to skip the registration process altogether, you can do so by setting a `skip` option to `true`:
|
@@ -53,6 +75,7 @@ end
|
|
53
75
|
config.registration.manager = 'subscription_manager'
|
54
76
|
```
|
55
77
|
|
78
|
+
<a name="credentials-configuration"></a>
|
56
79
|
### Credentials Configuration
|
57
80
|
|
58
81
|
Setting up the credentials can be done as follows:
|
@@ -96,6 +119,7 @@ If you do not provide credentials, you will be prompted for them in the "up proc
|
|
96
119
|
Please note the the interactive mode asks you for the preferred registration pair only
|
97
120
|
of the configured manager.
|
98
121
|
|
122
|
+
<a name="subscription-manager-configuration"></a>
|
99
123
|
### subscription-manager Configuration
|
100
124
|
|
101
125
|
vagrant-registration will use the `subscription_manager` manager by default or can be explicitly configured by setting the `manager` option to `subscription_manager`:
|
@@ -118,6 +142,7 @@ You can set any option easily by setting `config.registration.OPTION_NAME = 'OPT
|
|
118
142
|
in your Vagrantfile (please see the subscription-manager's documentation for option
|
119
143
|
description).
|
120
144
|
|
145
|
+
<a name="subscription-manager-default-options"></a>
|
121
146
|
#### subscription-manager Default Options
|
122
147
|
|
123
148
|
- **--force**: Subscription Manager will fail if you attempt to register an already registered machine (see the man page for explanation), therefore vagrant-registration appends the `--force` flag automatically when subscribing. If you would like to disable this feature, set `force` option to `false`:
|
@@ -135,6 +160,7 @@ description).
|
|
135
160
|
|
136
161
|
Note that the `auto_attach` option is set to false when using org/activationkey for registration or if pools are specified.
|
137
162
|
|
163
|
+
<a name="subscription-manager-options-reference"></a>
|
138
164
|
#### subscription-manager Options Reference
|
139
165
|
|
140
166
|
```ruby
|
@@ -197,6 +223,7 @@ Note that the `auto_attach` option is set to false when using org/activationkey
|
|
197
223
|
config.registration.pools
|
198
224
|
```
|
199
225
|
|
226
|
+
<a name="rhn-register-configuration"></a>
|
200
227
|
### rhn-register Configuration
|
201
228
|
|
202
229
|
vagrant-registration will use the `rhn_register` manager only if explicitly configured by setting the `manager` option to `rhn_register`:
|
@@ -217,6 +244,7 @@ vagrant-registration supports most of the options of rhnreg_ks's command. You ca
|
|
217
244
|
|
218
245
|
`rhn_register` manager reuses the naming of `subscription-manager`'s command options where possible.
|
219
246
|
|
247
|
+
<a name="rhn-register-default-options"></a>
|
220
248
|
#### rhn-register Default Options
|
221
249
|
|
222
250
|
- **--force**: `rhnreg_ks` command will fail if you attempt to register an already registered machine (see the man page for explanation), therefore vagrant-registration appends the `--force` flag automatically when subscribing. If you would like to disable this feature, set `force` option to `false`:
|
@@ -225,6 +253,7 @@ vagrant-registration supports most of the options of rhnreg_ks's command. You ca
|
|
225
253
|
config.registration.force = false
|
226
254
|
```
|
227
255
|
|
256
|
+
<a name="rhn-register-options-reference"></a>
|
228
257
|
#### rhn-register Options Reference
|
229
258
|
|
230
259
|
```ruby
|
@@ -291,7 +320,23 @@ vagrant-registration supports most of the options of rhnreg_ks's command. You ca
|
|
291
320
|
config.registration.skip
|
292
321
|
```
|
293
322
|
|
294
|
-
|
323
|
+
<a name="development"></a>
|
324
|
+
## Development
|
325
|
+
|
326
|
+
To install a development environment, clone the repo and prepare dependencies by
|
327
|
+
|
328
|
+
```
|
329
|
+
gem install bundler -v 1.7.5
|
330
|
+
bundler install
|
331
|
+
```
|
332
|
+
|
333
|
+
The use of [RVM|https://rvm.io] is recommended. Verified to work with ruby 2.0.0p643.
|
334
|
+
|
335
|
+
<a name="tests"></a>
|
336
|
+
### Tests
|
337
|
+
|
338
|
+
<a name="shell-script-based-tests"></a>
|
339
|
+
#### Shell script based tests
|
295
340
|
|
296
341
|
Tests currently test the plugin with `subscription-manager` and `rhn_register` on RHEL 7.1 guest and Fedora host. You need an imported RHEL 7.1 Vagrant box named `rhel-7.1`.
|
297
342
|
|
@@ -316,6 +361,37 @@ environment variable on `1` before executing the test script:
|
|
316
361
|
export DEBUG=1
|
317
362
|
```
|
318
363
|
|
364
|
+
<a name="acceptance-tests"></a>
|
365
|
+
#### Acceptance tests
|
366
|
+
|
367
|
+
The source also contains a set of [Cucumber](https://cucumber.io/) acceptance tests. They can be run via:
|
368
|
+
|
369
|
+
$ bundle exec rake features
|
370
|
+
|
371
|
+
The tests assume that the CDK box files are available under
|
372
|
+
_build/boxes/cdk-\<provider\>.box_. You can either copy the box files manually or
|
373
|
+
use the _get_cdk_ Rake task to download them.
|
374
|
+
|
375
|
+
Per default only the scenarios for CDK in combination with VirtualBox
|
376
|
+
are run. You can also run against Libvirt using the environment variable
|
377
|
+
_PROVIDER_:
|
378
|
+
|
379
|
+
# Run tests against Libvirt
|
380
|
+
$ bundle exec rake features PROVIDER=libvirt
|
381
|
+
|
382
|
+
# Run against VirtualBox and Libvirt
|
383
|
+
$ bundle exec rake features PROVIDER=virtualbox,libvirt
|
384
|
+
|
385
|
+
You can also run a single feature specifying the explicit feature file to use:
|
386
|
+
|
387
|
+
$ bundle exec rake features FEATURE=features/<feature-filename>.feature
|
388
|
+
|
389
|
+
After test execution the Cucumber test reports can be found under _build/features_report.html_.
|
390
|
+
They can also be opened via
|
391
|
+
|
392
|
+
$ bundle exec rake features:open_report
|
393
|
+
|
394
|
+
<a name="acknowledgements"></a>
|
319
395
|
## Acknowledgements
|
320
396
|
|
321
397
|
The project would like to make sure we thank [purpleidea](https://github.com/purpleidea/), [humaton](https://github.com/humaton/), [strzibny](https://github.com/strzibny), [scollier](https://github.com/scollier/), [puzzle](https://github.com/puzzle), [voxik](https://github.com/voxik), [lukaszachy](https://github.com/lukaszachy), [goern](https://github.com/goern), [iconoeugen](https://github.com/iconoeugen) and [pvalena](https://github.com/pvalena) (in no particular order) for their contributions of ideas, code and testing for this project.
|
data/Rakefile
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/clean'
|
3
|
+
require 'cucumber/rake/task'
|
2
4
|
require 'yard'
|
5
|
+
require 'rubygems/comparator'
|
6
|
+
require 'launchy'
|
7
|
+
require 'mechanize'
|
8
|
+
require 'fileutils'
|
9
|
+
|
10
|
+
CLOBBER.include('pkg')
|
11
|
+
CLEAN.include('build')
|
3
12
|
|
4
13
|
# Documentation
|
5
14
|
YARD::Rake::YardocTask.new do |t|
|
@@ -8,12 +17,22 @@ YARD::Rake::YardocTask.new do |t|
|
|
8
17
|
t.stats_options = ['--list-undoc']
|
9
18
|
end
|
10
19
|
|
11
|
-
task :
|
12
|
-
|
20
|
+
task :init do
|
21
|
+
FileUtils.mkdir_p 'build'
|
22
|
+
end
|
23
|
+
|
24
|
+
# Cucumber acceptance test tasks
|
25
|
+
Cucumber::Rake::Task.new(:features)
|
26
|
+
task :features => :init
|
27
|
+
|
28
|
+
namespace :features do
|
29
|
+
desc 'Opens the HTML Cucumber test report'
|
30
|
+
task :open_report do
|
31
|
+
Launchy.open('./build/features_report.html')
|
32
|
+
end
|
13
33
|
end
|
14
34
|
|
15
35
|
# Compare latest release with current git head
|
16
|
-
require 'rubygems/comparator'
|
17
36
|
task compare: [:clean, :build] do
|
18
37
|
git_version = VagrantPlugins::Registration::VERSION
|
19
38
|
options = {}
|
@@ -23,3 +42,39 @@ task compare: [:clean, :build] do
|
|
23
42
|
comparator.compare_versions('vagrant-registration', ['_', git_version])
|
24
43
|
comparator.print_results
|
25
44
|
end
|
45
|
+
|
46
|
+
desc 'Download CDK Vagrant box using the specified provider (default \'virtualbox\')'
|
47
|
+
task :get_cdk, [:provider] do |t, args|
|
48
|
+
provider = args[:provider].nil? ? 'virtualbox' : args[:provider]
|
49
|
+
agent = Mechanize.new
|
50
|
+
agent.follow_meta_refresh = true
|
51
|
+
agent.get(CDK_DOWNLOAD_URL) do |page|
|
52
|
+
|
53
|
+
# Submit first form which is the redirect to login page form
|
54
|
+
login_page = page.forms.first.submit
|
55
|
+
|
56
|
+
# Submit the login form
|
57
|
+
after_login = login_page.form_with(:name => 'login_form') do |f|
|
58
|
+
username_field = f.field_with(:id => 'username')
|
59
|
+
username_field.value = 'service-manager@mailinator.com'
|
60
|
+
password_field = f.field_with(:id => 'password')
|
61
|
+
password_field.value = 'service-manager'
|
62
|
+
end.click_button
|
63
|
+
|
64
|
+
# There is one more redirect after successful login
|
65
|
+
download_page = after_login.forms.first.submit
|
66
|
+
|
67
|
+
download_page.links.each do |link|
|
68
|
+
if link.href =~ /#{Regexp.quote(CDK_BOX_BASE_NAME)}-#{Regexp.quote(provider)}.box/
|
69
|
+
download_dir = File.join(File.dirname(__FILE__), 'build', 'boxes')
|
70
|
+
unless File.directory?(download_dir)
|
71
|
+
FileUtils.mkdir_p(download_dir)
|
72
|
+
end
|
73
|
+
agent.pluggable_parser.default = Mechanize::Download
|
74
|
+
puts "Downloading #{link.href}"
|
75
|
+
agent.get(link.href).save(File.join(download_dir, "cdk-#{provider}.box"))
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
task :get_cdk => :init
|
@@ -11,11 +11,6 @@ module VagrantPlugins
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def call(env)
|
14
|
-
# Vbguest plugin (if present) is called next. Therefore registration
|
15
|
-
# needs to be done first. This does not work with the default
|
16
|
-
# 'action_register' hook.
|
17
|
-
@app.call(env) unless Plugin.vbguest_plugin?
|
18
|
-
|
19
14
|
# Configuration from Vagrantfile
|
20
15
|
config = env[:machine].config.registration
|
21
16
|
machine = env[:machine]
|
@@ -42,7 +37,8 @@ module VagrantPlugins
|
|
42
37
|
|
43
38
|
@logger.debug('Registration is skipped due to the configuration') if config.skip
|
44
39
|
|
45
|
-
|
40
|
+
# Call next middleware in chain
|
41
|
+
@app.call(env)
|
46
42
|
end
|
47
43
|
|
48
44
|
private
|
@@ -15,20 +15,34 @@ module VagrantPlugins
|
|
15
15
|
class Plugin < Vagrant.plugin('2')
|
16
16
|
class << self
|
17
17
|
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
18
|
+
# vagrant-vbguest plugin updates GuestAdditions for VirtualBox
|
19
|
+
# and therefore needs to be run after the box got registered.
|
20
|
+
# See https://github.com/projectatomic/adb-vagrant-registration/issues/69
|
21
|
+
#
|
22
|
+
# vagrant-vbguest hooks before VagrantPlugins::ProviderVirtualBox::Action::CheckGuestAdditions
|
23
|
+
# (see https://github.com/mitchellh/vagrant/blob/master/plugins/providers/virtualbox/action.rb#L81)
|
24
|
+
# For registration to occur in time, it has to happen before that. Using WaitForCommunicator
|
25
|
+
# to be sure - https://github.com/dotless-de/vagrant-vbguest/blob/master/lib/vagrant-vbguest.rb#L53
|
26
|
+
#
|
27
|
+
# For vagrant-libvirt WaitTillUp is used
|
23
28
|
def register(hook)
|
24
29
|
setup_logging
|
25
30
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
registered = false
|
32
|
+
if virtual_box?
|
33
|
+
hook.after(VagrantPlugins::ProviderVirtualBox::Action::WaitForCommunicator,
|
34
|
+
VagrantPlugins::Registration::Action.action_register)
|
35
|
+
registered = true
|
36
|
+
end
|
37
|
+
if libvirt?
|
38
|
+
hook.after(VagrantPlugins::ProviderLibvirt::Action::WaitTillUp,
|
39
|
+
VagrantPlugins::Registration::Action.action_register)
|
40
|
+
registered = true
|
41
|
+
end
|
42
|
+
# Best guess for the other providers
|
43
|
+
unless registered
|
44
|
+
hook.after(Vagrant::Action::Builtin::WaitForCommunicator,
|
45
|
+
VagrantPlugins::Registration::Action.action_register)
|
32
46
|
end
|
33
47
|
end
|
34
48
|
|
@@ -87,12 +101,14 @@ module VagrantPlugins
|
|
87
101
|
end
|
88
102
|
end
|
89
103
|
|
90
|
-
# Determines if
|
91
|
-
def self.
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
104
|
+
# Determines if VirtualBox is provider
|
105
|
+
def self.virtual_box?
|
106
|
+
defined?(VagrantPlugins::ProviderVirtualBox::Provider)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Determines if LibVirt is provider
|
110
|
+
def self.libvirt?
|
111
|
+
defined?(VagrantPlugins::ProviderLibvirt::Provider)
|
96
112
|
end
|
97
113
|
end
|
98
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-registration
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Langdon White
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-06-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: yard
|