vagrant-service-manager 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/ansible/roles/centos/tasks/main.yml +3 -2
- data/.ci/jenkins-execute-script.py +6 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +13 -0
- data/.rubocop_todo.yml +55 -0
- data/CHANGELOG.md +22 -1
- data/CONTRIBUTING.adoc +6 -6
- data/Gemfile +12 -4
- data/README.adoc +104 -70
- data/Rakefile +235 -66
- data/features/box-command.feature +26 -1
- data/features/env-command.feature +20 -3
- data/features/help-command.feature +4 -1
- data/features/install-cli.feature +58 -0
- data/features/openshift.feature +2 -1
- data/features/service-operation.feature +76 -3
- data/features/support/env.rb +26 -10
- data/lib/vagrant-service-manager.rb +7 -2
- data/lib/vagrant-service-manager/action/setup_network.rb +0 -2
- data/lib/vagrant-service-manager/archive_handlers/tar_handler.rb +26 -0
- data/lib/vagrant-service-manager/archive_handlers/zip_handler.rb +25 -0
- data/lib/vagrant-service-manager/binary_handlers/adb_binary_handler.rb +55 -0
- data/lib/vagrant-service-manager/binary_handlers/adb_docker_binary_handler.rb +38 -0
- data/lib/vagrant-service-manager/binary_handlers/adb_openshift_binary_handler.rb +49 -0
- data/lib/vagrant-service-manager/binary_handlers/binary_handler.rb +119 -0
- data/lib/vagrant-service-manager/binary_handlers/cdk_binary_handler.rb +33 -0
- data/lib/vagrant-service-manager/binary_handlers/cdk_docker_binary_handler.rb +9 -0
- data/lib/vagrant-service-manager/binary_handlers/cdk_openshift_binary_handler.rb +9 -0
- data/lib/vagrant-service-manager/command.rb +90 -15
- data/lib/vagrant-service-manager/config.rb +8 -8
- data/lib/vagrant-service-manager/installer.rb +49 -0
- data/lib/vagrant-service-manager/plugin.rb +2 -2
- data/lib/vagrant-service-manager/plugin_logger.rb +2 -2
- data/lib/vagrant-service-manager/plugin_util.rb +29 -6
- data/lib/vagrant-service-manager/service.rb +4 -3
- data/lib/vagrant-service-manager/service_base.rb +11 -0
- data/lib/vagrant-service-manager/services/docker.rb +29 -29
- data/lib/vagrant-service-manager/services/kubernetes.rb +7 -7
- data/lib/vagrant-service-manager/services/open_shift.rb +42 -41
- data/lib/vagrant-service-manager/version.rb +1 -1
- data/locales/en.yml +42 -4
- data/plugins/guests/redhat/cap/machine_ip.rb +2 -1
- data/plugins/guests/redhat/plugin.rb +1 -1
- data/plugins/hosts/darwin/cap/os_arch.rb +11 -0
- data/plugins/hosts/darwin/plugin.rb +13 -0
- data/plugins/hosts/linux/cap/os_arch.rb +11 -0
- data/plugins/hosts/linux/plugin.rb +13 -0
- data/plugins/hosts/windows/cap/os_arch.rb +18 -0
- data/plugins/hosts/windows/plugin.rb +13 -0
- data/test/test_data/docker-1.10.0.tar.gz +0 -0
- data/test/test_data/docker-1.11.0.tgz +0 -0
- data/test/test_data/docker-1.9.1.zip +0 -0
- data/test/test_data/openshift-origin-client-tools-v1.2.0-2e62fab-linux-64bit.tar.gz +0 -0
- data/test/test_data/openshift-origin-client-tools-v1.2.0-2e62fab-linux-64bit.zip +0 -0
- data/test/test_data/openshift-origin-client-tools-v1.2.0-2e62fab-mac.zip +0 -0
- data/test/test_helper.rb +121 -0
- data/test/vagrant-service-manager/archive_handler_test.rb +49 -0
- data/test/vagrant-service-manager/binary_handlers/adb_docker_binary_handler_test.rb +111 -0
- data/test/vagrant-service-manager/binary_handlers/adb_openshift_binary_handler_test.rb +107 -0
- data/test/vagrant-service-manager/installer_test.rb +96 -0
- data/vagrant-service-manager.gemspec +4 -3
- metadata +43 -16
- data/TODO +0 -24
- data/Vagrantfile +0 -29
- data/lib/vagrant-service-manager/os.rb +0 -22
- data/vagrant-service-manager.spec +0 -215
@@ -0,0 +1,58 @@
|
|
1
|
+
Feature: Command behavior of client side tools installation
|
2
|
+
service-manager should correctly verify behavior of install-cli command
|
3
|
+
|
4
|
+
@install_cli
|
5
|
+
Scenario Outline: Boot and install client side tools
|
6
|
+
Given box is <box>
|
7
|
+
And provider is <provider>
|
8
|
+
And a file named "Vagrantfile" with:
|
9
|
+
"""
|
10
|
+
begin
|
11
|
+
require 'vagrant-libvirt'
|
12
|
+
rescue LoadError
|
13
|
+
# NOOP
|
14
|
+
end
|
15
|
+
|
16
|
+
Vagrant.configure('2') do |config|
|
17
|
+
config.vm.box = '<box>'
|
18
|
+
config.vm.box_url = 'file://../../.boxes/<box>-<provider>.box'
|
19
|
+
config.vm.network :private_network, ip: '<ip>'
|
20
|
+
config.vm.synced_folder '.', '/vagrant', disabled: true
|
21
|
+
config.servicemanager.services = 'docker'
|
22
|
+
end
|
23
|
+
"""
|
24
|
+
|
25
|
+
When I successfully run `bundle exec vagrant up --provider <provider>`
|
26
|
+
And I successfully run `bundle exec vagrant service-manager install-cli --help`
|
27
|
+
Then the exit status should be 0
|
28
|
+
And stdout from "bundle exec vagrant service-manager install-cli --help" should contain:
|
29
|
+
"""
|
30
|
+
Install the client binary for the specified service
|
31
|
+
|
32
|
+
Usage: vagrant service-manager install-cli [service] [options]
|
33
|
+
|
34
|
+
Service:
|
35
|
+
A supported service. For example: docker, kubernetes or openshift.
|
36
|
+
|
37
|
+
Options:
|
38
|
+
-h, --help print this help
|
39
|
+
|
40
|
+
Example:
|
41
|
+
vagrant service-manager install-cli docker
|
42
|
+
"""
|
43
|
+
|
44
|
+
When I run `bundle exec vagrant service-manager install-cli`
|
45
|
+
Then the exit status should be 126
|
46
|
+
And stdout from "bundle exec vagrant service-manager install-cli" should match /Service name missing/
|
47
|
+
|
48
|
+
When I run `bundle exec vagrant service-manager install-cli docker --cli-version 111.222.333`
|
49
|
+
Then the exit status should be 126
|
50
|
+
|
51
|
+
When I run `bundle exec vagrant service-manager install-cli docker`
|
52
|
+
Then the exit status should be 0
|
53
|
+
And the binary "docker" should be installed
|
54
|
+
|
55
|
+
Examples:
|
56
|
+
| box | provider | ip |
|
57
|
+
| adb | virtualbox | 10.10.10.42 |
|
58
|
+
| adb | libvirt | 10.10.10.42 |
|
data/features/openshift.feature
CHANGED
@@ -15,7 +15,7 @@ Feature: Command output from various OpenShift related commands
|
|
15
15
|
|
16
16
|
Vagrant.configure('2') do |config|
|
17
17
|
config.vm.box = '<box>'
|
18
|
-
config.vm.box_url = 'file
|
18
|
+
config.vm.box_url = 'file://../../.boxes/<box>-<provider>.box'
|
19
19
|
config.vm.network :private_network, ip: '<ip>'
|
20
20
|
config.vm.synced_folder '.', '/vagrant', disabled: true
|
21
21
|
config.servicemanager.services = 'docker'
|
@@ -65,6 +65,7 @@ Feature: Command output from various OpenShift related commands
|
|
65
65
|
export OPENSHIFT_URL=https://<ip>:8443
|
66
66
|
export OPENSHIFT_WEB_CONSOLE=https://<ip>:8443/console
|
67
67
|
export DOCKER_REGISTRY=hub.openshift.rhel-cdk.<ip>.xip.io
|
68
|
+
|
68
69
|
# run following command to configure your shell:
|
69
70
|
# eval "$(vagrant service-manager env)"
|
70
71
|
"""
|
@@ -15,7 +15,7 @@ Feature: Command output from service operations like stop/start/restart
|
|
15
15
|
|
16
16
|
Vagrant.configure('2') do |config|
|
17
17
|
config.vm.box = '<box>'
|
18
|
-
config.vm.box_url = 'file
|
18
|
+
config.vm.box_url = 'file://../../.boxes/<box>-<provider>.box'
|
19
19
|
config.vm.network :private_network, ip: '<ip>'
|
20
20
|
config.vm.synced_folder '.', '/vagrant', disabled: true
|
21
21
|
config.servicemanager.services = 'docker'
|
@@ -23,7 +23,80 @@ Feature: Command output from service operations like stop/start/restart
|
|
23
23
|
"""
|
24
24
|
|
25
25
|
When I successfully run `bundle exec vagrant up --provider <provider>`
|
26
|
-
And I successfully run `bundle exec vagrant service-manager status`
|
26
|
+
And I successfully run `bundle exec vagrant service-manager status --help`
|
27
|
+
Then the exit status should be 0
|
28
|
+
And stdout from "bundle exec vagrant service-manager status --help" should contain:
|
29
|
+
"""
|
30
|
+
Usage: vagrant service-manager status [service] [options]
|
31
|
+
|
32
|
+
Options:
|
33
|
+
-h, --help print this help
|
34
|
+
|
35
|
+
If a service is provided, only that service is reported.
|
36
|
+
If no service is provided only supported orchestrators are reported.
|
37
|
+
|
38
|
+
Example:
|
39
|
+
vagrant service-manager status openshift
|
40
|
+
"""
|
41
|
+
|
42
|
+
And I successfully run `bundle exec vagrant service-manager stop --help`
|
43
|
+
Then the exit status should be 0
|
44
|
+
And stdout from "bundle exec vagrant service-manager stop --help" should contain:
|
45
|
+
"""
|
46
|
+
stops the service
|
47
|
+
|
48
|
+
Usage: vagrant service-manager stop <service> [options]
|
49
|
+
|
50
|
+
Service:
|
51
|
+
A service provided by sccli. For example:
|
52
|
+
docker, kubernetes, openshift etc
|
53
|
+
|
54
|
+
Options:
|
55
|
+
-h, --help print this help
|
56
|
+
|
57
|
+
Examples:
|
58
|
+
vagrant service-manager stop docker
|
59
|
+
"""
|
60
|
+
|
61
|
+
And I successfully run `bundle exec vagrant service-manager start --help`
|
62
|
+
Then the exit status should be 0
|
63
|
+
And stdout from "bundle exec vagrant service-manager start --help" should contain:
|
64
|
+
"""
|
65
|
+
starts the service
|
66
|
+
|
67
|
+
Usage: vagrant service-manager start <service> [options]
|
68
|
+
|
69
|
+
Service:
|
70
|
+
A service provided by sccli. For example:
|
71
|
+
docker, kubernetes, openshift etc
|
72
|
+
|
73
|
+
Options:
|
74
|
+
-h, --help print this help
|
75
|
+
|
76
|
+
Examples:
|
77
|
+
vagrant service-manager start docker
|
78
|
+
"""
|
79
|
+
|
80
|
+
And I successfully run `bundle exec vagrant service-manager restart --help`
|
81
|
+
Then the exit status should be 0
|
82
|
+
And stdout from "bundle exec vagrant service-manager restart --help" should contain:
|
83
|
+
"""
|
84
|
+
restarts the service
|
85
|
+
|
86
|
+
Usage: vagrant service-manager restart <service> [options]
|
87
|
+
|
88
|
+
Service:
|
89
|
+
A service provided by sccli. For example:
|
90
|
+
docker, kubernetes, openshift etc
|
91
|
+
|
92
|
+
Options:
|
93
|
+
-h, --help print this help
|
94
|
+
|
95
|
+
Examples:
|
96
|
+
vagrant service-manager restart docker
|
97
|
+
"""
|
98
|
+
|
99
|
+
When I successfully run `bundle exec vagrant service-manager status`
|
27
100
|
Then stdout from "bundle exec vagrant service-manager status" should contain "docker - running"
|
28
101
|
Then stdout from "bundle exec vagrant service-manager status" should contain "openshift - stopped"
|
29
102
|
Then stdout from "bundle exec vagrant service-manager status" should contain "kubernetes - stopped"
|
@@ -35,7 +108,7 @@ Feature: Command output from service operations like stop/start/restart
|
|
35
108
|
Then the exit status should be 126
|
36
109
|
And stderr from "bundle exec vagrant service-manager status abcd" should contain:
|
37
110
|
"""
|
38
|
-
|
111
|
+
Unknown service 'abcd'.
|
39
112
|
Supported services are docker, openshift, kubernetes etc.
|
40
113
|
"""
|
41
114
|
|
data/features/support/env.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'aruba/cucumber'
|
2
2
|
require 'komenda'
|
3
|
+
require 'find'
|
3
4
|
|
4
5
|
###############################################################################
|
5
6
|
# Aruba config and Cucumber hooks
|
@@ -19,12 +20,15 @@ end
|
|
19
20
|
After do |_scenario|
|
20
21
|
if File.exist?(File.join(aruba.config.working_directory, 'Vagrantfile'))
|
21
22
|
Komenda.run('bundle exec vagrant destroy -f', cwd: aruba.config.working_directory, fail_on_fail: true)
|
22
|
-
if ENV.
|
23
|
-
# if we have more than one provider we need to wait between scenarios in order to allow for
|
24
|
-
# of virtualization framework
|
23
|
+
if ENV.key?('CUCUMBER_RUN_PROVIDER')
|
24
|
+
# if we have more than one provider we need to wait between scenarios in order to allow for
|
25
|
+
# proper cleanup/shutdown of virtualization framework
|
25
26
|
sleep 10
|
26
27
|
end
|
27
28
|
end
|
29
|
+
|
30
|
+
# Remove the created Vagrant home dir
|
31
|
+
FileUtils.rmtree(ENV['VAGRANT_HOME']) if File.directory? ENV['VAGRANT_HOME']
|
28
32
|
end
|
29
33
|
|
30
34
|
###############################################################################
|
@@ -59,19 +63,21 @@ end
|
|
59
63
|
# Some shared step definitions
|
60
64
|
##############################################################################
|
61
65
|
Given /provider is (.*)/ do |current_provider|
|
62
|
-
requested_provider =
|
66
|
+
requested_provider = ENV.key?('PROVIDER') ? ENV['PROVIDER'] : 'virtualbox'
|
63
67
|
|
64
68
|
unless requested_provider.include?(current_provider)
|
65
|
-
#puts "Skipping scenario '#{@scenario_name}' for provider '#{current_provider}', since this
|
69
|
+
# puts "Skipping scenario '#{@scenario_name}' for provider '#{current_provider}', since this
|
70
|
+
# provider is not explicitly enabled via environment variable 'PROVIDER'"
|
66
71
|
skip_this_scenario
|
67
72
|
end
|
68
73
|
end
|
69
74
|
|
70
75
|
Given /box is (.*)/ do |current_box|
|
71
|
-
requested_box =
|
76
|
+
requested_box = ENV.key?('BOX') ? ENV['BOX'] : 'adb'
|
72
77
|
|
73
78
|
unless requested_box.include?(current_box)
|
74
|
-
#puts "Skipping scenario '#{@scenario_name}' for box '#{current_box}', since this box is not explicitly
|
79
|
+
# puts "Skipping scenario '#{@scenario_name}' for box '#{current_box}', since this box is not explicitly
|
80
|
+
# enabled via environment variable 'BOX'"
|
75
81
|
skip_this_scenario
|
76
82
|
end
|
77
83
|
end
|
@@ -84,7 +90,7 @@ Then(/^stdout from "([^"]*)" should be script readable$/) do |cmd|
|
|
84
90
|
output_is_script_readable(aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd)).send(:stdout))
|
85
91
|
end
|
86
92
|
|
87
|
-
Then(
|
93
|
+
Then(%r{^stdout from "([^"]*)" should match /(.*)/$}) do |cmd, regexp|
|
88
94
|
aruba.command_monitor.find(Aruba.platform.detect_ruby(cmd)).send(:stdout) =~ /#{regexp}/
|
89
95
|
end
|
90
96
|
|
@@ -95,7 +101,7 @@ end
|
|
95
101
|
Then(/^the service "([^"]*)" should be ([^"]*)$/) do |service, operation|
|
96
102
|
run("vagrant ssh -c \"sudo systemctl status #{service}\"")
|
97
103
|
|
98
|
-
if
|
104
|
+
if %w(running restarted).include? operation
|
99
105
|
exit_code = 0
|
100
106
|
regexp = /Active: active \(running\)/
|
101
107
|
elsif operation == 'stopped'
|
@@ -126,7 +132,7 @@ When(/^the "([^"]*)" service is \*not\* running$/) do |service|
|
|
126
132
|
run("vagrant ssh -c \"sudo systemctl stop #{service}\"")
|
127
133
|
|
128
134
|
expect(last_command_started).to have_exit_status(0)
|
129
|
-
step
|
135
|
+
step 'the "docker" service is not running'
|
130
136
|
end
|
131
137
|
|
132
138
|
# Note: Only for services supported through systemctl. Not for 'kubernetes'.
|
@@ -137,3 +143,13 @@ Then(/^have a new pid for "([^"]*)" service$/) do |service|
|
|
137
143
|
stdout = aruba.command_monitor.find(Aruba.platform.detect_ruby(last_command_started)).send(:stdout)
|
138
144
|
expect(@service_current_process_id).not_to eq(extract_process_id(stdout))
|
139
145
|
end
|
146
|
+
|
147
|
+
Then(/^the binary "([^"]*)" should be installed$/) do |binary|
|
148
|
+
binaries = []
|
149
|
+
Find.find("#{ENV['VAGRANT_HOME']}/data/service-manager/bin") do |path|
|
150
|
+
binaries << path if path =~ %r{.*\/#{Regexp.quote(binary)}$} && File.file?(path)
|
151
|
+
end
|
152
|
+
|
153
|
+
expect(binaries.size).to eq(1)
|
154
|
+
expect(File.executable?(binaries[0])).to eq(true)
|
155
|
+
end
|
@@ -6,10 +6,11 @@ end
|
|
6
6
|
|
7
7
|
require 'vagrant-service-manager/plugin'
|
8
8
|
require 'vagrant-service-manager/command'
|
9
|
-
require 'vagrant-service-manager/os'
|
10
9
|
|
11
10
|
module VagrantPlugins
|
12
11
|
module ServiceManager
|
12
|
+
SUPPORTED_HOSTS = %w(linux darwin windows).freeze
|
13
|
+
|
13
14
|
# Returns the path to the source of this plugin
|
14
15
|
def self.source_root
|
15
16
|
@source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
@@ -17,7 +18,11 @@ module VagrantPlugins
|
|
17
18
|
|
18
19
|
# Temporally load the extra capabilities files for Red Hat
|
19
20
|
load(File.join(source_root, 'plugins/guests/redhat/plugin.rb'))
|
21
|
+
# Load the host capabilities files
|
22
|
+
SUPPORTED_HOSTS.each do |host|
|
23
|
+
load(File.join(source_root, "plugins/hosts/#{host}/plugin.rb"))
|
24
|
+
end
|
20
25
|
# Default I18n to load the en locale
|
21
|
-
I18n.load_path << File.expand_path(
|
26
|
+
I18n.load_path << File.expand_path('locales/en.yml', source_root)
|
22
27
|
end
|
23
28
|
end
|
@@ -2,7 +2,6 @@ module VagrantPlugins
|
|
2
2
|
module ServiceManager
|
3
3
|
module Action
|
4
4
|
class SetupNetwork
|
5
|
-
|
6
5
|
def initialize(app, env)
|
7
6
|
@app = app
|
8
7
|
@machine = env[:machine]
|
@@ -31,7 +30,6 @@ Adding a private network using DHCP
|
|
31
30
|
MSG
|
32
31
|
@machine.config.vm.network :private_network, type: :dhcp
|
33
32
|
end
|
34
|
-
|
35
33
|
end
|
36
34
|
end
|
37
35
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'rubygems/package'
|
2
|
+
require 'zlib'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module ServiceManager
|
6
|
+
class TarHandler
|
7
|
+
def initialize(source, dest_binary_path, file_regex)
|
8
|
+
@source = source
|
9
|
+
@dest_binary_path = dest_binary_path
|
10
|
+
@file_regex = file_regex
|
11
|
+
end
|
12
|
+
|
13
|
+
def unpack
|
14
|
+
Gem::Package::TarReader.new(Zlib::GzipReader.open(@source)) do |tar|
|
15
|
+
tar.each do |entry|
|
16
|
+
next unless entry.file? && entry.full_name =~ @file_regex
|
17
|
+
|
18
|
+
dest_directory = File.dirname(@dest_binary_path)
|
19
|
+
FileUtils.mkdir_p(dest_directory) unless File.directory?(dest_directory)
|
20
|
+
File.open(@dest_binary_path, 'wb') { |f| f.print(entry.read) }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'zip'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module ServiceManager
|
5
|
+
class ZipHandler
|
6
|
+
def initialize(source, dest_binary_path, file_regex)
|
7
|
+
@source = source
|
8
|
+
@dest_binary_path = dest_binary_path
|
9
|
+
@file_regex = file_regex
|
10
|
+
end
|
11
|
+
|
12
|
+
def unpack
|
13
|
+
Zip::File.open(@source) do |zipfile|
|
14
|
+
zipfile.each do |entry|
|
15
|
+
next unless entry.ftype == :file && entry.name =~ @file_regex
|
16
|
+
|
17
|
+
dest_directory = File.dirname(@dest_binary_path)
|
18
|
+
FileUtils.mkdir_p(dest_directory) unless File.directory?(dest_directory)
|
19
|
+
zipfile.extract(entry, @dest_binary_path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module ServiceManager
|
3
|
+
class ADBBinaryHandler < BinaryHandler
|
4
|
+
def initialize(machine, env, options)
|
5
|
+
super(machine, env, options)
|
6
|
+
end
|
7
|
+
|
8
|
+
def build_archive_path
|
9
|
+
@archive_file_path = "#{@temp_bin_dir}/#{File.basename(@url)}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def ensure_binary_and_temp_directories
|
13
|
+
FileUtils.mkdir_p(bin_dir) unless File.directory?(bin_dir)
|
14
|
+
FileUtils.mkdir_p(@temp_bin_dir) unless File.directory?(@temp_bin_dir)
|
15
|
+
end
|
16
|
+
|
17
|
+
def download_archive
|
18
|
+
return @skip_download = true if File.exist?(@archive_file_path)
|
19
|
+
Vagrant::Util::Downloader.new(@url, @archive_file_path).download!
|
20
|
+
rescue Vagrant::Errors::DownloaderError => e
|
21
|
+
@ui.error e.message
|
22
|
+
exit 126
|
23
|
+
end
|
24
|
+
|
25
|
+
def prepare_binary
|
26
|
+
tmp_binary_file_path = @archive_file_path
|
27
|
+
|
28
|
+
# If binary is in archive format, extract it
|
29
|
+
if binary_archived?
|
30
|
+
tmp_binary_file_path = "#{archive_dir_name}/#{binary_name}"
|
31
|
+
archive_handler_class.new(@archive_file_path, tmp_binary_file_path, file_regex).unpack
|
32
|
+
end
|
33
|
+
|
34
|
+
FileUtils.cp(tmp_binary_file_path, @path)
|
35
|
+
File.chmod(0o755, @path)
|
36
|
+
rescue StandardError => e
|
37
|
+
@ui.error e.message
|
38
|
+
exit 126
|
39
|
+
end
|
40
|
+
|
41
|
+
def print_message
|
42
|
+
binary_path = PluginUtil.format_path(@path)
|
43
|
+
@ui.info I18n.t(LABEL,
|
44
|
+
path: binary_path, dir: File.dirname(binary_path), service: @type,
|
45
|
+
binary: binary_name, when: (@binary_exists ? 'already' : 'now'))
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def binary_archived?
|
51
|
+
BINARY_ARCHIVE_FORMATS.include? File.extname(@archive_file_path)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module ServiceManager
|
3
|
+
class ADBDockerBinaryHandler < ADBBinaryHandler
|
4
|
+
# Refer https://docs.docker.com/v1.10/engine/installation/binaries
|
5
|
+
DOCKER_BINARY_BASE_URL = 'https://get.docker.com/builds'.freeze
|
6
|
+
|
7
|
+
def initialize(machine, env, options)
|
8
|
+
super(machine, env, options)
|
9
|
+
end
|
10
|
+
|
11
|
+
def build_download_url
|
12
|
+
arch = @machine.env.host.capability(:os_arch)
|
13
|
+
@url = "#{DOCKER_BINARY_BASE_URL}/#{os_type}/#{arch}/docker-#{@version}#{archive_ext}"
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def os_type
|
19
|
+
if Vagrant::Util::Platform.windows?
|
20
|
+
'Windows'
|
21
|
+
elsif Vagrant::Util::Platform.linux?
|
22
|
+
'Linux'
|
23
|
+
elsif Vagrant::Util::Platform.darwin?
|
24
|
+
'Darwin'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def archive_ext
|
29
|
+
# https://github.com/docker/docker/blob/v1.11.0-rc1/CHANGELOG.md#1110-2016-04-12
|
30
|
+
if @version == 'latest' || Gem::Version.new(@version) > Gem::Version.new('1.10.3')
|
31
|
+
Vagrant::Util::Platform.windows? ? '.zip' : '.tgz'
|
32
|
+
else
|
33
|
+
binary_ext
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|