vagrant-openstack-plugin 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -53,6 +53,9 @@ require 'vagrant-openstack-plugin'
53
53
  Vagrant.configure("2") do |config|
54
54
  config.vm.box = "dummy"
55
55
 
56
+ # Make sure the private key from the key pair is provided
57
+ config.ssh.private_key_path = "~/.ssh/id_rsa"
58
+
56
59
  config.vm.provider :openstack do |os| # e.g.
57
60
  os.username = "YOUR USERNAME" # "#{ENV['OS_USERNAME']}"
58
61
  os.api_key = "YOUR API KEY" # "#{ENV['OS_PASSWORD']}"
@@ -61,6 +64,12 @@ Vagrant.configure("2") do |config|
61
64
  os.endpoint = "KEYSTONE AUTH URL" # "#{ENV['OS_AUTH_URL']}/tokens"
62
65
  os.keypair_name = "YOUR KEYPAIR NAME"
63
66
  os.ssh_username = "SSH USERNAME"
67
+
68
+ os.metadata = {"key" => "value"} # Optional
69
+ os.network = "YOUR NETWORK_NAME" # Optional
70
+ os.security_groups = ['ssh', 'http'] # Optional
71
+ os.tenant = "YOUR TENANT_NAME" # Optional
72
+
64
73
  end
65
74
  end
66
75
  ```
@@ -103,7 +112,16 @@ This provider exposes quite a few provider-specific configuration options:
103
112
  can be overridden with this.
104
113
  * `username` - The username with which to access OpenStack.
105
114
  * `keypair_name` - The name of the keypair to access the machine.
106
- * `ssh_username` - The username to access the machine.
115
+ * `ssh_username` - The username to access the machine. This can also be
116
+ configured using the standard config.ssh.username configuration value.
117
+ * `metadata` - A set of key pair values that will be passed to the instance
118
+ for configuration.
119
+ * `network` - A name or id that will be used to fetch network configuration
120
+ data when configuring the instance. NOTE: This is not compliant with the
121
+ vagrant network configurations.
122
+ * `security_groups` - List of security groups to be applied to the machine.
123
+ * `tenant` - Tenant name. You only need to specify this if your OpenStack user has access to multiple tenants.
124
+
107
125
 
108
126
  These can be set like typical provider-specific configuration:
109
127
 
@@ -19,13 +19,15 @@ module VagrantPlugins
19
19
  api_key = config.api_key
20
20
  endpoint = config.endpoint
21
21
  username = config.username
22
+ tenant = config.tenant
22
23
 
23
24
  @logger.info("Connecting to OpenStack...")
24
25
  env[:openstack_compute] = Fog::Compute.new({
25
26
  :provider => :openstack,
26
27
  :openstack_username => username,
27
28
  :openstack_api_key => api_key,
28
- :openstack_auth_url => endpoint
29
+ :openstack_auth_url => endpoint,
30
+ :openstack_tenant => tenant
29
31
  })
30
32
 
31
33
  if config.network
@@ -32,12 +32,6 @@ module VagrantPlugins
32
32
  # Figure out the name for the server
33
33
  server_name = config.server_name || env[:machine].name
34
34
 
35
- # Output the settings we're going to use to the user
36
- env[:ui].info(I18n.t("vagrant_openstack.launching_server"))
37
- env[:ui].info(" -- Flavor: #{flavor.name}")
38
- env[:ui].info(" -- Image: #{image.name}")
39
- env[:ui].info(" -- Name: #{server_name}")
40
-
41
35
  # Build the options for launching...
42
36
  options = {
43
37
  :flavor_ref => flavor.id,
@@ -45,14 +39,28 @@ module VagrantPlugins
45
39
  :name => server_name,
46
40
  :key_name => config.keypair_name,
47
41
  :metadata => config.metadata,
48
- :user_data_encoded => Base64.encode64(config.user_data)
42
+ :user_data_encoded => Base64.encode64(config.user_data),
43
+ :security_groups => config.security_groups
49
44
  }
50
45
 
51
46
  # Find a network if provided
52
47
  if config.network
48
+ env[:ui].info(I18n.t("vagrant_openstack.finding_network"))
53
49
  network = find_matching(env[:openstack_network].networks, config.network)
54
50
  options[:nics] = [{"net_id" => network.id}] if network
55
51
  end
52
+
53
+ # Output the settings we're going to use to the user
54
+ env[:ui].info(I18n.t("vagrant_openstack.launching_server"))
55
+ env[:ui].info(" -- Flavor: #{flavor.name}")
56
+ env[:ui].info(" -- Image: #{image.name}")
57
+ env[:ui].info(" -- Name: #{server_name}")
58
+ if network
59
+ env[:ui].info(" -- Network: #{network.name}")
60
+ end
61
+ if config.security_groups
62
+ env[:ui].info(" -- Security Groups: #{config.security_groups}")
63
+ end
56
64
 
57
65
  # Create the server
58
66
  server = env[:openstack_compute].servers.create(options)
@@ -42,6 +42,12 @@ module VagrantPlugins
42
42
  # @return [String]
43
43
  attr_accessor :network
44
44
 
45
+ # List of strings representing the security groups to apply.
46
+ # e.g. ['ssh', 'http']
47
+ #
48
+ # @return [Array[String]]
49
+ attr_accessor :security_groups
50
+
45
51
  # The SSH username to use with this OpenStack instance. This overrides
46
52
  # the `config.ssh.username` variable.
47
53
  #
@@ -53,6 +59,11 @@ module VagrantPlugins
53
59
  # @return [Hash]
54
60
  attr_accessor :metadata
55
61
 
62
+ # The tenant to use.
63
+ #
64
+ # @return [String]
65
+ attr_accessor :tenant
66
+
56
67
  # User data to be sent to the newly created OpenStack instance. Use this
57
68
  # e.g. to inject a script at boot time.
58
69
  #
@@ -69,7 +80,9 @@ module VagrantPlugins
69
80
  @username = UNSET_VALUE
70
81
  @keypair_name = UNSET_VALUE
71
82
  @network = UNSET_VALUE
83
+ @security_groups = UNSET_VALUE
72
84
  @ssh_username = UNSET_VALUE
85
+ @tenant = UNSET_VALUE
73
86
  @user_data = UNSET_VALUE
74
87
  end
75
88
 
@@ -79,17 +92,20 @@ module VagrantPlugins
79
92
  @flavor = /m1.tiny/ if @flavor == UNSET_VALUE
80
93
  @image = /cirros/ if @image == UNSET_VALUE
81
94
  @server_name = nil if @server_name == UNSET_VALUE
82
- @metadata = {} if @metadata == UNSET_VALUE
95
+ @metadata = nil if @metadata == UNSET_VALUE
83
96
  @username = nil if @username == UNSET_VALUE
84
97
  @network = nil if @network == UNSET_VALUE
85
98
 
86
99
  # Keypair defaults to nil
87
100
  @keypair_name = nil if @keypair_name == UNSET_VALUE
88
-
101
+
102
+ @security_groups = nil if @security_groups == UNSET_VALUE
103
+
89
104
  # The SSH values by default are nil, and the top-level config
90
105
  # `config.ssh` values are used.
91
106
  @ssh_username = nil if @ssh_username == UNSET_VALUE
92
-
107
+
108
+ @tenant = nil if @tenant == UNSET_VALUE
93
109
  @user_data = "" if @user_data == UNSET_VALUE
94
110
  end
95
111
 
@@ -98,7 +114,6 @@ module VagrantPlugins
98
114
 
99
115
  errors << I18n.t("vagrant_openstack.config.api_key_required") if !@api_key
100
116
  errors << I18n.t("vagrant_openstack.config.username_required") if !@username
101
- errors << I18n.t("vagrant_openstack.config.metadata_must_be_hash") if !@metadata.is_a?(Hash)
102
117
 
103
118
  { "OpenStack Provider" => errors }
104
119
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module OpenStack
3
- VERSION = "0.1.3"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -8,6 +8,8 @@ en:
8
8
  Finding flavor for server...
9
9
  finding_image: |-
10
10
  Finding image for server...
11
+ finding_network: |-
12
+ Finding network for server...
11
13
  launching_server: |-
12
14
  Launching a server with the following settings...
13
15
  not_created: |-
@@ -19,6 +19,8 @@ describe VagrantPlugins::OpenStack::Config do
19
19
  its(:keypair_name) { should be_nil }
20
20
  its(:ssh_username) { should be_nil }
21
21
  its(:network) { should be_nil }
22
+ its(:security_groups) { should be_nil }
23
+ its(:tenant) { should be_nil }
22
24
  end
23
25
 
24
26
  describe "overriding defaults" do
@@ -30,7 +32,9 @@ describe VagrantPlugins::OpenStack::Config do
30
32
  :username,
31
33
  :keypair_name,
32
34
  :network,
33
- :ssh_username].each do |attribute|
35
+ :ssh_username,
36
+ :security_groups,
37
+ :tenant].each do |attribute|
34
38
  it "should not default #{attribute} if overridden" do
35
39
  subject.send("#{attribute}=".to_sym, "foo")
36
40
  subject.finalize!
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.1.3
4
+ version: 0.2.0
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-04-26 00:00:00.000000000 Z
13
+ date: 2013-05-02 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: -4139560228461145832
114
+ hash: -1985565957385980271
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: -4139560228461145832
123
+ hash: -1985565957385980271
124
124
  requirements: []
125
125
  rubyforge_project:
126
126
  rubygems_version: 1.8.24