vagrant_cloud 2.0.2 → 3.0.3

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.
@@ -1,202 +1,3 @@
1
1
  module VagrantCloud
2
- class Version
3
- attr_accessor :box
4
- attr_accessor :number
5
-
6
- # @param [Box] box
7
- # @param [String] number
8
- # @param [Hash] data
9
- # @param [String] description
10
- # @param [String] access_token
11
- def initialize(box, number, data = nil, description = nil, access_token = nil, custom_server = nil)
12
- @box = box
13
- @number = number
14
- @data = data
15
- @description = description
16
- @client = Client.new(access_token, custom_server)
17
- end
18
-
19
- #--------------------
20
- # Metadata Helpers
21
- #--------------------
22
-
23
- # @return [String]
24
- def version
25
- data['version'].to_s
26
- end
27
-
28
- # @return [String]
29
- def description
30
- data['description_markdown'].to_s
31
- end
32
-
33
- # @return [String]
34
- def status
35
- data['status'].to_s
36
- end
37
-
38
- # @return [Array<Provider>]
39
- def providers
40
- data['providers'].map { |data| Provider.new(self, data['name'], data) }
41
- end
42
-
43
- # @return [String]
44
- def to_s
45
- version
46
- end
47
-
48
- #--------------------
49
- # Version API Helpers
50
- #--------------------
51
-
52
- # @return [Hash]
53
- def data
54
- @data ||= @client.request('get', version_path)
55
- end
56
-
57
- # @param [String] username
58
- # @param [String] box_name
59
- # @param [String] version_number
60
- # @return [Hash]
61
- def read(username = nil, box_name = nil, version_number = nil)
62
- @client.request('get', version_path(username, box_name, version_number))
63
- end
64
-
65
- # @param [String] username
66
- # @param [String] box_name
67
- # @param [String] version_number
68
- # @param [String] description
69
- def update(description = nil, username = nil, box_name = nil, version_number = nil)
70
- # Ensure version given is a 'proper' version
71
- begin
72
- Gem::Version.new(version_number) if version_number
73
- rescue ArgumentError
74
- raise VagrantCloud::InvalidVersion, version_number
75
- end
76
-
77
- update_data = !(username && box_name && version_number)
78
- description ||= @description
79
- version = { description: description }
80
- data = @client.request('put',
81
- version_path(username, box_name, version_number),
82
- version: version)
83
-
84
- @data = data if update_data
85
- data
86
- end
87
-
88
- # @param [String] username
89
- # @param [String] box_name
90
- # @param [String] version_number
91
- def delete(username = nil, box_name = nil, version_number = nil)
92
- @client.request('delete', version_path(username, box_name, version_number))
93
- end
94
-
95
- # @param [String] username
96
- # @param [String] box_name
97
- # @param [String] version_number
98
- def release(username = nil, box_name = nil, version_number = nil)
99
- data = @client.request('put', "#{version_path(username, box_name, version_number)}/release")
100
-
101
- @data = data if !(username && box_name && version_number)
102
- data
103
- end
104
-
105
- # @param [String] username
106
- # @param [String] box_name
107
- # @param [String] version_number
108
- def revoke(username = nil, box_name = nil, version_number = nil)
109
- update_data = !(username && box_name && version_number)
110
- data = @client.request('put', "#{version_path(username, box_name, version_number)}/revoke")
111
-
112
- @data = data if update_data
113
- data
114
- end
115
-
116
- # @param [String] number
117
- # @param [String] description
118
- # @param [String] org
119
- # @param [String] box_name
120
- # @return [Hash]
121
- def create_version(number = nil, description = nil, org = nil, box_name = nil)
122
- update_data = !(org && box_name && description && number)
123
- number ||= @number
124
- description ||= @description
125
-
126
- # Ensure version given is a 'proper' version
127
- begin
128
- Gem::Version.new(number) if number
129
- rescue ArgumentError
130
- raise VagrantCloud::InvalidVersion, number
131
- end
132
-
133
- params = { version: number, description: description }
134
- data = @client.request('post', create_version_path(org, box_name).to_s, version: params)
135
-
136
- @data = data if update_data
137
- data
138
- end
139
-
140
- #--------------------
141
- # Old Provider Helpers
142
- #--------------------
143
-
144
- # @param [String] name
145
- # @param [Hash] data
146
- # @return [Provider]
147
- def get_provider(name, data = nil)
148
- Provider.new(self, name, data)
149
- end
150
-
151
- # @param [String] name
152
- # @param [String] url
153
- # @return [Provider]
154
- def create_provider(name, url = nil)
155
- params = { name: name, url: url }.delete_if { |_, v| v.nil? }
156
- data = @client.request('post', "#{version_path}/providers", provider: params)
157
- get_provider(name, data)
158
- end
159
-
160
- # @param [String] name
161
- # @param [String] url
162
- # @return [Provider]
163
- def ensure_provider(name, url)
164
- provider = providers.select { |p| p.name == name }.first
165
- provider ||= create_provider(name, url)
166
- provider.update(url) if url != provider.url
167
- provider
168
- end
169
-
170
- private
171
-
172
- # @return [Account]
173
- def account
174
- box.account
175
- end
176
-
177
- # Path used to generate a new version on a box
178
- #
179
- # @param [String] - username
180
- # @param [String] - box_name
181
- # @return [String]
182
- def create_version_path(username = nil, box_name = nil)
183
- if username && box_name
184
- "/box/#{username}/#{box_name}/versions"
185
- else
186
- "/box/#{account.username}/#{box.name}/versions"
187
- end
188
- end
189
-
190
- # @param [String] - username
191
- # @param [String] - box_name
192
- # @param [String] - version_number
193
- # @return [String]
194
- def version_path(username = nil, box_name = nil, version_number = nil)
195
- if username && box_name && version_number
196
- "/box/#{username}/#{box_name}/version/#{version_number}"
197
- else
198
- "/box/#{account.username}/#{box.name}/version/#{number}"
199
- end
200
- end
201
- end
2
+ VERSION = Gem::Version.new(File.read(File.expand_path("../../../version.txt", __FILE__)))
202
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - HashiCorp
@@ -9,64 +9,64 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-01-09 00:00:00.000000000 Z
12
+ date: 2021-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rest-client
15
+ name: excon
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 2.0.2
20
+ version: '0.73'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 2.0.2
27
+ version: '0.73'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rake
29
+ name: log4r
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '10.4'
35
- type: :development
34
+ version: 1.1.10
35
+ type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '10.4'
41
+ version: 1.1.10
42
42
  - !ruby/object:Gem::Dependency
43
- name: rspec
43
+ name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '3.0'
48
+ version: '12.3'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '3.0'
55
+ version: '12.3'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rubocop
57
+ name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 0.59.1
62
+ version: '3.0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 0.59.1
69
+ version: '3.0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: webmock
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -89,24 +89,31 @@ extra_rdoc_files: []
89
89
  files:
90
90
  - LICENSE
91
91
  - README.md
92
- - bin/vagrant_cloud
93
92
  - lib/vagrant_cloud.rb
94
93
  - lib/vagrant_cloud/account.rb
95
94
  - lib/vagrant_cloud/box.rb
95
+ - lib/vagrant_cloud/box/provider.rb
96
+ - lib/vagrant_cloud/box/version.rb
96
97
  - lib/vagrant_cloud/client.rb
97
- - lib/vagrant_cloud/errors.rb
98
- - lib/vagrant_cloud/provider.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
99
110
  - lib/vagrant_cloud/search.rb
100
111
  - lib/vagrant_cloud/version.rb
101
112
  homepage: https://github.com/hashicorp/vagrant_cloud
102
113
  licenses:
103
114
  - MIT
104
115
  metadata: {}
105
- post_install_message: |-
106
- NOTICE: As of the 2.0.0 release, the vagrant_cloud gem provides library functionality
107
- and no longer includes a command line client. For a command line client,
108
- use the `vagrant cloud` subcommand from Vagrant. Vagrant can be downloaded
109
- from: https://www.vagrantup.com/downloads.html
116
+ post_install_message:
110
117
  rdoc_options: []
111
118
  require_paths:
112
119
  - lib
@@ -121,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
128
  - !ruby/object:Gem::Version
122
129
  version: '0'
123
130
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.5.2.1
131
+ rubygems_version: 3.2.3
126
132
  signing_key:
127
133
  specification_version: 4
128
134
  summary: Vagrant Cloud API Library
data/bin/vagrant_cloud DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- raise 'As of the 2.0.0 release, the vagrant_cloud gem provides library' \
4
- ' functionality and no longer includes a command line client. For a' \
5
- ' command line client, use the `vagrant cloud` subcommand from Vagrant.' \
6
- ' Vagrant can be downloaded from: https://www.vagrantup.com/downloads.html'
@@ -1,35 +0,0 @@
1
- module VagrantCloud
2
- class ClientError < StandardError
3
- attr_accessor :error_arr
4
- attr_accessor :error_code
5
-
6
- def initialize(msg, http_body, http_code)
7
- message = msg
8
-
9
- begin
10
- errors = JSON.parse(http_body)
11
- if errors.is_a?(Hash)
12
- vagrant_cloud_msg = errors['errors']
13
- if vagrant_cloud_msg.is_a?(Array)
14
- message = msg + ' - ' + vagrant_cloud_msg.map(&:to_s).join(', ').to_s
15
- elsif !vagrant_cloud_msg.to_s.empty?
16
- message = msg + ' - ' + vagrant_cloud_msg.to_s
17
- end
18
- end
19
- rescue JSON::ParserError => err
20
- vagrant_cloud_msg = err.message
21
- end
22
-
23
- @error_arr = vagrant_cloud_msg
24
- @error_code = http_code.to_i
25
- super(message)
26
- end
27
- end
28
-
29
- class InvalidVersion < StandardError
30
- def initialize(version_number)
31
- message = 'Invalid version given: ' + version_number
32
- super(message)
33
- end
34
- end
35
- end
@@ -1,149 +0,0 @@
1
- module VagrantCloud
2
- class Provider
3
- attr_accessor :version
4
- attr_accessor :name
5
-
6
- # @param [Version] version
7
- # @param [String] name
8
- # @param [Hash] data
9
- # @param [String] access_token
10
- def initialize(version, name, data = nil, url = nil, username = nil, box_name = nil, access_token = nil, custom_server = nil)
11
- @version = version
12
- @name = name
13
- @data = data
14
- @username = username
15
- @box_name = box_name
16
- @url = url
17
- @client = Client.new(access_token, custom_server)
18
- end
19
-
20
- #--------------------
21
- # Metadata Helpers
22
- #--------------------
23
-
24
- # @return [String]
25
- def url
26
- data['original_url'].to_s
27
- end
28
-
29
- # @return [String]
30
- def download_url
31
- data['download_url'].to_s
32
- end
33
-
34
- #--------------------
35
- # Provider API Helpers
36
- #--------------------
37
-
38
- # @return [Hash]
39
- def data
40
- @data ||= @client.request('get', provider_path)
41
- end
42
-
43
- # Creates a provider for *this* Provider object, or if all params are given,
44
- # will make a one-off request to create a Provider and return its data
45
- #
46
- # @param [String] name
47
- # @param [String] url
48
- # @param [String] username
49
- # @param [String] box_name
50
- # @param [String] version_number
51
- def create_provider(name = nil, url = nil, username = nil, box_name = nil, version_number = nil)
52
- update_data = !(username && version_number && provider_name && box_name)
53
- name ||= @name
54
- url ||= @url
55
- username ||= @username
56
- box_name ||= @box_name
57
- version_number ||= @version
58
-
59
- params = { name: name, url: url }.delete_if { |_, v| v.nil? }
60
- data = @client.request('post', create_provider_path(username, box_name, version_number), provider: params)
61
-
62
- @data = data if update_data
63
- data
64
- end
65
-
66
- # @param [String] url
67
- # @param [String] username
68
- # @param [String] box_name
69
- # @param [String] version_number
70
- # @param [String] provider_name
71
- def update(url = nil, username = nil, box_name = nil, version_number = nil, provider_name = nil)
72
- update_data = !(username && version_number && provider_name && box_name)
73
- provider_name ||= @name
74
- url ||= @url
75
- username ||= @username
76
- box_name ||= @box_name
77
- version_number ||= @version
78
-
79
- params = { url: url }
80
- data = @client.request('put',
81
- provider_path(username, box_name, version_number, provider_name),
82
- provider: params)
83
-
84
- @data = data if update_data
85
- data
86
- end
87
-
88
- # @param [String] username
89
- # @param [String] box_name
90
- # @param [String] version_number
91
- # @param [String] provider_name
92
- def delete(username = nil, box_name = nil, version_number = nil, provider_name = nil)
93
- @client.request('delete', provider_path(username, box_name, version_number, provider_name))
94
- end
95
-
96
- # @param [String] username
97
- # @param [String] box_name
98
- # @param [String] version_number
99
- # @param [String] provider_name
100
- # @return [String]
101
- def upload_url(username = nil, box_name = nil, version_number = nil, provider_name = nil)
102
- @client.request('get', "#{provider_path(username, box_name, version_number, provider_name)}/upload")['upload_path']
103
- end
104
-
105
- # @param [String] username
106
- # @param [String] box_name
107
- # @param [String] version_number
108
- # @param [String] provider_name
109
- # @param [String] file_path
110
- def upload_file(file_path, username = nil, box_name = nil, version_number = nil, provider_name = nil)
111
- url = upload_url(username, box_name, version_number, provider_name)
112
- payload = File.open(file_path, 'r')
113
- RestClient::Request.execute(
114
- method: :put,
115
- url: url,
116
- payload: payload,
117
- ssl_version: 'TLSv1'
118
- )
119
- end
120
-
121
- private
122
-
123
- # @return [Box]
124
- def box
125
- version.box
126
- end
127
-
128
- # @return [Account]
129
- def account
130
- box.account
131
- end
132
-
133
- def create_provider_path(username = nil, box_name = nil, version_number = nil)
134
- if username && box_name && version_number
135
- "/box/#{username}/#{box_name}/version/#{version_number}/providers"
136
- else
137
- "/box/#{account.username}/#{box.name}/version/#{version.number}/providers"
138
- end
139
- end
140
-
141
- def provider_path(username = nil, box_name = nil, version_number = nil, provider_name = nil)
142
- if username && box_name && version_number && name
143
- "/box/#{username}/#{box_name}/version/#{version_number}/provider/#{provider_name}"
144
- else
145
- "/box/#{account.username}/#{box.name}/version/#{version.number}/provider/#{name}"
146
- end
147
- end
148
- end
149
- end