vagrant-service-manager 1.0.2 → 1.1.0.beta.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 931ed28213feec845263c099a965a747c85891ae
4
- data.tar.gz: bf8447ff4ce1f42b9a0b460db37bff7d561cc468
3
+ metadata.gz: 4d72420be6d3f4e17f9e649cfe9236ac0b8709ef
4
+ data.tar.gz: 7f65631baa320c7602742c9fac835183bbe64810
5
5
  SHA512:
6
- metadata.gz: 072cfd5bf2882444c43eaa9bc869954117d141228d6997d049e618a5aab38640b8322bba26771a68641167399fc9897bb1c2a6559041c36f04bb7da3567885f8
7
- data.tar.gz: 23c23b006585fc65760762f49823474bebc637419a2b4aecfdec17cb8db4eb81703749b59aa7e6c3c60e54d0ffcb2ad8567e6dd1df4023f193c1a7f37f6e2d61
6
+ metadata.gz: b7edeefe39c4841c208b050c3d775302bfe803b03567037466eba8cc9969db1540719f495c5b24e0116e1c19abd5189999ab2937d805ed076b5a404fd1631e0b
7
+ data.tar.gz: c90cf6b537f209728e1cae6e3a08aaf6c1eb884449064f0e018debacb816e878a698aa9d47998431bb18bb8a38e87588752b569d2b62c95ade5ac69ee4c9b38a
@@ -0,0 +1,12 @@
1
+ # config/cucumber.yml
2
+ ##YAML Template
3
+ ---
4
+ default: --profile html
5
+
6
+ pretty: --format pretty -b
7
+ html: --format progress --format html --out=build/features_report.html -b
8
+
9
+ help: --tags @help --profile html
10
+ box: --tags @box --profile html
11
+ env: --tags @env --profile html
12
+ openshift: --tags @openshift --profile html
data/.gitignore CHANGED
@@ -1,4 +1,17 @@
1
+ # Ruby, Bundler
1
2
  Gemfile.lock
2
- .vagrant
3
3
  .bundle
4
+ .ruby-version
5
+ .ruby-gemset
6
+
7
+ # Vagrant
8
+ .vagrant
9
+
10
+ # Idea
11
+ .idea
12
+ *.iml
13
+
14
+ # Build and tmp directories
15
+ tmp
16
+ build
4
17
  pkg
data/CHANGELOG.md CHANGED
@@ -1,11 +1,20 @@
1
1
  # Changelog
2
2
 
3
3
  ## Unreleased
4
+ - Updated README to make Installation Instructions clearer @bexelbie
5
+ - Fix #195 Adding Cucumber and Aruba based acceptance tests @hferentschik
6
+ - CHANGELOG fix and README update for OS support for tests @budhrg
7
+ - Fix #188: Name of k8s service not consistent @budhrg
8
+ - Fix #225: service-manager env throws NameError @budhrg
9
+ - Fix #168: Extend --debug flag to show plugin activity @budhrg
10
+ - Don't set private network for unsupported box @budhrg
11
+ - Convert CONTRIBUTING and README docs to AsciiDoc @bexelbie
12
+ - Fix #172: Implement "start/enable" service command @budhrg
4
13
 
5
14
  ## v1.0.2 May 09, 2016
6
15
  - Add --script-readable to env and env docker @bexelbie
7
16
  - Fix #178: Add status command and separate status from env @bexelbie
8
- - Fix#173: Shows if kubernetes services is running in the box @navidshaikh
17
+ - Fix #173: Shows if kubernetes services is running in the box @navidshaikh
9
18
  - Fix #169: Adds command for displaying box routable IP address @navidshaikh
10
19
  - Fix message for box command on default help @budhrg
11
20
  - Fix #184: Make env headers comments for vagrant service-manager env @bexelbie
data/CONTRIBUTING.adoc ADDED
@@ -0,0 +1,110 @@
1
+ [[contributing-to-vagrant-service-manager]]
2
+ == Contributing to vagrant-service-manager
3
+
4
+ * link:#submitting-issues[Submitting issues]
5
+ * link:#submitting-pull-requests[Submitting pull requests]
6
+ ** link:#get-started[Get Started]
7
+ ** link:#create-a-topic-branch[Create a topic branch]
8
+ ** link:#code[Code]
9
+ ** link:#commit[Commit]
10
+ ** link:#submit[Submit]
11
+ * link:#merging-pull-requests[Merging pull requests]
12
+
13
+ The following is a set of guidelines for contributing to the
14
+ vagrant-service-manager plugin.
15
+
16
+ These are guidelines, please use your best judgment and feel free to
17
+ propose changes to this document.
18
+
19
+ === Submitting issues
20
+
21
+ You can submit issues with respect to the vagrant-service-manager plugin
22
+ https://github.com/projectatomic/vagrant-service-manager/issues/new[here].
23
+ Make sure you include all the relevant details pertaining the issue.
24
+
25
+ Before submitting a new issue, it is suggested to check the
26
+ https://github.com/projectatomic/vagrant-service-manager/issues[existing
27
+ issues] in order to avoid duplication. The vagrant-service-manager
28
+ plugin works closely with the
29
+ https://github.com/projectatomic/adb-atomic-developer-bundle/issues[Atomic
30
+ Developer Bundle] and the
31
+ https://github.com/projectatomic/adb-utils/issues[adb-utils] RPM. You
32
+ may wish to review the issues in both these repositories as well.
33
+
34
+ === Submitting pull requests
35
+
36
+ ==== Get Started
37
+
38
+ If you are just getting started with Git and GitHub there are a few
39
+ prerequisite steps.
40
+
41
+ * Make sure you have a https://github.com/signup/free[GitHub account].
42
+ * https://help.github.com/articles/fork-a-repo/[Fork] the
43
+ vagrant-service-manager repository. As discussed in the linked page,
44
+ this also includes:
45
+ ** https://help.github.com/articles/set-up-git[Setting up] your local
46
+ git install.
47
+ ** Cloning your fork.
48
+
49
+ ==== Create a topic branch
50
+
51
+ Create a
52
+ http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches[topic
53
+ branch] on which you will work. The convention is to name the branch
54
+ using the issue key you are working on. If there is not already an issue
55
+ covering the work you want to do, create one (see
56
+ link:#submitting-issues[submitting issues]). Assuming for example you
57
+ will be working from the master branch and working on the GitHub issue
58
+ 123 : `git checkout -b issue-123 master`
59
+
60
+ ==== Code
61
+
62
+ Do your work! Refer to the link:README.md#development[development]
63
+ section in the link:README.md[README] to get started.
64
+
65
+ ==== Commit
66
+
67
+ * Make commits of logical units.
68
+ * Be sure to use the GitHub issue key in the commit message, eg
69
+ `Issue #123 ...`.
70
+ * Make sure you have added the necessary tests for your changes.
71
+ * Make sure you have added appropriate documentation updates.
72
+ * Run _all_ the tests to assure nothing else was accidentally broken.
73
+
74
+ ==== Submit
75
+
76
+ * Push your changes to the topic branch in your fork of the repository.
77
+ * Initiate a https://help.github.com/articles/using-pull-requests/[pull
78
+ request].
79
+ * All changes need at least 2 ACKs from maintainers before they will be
80
+ merged. If the author of the PR is a maintainer, their submission is
81
+ considered to be the first ACK. Therefore, pull requests from
82
+ maintainers only need one additional ACK. By "2 ACKs" we mean that two
83
+ maintainers must acknowledge that the change is a good one.
84
+
85
+ === Merging pull requests
86
+
87
+ A project maintainer will merge the pull request. He should avoid using
88
+ the GitHub UI for the merge and prefer merges over the the command line
89
+ to avoid merge commits and to keep a linear commit history. Here is an
90
+ example work-flow assuming issue 123 from above:
91
+
92
+ -------------------------------------------------------------------------
93
+ # Create a local branch for the pull request
94
+ $ git checkout -b issue-123 master
95
+
96
+ # Pull the changes
97
+ $ git pull <remote of the pull request> issue-123
98
+
99
+ # If necessary rebase changes on master to ensure we have a fast forward.
100
+ $ git rebase -i master
101
+
102
+ # If required, update CHANGELOG.md in the unreleased section. Commit!
103
+
104
+ # Merge changes into master
105
+ $ git checkout master
106
+ $ git merge issue-123
107
+
108
+ # Push to origin
109
+ $ git push origin master
110
+ -------------------------------------------------------------------------
data/Gemfile CHANGED
@@ -3,11 +3,16 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  group :development do
6
- gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
7
- # added as the vagrant component wouldn't build without it
8
- gem 'json'
6
+ gem 'vagrant', git: 'https://github.com/mitchellh/vagrant.git'
9
7
  gem 'rake'
10
- gem 'bundler', '~> 1.6'
8
+ gem 'vagrant-libvirt'
9
+ gem 'fog-libvirt', '0.0.3' # https://github.com/pradels/vagrant-libvirt/issues/568
10
+ gem 'mechanize'
11
+ gem 'json'
12
+ gem 'cucumber', '~> 2.1'
13
+ gem 'aruba', '~> 0.13'
14
+ gem 'komenda', '~> 0.1.6'
15
+ gem 'launchy'
11
16
  end
12
17
 
13
18
  group :plugins do
data/README.adoc ADDED
@@ -0,0 +1,269 @@
1
+ [[vagrant-service-manager]]
2
+ == vagrant-service-manager
3
+
4
+ * link:#objective[Objective]
5
+ * link:#installation[Installation]
6
+ ** link:#installing-from-a-rubygems[Installing from a RubyGems]
7
+ ** link:#installing-from-rpm[Installing from RPM]
8
+ * link:#usage[Usage]
9
+ ** link:#example-execution-of-the-plugin[Example execution of the plugin]
10
+ ** link:#available-commands[Available commands]
11
+ ** link:#exit-codes[Exit codes]
12
+ ** link:#ip-address-detection[IP address detection]
13
+ * link:#development[Development]
14
+ ** link:#setup[Setup]
15
+ ** link:#acceptance-tests[Acceptance tests]
16
+ * link:#getting-involved[Getting involved]
17
+
18
+ == Objective The vagrant-service-manager plugin is designed to enable
19
+ easier access to the features and services provided by the
20
+ https://github.com/projectatomic/adb-atomic-developer-bundle[Atomic
21
+ Developer Bundle (ADB)]. It provides setup information, including
22
+ environment variables and certificates, required to access services
23
+ provided by the ADB and is a must have for most ADB users.
24
+
25
+ This plugin makes it easier to use the ADB with host-based tools such as
26
+ Eclipse and the docker and kubernetes CLI commands. Details on how to
27
+ use ADB with this plugin can be found in the
28
+ https://github.com/projectatomic/adb-atomic-developer-bundle/blob/master/docs/using.rst[ADB
29
+ Documentation].
30
+
31
+ == Installation
32
+
33
+ The plugin is distributed as both a Ruby Gem and via RPM using the
34
+ Fedora COPR system.
35
+
36
+ === Installing from a RubyGems
37
+
38
+ The vagrant-service-manager
39
+ https://rubygems.org/gems/vagrant-service-manager[gem] is available on
40
+ https://rubygems.org[RubyGems] and can be installed via the standard
41
+ Vagrant plugin installation method:
42
+
43
+ ------------------------------------------------
44
+ $ vagrant plugin install vagrant-service-manager
45
+ ------------------------------------------------
46
+
47
+ === Installing from RPM
48
+
49
+ The
50
+ https://copr.fedorainfracloud.org/coprs/nshaikh/vagrant-service-manager/builds/[Copr
51
+ build] is accessible via the standard COPR access/install method:
52
+
53
+ ----------------------------------------------------------------------------------
54
+ $ dnf copr enable nshaikh/vagrant-service-manager
55
+ $ dnf --enablerepo=nshaikh-vagrant-service-manager install vagrant-service-manager
56
+ ----------------------------------------------------------------------------------
57
+
58
+ == Usage
59
+
60
+ === Example execution of the plugin
61
+
62
+ 1. Install vagrant-service-manager plugin:
63
+ +
64
+ ----------------------------------------------
65
+ vagrant plugin install vagrant-service-manager
66
+ ----------------------------------------------
67
+ 2. Download the relevant Vagrantfile for your
68
+ https://github.com/projectatomic/adb-atomic-developer-bundle[ADB]
69
+ vagrant box, from the
70
+ https://github.com/projectatomic/adb-atomic-developer-bundle/tree/master/components/centos[repository].
71
+ For further details on the usage of custom Vagrantfiles designed for
72
+ specific use cases, refer to the
73
+ https://github.com/projectatomic/adb-atomic-developer-bundle/blob/master/docs/using.rst[Usage
74
+ Documentation].
75
+ 3. Start the ADB vagrant box using `vagrant up`. For detailed
76
+ instructions consult the
77
+ https://github.com/projectatomic/adb-atomic-developer-bundle/blob/master/docs/installing.rst[Installation
78
+ Documentation].
79
+ +
80
+ *Note:* When the vagrant-service-manager plugin is loaded and a box is
81
+ started using the VirtualBox provider, the user needs to add a routable
82
+ non NAT network interface declaration in the Vagrantfile. If the user
83
+ does not provide a network declaration in the Vagrantfile, a private
84
+ DHCP network is added by default and a warning is displayed.
85
+
86
+ 1. Run the plugin to get environment variables and certificates:
87
+ +
88
+ ----------------------------------------------------------------------------
89
+ $ vagrant service-manager env docker
90
+ # Set the following environment variables to enable access to the
91
+ # docker daemon running inside of the vagrant virtual machine:
92
+ export DOCKER_HOST=tcp://172.28.128.4:2376
93
+ export DOCKER_CERT_PATH=/foo/bar/.vagrant/machines/default/virtualbox/docker
94
+ export DOCKER_TLS_VERIFY=1
95
+ export DOCKER_API_VERSION=1.21
96
+ # run following command to configure your shell:
97
+ # eval "$(vagrant service-manager env docker)"
98
+ ----------------------------------------------------------------------------
99
+ +
100
+ *Note:* The required TLS certificates are copied to the host machine at
101
+ the time of `vagrant up` itself. Every run of
102
+ `vagrant service-manager env docker` checks for the validity of the
103
+ certificates on the host machine by matching the certificates inside the
104
+ box. If the certificates on the host machine are invalid, this command
105
+ will also re-download the certificates onto the host machine.
106
+
107
+ === Available commands
108
+
109
+ The following section lists the available commands for the plugin and
110
+ their explanation:
111
+
112
+ 1. `vagrant service-manager env [service] [--script-readable]`
113
+ +
114
+ Displays connection information for all active services in the box in a
115
+ manner that can be evaluated in a shell. If a `service` is specified,
116
+ only the information for that service is displayed. When
117
+ `--script-readable` is specified the output is in `key=value` format.
118
+ The supported services are: Docker; OpenShift.
119
+
120
+ 1. `vagrant service-manager box [command]`
121
+ +
122
+ Displays box related information like release version, IP etc.
123
+
124
+ 1. `vagrant service-manager box version [--script-readable]`
125
+ +
126
+ Displays the version and release information of the running VM. When
127
+ `--script-readable` is specified the output is in `key=value` format.
128
+
129
+ 1. `vagrant service-manager box ip`
130
+ +
131
+ Displays the routable IP address of the running VM.
132
+
133
+ 1. `vagrant service-manager status [service]`
134
+ +
135
+ Lists services and their running state. If a `service` is specified only
136
+ the status of that service is displayed. If no service is provided then
137
+ only supported orchestrators are reported.
138
+
139
+ 1. `vagrant service-manager [operation] [service]`
140
+ +
141
+ where `operation` could be:
142
+
143
+ * `restart` : Restart the given service in the box.
144
+ * `start` : Start the given service in the box.
145
+ * `stop` : Stop the given service in the box.
146
+ +
147
+ and `service` could be `docker`, `openshift`, `kubernetes` etc.
148
+
149
+ 1. `vagrant service-manager [command] [--help | -h]`
150
+ +
151
+ Displays the possible commands, options and other relevant information
152
+ for the vagrant-service-manager plugin. If a `command` is specified,
153
+ only the help relevant to that command is displayed.
154
+
155
+ [[debug-flag]]
156
+ ==== Debug Flag
157
+
158
+ Append `--debug` flag to enable debug mode.
159
+
160
+ _Note_: Debug output from `vagrant-service-manager` is prepended with
161
+ the following string:
162
+
163
+ `DEBUG command: [ service-manager: <command name / log message> ]`
164
+
165
+ === Exit codes
166
+
167
+ The following table lists the plugin's exit codes and their meaning:
168
+
169
+ [cols=",",options="header",]
170
+ |=======================================================================
171
+ |Exit Code Number |Meaning
172
+ |`0` |No error
173
+
174
+ |`1` |Catch all for general errors / Wrong sub-command or option given
175
+
176
+ |`3` |Vagrant box is not running and should be running for this command
177
+ to succeed
178
+
179
+ |`126` |A service inside the box is not running / Command invoked cannot
180
+ execute
181
+ |=======================================================================
182
+
183
+ === IP address detection
184
+
185
+ There is no standardized way of detecting Vagrant box IP addresses. This
186
+ code uses the last IPv4 address available from the set of configured
187
+ addresses that are _up_. i.e. if eth0, eth1, and eth2 are all up and
188
+ have IPv4 addresses, the address on eth2 is used.
189
+
190
+ == Development
191
+
192
+ === Setup
193
+
194
+ After cloning the repository, install the http://bundler.io/[Bundler]
195
+ gem:
196
+
197
+ ---------------------
198
+ $ gem install bundler
199
+ ---------------------
200
+
201
+ Then setup your project dependencies:
202
+
203
+ ----------------
204
+ $ bundle install
205
+ ----------------
206
+
207
+ The build is driven via rake. All build related tash should be executed
208
+ in the Bundler environment, e.g. `bundle exec rake clean`. You can get a
209
+ list of available Rake tasks via:
210
+
211
+ ---------------------
212
+ $ bundle exec rake -T
213
+ ---------------------
214
+
215
+ === Acceptance tests
216
+
217
+ The source also contains a set of https://cucumber.io/[Cucumber]
218
+ acceptance tests. They can be run via:
219
+
220
+ ---------------------------
221
+ $ bundle exec rake features
222
+ ---------------------------
223
+
224
+ _NOTE_: Only Linux OS is supported at present.
225
+
226
+ The tests assume that the ADB and CDK box files are available under
227
+ _build/boxes/adb-<provider>.box_ resp
228
+ _build/boxes/cdk-<provider>.box_. You can either copy the box files
229
+ manually or use the _get_adb_ resp. _get_cdk_ Rake tasks.
230
+
231
+ Per default only the scenarios for ADB in combination with the
232
+ VirtualBox provider are run. However, you can also run against CDK
233
+ and/or use the Libvirt provider using the environment variables _BOX_
234
+ resp _PROVIDER_:
235
+
236
+ -----------------------------------------------------
237
+ # Run tests against CDK using Libvirt
238
+ $ bundle exec rake features BOX=cdk PROVIDER=libvirt
239
+
240
+ # Run against ADB and CDK (boxes are comma seperated)
241
+ $ bundle exec rake features BOX=cdk,adb
242
+ -----------------------------------------------------
243
+
244
+ You can also run a single feature specifying the explicit feature file
245
+ to use:
246
+
247
+ -----------------------------------------------------------------------
248
+ $ bundle exec rake features FEATURE=features/<feature-filename>.feature
249
+ -----------------------------------------------------------------------
250
+
251
+ After test execution the Cucumber test reports can be found under
252
+ _build/features_report.html_. They can also be opened via
253
+
254
+ ---------------------------------------
255
+ $ bundle exec rake features:open_report
256
+ ---------------------------------------
257
+
258
+ == Getting involved
259
+
260
+ We welcome your input. You can submit issues or pull requests with
261
+ respect to the vagrant-service-manager plugin. Refer to the
262
+ https://github.com/projectatomic/vagrant-service-manager/blob/master/CONTRIBUTING.md[contributing
263
+ guidelines] for detailed information on how to contribute to this
264
+ plugin.
265
+
266
+ You can contact us on:
267
+
268
+ * IRC: #atomic and #nulecule on freenode
269
+ * Mailing List: container-tools@redhat.com
data/Rakefile CHANGED
@@ -1 +1,112 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/clean'
3
+ require 'cucumber/rake/task'
4
+ require 'mechanize'
5
+ require 'fileutils'
6
+ require 'yaml'
7
+ require 'launchy'
8
+
9
+ CDK_DOWNLOAD_URL='https://access.redhat.com/downloads/content/293/ver=2/rhel---7/2.0.0/x86_64/product-software'
10
+ CDK_BOX_BASE_NAME='rhel-cdk-kubernetes-7.2-23.x86_64.vagrant'
11
+
12
+ CDK_DOWNLOAD_URL_NIGHTLY='http://cdk-builds.usersys.redhat.com/builds/nightly/latest-build'
13
+
14
+ ADB_DOWNLOAD_URL='http://cloud.centos.org/centos/7/atomic/images'
15
+ ADB_BOX_BASE_NAME='AtomicDeveloperBundle-2.1.0-CentOS7'
16
+
17
+ CLOBBER.include('pkg')
18
+ CLEAN.include('build')
19
+
20
+ task :init do
21
+ FileUtils.mkdir_p 'build'
22
+ puts ENV['FOO']
23
+ end
24
+
25
+ # Cucumber acceptance test tasks
26
+ Cucumber::Rake::Task.new(:features)
27
+ task :features => :init
28
+
29
+ namespace :features do
30
+ desc 'Opens the HTML Cucumber test report'
31
+ task :open_report do
32
+ Launchy.open('./build/features_report.html')
33
+ end
34
+ end
35
+
36
+ desc 'Download latest publicly released / latest nightly build of CDK Vagrant box using the specified provider (default \'virtualbox\', \'false\')'
37
+ task :get_cdk, [:provider, :nightly] do |t, args|
38
+ provider = args[:provider].nil? ? 'virtualbox' : args[:provider]
39
+ use_nightly = args[:nightly].nil? ? false : !!(args[:nightly] =~ /true/)
40
+ agent = Mechanize.new
41
+ agent.follow_meta_refresh = true
42
+
43
+ if use_nightly
44
+ agent.ignore_bad_chunking = true
45
+ agent.get(CDK_DOWNLOAD_URL_NIGHTLY) do |page|
46
+ page.links.each do |link|
47
+ if link.href.match(/.*#{Regexp.quote(provider)}.box$/)
48
+ download_dir = File.join(File.dirname(__FILE__), 'build', 'boxes')
49
+ unless File.directory?(download_dir)
50
+ FileUtils.mkdir_p(download_dir)
51
+ end
52
+ agent.pluggable_parser.default = Mechanize::Download
53
+ puts "Downloading #{CDK_DOWNLOAD_URL_NIGHTLY}/#{link.href}"
54
+ agent.get(link.href).save(File.join(download_dir, "cdk-#{provider}.box"))
55
+ end
56
+ end
57
+ end
58
+ else
59
+ agent.get(CDK_DOWNLOAD_URL) do |page|
60
+
61
+ # Submit first form which is the redirect to login page form
62
+ login_page = page.forms.first.submit
63
+
64
+ # Submit the login form
65
+ after_login = login_page.form_with(:name => 'login_form') do |f|
66
+ username_field = f.field_with(:id => 'username')
67
+ username_field.value = 'service-manager@mailinator.com'
68
+ password_field = f.field_with(:id => 'password')
69
+ password_field.value = 'service-manager'
70
+ end.click_button
71
+
72
+ # There is one more redirect after successful login
73
+ download_page = after_login.forms.first.submit
74
+
75
+ download_page.links.each do |link|
76
+ if link.href =~ /#{Regexp.quote(CDK_BOX_BASE_NAME)}-#{Regexp.quote(provider)}.box/
77
+ download_dir = File.join(File.dirname(__FILE__), 'build', 'boxes')
78
+ unless File.directory?(download_dir)
79
+ FileUtils.mkdir_p(download_dir)
80
+ end
81
+ agent.pluggable_parser.default = Mechanize::Download
82
+ puts "Downloading #{link.href}"
83
+ agent.get(link.href).save(File.join(download_dir, "cdk-#{provider}.box"))
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ task :get_cdk => :init
90
+
91
+ desc 'Download ADB Vagrant box using the specified provider (default \'virtualbox\')'
92
+ task :get_adb, [:provider] do |t, args|
93
+ provider = args[:provider].nil? ? 'virtualbox' : args[:provider]
94
+ agent = Mechanize.new
95
+ agent.follow_meta_refresh = true
96
+ agent.get(ADB_DOWNLOAD_URL) do |page|
97
+ page.links.each do |link|
98
+ if match = link.href.match(/#{Regexp.quote(ADB_BOX_BASE_NAME)}-(.*).box/)
99
+ if match.captures[0].downcase == provider
100
+ download_dir = File.join(File.dirname(__FILE__), 'build', 'boxes')
101
+ unless File.directory?(download_dir)
102
+ FileUtils.mkdir_p(download_dir)
103
+ end
104
+ agent.pluggable_parser.default = Mechanize::Download
105
+ puts "Downloading #{ADB_DOWNLOAD_URL}/#{link.href}"
106
+ agent.get(link.href).save(File.join(download_dir, "adb-#{provider}.box"))
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ task :get_adb => :init
@@ -0,0 +1,45 @@
1
+ Feature: Command output from box command
2
+ service-manager should return the correct output from box commands
3
+
4
+ @box
5
+ Scenario Outline: Boot and execute box commands
6
+ Given box is <box>
7
+ And provider is <provider>
8
+ And a file named "Vagrantfile" with:
9
+ """
10
+ require 'vagrant-libvirt'
11
+
12
+ Vagrant.configure('2') do |config|
13
+ config.vm.box = '<box>'
14
+ config.vm.box_url = 'file://../boxes/<box>-<provider>.box'
15
+ config.vm.network :private_network, ip: '<ip>'
16
+ config.vm.synced_folder '.', '/vagrant', disabled: true
17
+ config.servicemanager.services = 'docker'
18
+ end
19
+ """
20
+
21
+ When I successfully run `bundle exec vagrant up --provider <provider>`
22
+ And I run `bundle exec vagrant service-manager box`
23
+ Then the exit status should be 1
24
+ And stdout from "bundle exec vagrant service-manager box" should contain:
25
+ """
26
+ Usage: vagrant service-manager box <sub-command> [options]
27
+
28
+ Sub-Command:
29
+ version display version and release information about the running VM
30
+ ip display routable IP address of the running VM
31
+
32
+ Options:
33
+ --script-readable display information in a script readable format
34
+ -h, --help print this help
35
+ """
36
+
37
+ When I successfully run `bundle exec vagrant service-manager box ip`
38
+ Then stdout from "bundle exec vagrant service-manager box ip" should contain "<ip>"
39
+
40
+ Examples:
41
+ | box | provider | ip |
42
+ | cdk | virtualbox | 10.10.10.42 |
43
+ | adb | virtualbox | 10.10.10.42 |
44
+ | cdk | libvirt | 10.10.10.42 |
45
+ | adb | libvirt | 10.10.10.42 |
@@ -0,0 +1,30 @@
1
+ Feature: Command output from --debug flag
2
+ service-manager should print the debug logs along with native logs
3
+
4
+ @status
5
+ Scenario Outline: Boot and execute simple env command with debug logs
6
+ Given box is <box>
7
+ And provider is <provider>
8
+ And a file named "Vagrantfile" with:
9
+ """
10
+ require 'vagrant-libvirt'
11
+
12
+ Vagrant.configure('2') do |config|
13
+ config.vm.box = '<box>'
14
+ config.vm.box_url = 'file://../boxes/<box>-<provider>.box'
15
+ config.vm.network :private_network, ip: '<ip>'
16
+ config.vm.synced_folder '.', '/vagrant', disabled: true
17
+ config.servicemanager.services = 'docker'
18
+ end
19
+ """
20
+
21
+ When I successfully run `bundle exec vagrant up --provider <provider>`
22
+ And I successfully run `bundle exec vagrant service-manager env --debug`
23
+ Then stdout from "bundle exec vagrant service-manager env --debug" should match /DEBUG command: [ service-manager: env ]/
24
+
25
+ Examples:
26
+ | box | provider | ip |
27
+ | cdk | virtualbox | 10.10.10.42 |
28
+ | adb | virtualbox | 10.10.10.42 |
29
+ | cdk | libvirt | 10.10.10.42 |
30
+ | adb | libvirt | 10.10.10.42 |