vagrant-openstack-plugin 0.1.3 → 0.2.0

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
@@ -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