vagrant_cloud 1.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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