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.
@@ -1,97 +1,3 @@
1
1
  module VagrantCloud
2
- class Version
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: 1.1.0
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: 2017-10-12 00:00:00.000000000 Z
12
+ date: 2020-09-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: rest-client
15
+ name: excon
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 2.0.2
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: 2.0.2
27
+ version: '0.73'
27
28
  - !ruby/object:Gem::Dependency
28
- name: thor
29
+ name: log4r
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: 0.19.4
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: 0.19.4
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: '10.4'
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: '10.4'
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
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
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/cli.rb
112
- - lib/vagrant_cloud/provider.rb
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/cargomedia/vagrant_cloud
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
- rubyforge_project:
134
- rubygems_version: 2.6.13
131
+ rubygems_version: 3.0.3
135
132
  signing_key:
136
133
  specification_version: 4
137
- summary: HashiCorp Atlas API client
134
+ summary: Vagrant Cloud API Library
138
135
  test_files: []
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'vagrant_cloud'
4
-
5
- VagrantCloud::Cli.start(ARGV)
@@ -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