vagrant-digitalocean 0.7.7 → 0.7.8

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
2
  SHA1:
3
- metadata.gz: 2d25d71a7736e890b2690c5f6da785e9ba9002de
4
- data.tar.gz: 645d770371e722a0037bac2d3ef29860b7c9f6c7
3
+ metadata.gz: a7712f3d6c24ad17b4036e94c73407efc36d8f1e
4
+ data.tar.gz: 97936d9df0dd3fc5b25c1d35d86143d0c757e774
5
5
  SHA512:
6
- metadata.gz: 879e4bb295023cc2fa52b8bda80f9b1ee774c62c6edfd5817a1fca8c24fa0ce538a603ad9f8a65ee43d0e620cf77f33315e153b6de32f2d2a31f929e4b3b2747
7
- data.tar.gz: 9e6b1d61b080d828c2c593126a36ef3f3deea301e35de718f6e3b79ba89f6f2ab8ebdc5a0be68f2dca6090da53b20aeb227ae11507cc33d6ab743ec7ce4d9bf6
6
+ metadata.gz: 30fabe81907e9ecc94198cbb2bb397cb66408eaf3700b8f2cfa8e2564e845903671f0aada4771024c71f967a2c4c53a418ae915d4d18e773d248254e0be13433
7
+ data.tar.gz: cc3d5a10e27a06aee9f86c837329ff5d86c98dbee8976bebb8508dd316224da662b336d6b8d2bde0deaf98b44859d6a650ee03d004ae1af67d69d88954550667
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
- Digital Ocean Vagrant Provider
1
+ DigitalOcean Vagrant Provider
2
2
  ==============================
3
- `vagrant-digitalocean` is a provider plugin for Vagrant that supports the management of [Digital Ocean](https://www.digitalocean.com/) droplets (instances).
3
+
4
+ [![Gem](https://img.shields.io/gem/dt/vagrant-digitalocean.svg)](https://rubygems.org/gems/vagrant-digitalocean)
5
+ [![Gem](https://img.shields.io/gem/dtv/vagrant-digitalocean.svg)](https://rubygems.org/gems/vagrant-digitalocean)
6
+ [![Twitter](https://img.shields.io/twitter/url/https/github.com/smdahlen/vagrant-digitalocean.svg?style=social)](https://twitter.com/intent/tweet?text=Check%20out%20this%20awesome%20Vagrant%20plugin%21&url=https%3A%2F%2Fgithub.com%2Fsmdahlen%2Fvagrant-digitalocean&hashtags=vagrant%2Cdigitalocean&original_referer=)
7
+
8
+ `vagrant-digitalocean` is a provider plugin for Vagrant that supports the management of [DigitalOcean](https://www.digitalocean.com/) droplets (instances).
4
9
 
5
10
  Features include:
6
11
  - create and destroy droplets
@@ -22,7 +27,7 @@ Install the provider plugin using the Vagrant command-line interface:
22
27
 
23
28
  Configure
24
29
  ---------
25
- Once the provider has been installed, you will need to configure your project to use it. The most basic `Vagrantfile` to create a droplet on Digital Ocean is shown below:
30
+ Once the provider has been installed, you will need to configure your project to use it. The most basic `Vagrantfile` to create a droplet on DigitalOcean is shown below:
26
31
 
27
32
  ```ruby
28
33
  Vagrant.configure('2') do |config|
@@ -41,27 +46,27 @@ end
41
46
  ```
42
47
 
43
48
  **Configuration Requirements**
44
- - You *must* specify the `override.ssh.private_key_path` to enable authentication with the droplet. The provider will create a new Digital Ocean SSH key using your public key which is assumed to be the `private_key_path` with a *.pub* extension.
45
- - You *must* specify your Digital Ocean Personal Access Token at `provider.token`. This may be found on the control panel within the *Apps & API* section.
49
+ - You *must* specify the `override.ssh.private_key_path` to enable authentication with the droplet. The provider will create a new DigitalOcean SSH key using your public key which is assumed to be the `private_key_path` with a *.pub* extension.
50
+ - You *must* specify your DigitalOcean Personal Access Token at `provider.token`. This may be found on the control panel within the *Apps & API* section.
46
51
 
47
52
  **Supported Configuration Attributes**
48
53
 
49
54
  The following attributes are available to further configure the provider:
50
55
  - `provider.image`
51
56
  * A string representing the image to use when creating a new droplet. It defaults to `ubuntu-14-04-x64`.
52
- List available images with the `digitalocean-list images $DIGITAL_OCEAN_TOKEN` command. Like when using the DigitalOcean API directly, [it can be an image ID or slug](https://developers.digitalocean.com/documentation/v2/#create-a-new-droplet).
57
+ List available images with the `vagrant digitalocean-list images $DIGITAL_OCEAN_TOKEN` command. Like when using the DigitalOcean API directly, [it can be an image ID or slug](https://developers.digitalocean.com/documentation/v2/#create-a-new-droplet).
53
58
  - `provider.ipv6`
54
59
  * A boolean flag indicating whether to enable IPv6
55
60
  - `provider.region`
56
- * A string representing the region to create the new droplet in. It defaults to `nyc2`. List available regions with the `digitalocean-list regions $DIGITAL_OCEAN_TOKEN` command.
61
+ * A string representing the region to create the new droplet in. It defaults to `nyc2`. List available regions with the `vagrant digitalocean-list regions $DIGITAL_OCEAN_TOKEN` command.
57
62
  - `provider.size`
58
- * A string representing the size to use when creating a new droplet (e.g. `1gb`). It defaults to `512mb`. List available sizes with the `digitalocean-list sizes $DIGITAL_OCEAN_TOKEN` command.
63
+ * A string representing the size to use when creating a new droplet (e.g. `1gb`). It defaults to `512mb`. List available sizes with the `vagrant digitalocean-list sizes $DIGITAL_OCEAN_TOKEN` command.
59
64
  - `provider.private_networking`
60
65
  * A boolean flag indicating whether to enable a private network interface (if the region supports private networking). It defaults to `false`.
61
66
  - `provider.backups_enabled`
62
67
  * A boolean flag indicating whether to enable backups for the droplet. It defaults to `false`.
63
68
  - `provider.ssh_key_name`
64
- * A string representing the name to use when creating a Digital Ocean SSH key for droplet authentication. It defaults to `Vagrant`.
69
+ * A string representing the name to use when creating a DigitalOcean SSH key for droplet authentication. It defaults to `Vagrant`.
65
70
  - `provider.setup`
66
71
  * A boolean flag indicating whether to setup a new user account and modify sudo to disable tty requirement. It defaults to `true`. If you are using a tool like [Packer](https://packer.io) to create reusable snapshots with user accounts already provisioned, set to `false`.
67
72
  - `config.vm.synced_folder`
@@ -129,9 +134,10 @@ To release a new version of vagrant-digitalocean you will need to do the followi
129
134
 
130
135
  *(only contributors of the GitHub repo and owners of the project at RubyGems will have rights to do this)*
131
136
 
132
- 1. First, create a tag and push:
133
- * `git tag -a v0.7.6 -m 'v0.7.6'`
134
- 2. Then, create a release on Github with the same versioning convention:
137
+ 1. First, bump the version in ~/lib/vagrant-digitalocean/version.rb:
138
+ * Follow [Semantic Versioning](http://semver.org/).
139
+ 2. Then, create a matching GitHub Release (this will also create a tag):
140
+ * Preface the version number with a `v`.
135
141
  * https://github.com/smdahlen/vagrant-digitalocean/releases
136
142
  3. You will then need to build and push the new gem to RubyGems:
137
143
  * `rake gem:build`
@@ -1,6 +1,7 @@
1
1
  require 'vagrant-digitalocean/actions/check_state'
2
2
  require 'vagrant-digitalocean/actions/create'
3
3
  require 'vagrant-digitalocean/actions/destroy'
4
+ require 'vagrant-digitalocean/actions/shut_down'
4
5
  require 'vagrant-digitalocean/actions/power_off'
5
6
  require 'vagrant-digitalocean/actions/power_on'
6
7
  require 'vagrant-digitalocean/actions/rebuild'
@@ -112,7 +113,11 @@ module VagrantPlugins
112
113
  builder.use Call, CheckState do |env, b|
113
114
  case env[:machine_state]
114
115
  when :active
115
- b.use PowerOff
116
+ if env[:force_halt]
117
+ b.use PowerOff
118
+ else
119
+ b.use ShutDown
120
+ end
116
121
  when :off
117
122
  env[:ui].info I18n.t('vagrant_digital_ocean.info.already_off')
118
123
  when :not_created
@@ -15,15 +15,11 @@ module VagrantPlugins
15
15
  end
16
16
 
17
17
  def call(env)
18
- # look up image id
19
- image_id = @client
20
- .request('/v2/images')
21
- .find_id(:images, :slug => @machine.provider_config.image)
22
18
 
23
19
  # submit rebuild request
24
20
  result = @client.post("/v2/droplets/#{@machine.id}/actions", {
25
21
  :type => 'rebuild',
26
- :image => image_id
22
+ :image => @machine.provider_config.image
27
23
  })
28
24
 
29
25
  # wait for request to complete
@@ -0,0 +1,33 @@
1
+ require 'vagrant-digitalocean/helpers/client'
2
+
3
+ module VagrantPlugins
4
+ module DigitalOcean
5
+ module Actions
6
+ class ShutDown
7
+ include Helpers::Client
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ @machine = env[:machine]
12
+ @client = client
13
+ @logger = Log4r::Logger.new('vagrant::digitalocean::shut_down')
14
+ end
15
+
16
+ def call(env)
17
+ # submit shutdown droplet request
18
+ result = @client.request("/droplets/#{@machine.id}/shutdown")
19
+
20
+ # wait for request to complete
21
+ env[:ui].info I18n.t('vagrant_digital_ocean.info.shutting_down')
22
+ @client.wait_for_event(env, result['event_id'])
23
+
24
+ # refresh droplet state with provider
25
+ Provider.droplet(@machine, :refresh => true)
26
+
27
+ @app.call(env)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+
@@ -6,7 +6,7 @@ module VagrantPlugins
6
6
  module Commands
7
7
  class List < Vagrant.plugin('2', :command)
8
8
  def self.synopsis
9
- "list available images and regions from Digital Ocean"
9
+ "list available images and regions from DigitalOcean"
10
10
  end
11
11
 
12
12
  def execute
@@ -4,6 +4,12 @@ module VagrantPlugins
4
4
  module DigitalOcean
5
5
  module Commands
6
6
  class Rebuild < Vagrant.plugin('2', :command)
7
+
8
+ # Show description when `vagrant list-commands` is triggered
9
+ def self.synopsis
10
+ "plugin: vagrant-digitalocean: destroys and ups the vm with the same ip address"
11
+ end
12
+
7
13
  def execute
8
14
  opts = OptionParser.new do |o|
9
15
  o.banner = 'Usage: vagrant rebuild [vm-name]'
@@ -57,7 +57,7 @@ module VagrantPlugins
57
57
  })
58
58
  end
59
59
 
60
- { 'Digital Ocean Provider' => errors }
60
+ { 'DigitalOcean Provider' => errors }
61
61
  end
62
62
  end
63
63
  end
@@ -5,7 +5,7 @@ module VagrantPlugins
5
5
  class Provider < Vagrant.plugin('2', :provider)
6
6
 
7
7
  # This class method caches status for all droplets within
8
- # the Digital Ocean account. A specific droplet's status
8
+ # the DigitalOcean account. A specific droplet's status
9
9
  # may be refreshed by passing :refresh => true as an option.
10
10
  def self.droplet(machine, opts = {})
11
11
  client = Helpers::ApiClient.new(machine)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module DigitalOcean
3
- VERSION = '0.7.7'
3
+ VERSION = '0.7.8'
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -9,6 +9,7 @@ en:
9
9
  droplet_ip: "Assigned IP address: %{ip}"
10
10
  droplet_private_ip: "Private IP address: %{ip}"
11
11
  destroying: "Destroying the droplet..."
12
+ shutting_down: "Shutting down the droplet..."
12
13
  powering_off: "Powering off the droplet..."
13
14
  powering_on: "Powering on the droplet..."
14
15
  rebuilding: "Rebuilding the droplet..."
@@ -24,7 +25,7 @@ en:
24
25
  images_with_regions: "Description Slug ID Regions\n\n%{images}"
25
26
  regions: "Description Slug\n\n%{regions}"
26
27
  sizes: "Memory CPUs Slug\n\n%{sizes}"
27
- list_error: 'Could not contact the Digital Ocean API: %{message}'
28
+ list_error: 'Could not contact the DigitalOcean API: %{message}'
28
29
  config:
29
30
  token: "Token is required"
30
31
  private_key: "SSH private key path is required"
@@ -37,7 +38,7 @@ en:
37
38
 
38
39
  Please check the file's permissions.
39
40
  api_status: |-
40
- There was an issue with the request made to the Digital Ocean
41
+ There was an issue with the request made to the DigitalOcean
41
42
  API at:
42
43
 
43
44
  Path: %{path}
@@ -55,7 +56,7 @@ en:
55
56
  Guest path: %{guestpath}
56
57
  Error: %{stderr}
57
58
  json: |-
58
- There was an issue with the JSON response from the Digital Ocean
59
+ There was an issue with the JSON response from the DigitalOcean
59
60
  API at:
60
61
 
61
62
  Path: %{path}
@@ -74,7 +75,7 @@ en:
74
75
 
75
76
  Please ensure that the configured value exists in the collection.
76
77
  certificate: |-
77
- The secure connection to the Digital Ocean API has failed. Please
78
+ The secure connection to the DigitalOcean API has failed. Please
78
79
  ensure that your local certificates directory is defined in the
79
80
  provider config.
80
81
 
@@ -86,4 +87,4 @@ en:
86
87
  with the Ruby install being unaware of the system specific ca
87
88
  certs.
88
89
  local_ip: |-
89
- The Digital Ocean provider was unable to determine the host's IP.
90
+ The DigitalOcean provider was unable to determine the host's IP.
@@ -6,9 +6,9 @@ require 'vagrant-digitalocean/version'
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "vagrant-digitalocean"
8
8
  gem.version = VagrantPlugins::DigitalOcean::VERSION
9
- gem.authors = ["John Bender"]
10
- gem.email = ["john.m.bender@gmail.com"]
11
- gem.description = %q{Enables Vagrant to manage Digital Ocean droplets}
9
+ gem.authors = ["John Bender","Seth Reeser"]
10
+ gem.email = ["john.m.bender@gmail.com","info@devopsgroup.io"]
11
+ gem.description = %q{Enables Vagrant to manage DigitalOcean droplets}
12
12
  gem.summary = gem.description
13
13
 
14
14
  gem.files = `git ls-files`.split($/)
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-digitalocean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: 0.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Bender
8
+ - Seth Reeser
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-07-27 00:00:00.000000000 Z
12
+ date: 2015-10-07 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
@@ -52,15 +53,15 @@ dependencies:
52
53
  - - ">="
53
54
  - !ruby/object:Gem::Version
54
55
  version: '0'
55
- description: Enables Vagrant to manage Digital Ocean droplets
56
+ description: Enables Vagrant to manage DigitalOcean droplets
56
57
  email:
57
58
  - john.m.bender@gmail.com
59
+ - info@devopsgroup.io
58
60
  executables: []
59
61
  extensions: []
60
62
  extra_rdoc_files: []
61
63
  files:
62
64
  - ".gitignore"
63
- - CHANGELOG.md
64
65
  - Gemfile
65
66
  - LICENSE.txt
66
67
  - README.md
@@ -80,6 +81,7 @@ files:
80
81
  - lib/vagrant-digitalocean/actions/setup_key.rb
81
82
  - lib/vagrant-digitalocean/actions/setup_sudo.rb
82
83
  - lib/vagrant-digitalocean/actions/setup_user.rb
84
+ - lib/vagrant-digitalocean/actions/shut_down.rb
83
85
  - lib/vagrant-digitalocean/actions/sync_folders.rb
84
86
  - lib/vagrant-digitalocean/commands/list.rb
85
87
  - lib/vagrant-digitalocean/commands/rebuild.rb
@@ -120,7 +122,7 @@ rubyforge_project:
120
122
  rubygems_version: 2.4.6
121
123
  signing_key:
122
124
  specification_version: 4
123
- summary: Enables Vagrant to manage Digital Ocean droplets
125
+ summary: Enables Vagrant to manage DigitalOcean droplets
124
126
  test_files:
125
127
  - test/Vagrantfile
126
128
  - test/cookbooks/test/recipes/default.rb
data/CHANGELOG.md DELETED
@@ -1,8 +0,0 @@
1
- Changelog
2
- =========
3
-
4
- 0.5.1
5
- -----
6
- - added confirmation for `vagrant destroy` [tmatilai]
7
- - added `ProvisionerCleanup` middleware to destroy action [tmatilai]
8
- - fixed break from destroy action [tmatilai]