vagrant-unbundled 2.2.10.0 → 2.2.14.0
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/CHANGELOG.md +60 -0
- data/Gemfile +1 -1
- data/README.md +4 -44
- data/RELEASE.md +1 -1
- data/contrib/zsh/_vagrant +3 -1
- data/contrib/zsh/generate_zsh_completion.rb +2 -3
- data/lib/vagrant.rb +0 -4
- data/lib/vagrant/action/builder.rb +6 -15
- data/lib/vagrant/action/builtin/box_add.rb +5 -1
- data/lib/vagrant/action/builtin/cloud_init_setup.rb +10 -15
- data/lib/vagrant/action/builtin/synced_folders.rb +8 -2
- data/lib/vagrant/action/runner.rb +1 -1
- data/lib/vagrant/box.rb +8 -2
- data/lib/vagrant/box_collection.rb +1 -1
- data/lib/vagrant/bundler.rb +43 -16
- data/lib/vagrant/machine.rb +8 -5
- data/lib/vagrant/machine_index.rb +1 -0
- data/lib/vagrant/plugin/v2/command.rb +2 -1
- data/lib/vagrant/shared_helpers.rb +8 -0
- data/lib/vagrant/util/downloader.rb +3 -2
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/mime.rb +92 -0
- data/lib/vagrant/util/platform.rb +2 -1
- data/lib/vagrant/util/template_renderer.rb +2 -2
- data/lib/vagrant/util/uploader.rb +7 -4
- data/plugins/commands/cap/command.rb +5 -1
- data/plugins/commands/cloud/auth/login.rb +20 -23
- data/plugins/commands/cloud/auth/logout.rb +2 -10
- data/plugins/commands/cloud/auth/middleware/add_downloader_authentication.rb +57 -0
- data/plugins/commands/cloud/auth/whoami.rb +18 -20
- data/plugins/commands/cloud/box/create.rb +33 -29
- data/plugins/commands/cloud/box/delete.rb +30 -24
- data/plugins/commands/cloud/box/show.rb +41 -31
- data/plugins/commands/cloud/box/update.rb +34 -26
- data/plugins/commands/cloud/client/client.rb +50 -81
- data/plugins/commands/cloud/list.rb +3 -4
- data/plugins/commands/cloud/locales/en.yml +9 -9
- data/plugins/commands/cloud/plugin.rb +10 -0
- data/plugins/commands/cloud/provider/create.rb +38 -28
- data/plugins/commands/cloud/provider/delete.rb +39 -29
- data/plugins/commands/cloud/provider/update.rb +37 -28
- data/plugins/commands/cloud/provider/upload.rb +44 -34
- data/plugins/commands/cloud/publish.rb +185 -108
- data/plugins/commands/cloud/search.rb +34 -21
- data/plugins/commands/cloud/util.rb +266 -162
- data/plugins/commands/cloud/version/create.rb +33 -28
- data/plugins/commands/cloud/version/delete.rb +35 -28
- data/plugins/commands/cloud/version/release.rb +35 -29
- data/plugins/commands/cloud/version/revoke.rb +36 -29
- data/plugins/commands/cloud/version/update.rb +29 -25
- data/plugins/commands/login/plugin.rb +0 -13
- data/plugins/guests/arch/cap/smb.rb +1 -1
- data/plugins/guests/darwin/cap/darwin_version.rb +40 -0
- data/plugins/guests/darwin/cap/mount_smb_shared_folder.rb +1 -1
- data/plugins/guests/darwin/cap/mount_vmware_shared_folder.rb +12 -2
- data/plugins/guests/darwin/plugin.rb +10 -0
- data/plugins/guests/debian/cap/change_host_name.rb +8 -7
- data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +16 -41
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +6 -0
- data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +18 -5
- data/plugins/guests/linux/cap/reboot.rb +10 -5
- data/plugins/guests/redhat/cap/change_host_name.rb +6 -2
- data/plugins/guests/suse/cap/change_host_name.rb +32 -11
- data/plugins/guests/windows/cap/reboot.rb +8 -4
- data/plugins/kernel_v2/config/cloud_init.rb +7 -0
- data/plugins/kernel_v2/config/disk.rb +1 -1
- data/plugins/kernel_v2/config/vm.rb +5 -4
- data/plugins/providers/hyperv/action.rb +1 -1
- data/plugins/providers/virtualbox/cap/mount_options.rb +1 -1
- data/plugins/providers/virtualbox/model/storage_controller_array.rb +4 -6
- data/plugins/providers/virtualbox/provider.rb +2 -1
- data/plugins/synced_folders/smb/cap/mount_options.rb +21 -1
- data/plugins/synced_folders/smb/plugin.rb +10 -0
- data/scripts/website_push_www.sh +1 -1
- data/vagrant.gemspec +5 -6
- data/version.txt +1 -1
- metadata +1202 -1595
- data/plugins/commands/login/client.rb +0 -253
- data/plugins/commands/login/command.rb +0 -137
- data/plugins/commands/login/errors.rb +0 -24
- data/plugins/commands/login/locales/en.yml +0 -49
- data/scripts/website_push_docs.sh +0 -40
@@ -4,6 +4,8 @@ module VagrantPlugins
|
|
4
4
|
module CloudCommand
|
5
5
|
module Command
|
6
6
|
class List < Vagrant.plugin("2", :command)
|
7
|
+
include Util
|
8
|
+
|
7
9
|
def execute
|
8
10
|
options = {}
|
9
11
|
|
@@ -27,9 +29,6 @@ module VagrantPlugins
|
|
27
29
|
o.on("-s", "--sort-by", "Column to sort list (created, downloads, updated)") do |s|
|
28
30
|
options[:check] = s
|
29
31
|
end
|
30
|
-
o.on("-u", "--username USERNAME_OR_EMAIL", String, "Vagrant Cloud username or email address") do |t|
|
31
|
-
options[:username] = u
|
32
|
-
end
|
33
32
|
end
|
34
33
|
|
35
34
|
# Parse the options
|
@@ -40,7 +39,7 @@ module VagrantPlugins
|
|
40
39
|
help: opts.help.chomp
|
41
40
|
end
|
42
41
|
|
43
|
-
@client =
|
42
|
+
@client = client_login(@env)
|
44
43
|
|
45
44
|
# TODO: This endpoint is not implemented yet
|
46
45
|
|
@@ -13,14 +13,8 @@ en:
|
|
13
13
|
|
14
14
|
Press ctrl-c to cancel...
|
15
15
|
publish:
|
16
|
-
|
17
|
-
|
18
|
-
box_create:
|
19
|
-
Creating a box entry...
|
20
|
-
version_create:
|
21
|
-
Creating a version entry...
|
22
|
-
provider_create:
|
23
|
-
Creating a provider entry...
|
16
|
+
box_save:
|
17
|
+
Saving box information...
|
24
18
|
upload_provider:
|
25
19
|
Uploading provider with file %{file}
|
26
20
|
release:
|
@@ -45,7 +39,7 @@ en:
|
|
45
39
|
version_desc: |-
|
46
40
|
Version Description: %{version_description}
|
47
41
|
continue: |-
|
48
|
-
Do you wish to continue? [y/N]
|
42
|
+
Do you wish to continue? [y/N]
|
49
43
|
box:
|
50
44
|
show_filter_empty: |-
|
51
45
|
No version matched %{version} for %{org}/%{box_name}
|
@@ -57,6 +51,8 @@ en:
|
|
57
51
|
This will completely remove %{box} from Vagrant Cloud. This cannot be undone.
|
58
52
|
update_success: |-
|
59
53
|
Updated box %{org}/%{box_name}
|
54
|
+
not_found: |-
|
55
|
+
Failed to locate requested box: %{org}/%{box_name}
|
60
56
|
search:
|
61
57
|
no_results: |-
|
62
58
|
No results found for `%{query}`
|
@@ -77,6 +73,8 @@ en:
|
|
77
73
|
Deleted provider %{provider} on %{org}/%{box_name} for version %{version}
|
78
74
|
update_success: |-
|
79
75
|
Updated provider %{provider} on %{org}/%{box_name} for version %{version}
|
76
|
+
not_found: |-
|
77
|
+
Failed to locate %{provider_name} provider for %{org}/%{box_name} on version %{version}
|
80
78
|
version:
|
81
79
|
create_success: |-
|
82
80
|
Created version %{version} on %{org}/%{box_name} for version %{version}
|
@@ -94,6 +92,8 @@ en:
|
|
94
92
|
This will release version %{version} from %{box} to Vagrant Cloud and be available to download.
|
95
93
|
delete_warn: |-
|
96
94
|
This will completely remove version %{version} from %{box} from Vagrant Cloud. This cannot be undone.
|
95
|
+
not_found: |-
|
96
|
+
Failed to locate version %{version} for %{org}/%{box_name}
|
97
97
|
errors:
|
98
98
|
search:
|
99
99
|
fail: |-
|
@@ -12,6 +12,11 @@ module VagrantPlugins
|
|
12
12
|
DESC
|
13
13
|
|
14
14
|
command(:cloud) do
|
15
|
+
# Set this to match Vagant logging level so we get
|
16
|
+
# desired request/response information within the
|
17
|
+
# logger output
|
18
|
+
ENV["VAGRANT_CLOUD_LOG"] = Vagrant.log_level
|
19
|
+
|
15
20
|
require_relative "root"
|
16
21
|
init!
|
17
22
|
Command::Root
|
@@ -22,6 +27,11 @@ module VagrantPlugins
|
|
22
27
|
hook.prepend(AddAuthentication)
|
23
28
|
end
|
24
29
|
|
30
|
+
action_hook(:cloud_authenticated_boxes, :authenticate_box_downloader) do |hook|
|
31
|
+
require_relative "auth/middleware/add_downloader_authentication"
|
32
|
+
hook.prepend(AddDownloaderAuthentication)
|
33
|
+
end
|
34
|
+
|
25
35
|
protected
|
26
36
|
|
27
37
|
def self.init!
|
@@ -5,6 +5,8 @@ module VagrantPlugins
|
|
5
5
|
module ProviderCommand
|
6
6
|
module Command
|
7
7
|
class Create < Vagrant.plugin("2", :command)
|
8
|
+
include Util
|
9
|
+
|
8
10
|
def execute
|
9
11
|
options = {}
|
10
12
|
|
@@ -16,9 +18,6 @@ module VagrantPlugins
|
|
16
18
|
o.separator "Options:"
|
17
19
|
o.separator ""
|
18
20
|
|
19
|
-
o.on("-u", "--username USERNAME_OR_EMAIL", String, "Vagrant Cloud username or email address") do |u|
|
20
|
-
options[:username] = u
|
21
|
-
end
|
22
21
|
o.on("-c", "--checksum CHECKSUM_VALUE", String, "Checksum of the box for this provider. --checksum-type option is required.") do |c|
|
23
22
|
options[:checksum] = c
|
24
23
|
end
|
@@ -30,48 +29,59 @@ module VagrantPlugins
|
|
30
29
|
# Parse the options
|
31
30
|
argv = parse_options(opts)
|
32
31
|
return if !argv
|
33
|
-
if argv.
|
32
|
+
if argv.count < 3 || argv.count > 4
|
34
33
|
raise Vagrant::Errors::CLIInvalidUsage,
|
35
34
|
help: opts.help.chomp
|
36
35
|
end
|
37
36
|
|
38
|
-
@client =
|
37
|
+
@client = client_login(@env)
|
39
38
|
|
40
|
-
|
41
|
-
org = box[0]
|
42
|
-
box_name = box[1]
|
39
|
+
org, box_name = argv.first.split('/', 2)
|
43
40
|
provider_name = argv[1]
|
44
41
|
version = argv[2]
|
45
42
|
url = argv[3]
|
46
43
|
|
47
|
-
|
44
|
+
create_provider(org, box_name, version, provider_name, url, @client.token, options)
|
48
45
|
end
|
49
46
|
|
50
|
-
|
47
|
+
# Create a provider for the box version
|
48
|
+
#
|
49
|
+
# @param [String] org Organization name
|
50
|
+
# @param [String] box Box name
|
51
|
+
# @param [String] version Box version
|
52
|
+
# @param [String] provider Provider name
|
53
|
+
# @param [String] url Provider asset URL
|
54
|
+
# @param [String] access_token User Vagrant Cloud access token
|
55
|
+
# @param [Hash] options
|
56
|
+
# @option options [String] :checksum Checksum of the box asset
|
57
|
+
# @option options [String] :checksum_type Type of the checksum
|
58
|
+
# @return [Integer]
|
59
|
+
def create_provider(org, box, version, provider, url, access_token, options={})
|
51
60
|
if !url
|
52
61
|
@env.ui.warn(I18n.t("cloud_command.upload.no_url"))
|
53
62
|
end
|
63
|
+
account = VagrantCloud::Account.new(
|
64
|
+
custom_server: api_server_url,
|
65
|
+
access_token: access_token
|
66
|
+
)
|
67
|
+
with_version(account: account, org: org, box: box, version: version) do |version|
|
68
|
+
provider = version.add_provider(provider)
|
69
|
+
provider.checksum = options[:checksum] if options.key?(:checksum)
|
70
|
+
provider.checksum_type = options[:checksum_type] if options.key?(:checksum_type)
|
71
|
+
provider.url = url if url
|
54
72
|
|
55
|
-
|
56
|
-
|
57
|
-
server_url = VagrantPlugins::CloudCommand::Util.api_server_url
|
58
|
-
account = VagrantPlugins::CloudCommand::Util.account(org, access_token, server_url)
|
59
|
-
box = VagrantCloud::Box.new(account, box_name, nil, nil, nil, access_token)
|
60
|
-
cloud_version = VagrantCloud::Version.new(box, version, nil, nil, access_token)
|
61
|
-
provider = VagrantCloud::Provider.new(cloud_version, provider_name, nil, url, org, box_name,
|
62
|
-
access_token, nil, options[:checksum], options[:checksum_type])
|
73
|
+
provider.save
|
63
74
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
VagrantPlugins::CloudCommand::Util.format_box_results(success, @env)
|
69
|
-
return 0
|
70
|
-
rescue VagrantCloud::ClientError => e
|
71
|
-
@env.ui.error(I18n.t("cloud_command.errors.provider.create_fail", provider: provider_name, org: org, box_name: box_name, version: version))
|
72
|
-
@env.ui.error(e)
|
73
|
-
return 1
|
75
|
+
@env.ui.success(I18n.t("cloud_command.provider.create_success",
|
76
|
+
provider: provider.name, org: org, box_name: box, version: version.version))
|
77
|
+
format_box_results(provider, @env)
|
78
|
+
0
|
74
79
|
end
|
80
|
+
rescue VagrantCloud::Error => e
|
81
|
+
@env.ui.error(I18n.t("cloud_command.errors.provider.create_fail",
|
82
|
+
provider: provider, org: org, box_name: box, version: version))
|
83
|
+
@env.ui.error(e.message)
|
84
|
+
1
|
75
85
|
end
|
76
86
|
end
|
77
87
|
end
|
@@ -5,6 +5,8 @@ module VagrantPlugins
|
|
5
5
|
module ProviderCommand
|
6
6
|
module Command
|
7
7
|
class Delete < Vagrant.plugin("2", :command)
|
8
|
+
include Util
|
9
|
+
|
8
10
|
def execute
|
9
11
|
options = {}
|
10
12
|
|
@@ -15,53 +17,61 @@ module VagrantPlugins
|
|
15
17
|
o.separator ""
|
16
18
|
o.separator "Options:"
|
17
19
|
o.separator ""
|
18
|
-
|
19
|
-
|
20
|
-
options[:username] = u
|
20
|
+
o.on("-f", "--[no-]force", "Force deletion of box version provider without confirmation") do |f|
|
21
|
+
options[:force] = f
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
25
|
# Parse the options
|
25
26
|
argv = parse_options(opts)
|
26
27
|
return if !argv
|
27
|
-
if argv.
|
28
|
+
if argv.count != 3
|
28
29
|
raise Vagrant::Errors::CLIInvalidUsage,
|
29
30
|
help: opts.help.chomp
|
30
31
|
end
|
31
32
|
|
32
|
-
|
33
|
-
org = box[0]
|
34
|
-
box_name = box[1]
|
33
|
+
org, box_name = argv.first.split('/', 2)
|
35
34
|
provider_name = argv[1]
|
36
35
|
version = argv[2]
|
37
36
|
|
38
|
-
@env.ui.warn(I18n.t("cloud_command.provider.delete_warn",
|
39
|
-
|
40
|
-
return 1 if cont.strip.downcase != "y"
|
41
|
-
|
42
|
-
@client = VagrantPlugins::CloudCommand::Util.client_login(@env, options[:username])
|
37
|
+
@env.ui.warn(I18n.t("cloud_command.provider.delete_warn",
|
38
|
+
provider: provider_name, version:version, box: argv.first))
|
43
39
|
|
44
|
-
|
45
|
-
|
40
|
+
if !options[:force]
|
41
|
+
cont = @env.ui.ask(I18n.t("cloud_command.continue"))
|
42
|
+
return 1 if cont.strip.downcase != "y"
|
43
|
+
end
|
46
44
|
|
47
|
-
|
48
|
-
org = options[:username] if options[:username]
|
45
|
+
@client = client_login(@env)
|
49
46
|
|
50
|
-
|
51
|
-
|
52
|
-
box = VagrantCloud::Box.new(account, box_name, nil, nil, nil, access_token)
|
53
|
-
cloud_version = VagrantCloud::Version.new(box, version, nil, nil, access_token)
|
54
|
-
provider = VagrantCloud::Provider.new(cloud_version, provider_name, nil, nil, nil, nil, access_token)
|
47
|
+
delete_provider(org, box_name, version, provider_name, @client.token, options)
|
48
|
+
end
|
55
49
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
50
|
+
# Delete a provider for the box version
|
51
|
+
#
|
52
|
+
# @param [String] org Organization name
|
53
|
+
# @param [String] box Box name
|
54
|
+
# @param [String] version Box version
|
55
|
+
# @param [String] provider Provider name
|
56
|
+
# @param [String] access_token User Vagrant Cloud access token
|
57
|
+
# @param [Hash] options Currently unused
|
58
|
+
# @return [Integer]
|
59
|
+
def delete_provider(org, box, version, provider, access_token, options={})
|
60
|
+
account = VagrantCloud::Account.new(
|
61
|
+
custom_server: api_server_url,
|
62
|
+
access_token: access_token
|
63
|
+
)
|
64
|
+
with_provider(account: account, org: org, box: box, version: version, provider: provider) do |p|
|
65
|
+
p.delete
|
66
|
+
@env.ui.error(I18n.t("cloud_command.provider.delete_success",
|
67
|
+
provider: provider, org: org, box_name: box, version: version))
|
68
|
+
0
|
64
69
|
end
|
70
|
+
rescue VagrantCloud::Error => e
|
71
|
+
@env.ui.error(I18n.t("cloud_command.errors.provider.delete_fail",
|
72
|
+
provider: provider, org: org, box_name: box, version: version))
|
73
|
+
@env.ui.error(e)
|
74
|
+
1
|
65
75
|
end
|
66
76
|
end
|
67
77
|
end
|
@@ -5,20 +5,19 @@ module VagrantPlugins
|
|
5
5
|
module ProviderCommand
|
6
6
|
module Command
|
7
7
|
class Update < Vagrant.plugin("2", :command)
|
8
|
+
include Util
|
9
|
+
|
8
10
|
def execute
|
9
11
|
options = {}
|
10
12
|
|
11
13
|
opts = OptionParser.new do |o|
|
12
|
-
o.banner = "Usage: vagrant cloud provider update [options] organization/box-name provider-name version url"
|
14
|
+
o.banner = "Usage: vagrant cloud provider update [options] organization/box-name provider-name version [url]"
|
13
15
|
o.separator ""
|
14
16
|
o.separator "Updates a provider entry on Vagrant Cloud"
|
15
17
|
o.separator ""
|
16
18
|
o.separator "Options:"
|
17
19
|
o.separator ""
|
18
20
|
|
19
|
-
o.on("-u", "--username USERNAME_OR_EMAIL", String, "Vagrant Cloud username or email address") do |u|
|
20
|
-
options[:username] = u
|
21
|
-
end
|
22
21
|
o.on("-c", "--checksum CHECKSUM_VALUE", String, "Checksum of the box for this provider. --checksum-type option is required.") do |c|
|
23
22
|
options[:checksum] = c
|
24
23
|
end
|
@@ -30,48 +29,58 @@ module VagrantPlugins
|
|
30
29
|
# Parse the options
|
31
30
|
argv = parse_options(opts)
|
32
31
|
return if !argv
|
33
|
-
if argv.
|
32
|
+
if argv.count < 3 || argv.count > 4
|
34
33
|
raise Vagrant::Errors::CLIInvalidUsage,
|
35
34
|
help: opts.help.chomp
|
36
35
|
end
|
37
36
|
|
38
|
-
@client =
|
37
|
+
@client = client_login(@env)
|
39
38
|
|
40
|
-
|
41
|
-
org = box[0]
|
42
|
-
box_name = box[1]
|
39
|
+
org, box_name = argv.first.split('/', 2)
|
43
40
|
provider_name = argv[1]
|
44
41
|
version = argv[2]
|
45
42
|
url = argv[3]
|
46
43
|
|
47
|
-
update_provider(org, box_name,
|
44
|
+
update_provider(org, box_name, version, provider_name, url, @client.token, options)
|
48
45
|
end
|
49
46
|
|
50
|
-
|
47
|
+
# Update a provider for the box version
|
48
|
+
#
|
49
|
+
# @param [String] org Organization name
|
50
|
+
# @param [String] box Box name
|
51
|
+
# @param [String] version Box version
|
52
|
+
# @param [String] provider Provider name
|
53
|
+
# @param [String] access_token User Vagrant Cloud access token
|
54
|
+
# @param [Hash] options
|
55
|
+
# @option options [String] :checksum Checksum of the box asset
|
56
|
+
# @option options [String] :checksum_type Type of the checksum
|
57
|
+
# @return [Integer]
|
58
|
+
def update_provider(org, box, version, provider, url, access_token, options)
|
51
59
|
if !url
|
52
60
|
@env.ui.warn(I18n.t("cloud_command.upload.no_url"))
|
53
61
|
end
|
62
|
+
account = VagrantCloud::Account.new(
|
63
|
+
custom_server: api_server_url,
|
64
|
+
access_token: access_token
|
65
|
+
)
|
54
66
|
|
55
|
-
org
|
67
|
+
with_provider(account: account, org: org, box: box, version: version, provider: provider) do |p|
|
68
|
+
p.checksum = options[:checksum] if options.key?(:checksum)
|
69
|
+
p.checksum_type = options[:checksum_type] if options.key?(:checksum_type)
|
70
|
+
p.url = url if !url.nil?
|
71
|
+
p.save
|
56
72
|
|
57
|
-
|
58
|
-
|
59
|
-
box = VagrantCloud::Box.new(account, box_name, nil, nil, nil, access_token)
|
60
|
-
cloud_version = VagrantCloud::Version.new(box, version, nil, nil, access_token)
|
61
|
-
provider = VagrantCloud::Provider.new(cloud_version, provider_name, nil, url, org, box_name,
|
62
|
-
access_token, nil, options[:checksum], options[:checksum_type])
|
73
|
+
@env.ui.success(I18n.t("cloud_command.provider.update_success",
|
74
|
+
provider: provider, org: org, box_name: box, version: version))
|
63
75
|
|
64
|
-
|
65
|
-
|
66
|
-
@env.ui.success(I18n.t("cloud_command.provider.update_success", provider:provider_name, org: org, box_name: box_name, version: version))
|
67
|
-
success = success.delete_if{|_, v|v.nil?}
|
68
|
-
VagrantPlugins::CloudCommand::Util.format_box_results(success, @env)
|
69
|
-
return 0
|
70
|
-
rescue VagrantCloud::ClientError => e
|
71
|
-
@env.ui.error(I18n.t("cloud_command.errors.provider.update_fail", provider:provider_name, org: org, box_name: box_name, version: version))
|
72
|
-
@env.ui.error(e)
|
73
|
-
return 1
|
76
|
+
format_box_results(p, @env)
|
77
|
+
0
|
74
78
|
end
|
79
|
+
rescue VagrantCloud::Error => e
|
80
|
+
@env.ui.error(I18n.t("cloud_command.errors.provider.update_fail",
|
81
|
+
provider: provider, org: org, box_name: box, version: version))
|
82
|
+
@env.ui.error(e.message)
|
83
|
+
1
|
75
84
|
end
|
76
85
|
end
|
77
86
|
end
|
@@ -6,8 +6,10 @@ module VagrantPlugins
|
|
6
6
|
module ProviderCommand
|
7
7
|
module Command
|
8
8
|
class Upload < Vagrant.plugin("2", :command)
|
9
|
+
include Util
|
10
|
+
|
9
11
|
def execute
|
10
|
-
options = {}
|
12
|
+
options = {direct: true}
|
11
13
|
|
12
14
|
opts = OptionParser.new do |o|
|
13
15
|
o.banner = "Usage: vagrant cloud provider upload [options] organization/box-name provider-name version box-file"
|
@@ -16,57 +18,65 @@ module VagrantPlugins
|
|
16
18
|
o.separator ""
|
17
19
|
o.separator "Options:"
|
18
20
|
o.separator ""
|
19
|
-
|
20
|
-
|
21
|
-
options[:username] = u
|
21
|
+
o.on("-D", "--[no-]direct", "Upload asset directly to backend storage") do |d|
|
22
|
+
options[:direct] = d
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
25
26
|
# Parse the options
|
26
27
|
argv = parse_options(opts)
|
27
28
|
return if !argv
|
28
|
-
if argv.
|
29
|
+
if argv.count != 4
|
29
30
|
raise Vagrant::Errors::CLIInvalidUsage,
|
30
31
|
help: opts.help.chomp
|
31
32
|
end
|
32
33
|
|
33
|
-
@client =
|
34
|
+
@client = client_login(@env)
|
34
35
|
|
35
|
-
|
36
|
-
org = box[0]
|
37
|
-
box_name = box[1]
|
36
|
+
org, box_name = argv.first.split('/', 2)
|
38
37
|
provider_name = argv[1]
|
39
38
|
version = argv[2]
|
40
|
-
file = argv[3]
|
39
|
+
file = File.expand_path(argv[3])
|
41
40
|
|
42
|
-
upload_provider(org, box_name,
|
41
|
+
upload_provider(org, box_name, version, provider_name, file, @client.token, options)
|
43
42
|
end
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
44
|
+
# Upload an asset for a box version provider
|
45
|
+
#
|
46
|
+
# @param [String] org Organization name
|
47
|
+
# @param [String] box Box name
|
48
|
+
# @param [String] version Box version
|
49
|
+
# @param [String] provider Provider name
|
50
|
+
# @param [String] file Path to asset
|
51
|
+
# @param [String] access_token User Vagrant Cloud access token
|
52
|
+
# @param [Hash] options
|
53
|
+
# @option options [Boolean] :direct Upload directly to backend storage
|
54
|
+
# @return [Integer]
|
55
|
+
def upload_provider(org, box, version, provider, file, access_token, options)
|
56
|
+
account = VagrantCloud::Account.new(
|
57
|
+
custom_server: api_server_url,
|
58
|
+
access_token: access_token
|
59
|
+
)
|
56
60
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
61
|
+
with_provider(account: account, org: org, box: box, version: version, provider: provider) do |p|
|
62
|
+
p.upload(direct: options[:direct]) do |upload_url|
|
63
|
+
m = options[:direct] ? :put : :put
|
64
|
+
uploader = Vagrant::Util::Uploader.new(upload_url, file, ui: @env.ui, method: m)
|
65
|
+
ui = Vagrant::UI::Prefixed.new(@env.ui, "cloud")
|
66
|
+
ui.output(I18n.t("cloud_command.provider.upload",
|
67
|
+
org: org, box_name: box, version: version, provider: provider))
|
68
|
+
ui.info("Upload File: #{file}")
|
69
|
+
uploader.upload!
|
70
|
+
ui.success(I18n.t("cloud_command.provider.upload_success",
|
71
|
+
org: org, box_name: box, version: version, provider: provider))
|
72
|
+
end
|
73
|
+
0
|
69
74
|
end
|
75
|
+
rescue Vagrant::Errors::UploaderError, VagrantCloud::Error => e
|
76
|
+
@env.ui.error(I18n.t("cloud_command.errors.provider.upload_fail",
|
77
|
+
provider: provider, org: org, box_name: box, version: version))
|
78
|
+
@env.ui.error(e.message)
|
79
|
+
1
|
70
80
|
end
|
71
81
|
end
|
72
82
|
end
|