vagrant-openstack-plugin 0.10.0 → 0.11.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6715c22f8c8ed79285aac9b2c9b0ea4183518686
|
4
|
+
data.tar.gz: 438166569c8bd01f0bacb6f461615982589f8dd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d53204d935f19cd2235f8e9685b91bcba58913f525a1aac21192fd3de1e124ee03dfe99d38124957ba3aeceb1fe4e02ca6a31962944d29b57a445e4ab68371d3
|
7
|
+
data.tar.gz: 5a64045bcdc12873cc02abcbd23e5016b105466f6609d5a16f67cfc0b579166458b12f89a0aacb7e214d931718da66ca0beded54cb338c119ab41f9008fedbcc
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# Changelog for vagrant-openstack-plugin
|
2
2
|
|
3
|
+
## 0.11.0
|
4
|
+
|
5
|
+
- Merge pull request #97 from cbaenziger/issue_96_fix [view commit](http://github.com///commit/36295904ffb65d7461870a97e561c470fdedbbe5)
|
6
|
+
- Merge pull request #95 from cbaenziger/volume_support [view commit](http://github.com///commit/3d3fb8d6ae3b3115abea725820ac4a205c814070)
|
7
|
+
- Retry server deletes until we are sure the VM is dead -- only then remove IP's and volumes [view commit](http://github.com///commit/8799e70521a4ad4c4d1a5aa2a3ea42b83c042c38)
|
8
|
+
- Update README for more volume related material [view commit](http://github.com///commit/c0e6e0afae67a1e63095f917d50b7c3aa3655547)
|
9
|
+
- Fix to prevent stack trace failing to find VM, if destroying a non-existant VM [view commit](http://github.com///commit/7632b70a9f2c5af3a6d46a31b2ce4beb1bc9217b)
|
10
|
+
- Use same check as connect.rb for Vagrantfile disks section [view commit](http://github.com///commit/bd440fbacd7abc7914629431edd74e73cad71f95)
|
11
|
+
- Fix issue finding volumes if running vagrant destroy after server is destroyed [view commit](http://github.com///commit/8629390d724cdaa611504121bca64690e191cdba)
|
12
|
+
|
3
13
|
## 0.10.0
|
4
14
|
|
5
15
|
- Merge pull request #84 from cbaenziger/volume_support [view commit](http://github.com///commit/fc613a49cb5b2fecf2255d3050d1bff68956735d)
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@ This plugin started as a fork of the Vagrant RackSpace provider.
|
|
15
15
|
* SSH into the instances.
|
16
16
|
* Provision the instances with any built-in Vagrant provisioner.
|
17
17
|
* Minimal synced folder support via `rsync`.
|
18
|
+
* Creation and destruction of volumes with VM
|
18
19
|
|
19
20
|
## Usage
|
20
21
|
|
@@ -80,8 +81,8 @@ Vagrant.configure("2") do |config|
|
|
80
81
|
os.floating_ip_pool = "public" # optional (The floating IP pool to allocate addresses from, if floating_ip = :auto)
|
81
82
|
|
82
83
|
os.disks = [ # optional
|
83
|
-
{"name" => "volume_name_here", "description" => "
|
84
|
-
{"name" => "volume_name_here", "description" => "
|
84
|
+
{"name" => "volume_name_here", "description" => "A 10GB Volume", "size" => 10},
|
85
|
+
{"name" => "volume_name_here", "description" => "A 20GB Volume", "size" => 20}
|
85
86
|
]
|
86
87
|
|
87
88
|
os.orchestration_stack_name = 'stack01' # optional
|
@@ -167,6 +168,7 @@ This provider exposes quite a few provider-specific configuration options:
|
|
167
168
|
* `orchestration_cfn_template_parameters` - AWS CloudFormation Template
|
168
169
|
parameters specified in ruby hash (take a look at example Vagrantfile).
|
169
170
|
This parameter is optional.
|
171
|
+
* `disks` - Array of disk specifications to create or attach
|
170
172
|
|
171
173
|
These can be set like typical provider-specific configuration:
|
172
174
|
|
@@ -225,6 +227,7 @@ Take snapshot of ***vmname*** with name ***snapshotname***
|
|
225
227
|
- [Lull3rSkat3r](https://github.com/Lull3rSkat3r)
|
226
228
|
- [nicobrevin](https://github.com/nicobrevin)
|
227
229
|
- [ohnoimdead](https://github.com/ohnoimdead)
|
230
|
+
- [cbaenziger](https://github.com/cbaenziger)
|
228
231
|
|
229
232
|
## Development
|
230
233
|
|
@@ -143,7 +143,7 @@ module VagrantPlugins
|
|
143
143
|
|
144
144
|
# Process disks if provided
|
145
145
|
volumes = Array.new
|
146
|
-
if config.
|
146
|
+
if config.disks && !config.disks.empty?
|
147
147
|
env[:ui].info(I18n.t("vagrant_openstack.creating_disks"))
|
148
148
|
config.disks.each do |disk|
|
149
149
|
volume = env[:openstack_compute].volumes.all.find{|v| v.name ==
|
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'vagrant/util/retryable'
|
2
|
+
require 'timeout'
|
3
|
+
|
1
4
|
require "log4r"
|
2
5
|
|
3
6
|
module VagrantPlugins
|
@@ -5,6 +8,8 @@ module VagrantPlugins
|
|
5
8
|
module Action
|
6
9
|
# This deletes the running server, if there is one.
|
7
10
|
class DeleteServer
|
11
|
+
include Vagrant::Util::Retryable
|
12
|
+
|
8
13
|
def initialize(app, env)
|
9
14
|
@app = app
|
10
15
|
@logger = Log4r::Logger.new("vagrant_openstack::action::delete_server")
|
@@ -12,18 +17,41 @@ module VagrantPlugins
|
|
12
17
|
|
13
18
|
def call(env)
|
14
19
|
machine = env[:machine]
|
15
|
-
id = machine.id || env[:openstack_compute].servers.all( :name => machine.name ).
|
20
|
+
id = machine.id || (env[:openstack_compute].servers.all( :name => machine.name ).length == 1 and
|
21
|
+
env[:openstack_compute].servers.all( :name => machine.name ).first.id)
|
16
22
|
|
17
23
|
if id
|
18
|
-
volumes = env[:openstack_compute].servers.get(id).volume_attachments
|
19
|
-
|
20
24
|
env[:ui].info(I18n.t("vagrant_openstack.deleting_server"))
|
21
25
|
|
22
26
|
# TODO: Validate the fact that we get a server back from the API.
|
23
27
|
server = env[:openstack_compute].servers.get(id)
|
24
28
|
if server
|
29
|
+
# get volumes before destroying server
|
30
|
+
volumes = server.volume_attachments
|
31
|
+
|
25
32
|
ip = server.floating_ip_address
|
26
|
-
|
33
|
+
|
34
|
+
retryable(:on => Timeout::Error, :tries => 20) do
|
35
|
+
# If we're interrupted don't worry about waiting
|
36
|
+
next if env[:interrupted]
|
37
|
+
|
38
|
+
begin
|
39
|
+
server.destroy if server
|
40
|
+
status = Timeout::timeout(10) {
|
41
|
+
while server.reload
|
42
|
+
sleep(1)
|
43
|
+
end
|
44
|
+
}
|
45
|
+
rescue RuntimeError => e
|
46
|
+
# If we don't have an error about a state transition, then
|
47
|
+
# we just move on.
|
48
|
+
raise if e.message !~ /should have transitioned/
|
49
|
+
raise Errors::ServerNotDestroyed
|
50
|
+
rescue Fog::Compute::OpenStack::NotFound
|
51
|
+
# If we don't have a server anymore we should be done here just continue on
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
27
55
|
if machine.provider_config.floating_ip_pool
|
28
56
|
address = env[:openstack_compute].list_all_addresses.body["floating_ips"].find{|i| i["ip"] == ip}
|
29
57
|
if address
|
@@ -44,6 +72,8 @@ module VagrantPlugins
|
|
44
72
|
end
|
45
73
|
end
|
46
74
|
end
|
75
|
+
else
|
76
|
+
env[:ui].info(I18n.t("vagrant_openstack.not_created"))
|
47
77
|
end
|
48
78
|
|
49
79
|
@app.call(env)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-openstack-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edmund Haselwanter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog
|