vagrant_cloud 1.1.0 → 3.0.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 +5 -5
- data/LICENSE +1 -0
- data/README.md +147 -32
- data/lib/vagrant_cloud.rb +19 -8
- data/lib/vagrant_cloud/account.rb +92 -89
- data/lib/vagrant_cloud/box.rb +111 -72
- data/lib/vagrant_cloud/box/provider.rb +173 -0
- data/lib/vagrant_cloud/box/version.rb +161 -0
- data/lib/vagrant_cloud/client.rb +464 -0
- data/lib/vagrant_cloud/data.rb +293 -0
- data/lib/vagrant_cloud/error.rb +47 -0
- data/lib/vagrant_cloud/instrumentor.rb +7 -0
- data/lib/vagrant_cloud/instrumentor/collection.rb +123 -0
- data/lib/vagrant_cloud/instrumentor/core.rb +9 -0
- data/lib/vagrant_cloud/instrumentor/logger.rb +97 -0
- data/lib/vagrant_cloud/logger.rb +60 -0
- data/lib/vagrant_cloud/organization.rb +62 -0
- data/lib/vagrant_cloud/response.rb +7 -0
- data/lib/vagrant_cloud/response/create_token.rb +7 -0
- data/lib/vagrant_cloud/response/request_2fa.rb +7 -0
- data/lib/vagrant_cloud/response/search.rb +65 -0
- data/lib/vagrant_cloud/search.rb +129 -0
- data/lib/vagrant_cloud/version.rb +1 -95
- metadata +33 -36
- data/bin/vagrant_cloud +0 -5
- data/lib/vagrant_cloud/cli.rb +0 -65
- data/lib/vagrant_cloud/provider.rb +0 -74
@@ -1,97 +1,3 @@
|
|
1
1
|
module VagrantCloud
|
2
|
-
|
3
|
-
attr_accessor :box
|
4
|
-
attr_accessor :number
|
5
|
-
attr_accessor :data
|
6
|
-
|
7
|
-
# @param [Box] box
|
8
|
-
# @param [String] number
|
9
|
-
# @param [Hash] data
|
10
|
-
def initialize(box, number, data = nil)
|
11
|
-
@box = box
|
12
|
-
@number = number
|
13
|
-
@data = data
|
14
|
-
end
|
15
|
-
|
16
|
-
# @return [String]
|
17
|
-
def version
|
18
|
-
data['version'].to_s
|
19
|
-
end
|
20
|
-
|
21
|
-
# @return [String]
|
22
|
-
def description
|
23
|
-
data['description_markdown'].to_s
|
24
|
-
end
|
25
|
-
|
26
|
-
# @return [String]
|
27
|
-
def status
|
28
|
-
data['status'].to_s
|
29
|
-
end
|
30
|
-
|
31
|
-
# @return [Array<Provider>]
|
32
|
-
def providers
|
33
|
-
data['providers'].map { |data| Provider.new(self, data['name'], data) }
|
34
|
-
end
|
35
|
-
|
36
|
-
# @return [String]
|
37
|
-
def to_s
|
38
|
-
version
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [Hash]
|
42
|
-
def data
|
43
|
-
@data ||= account.request('get', "/box/#{account.username}/#{box.name}/version/#{number}")
|
44
|
-
end
|
45
|
-
|
46
|
-
# @param [String] description
|
47
|
-
def update(description)
|
48
|
-
version = { description: description }
|
49
|
-
@data = account.request('put', "/box/#{account.username}/#{box.name}/version/#{number}", version: version)
|
50
|
-
end
|
51
|
-
|
52
|
-
def delete
|
53
|
-
account.request('delete', "/box/#{account.username}/#{box.name}/version/#{number}")
|
54
|
-
end
|
55
|
-
|
56
|
-
def release
|
57
|
-
@data = account.request('put', "/box/#{account.username}/#{box.name}/version/#{number}/release")
|
58
|
-
end
|
59
|
-
|
60
|
-
def revoke
|
61
|
-
@data = account.request('put', "/box/#{account.username}/#{box.name}/version/#{number}/revoke")
|
62
|
-
end
|
63
|
-
|
64
|
-
# @param [String] name
|
65
|
-
# @param [Hash] data
|
66
|
-
# @return [Provider]
|
67
|
-
def get_provider(name, data = nil)
|
68
|
-
Provider.new(self, name, data)
|
69
|
-
end
|
70
|
-
|
71
|
-
# @param [String] name
|
72
|
-
# @param [String] url
|
73
|
-
# @return [Provider]
|
74
|
-
def create_provider(name, url = nil)
|
75
|
-
params = { name: name, url: url }.delete_if { |_k, v| v.nil? }
|
76
|
-
data = account.request('post', "/box/#{account.username}/#{box.name}/version/#{number}/providers", provider: params)
|
77
|
-
get_provider(name, data)
|
78
|
-
end
|
79
|
-
|
80
|
-
# @param [String] name
|
81
|
-
# @param [String] url
|
82
|
-
# @return [Provider]
|
83
|
-
def ensure_provider(name, url)
|
84
|
-
provider = providers.select { |provider| provider.name == name }.first
|
85
|
-
provider = create_provider(name, url) unless provider
|
86
|
-
provider.update(url) if url != provider.url
|
87
|
-
provider
|
88
|
-
end
|
89
|
-
|
90
|
-
private
|
91
|
-
|
92
|
-
# @return [Account]
|
93
|
-
def account
|
94
|
-
box.account
|
95
|
-
end
|
96
|
-
end
|
2
|
+
VERSION = Gem::Version.new(File.read(File.expand_path("../../../version.txt", __FILE__)))
|
97
3
|
end
|
metadata
CHANGED
@@ -1,57 +1,58 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant_cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- HashiCorp
|
7
8
|
- Cargo Media
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2020-09-21 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: excon
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
+
version: '0.73'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
+
version: '0.73'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
29
|
+
name: log4r
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
+
version: 1.1.10
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
+
version: 1.1.10
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: rake
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
46
|
- - "~>"
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
+
version: '12.3'
|
48
49
|
type: :development
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
53
|
- - "~>"
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
55
|
+
version: '12.3'
|
55
56
|
- !ruby/object:Gem::Dependency
|
56
57
|
name: rspec
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,38 +81,35 @@ dependencies:
|
|
80
81
|
- - "~>"
|
81
82
|
- !ruby/object:Gem::Version
|
82
83
|
version: '3.0'
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 0.41.2
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.41.2
|
97
|
-
description: Minimalistic ruby client for the HashiCorp Atlas API (previously Vagrant
|
98
|
-
Cloud API)
|
99
|
-
email: tech@cargomedia.ch
|
100
|
-
executables:
|
101
|
-
- vagrant_cloud
|
84
|
+
description: Ruby library for the HashiCorp Vagrant Cloud API
|
85
|
+
email: vagrant@hashicorp.com
|
86
|
+
executables: []
|
102
87
|
extensions: []
|
103
88
|
extra_rdoc_files: []
|
104
89
|
files:
|
105
90
|
- LICENSE
|
106
91
|
- README.md
|
107
|
-
- bin/vagrant_cloud
|
108
92
|
- lib/vagrant_cloud.rb
|
109
93
|
- lib/vagrant_cloud/account.rb
|
110
94
|
- lib/vagrant_cloud/box.rb
|
111
|
-
- lib/vagrant_cloud/
|
112
|
-
- lib/vagrant_cloud/
|
95
|
+
- lib/vagrant_cloud/box/provider.rb
|
96
|
+
- lib/vagrant_cloud/box/version.rb
|
97
|
+
- lib/vagrant_cloud/client.rb
|
98
|
+
- lib/vagrant_cloud/data.rb
|
99
|
+
- lib/vagrant_cloud/error.rb
|
100
|
+
- lib/vagrant_cloud/instrumentor.rb
|
101
|
+
- lib/vagrant_cloud/instrumentor/collection.rb
|
102
|
+
- lib/vagrant_cloud/instrumentor/core.rb
|
103
|
+
- lib/vagrant_cloud/instrumentor/logger.rb
|
104
|
+
- lib/vagrant_cloud/logger.rb
|
105
|
+
- lib/vagrant_cloud/organization.rb
|
106
|
+
- lib/vagrant_cloud/response.rb
|
107
|
+
- lib/vagrant_cloud/response/create_token.rb
|
108
|
+
- lib/vagrant_cloud/response/request_2fa.rb
|
109
|
+
- lib/vagrant_cloud/response/search.rb
|
110
|
+
- lib/vagrant_cloud/search.rb
|
113
111
|
- lib/vagrant_cloud/version.rb
|
114
|
-
homepage: https://github.com/
|
112
|
+
homepage: https://github.com/hashicorp/vagrant_cloud
|
115
113
|
licenses:
|
116
114
|
- MIT
|
117
115
|
metadata: {}
|
@@ -130,9 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
128
|
- !ruby/object:Gem::Version
|
131
129
|
version: '0'
|
132
130
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.6.13
|
131
|
+
rubygems_version: 3.0.3
|
135
132
|
signing_key:
|
136
133
|
specification_version: 4
|
137
|
-
summary:
|
134
|
+
summary: Vagrant Cloud API Library
|
138
135
|
test_files: []
|
data/bin/vagrant_cloud
DELETED
data/lib/vagrant_cloud/cli.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'thor'
|
2
|
-
|
3
|
-
module VagrantCloud
|
4
|
-
class Cli < Thor
|
5
|
-
package_name 'VagrantCloud'
|
6
|
-
|
7
|
-
class_option :username, alias: '-u', required: true, desc: 'Vagrant Cloud username'
|
8
|
-
class_option :token, alias: '-t', required: true, desc: 'Vagrant Cloud access token'
|
9
|
-
class_option :box, alias: '-b', required: true, desc: 'name of the box'
|
10
|
-
class_option :verbose, type: :boolean
|
11
|
-
|
12
|
-
desc 'create_version', 'creates a new version within a given box'
|
13
|
-
method_option :version, alias: '-v', required: true, desc: 'version within the box'
|
14
|
-
def create_version
|
15
|
-
version = current_box.create_version(options[:version])
|
16
|
-
puts "created #{version.version} of box #{options[:box]}; current status is #{version.status}" if options[:verbose]
|
17
|
-
version
|
18
|
-
end
|
19
|
-
|
20
|
-
desc 'release_version', 'release the specified version within a given box'
|
21
|
-
method_option :version, alias: '-v', required: true, desc: 'version within the box'
|
22
|
-
def release_version
|
23
|
-
version = current_version
|
24
|
-
version.release
|
25
|
-
puts "Box #{options[:box]} / version: #{version.version}; current status is #{version.status}" if options[:verbose]
|
26
|
-
true
|
27
|
-
end
|
28
|
-
|
29
|
-
desc 'create_provider', 'creates a provider within a given box and version'
|
30
|
-
method_option :version, alias: '-v', required: true, desc: 'version within the box'
|
31
|
-
method_option :provider, alias: '-p', default: 'virtualbox', desc: 'the provider for the box; default: virtualbox'
|
32
|
-
method_option :provider_url, alias: '-pu', desc: 'URL to the file for remote hosting; do not include if you intend to upload a file subsequently'
|
33
|
-
def create_provider
|
34
|
-
provider = current_version.create_provider(options[:provider], options[:provider_url])
|
35
|
-
puts "created #{provider.data['name']} provider within version #{provider.version.version}" if options[:verbose]
|
36
|
-
provider
|
37
|
-
end
|
38
|
-
|
39
|
-
desc 'upload_file', 'upload a file for Atlas to host to an existing version and provider'
|
40
|
-
method_option :version, alias: '-v', required: true, desc: 'version within the box'
|
41
|
-
method_option :provider, alias: '-p', default: 'virtualbox', desc: 'the provider for the box; default: virtualbox'
|
42
|
-
method_option :provider_file_path, alias: '-pfp', required: true, desc: 'path to file to be uploaded for Atlast hosting'
|
43
|
-
def upload_file
|
44
|
-
get_provider(options[:provider]).upload_file(options[:provider_file_path])
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def current_account
|
50
|
-
VagrantCloud::Account.new(options[:username], options[:token])
|
51
|
-
end
|
52
|
-
|
53
|
-
def current_box
|
54
|
-
current_account.get_box(options[:box])
|
55
|
-
end
|
56
|
-
|
57
|
-
def current_version
|
58
|
-
current_box.get_version(options[:version])
|
59
|
-
end
|
60
|
-
|
61
|
-
def get_provider(provider_str)
|
62
|
-
current_version.get_provider(provider_str)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module VagrantCloud
|
2
|
-
class Provider
|
3
|
-
attr_accessor :version
|
4
|
-
attr_accessor :name
|
5
|
-
attr_accessor :data
|
6
|
-
|
7
|
-
# @param [Version] version
|
8
|
-
# @param [String] name
|
9
|
-
# @param [Hash] data
|
10
|
-
def initialize(version, name, data = nil)
|
11
|
-
@version = version
|
12
|
-
@name = name
|
13
|
-
@data = data
|
14
|
-
end
|
15
|
-
|
16
|
-
# @return [String]
|
17
|
-
def url
|
18
|
-
data['original_url'].to_s
|
19
|
-
end
|
20
|
-
|
21
|
-
# @return [String]
|
22
|
-
def download_url
|
23
|
-
data['download_url'].to_s
|
24
|
-
end
|
25
|
-
|
26
|
-
# @return [Hash]
|
27
|
-
def data
|
28
|
-
@data ||= account.request('get', provider_path)
|
29
|
-
end
|
30
|
-
|
31
|
-
# @param [String] url
|
32
|
-
def update(url)
|
33
|
-
params = { url: url }
|
34
|
-
@data = account.request('put', provider_path, provider: params)
|
35
|
-
end
|
36
|
-
|
37
|
-
def delete
|
38
|
-
account.request('delete', provider_path)
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [String]
|
42
|
-
def upload_url
|
43
|
-
account.request('get', "#{provider_path}/upload")['upload_path']
|
44
|
-
end
|
45
|
-
|
46
|
-
# @param [String] file_path
|
47
|
-
def upload_file(file_path)
|
48
|
-
url = upload_url
|
49
|
-
payload = File.open(file_path, 'r')
|
50
|
-
RestClient::Request.execute(
|
51
|
-
method: :put,
|
52
|
-
url: url,
|
53
|
-
payload: payload,
|
54
|
-
ssl_version: 'TLSv1'
|
55
|
-
)
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
# @return [Box]
|
61
|
-
def box
|
62
|
-
version.box
|
63
|
-
end
|
64
|
-
|
65
|
-
# @return [Account]
|
66
|
-
def account
|
67
|
-
box.account
|
68
|
-
end
|
69
|
-
|
70
|
-
def provider_path
|
71
|
-
"/box/#{account.username}/#{box.name}/version/#{version.number}/provider/#{name}"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|