vagrant-digitalocean 0.7.7 → 0.7.8

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