vagrant-openstack-plugin 0.2.0 → 0.2.1

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.
data/README.md CHANGED
@@ -64,9 +64,12 @@ Vagrant.configure("2") do |config|
64
64
  os.endpoint = "KEYSTONE AUTH URL" # "#{ENV['OS_AUTH_URL']}/tokens"
65
65
  os.keypair_name = "YOUR KEYPAIR NAME"
66
66
  os.ssh_username = "SSH USERNAME"
67
-
68
67
  os.metadata = {"key" => "value"} # Optional
69
68
  os.network = "YOUR NETWORK_NAME" # Optional
69
+ os.address_id = "YOUR ADDRESS ID" # Optional (`network` above has higher precedence)
70
+ os.scheduler_hints = {
71
+ :cell => 'australia'
72
+ } # Optional
70
73
  os.security_groups = ['ssh', 'http'] # Optional
71
74
  os.tenant = "YOUR TENANT_NAME" # Optional
72
75
 
@@ -119,6 +122,9 @@ This provider exposes quite a few provider-specific configuration options:
119
122
  * `network` - A name or id that will be used to fetch network configuration
120
123
  data when configuring the instance. NOTE: This is not compliant with the
121
124
  vagrant network configurations.
125
+ * `address_id` - A specific address identifier to use when connecting to the
126
+ instance. `network` has higher precedence.
127
+ * `scheduler_hints` - Pass hints to the open stack scheduler, see `--hint` flag in [OpenStack filters doc](http://docs.openstack.org/trunk/openstack-compute/admin/content/scheduler-filters.html)
122
128
  * `security_groups` - List of security groups to be applied to the machine.
123
129
  * `tenant` - Tenant name. You only need to specify this if your OpenStack user has access to multiple tenants.
124
130
 
@@ -39,8 +39,9 @@ module VagrantPlugins
39
39
  :name => server_name,
40
40
  :key_name => config.keypair_name,
41
41
  :metadata => config.metadata,
42
- :user_data_encoded => Base64.encode64(config.user_data),
43
- :security_groups => config.security_groups
42
+ :user_data => config.user_data,
43
+ :security_groups => config.security_groups,
44
+ :os_scheduler_hints => config.scheduler_hints
44
45
  }
45
46
 
46
47
  # Find a network if provided
@@ -81,6 +82,12 @@ module VagrantPlugins
81
82
  # Wait for the server to be ready
82
83
  begin
83
84
  server.wait_for(5) { ready? }
85
+ # Once the server is up and running assign a floating IP if we have one
86
+ if config.floating_ip
87
+ env[:ui].info( "Using floating IP #{config.floating_ip}")
88
+ floater = env[:openstack_compute].addresses.find { |thisone| thisone.ip.eql? config.floating_ip }
89
+ floater.server = server
90
+ end
84
91
  rescue RuntimeError => e
85
92
  # If we don't have an error about a state transition, then
86
93
  # we just move on.
@@ -34,7 +34,7 @@ module VagrantPlugins
34
34
  if config.network
35
35
  host = server.addresses[config.network].last['addr'] rescue nil
36
36
  else
37
- host = server.addresses['public'].last['addr'] rescue nil
37
+ host = server.addresses[config.address_id].last['addr'] rescue nil
38
38
  end
39
39
  # Read the DNS info
40
40
  return {
@@ -42,6 +42,14 @@ module VagrantPlugins
42
42
  # @return [String]
43
43
  attr_accessor :network
44
44
 
45
+ # A specific address identifier to use when connecting.
46
+ # Overrides `network` above if both are set.
47
+ #
48
+ attr_accessor :address_id
49
+
50
+ # Pass hints to the OpenStack scheduler, e.g. { "cell": "some cell name" }
51
+ attr_accessor :scheduler_hints
52
+
45
53
  # List of strings representing the security groups to apply.
46
54
  # e.g. ['ssh', 'http']
47
55
  #
@@ -69,7 +77,11 @@ module VagrantPlugins
69
77
  #
70
78
  # @return [String]
71
79
  attr_accessor :user_data
72
-
80
+
81
+ # The floating IP address from the IP pool which will be assigned to the instance.
82
+ #
83
+ # @return [String]
84
+ attr_accessor :floating_ip
73
85
  def initialize
74
86
  @api_key = UNSET_VALUE
75
87
  @endpoint = UNSET_VALUE
@@ -80,10 +92,13 @@ module VagrantPlugins
80
92
  @username = UNSET_VALUE
81
93
  @keypair_name = UNSET_VALUE
82
94
  @network = UNSET_VALUE
95
+ @address_id = UNSET_VALUE
96
+ @scheduler_hints = UNSET_VALUE
83
97
  @security_groups = UNSET_VALUE
84
98
  @ssh_username = UNSET_VALUE
85
99
  @tenant = UNSET_VALUE
86
100
  @user_data = UNSET_VALUE
101
+ @floating_ip = UNSET_VALUE
87
102
  end
88
103
 
89
104
  def finalize!
@@ -95,10 +110,12 @@ module VagrantPlugins
95
110
  @metadata = nil if @metadata == UNSET_VALUE
96
111
  @username = nil if @username == UNSET_VALUE
97
112
  @network = nil if @network == UNSET_VALUE
113
+ @address_id = 'public' if @address_id == UNSET_VALUE
98
114
 
99
115
  # Keypair defaults to nil
100
116
  @keypair_name = nil if @keypair_name == UNSET_VALUE
101
117
 
118
+ @scheduler_hints = nil if @scheduler_hints == UNSET_VALUE
102
119
  @security_groups = nil if @security_groups == UNSET_VALUE
103
120
 
104
121
  # The SSH values by default are nil, and the top-level config
@@ -107,6 +124,7 @@ module VagrantPlugins
107
124
 
108
125
  @tenant = nil if @tenant == UNSET_VALUE
109
126
  @user_data = "" if @user_data == UNSET_VALUE
127
+ @floating_ip = nil if @floating_ip == UNSET_VALUE
110
128
  end
111
129
 
112
130
  def validate(machine)
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module OpenStack
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -20,6 +20,7 @@ describe VagrantPlugins::OpenStack::Config do
20
20
  its(:ssh_username) { should be_nil }
21
21
  its(:network) { should be_nil }
22
22
  its(:security_groups) { should be_nil }
23
+ its(:scheduler_hints) { should be_nil }
23
24
  its(:tenant) { should be_nil }
24
25
  end
25
26
 
@@ -34,6 +35,7 @@ describe VagrantPlugins::OpenStack::Config do
34
35
  :network,
35
36
  :ssh_username,
36
37
  :security_groups,
38
+ :scheduler_hints,
37
39
  :tenant].each do |attribute|
38
40
  it "should not default #{attribute} if overridden" do
39
41
  subject.send("#{attribute}=".to_sym, "foo")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-openstack-plugin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-02 00:00:00.000000000 Z
13
+ date: 2013-05-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: fog
@@ -111,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
111
  version: '0'
112
112
  segments:
113
113
  - 0
114
- hash: -1985565957385980271
114
+ hash: 515236456888934213
115
115
  required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  segments:
122
122
  - 0
123
- hash: -1985565957385980271
123
+ hash: 515236456888934213
124
124
  requirements: []
125
125
  rubyforge_project:
126
126
  rubygems_version: 1.8.24