vagrant-rackspace 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZThhZmFmOTgyYjFhYmJjZGQzYjBmMTU2OGIwNGEwODg0OGMxOTk3YQ==
4
+ MzA0YzJmYjA0ZTg4OTU4YmJjOWU3ZjMwNTU1YzNkYWM4NDA2OTI3MA==
5
5
  data.tar.gz: !binary |-
6
- MmNkY2MzYWU1MzJlYzEyNjAwODc3YmRhYzQ3MjBmMGEwNTAzZjYzMQ==
6
+ YjE5MDEyNGQ3NmZiZjg2NTVjYWVhOGI3MGE4YTkzODFjMjJjODE0MA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YjU2MmM5NGU3MmU1ZjZiMWU4N2JhYjAzNDkyOWZhNjE4ODA2Y2ViZmQ2NDM3
10
- YjcwZTRmZmI5NTg1MWQ2MzJhMjYwYWI2YjRhMjU4MWI1YWFhMWIwNzBkNDhm
11
- NWFjNmJhZDgzODk2MjJiN2VjMzlmYmE2ZGVjMDIwYTAwMmUzN2M=
9
+ NmJiZTg2MDJkNTBlNjRjMDc2NjE3ZjZiOTg0N2MwZTUwN2VhYWZjYzY0M2Fl
10
+ ODQxNzRkNjNjOWZkOTNhOTVlNzM1NmJmNzFlOTUzZTAxNzhhZTMwMTQ4YjE2
11
+ OTc0YWViN2EyODc1NjcyMDBjOTIyOWM5ZDMzNTNlZWFkYjliMDI=
12
12
  data.tar.gz: !binary |-
13
- NjkxMzcwOGVjODFiYTNhNjViODA0NGUwZWI2ODYwZGQwY2MyNzgzYjY0YmQz
14
- MmRkMjQyMjk0ODc0NzAzYWI2NzE3OTM1ZTcyODExZDg0OWFkYzU3ZjcwM2Fj
15
- Yjc0MDM3NjczYWExZDUyMGNjMDA4YTFjMTI0NTUxY2Q0OTM2YWM=
13
+ Y2FiMjc4OGQ1YTA3YzY3NTQ4M2Y4ZTc3N2YyOTA4ODFmYTRjY2ZlMDkxN2M4
14
+ OGNiZmY1ZTQ2ODZjYjYxODQzNmQyMWQzMmNkMjg2YmI1MDQwMDNhMmI0Yzhl
15
+ NjMwZTM4ODRmYmYwMmQ5MTk2ZmY4OTRjMTVkNzFmYzQ4MjJmNjg=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 0.1.3 (September 6, 2013)
2
+
3
+
4
+ IMPROVEMENTS:
5
+
6
+ - Adds ability to specify authentication endpoint; Support for UK Cloud! [GH-32]
7
+ - Adds ability to specify disk configuration (disk_conf) [GH-33]
8
+
1
9
  # 0.1.2 (August 22, 2013)
2
10
 
3
11
  FEATURES:
data/README.md CHANGED
@@ -91,9 +91,11 @@ This provider exposes quite a few provider-specific configuration options:
91
91
  exact ID or name of the image, or this can be a regular expression to
92
92
  partially match some image.
93
93
  * `rackspace_region` - The region to hit. By default this is :dfw. Valid options are:
94
- :dfw, :ord, :lon. User this OR rackspace_compute_url
94
+ :dfw, :ord, :lon, :iad, :syd. Users should preference using this setting over `rackspace_compute_url` setting.
95
95
  * `rackspace_compute_url` - The compute_url to hit. This is good for custom endpoints.
96
- Use this OR rackspace_region.
96
+ * `rackspace_auth_url` - The endpoint to authentication against. By default, vagrant will use the global
97
+ rackspace authentication endpoint for all regions with the exception of :lon. IF :lon region is specified
98
+ vagrant will authenticate against the UK authentication endpoint.
97
99
  * `public_key_path` - The path to a public key to initialize with the remote
98
100
  server. This should be the matching pair for the private key configured
99
101
  with `config.ssh.private_key_path` on Vagrant.
@@ -101,6 +103,7 @@ Use this OR rackspace_region.
101
103
  defaults to the name of the Vagrant machine (via `config.vm.define`), but
102
104
  can be overridden with this.
103
105
  * `username` - The username with which to access Rackspace.
106
+ * `disk_config` - Disk Configuration 'AUTO' or 'MANUAL'
104
107
 
105
108
  These can be set like typical provider-specific configuration:
106
109
 
@@ -19,25 +19,23 @@ module VagrantPlugins
19
19
  api_key = config.api_key
20
20
  username = config.username
21
21
 
22
- if config.rackspace_compute_url.nil? then
23
- @logger.info("Connecting to Rackspace region...")
24
- env[:rackspace_compute] = Fog::Compute.new({
25
- :provider => :rackspace,
26
- :version => :v2,
27
- :rackspace_api_key => api_key,
28
- :rackspace_region => config.rackspace_region,
29
- :rackspace_username => username
30
- })
22
+ params = {
23
+ :provider => :rackspace,
24
+ :version => :v2,
25
+ :rackspace_api_key => api_key,
26
+ :rackspace_username => username,
27
+ :rackspace_auth_url => config.rackspace_auth_url
28
+ }
29
+
30
+ if config.rackspace_compute_url
31
+ @logger.info("Connecting to Rackspace compute_url...")
32
+ params[:rackspace_compute_url] = config.rackspace_compute_url
31
33
  else
32
- @logger.info("Connecting to Rackspace compute_url...")
33
- env[:rackspace_compute] = Fog::Compute.new({
34
- :provider => :rackspace,
35
- :version => :v2,
36
- :rackspace_api_key => api_key,
37
- :rackspace_compute_url => config.rackspace_compute_url,
38
- :rackspace_username => username
39
- })
40
- end
34
+ @logger.info("Connecting to Rackspace region...")
35
+ params[:rackspace_region] = config.rackspace_region
36
+ end
37
+
38
+ env[:rackspace_compute] = Fog::Compute.new params
41
39
 
42
40
  @app.call(env)
43
41
  end
@@ -44,6 +44,7 @@ module VagrantPlugins
44
44
  env[:ui].info(I18n.t("vagrant_rackspace.launching_server"))
45
45
  env[:ui].info(" -- Flavor: #{flavor.name}")
46
46
  env[:ui].info(" -- Image: #{image.name}")
47
+ env[:ui].info(" -- Disk Config: #{config.disk_config}") if config.disk_config
47
48
  env[:ui].info(" -- Name: #{server_name}")
48
49
 
49
50
  # Build the options for launching...
@@ -58,6 +59,7 @@ module VagrantPlugins
58
59
  }
59
60
  ]
60
61
  }
62
+ options[:disk_config] = config.disk_config if config.disk_config
61
63
 
62
64
  # Create the server
63
65
  server = env[:rackspace_compute].servers.create(options)
@@ -1,4 +1,5 @@
1
1
  require "vagrant"
2
+ require "fog"
2
3
 
3
4
  module VagrantPlugins
4
5
  module Rackspace
@@ -14,7 +15,7 @@ module VagrantPlugins
14
15
  #
15
16
  # expected to be a symbol - :dfw (default), :ord, :lon
16
17
  #
17
- # use this OR rackspace_compute_url
18
+ # Users should preference the rackspace_region setting over rackspace_compute_url
18
19
  attr_accessor :rackspace_region
19
20
 
20
21
  # The compute_url to access RackSpace. If nil, it will default
@@ -31,9 +32,14 @@ module VagrantPlugins
31
32
  # Fog::Compute::RackspaceV2::ORD_ENDPOINT
32
33
  # Fog::Compute::RackspaceV2::LON_ENDPOINT
33
34
  #
34
- # use this OR rackspace_region
35
+ # Users should preference the rackspace_region setting over rackspace_compute_url
35
36
  attr_accessor :rackspace_compute_url
36
37
 
38
+ # The authenication endpoint. This defaults to Rackspace's global authentication endpoint.
39
+ # Users of the London data center should specify the following:
40
+ # https://lon.identity.api.rackspacecloud.com/v2.0
41
+ attr_writer :rackspace_auth_url
42
+
37
43
  # The flavor of server to launch, either the ID or name. This
38
44
  # can also be a regular expression to partially match a name.
39
45
  attr_accessor :flavor
@@ -63,33 +69,59 @@ module VagrantPlugins
63
69
  # @return [String]
64
70
  attr_accessor :username
65
71
 
72
+ # The disk configuration value.
73
+ # * AUTO - The server is built with a single partition the size of the target flavor disk. The file system is automatically adjusted to fit the entire partition.
74
+ # This keeps things simple and automated. AUTO is valid only for images and servers with a single partition that use the EXT3 file system.
75
+ # This is the default setting for applicable Rackspace base images.
76
+ #
77
+ # * MANUAL - The server is built using whatever partition scheme and file system is in the source image. If the target flavor disk is larger,
78
+ # the remaining disk space is left unpartitioned. This enables images to have non-EXT3 file systems, multiple partitions,
79
+ # and so on, and enables you to manage the disk configuration.
80
+ #
81
+ # This defaults to MANUAL
82
+ attr_accessor :disk_config
83
+
66
84
  def initialize
67
85
  @api_key = UNSET_VALUE
68
86
  @rackspace_region = UNSET_VALUE
69
87
  @rackspace_compute_url = UNSET_VALUE
88
+ @rackspace_auth_url = UNSET_VALUE
70
89
  @flavor = UNSET_VALUE
71
90
  @image = UNSET_VALUE
72
91
  @public_key_path = UNSET_VALUE
73
92
  @rackconnect = UNSET_VALUE
74
93
  @server_name = UNSET_VALUE
75
94
  @username = UNSET_VALUE
95
+ @disk_config = UNSET_VALUE
76
96
  end
77
97
 
78
98
  def finalize!
79
99
  @api_key = nil if @api_key == UNSET_VALUE
80
100
  @rackspace_region = nil if @rackspace_region == UNSET_VALUE
81
101
  @rackspace_compute_url = nil if @rackspace_compute_url == UNSET_VALUE
102
+ @rackspace_auth_url = nil if @rackspace_auth_url == UNSET_VALUE
82
103
  @flavor = /512MB/ if @flavor == UNSET_VALUE
83
104
  @image = /Ubuntu/ if @image == UNSET_VALUE
84
- @rackconnect = false if @rackconnect == UNSET_VALUE
105
+ @rackconnect = nil if @rackconnect == UNSET_VALUE
85
106
  @server_name = nil if @server_name == UNSET_VALUE
86
107
  @username = nil if @username == UNSET_VALUE
108
+ @disk_config = nil if @disk_config == UNSET_VALUE
87
109
 
88
110
  if @public_key_path == UNSET_VALUE
89
111
  @public_key_path = Vagrant.source_root.join("keys/vagrant.pub")
90
112
  end
91
113
  end
92
114
 
115
+ # @note Currently, you must authenticate against the UK authenication endpoint to access the London Data center.
116
+ # Hopefully this method makes the experience more seemless for users of the UK cloud.
117
+ def rackspace_auth_url
118
+ if (@rackspace_auth_url.nil? || @rackspace_auth_url == UNSET_VALUE) && lon_region?
119
+ Fog::Rackspace::UK_AUTH_ENDPOINT
120
+ else
121
+ @rackspace_auth_url
122
+ end
123
+ end
124
+
93
125
  def validate(machine)
94
126
  errors = []
95
127
 
@@ -103,6 +135,12 @@ module VagrantPlugins
103
135
 
104
136
  { "RackSpace Provider" => errors }
105
137
  end
138
+
139
+ private
140
+
141
+ def lon_region?
142
+ rackspace_region && rackspace_region != UNSET_VALUE && rackspace_region.to_sym == :lon
143
+ end
106
144
  end
107
145
  end
108
146
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Rackspace
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
@@ -1,4 +1,5 @@
1
1
  require "vagrant-rackspace/config"
2
+ require 'fog'
2
3
 
3
4
  describe VagrantPlugins::Rackspace::Config do
4
5
  describe "defaults" do
@@ -13,23 +14,27 @@ describe VagrantPlugins::Rackspace::Config do
13
14
  its(:api_key) { should be_nil }
14
15
  its(:rackspace_region) { should be_nil }
15
16
  its(:rackspace_compute_url) { should be_nil }
17
+ its(:rackspace_auth_url) { should be_nil }
16
18
  its(:flavor) { should eq(/512MB/) }
17
19
  its(:image) { should eq(/Ubuntu/) }
18
20
  its(:public_key_path) { should eql(vagrant_public_key) }
19
21
  its(:rackconnect) { should be_nil }
20
22
  its(:server_name) { should be_nil }
21
23
  its(:username) { should be_nil }
24
+ its(:disk_config) { should be_nil }
22
25
  end
23
26
 
24
27
  describe "overriding defaults" do
25
28
  [:api_key,
26
29
  :rackspace_region,
27
30
  :rackspace_compute_url,
31
+ :rackspace_auth_url,
28
32
  :flavor,
29
33
  :image,
30
34
  :public_key_path,
31
35
  :rackconnect,
32
36
  :server_name,
37
+ :disk_config,
33
38
  :username].each do |attribute|
34
39
  it "should not default #{attribute} if overridden" do
35
40
  subject.send("#{attribute}=".to_sym, "foo")
@@ -66,4 +71,53 @@ describe VagrantPlugins::Rackspace::Config do
66
71
  it "should error if not given"
67
72
  end
68
73
  end
74
+
75
+ describe "rackspace_auth_url" do
76
+ it "should return UNSET_VALUE if rackspace_auth_url and rackspace_region are UNSET" do
77
+ subject.rackspace_auth_url.should == VagrantPlugins::Rackspace::Config::UNSET_VALUE
78
+ end
79
+ it "should return UNSET_VALUE if rackspace_auth_url is UNSET and rackspace_region is :ord" do
80
+ subject.rackspace_region = :ord
81
+ subject.rackspace_auth_url.should == VagrantPlugins::Rackspace::Config::UNSET_VALUE
82
+ end
83
+ it "should return UK Authentication endpoint if rackspace_auth_url is UNSET and rackspace_region is :lon" do
84
+ subject.rackspace_region = :lon
85
+ subject.rackspace_auth_url.should == Fog::Rackspace::UK_AUTH_ENDPOINT
86
+ end
87
+ it "should return custom endpoint if supplied and rackspace_region is :lon" do
88
+ my_endpoint = 'http://custom-endpoint.com'
89
+ subject.rackspace_region = :lon
90
+ subject.rackspace_auth_url = my_endpoint
91
+ subject.rackspace_auth_url.should == my_endpoint
92
+ end
93
+ it "should return custom endpoint if supplied and rackspace_region is UNSET" do
94
+ my_endpoint = 'http://custom-endpoint.com'
95
+ subject.rackspace_auth_url = my_endpoint
96
+ subject.rackspace_auth_url.should == my_endpoint
97
+ end
98
+ end
99
+
100
+
101
+ describe "lon_region?" do
102
+ it "should return false if rackspace_region is UNSET_VALUE" do
103
+ subject.rackspace_region = VagrantPlugins::Rackspace::Config::UNSET_VALUE
104
+ subject.send(:lon_region?).should be_false
105
+ end
106
+ it "should return false if rackspace_region is nil" do
107
+ subject.rackspace_region = nil
108
+ subject.send(:lon_region?).should be_false
109
+ end
110
+ it "should return false if rackspace_region is :ord" do
111
+ subject.rackspace_region = :ord
112
+ subject.send(:lon_region?).should be_false
113
+ end
114
+ it "should return true if rackspace_region is 'lon'" do
115
+ subject.rackspace_region = 'lon'
116
+ subject.send(:lon_region?).should be_true
117
+ end
118
+ it "should return true if rackspace_Region is :lon" do
119
+ subject.rackspace_region = :lon
120
+ subject.send(:lon_region?).should be_true
121
+ end
122
+ end
69
123
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
12
12
  gem.summary = "Enables Vagrant to manage machines in RackSpace Cloud."
13
13
  gem.homepage = "http://www.vagrantup.com"
14
14
 
15
- gem.add_runtime_dependency "fog", "~> 1.10.0"
15
+ gem.add_runtime_dependency "fog", "~> 1.15.0"
16
16
 
17
17
  gem.add_development_dependency "rake"
18
18
  gem.add_development_dependency "rspec", "~> 2.13.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-rackspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitchell Hashimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-22 00:00:00.000000000 Z
11
+ date: 2013-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.10.0
19
+ version: 1.15.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 1.10.0
26
+ version: 1.15.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement