vagrant-vultr 0.1.2 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 06699707d0c31e1450add468610079af676f8a7f
4
- data.tar.gz: 19d7419495dc8ad6d24db33d0575efff3664e6ef
2
+ SHA256:
3
+ metadata.gz: f031591283dd35a1683006af1dd65ba484f3dbf36da051a79b1f55f085779f3b
4
+ data.tar.gz: da874ed72a35b7d49e97e6b2772e41bf128b1fe3fbdd7dc9cf2dee2dad85af02
5
5
  SHA512:
6
- metadata.gz: 434620039d7eb47ad9284535959180a96dcc124ae71d3ddcc92fdb74eac74b989b36d352e2ac888d98a29a38db08dcca2c060e7994ab996335c7f2725d6db898
7
- data.tar.gz: 66c896a4398afe911e7e825f89b80264d9c04ed3a9c60525605b4467c38c720b0c98d311d9c24eb8f3f8bd932491d8bf03c32aba4ba1dc7db81ac86f43fe4e56
6
+ metadata.gz: b730e9e7ec7709d135bb5e21edafafb30ef5d8160630e3b82886672eab78967c138bba426ae1715393063ee2fdcb472a13747820e5ccd0d14f99cdecdcb6e67d
7
+ data.tar.gz: e2f9b4604aa5eead4e9c353895aade2a1c7179d4a0e20708d70e0925d08b25a05b91539ae4c3cd8e608235befdfc5190028f0900806015e31aea1064816c8fbf
data/README.md CHANGED
@@ -31,6 +31,11 @@ Vagrant.configure(2) do |config|
31
31
  # Use either OS name or Snapshot identifier
32
32
  vultr.os = 'Ubuntu 14.04 x64'
33
33
  vultr.snapshot = '524557af2439b'
34
+
35
+ # Optional parameters
36
+ vultr.label = 'My Label'
37
+ vultr.tag = 'My Tag'
38
+ vultr.hostname = 'myhostname'
34
39
  end
35
40
  end
36
41
  ```
@@ -46,6 +51,7 @@ Notes
46
51
 
47
52
  1. You have to specify `override.ssh.private_key_path`. Public key will be uploaded to Vultr as "vagrant" SSH key and will be used when servers are created.
48
53
  2. Currently, servers are created with "root" user.
54
+ 3. If you hit API rate limit, you can set `VULTR_RATE_LIMIT_INTERVAL_MS` environment variable to introduce delay between API requests.
49
55
 
50
56
  Testing
51
57
  -------
@@ -18,18 +18,33 @@ module VagrantPlugins
18
18
  plan = env[:machine].provider_config.plan
19
19
  os = env[:machine].provider_config.os
20
20
  snapshot = env[:machine].provider_config.snapshot
21
+ enable_ipv6 = env[:machine].provider_config.enable_ipv6
22
+ enable_private_network = env[:machine].provider_config.enable_private_network
23
+ label = env[:machine].provider_config.label
24
+ tag = env[:machine].provider_config.tag
25
+ hostname = env[:machine].provider_config.hostname
21
26
 
22
27
  @logger.info "Creating server with:"
23
28
  @logger.info " -- Region: #{region}"
24
29
  @logger.info " -- OS: #{os}"
25
30
  @logger.info " -- Plan: #{plan}"
26
31
  @logger.info " -- Snapshot: #{snapshot}"
32
+ @logger.info " -- Enable IPv6: #{enable_ipv6}"
33
+ @logger.info " -- Enable Private Network: #{enable_private_network}"
34
+ @logger.info " -- Label: #{label}"
35
+ @logger.info " -- Tag: #{tag}"
36
+ @logger.info " -- Hostname: #{hostname}"
27
37
 
28
38
  attributes = {
29
39
  region: region,
30
40
  os: os,
31
41
  plan: plan,
32
42
  snapshot: snapshot,
43
+ enable_ipv6: enable_ipv6,
44
+ enable_private_network: enable_private_network,
45
+ label: label,
46
+ tag: tag,
47
+ hostname: hostname,
33
48
  ssh_key_name: Action::SetupSSHKey::NAME
34
49
  }
35
50
  @machine.id = @client.create_server(attributes)
@@ -6,6 +6,11 @@ module VagrantPlugins
6
6
  attr_accessor :os
7
7
  attr_accessor :snapshot
8
8
  attr_accessor :plan
9
+ attr_accessor :enable_ipv6
10
+ attr_accessor :enable_private_network
11
+ attr_accessor :label
12
+ attr_accessor :tag
13
+ attr_accessor :hostname
9
14
 
10
15
  # @api private
11
16
  attr_accessor :ssh_key_id
@@ -16,6 +21,11 @@ module VagrantPlugins
16
21
  @os = UNSET_VALUE
17
22
  @snapshot = UNSET_VALUE
18
23
  @plan = UNSET_VALUE
24
+ @enable_ipv6 = UNSET_VALUE
25
+ @enable_private_network = UNSET_VALUE
26
+ @label = UNSET_VALUE
27
+ @tag = UNSET_VALUE
28
+ @hostname = UNSET_VALUE
19
29
  end
20
30
 
21
31
  def finalize!
@@ -24,6 +34,11 @@ module VagrantPlugins
24
34
  @os = 'Ubuntu 14.04 x64' if @os == UNSET_VALUE && @snapshot == UNSET_VALUE
25
35
  @plan = '768 MB RAM,15 GB SSD,1.00 TB BW' if @plan == UNSET_VALUE
26
36
  @snapshot = nil if @snapshot == UNSET_VALUE
37
+ @enable_ipv6 = 'no' if @enable_ipv6 == UNSET_VALUE
38
+ @enable_private_network = 'no' if @enable_private_network == UNSET_VALUE
39
+ @label = '' if @label == UNSET_VALUE
40
+ @tag = '' if @tag == UNSET_VALUE
41
+ @hostname = '' if @hostname == UNSET_VALUE
27
42
  end
28
43
 
29
44
  def validate(machine)
@@ -34,10 +34,16 @@ module VagrantPlugins
34
34
  end
35
35
 
36
36
  def create_server(attributes)
37
+ location_id = region_id(attributes[:region])
37
38
  params = {
38
- DCID: region_id(attributes[:region]),
39
- VPSPLANID: vps_plan_id(attributes[:plan]),
40
- SSHKEYID: ssh_key_id(attributes[:ssh_key_name])
39
+ DCID: location_id,
40
+ VPSPLANID: vps_plan_id(attributes[:plan], location_id.class.name == "String" ? location_id.to_i : location_id),
41
+ SSHKEYID: ssh_key_id(attributes[:ssh_key_name]),
42
+ enable_ipv6: attributes[:enable_ipv6],
43
+ enable_private_network: attributes[:enable_private_network],
44
+ label: attributes[:label],
45
+ tag: attributes[:tag],
46
+ hostname: attributes[:hostname]
41
47
  }
42
48
 
43
49
  if attributes[:snapshot]
@@ -81,9 +87,9 @@ module VagrantPlugins
81
87
  regions.find { |r| r['name'] == region }['DCID']
82
88
  end
83
89
 
84
- def vps_plan_id(plan)
90
+ def vps_plan_id(plan, location_id)
85
91
  plans = request { ::Vultr::Plans.list }
86
- plans.values.find { |p| p['name'] == plan }['VPSPLANID']
92
+ plans.values.find { |p| p['name'] == plan && p['available_locations']&.include?(location_id) }['VPSPLANID']
87
93
  end
88
94
 
89
95
  def ssh_keys
@@ -134,6 +140,10 @@ module VagrantPlugins
134
140
  private
135
141
 
136
142
  def request
143
+ if interval = ENV['VULTR_RATE_LIMIT_INTERVAL_MS']
144
+ sleep interval.to_f / 1000
145
+ end
146
+
137
147
  response = yield
138
148
  if response[:status] != 200
139
149
  raise "API request failed: #{response[:result]}."
@@ -2,7 +2,7 @@ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'vagrant-vultr'
5
- spec.version = '0.1.2'
5
+ spec.version = '0.1.3'
6
6
  spec.author = 'Alex Rodionov'
7
7
  spec.email = 'p0deje@gmail.com'
8
8
  spec.homepage = 'http://github.com/p0deje/vagrant-vultr'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-vultr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-26 00:00:00.000000000 Z
11
+ date: 2023-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vultr
@@ -100,7 +100,7 @@ homepage: http://github.com/p0deje/vagrant-vultr
100
100
  licenses:
101
101
  - MIT
102
102
  metadata: {}
103
- post_install_message:
103
+ post_install_message:
104
104
  rdoc_options: []
105
105
  require_paths:
106
106
  - lib
@@ -115,12 +115,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  requirements: []
118
- rubyforge_project:
119
- rubygems_version: 2.4.5.1
120
- signing_key:
118
+ rubygems_version: 3.3.25
119
+ signing_key:
121
120
  specification_version: 4
122
121
  summary: Vultr provider for Vagrant
123
122
  test_files:
124
123
  - features/support/env.rb
125
124
  - features/vagrant-vultr.feature
126
- has_rdoc: