vagrant-rackspace 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZThhZmFmOTgyYjFhYmJjZGQzYjBmMTU2OGIwNGEwODg0OGMxOTk3YQ==
5
+ data.tar.gz: !binary |-
6
+ MmNkY2MzYWU1MzJlYzEyNjAwODc3YmRhYzQ3MjBmMGEwNTAzZjYzMQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YjU2MmM5NGU3MmU1ZjZiMWU4N2JhYjAzNDkyOWZhNjE4ODA2Y2ViZmQ2NDM3
10
+ YjcwZTRmZmI5NTg1MWQ2MzJhMjYwYWI2YjRhMjU4MWI1YWFhMWIwNzBkNDhm
11
+ NWFjNmJhZDgzODk2MjJiN2VjMzlmYmE2ZGVjMDIwYTAwMmUzN2M=
12
+ data.tar.gz: !binary |-
13
+ NjkxMzcwOGVjODFiYTNhNjViODA0NGUwZWI2ODYwZGQwY2MyNzgzYjY0YmQz
14
+ MmRkMjQyMjk0ODc0NzAzYWI2NzE3OTM1ZTcyODExZDg0OWFkYzU3ZjcwM2Fj
15
+ Yjc0MDM3NjczYWExZDUyMGNjMDA4YTFjMTI0NTUxY2Q0OTM2YWM=
data/.gitignore CHANGED
@@ -16,4 +16,5 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
- Vagrantfile
19
+
20
+ .idea/
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # 0.1.2 (August 22, 2013)
2
+
3
+ FEATURES:
4
+
5
+ - Add provision support [GH-16]
6
+
7
+ IMPROVEMENTS:
8
+
9
+ - Adds option to allow provisioning after RackConnect scripts complete. [GH-18]
10
+ - Remove Fog deprecation warnings [GH-11]
11
+ - Bypass rsync's StrictHostKeyCheck [GH-5]
12
+ - Make chown'ing of synced folder perms recursive (for ssh user) [GH-24]
13
+ - Use /cygdrive when rsyncing on Windows [GH-17]
14
+
15
+
1
16
  # 0.1.1 (March 18, 2013)
2
17
 
3
18
  * Up fog dependency for Vagrant 1.1.1
data/README.md CHANGED
@@ -90,7 +90,10 @@ This provider exposes quite a few provider-specific configuration options:
90
90
  * `image` - The server image to boot. This can be a string matching the
91
91
  exact ID or name of the image, or this can be a regular expression to
92
92
  partially match some image.
93
- * `endpoint` - The endpoint to hit. By default this is DFW.
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
95
+ * `rackspace_compute_url` - The compute_url to hit. This is good for custom endpoints.
96
+ Use this OR rackspace_region.
94
97
  * `public_key_path` - The path to a public key to initialize with the remote
95
98
  server. This should be the matching pair for the private key configured
96
99
  with `config.ssh.private_key_path` on Vagrant.
data/Vagrantfile ADDED
@@ -0,0 +1,122 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
5
+ VAGRANTFILE_API_VERSION = "2"
6
+
7
+ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
8
+ Vagrant.require_plugin "vagrant-rackspace"
9
+ # All Vagrant configuration is done here. The most common configuration
10
+ # options are documented and commented below. For a complete reference,
11
+ # please see the online documentation at vagrantup.com.
12
+
13
+ # Every Vagrant virtual environment requires a box to build off of.
14
+ config.vm.box = "dummy"
15
+ config.vm.provider :rackspace do |rs|
16
+ rs.username = ENV['RAX_USERNAME']
17
+ rs.api_key = ENV['RAX_API_KEY']
18
+ end
19
+ # The url from where the 'config.vm.box' box will be fetched if it
20
+ # doesn't already exist on the user's system.
21
+ # config.vm.box_url = "http://domain.com/path/to/above.box"
22
+
23
+ # Create a forwarded port mapping which allows access to a specific port
24
+ # within the machine from a port on the host machine. In the example below,
25
+ # accessing "localhost:8080" will access port 80 on the guest machine.
26
+ # config.vm.network :forwarded_port, guest: 80, host: 8080
27
+
28
+ # Create a private network, which allows host-only access to the machine
29
+ # using a specific IP.
30
+ # config.vm.network :private_network, ip: "192.168.33.10"
31
+
32
+ # Create a public network, which generally matched to bridged network.
33
+ # Bridged networks make the machine appear as another physical device on
34
+ # your network.
35
+ # config.vm.network :public_network
36
+
37
+ # If true, then any SSH connections made will enable agent forwarding.
38
+ # Default value: false
39
+ # config.ssh.forward_agent = true
40
+
41
+ # Share an additional folder to the guest VM. The first argument is
42
+ # the path on the host to the actual folder. The second argument is
43
+ # the path on the guest to mount the folder. And the optional third
44
+ # argument is a set of non-required options.
45
+ # config.vm.synced_folder "../data", "/vagrant_data"
46
+
47
+ # Provider-specific configuration so you can fine-tune various
48
+ # backing providers for Vagrant. These expose provider-specific options.
49
+ # Example for VirtualBox:
50
+ #
51
+ # config.vm.provider :virtualbox do |vb|
52
+ # # Don't boot with headless mode
53
+ # vb.gui = true
54
+ #
55
+ # # Use VBoxManage to customize the VM. For example to change memory:
56
+ # vb.customize ["modifyvm", :id, "--memory", "1024"]
57
+ # end
58
+ #
59
+ # View the documentation for the provider you're using for more
60
+ # information on available options.
61
+
62
+ # Enable provisioning with Puppet stand alone. Puppet manifests
63
+ # are contained in a directory path relative to this Vagrantfile.
64
+ # You will need to create the manifests directory and a manifest in
65
+ # the file base.pp in the manifests_path directory.
66
+ #
67
+ # An example Puppet manifest to provision the message of the day:
68
+ #
69
+ # # group { "puppet":
70
+ # # ensure => "present",
71
+ # # }
72
+ # #
73
+ # # File { owner => 0, group => 0, mode => 0644 }
74
+ # #
75
+ # # file { '/etc/motd':
76
+ # # content => "Welcome to your Vagrant-built virtual machine!
77
+ # # Managed by Puppet.\n"
78
+ # # }
79
+ #
80
+ # config.vm.provision :puppet do |puppet|
81
+ # puppet.manifests_path = "manifests"
82
+ # puppet.manifest_file = "init.pp"
83
+ # end
84
+
85
+ # Enable provisioning with chef solo, specifying a cookbooks path, roles
86
+ # path, and data_bags path (all relative to this Vagrantfile), and adding
87
+ # some recipes and/or roles.
88
+ #
89
+ # config.vm.provision :chef_solo do |chef|
90
+ # chef.cookbooks_path = "../my-recipes/cookbooks"
91
+ # chef.roles_path = "../my-recipes/roles"
92
+ # chef.data_bags_path = "../my-recipes/data_bags"
93
+ # chef.add_recipe "mysql"
94
+ # chef.add_role "web"
95
+ #
96
+ # # You may also specify custom JSON attributes:
97
+ # chef.json = { :mysql_password => "foo" }
98
+ # end
99
+
100
+ # Enable provisioning with chef server, specifying the chef server URL,
101
+ # and the path to the validation key (relative to this Vagrantfile).
102
+ #
103
+ # The Opscode Platform uses HTTPS. Substitute your organization for
104
+ # ORGNAME in the URL and validation key.
105
+ #
106
+ # If you have your own Chef Server, use the appropriate URL, which may be
107
+ # HTTP instead of HTTPS depending on your configuration. Also change the
108
+ # validation key to validation.pem.
109
+ #
110
+ # config.vm.provision :chef_client do |chef|
111
+ # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
112
+ # chef.validation_key_path = "ORGNAME-validator.pem"
113
+ # end
114
+ #
115
+ # If you're using the Opscode platform, your validator client is
116
+ # ORGNAME-validator, replacing ORGNAME with your organization name.
117
+ #
118
+ # If you have your own Chef Server, the default validation client name is
119
+ # chef-validator, unless you changed the configuration.
120
+ #
121
+ # chef.validation_client_name = "ORGNAME-validator"
122
+ end
@@ -0,0 +1,36 @@
1
+ @announce
2
+ @vagrant-rackspace
3
+ Feature: vagrant-rackspace fog tests
4
+
5
+ Background:
6
+ Given I have Rackspace credentials available
7
+ And I have a "fog_mock.rb" file
8
+
9
+ Scenario: Create a single server (with provisioning)
10
+ Given a file named "Vagrantfile" with:
11
+ """
12
+ Vagrant.configure("2") do |config|
13
+ Vagrant.require_plugin "vagrant-rackspace"
14
+
15
+ config.vm.box = "dummy"
16
+ config.ssh.private_key_path = "~/.ssh/id_rsa"
17
+ config.ssh.max_tries = 1
18
+ config.ssh.timeout = 10
19
+
20
+ config.vm.provider :rackspace do |rs|
21
+ rs.server_name = 'vagrant-provisioned-server'
22
+ rs.username = ENV['RAX_USERNAME']
23
+ rs.api_key = ENV['RAX_API_KEY']
24
+ rs.rackspace_region = ENV['RAX_REGION'].downcase.to_sym
25
+ rs.flavor = /512MB/
26
+ rs.image = /Ubuntu/
27
+ rs.public_key_path = "~/.ssh/id_rsa.pub"
28
+ end
29
+
30
+ config.vm.provision :shell, :inline => "echo Hello, World"
31
+ end
32
+ """
33
+ When I successfully run `bundle exec vagrant up --provider rackspace`
34
+ # I want to capture the ID like I do in tests for other tools, but Vagrant doesn't print it!
35
+ # And I get the server from "Instance ID:"
36
+ Then the server "vagrant-provisioned-server" should be active
@@ -0,0 +1,13 @@
1
+ Given(/^I have Rackspace credentials available$/) do
2
+ fail unless ENV['RAX_USERNAME'] && ENV['RAX_API_KEY']
3
+ end
4
+
5
+ Given(/^I have a "fog_mock.rb" file$/) do
6
+ script = File.open("features/support/fog_mock.rb").read
7
+ steps %Q{
8
+ Given a file named "fog_mock.rb" with:
9
+ """
10
+ #{script}
11
+ """
12
+ }
13
+ end
@@ -0,0 +1,25 @@
1
+ When(/^I get the server from "(.*?)"$/) do |label|
2
+ @server_id = all_output.match(/#{label}\s([\w-]*)/)[1]
3
+ puts "Server: #{@server_id}"
4
+ end
5
+
6
+ When(/^I load the server$/) do
7
+ @server_id = all_output.strip.lines.to_a.last
8
+ puts "Server: #{@server_id}"
9
+ end
10
+
11
+ Then(/^the server should be active$/) do
12
+ unless Fog.mock? # unfortunately we can't assert this with Fog.mock!, since mocked objects do not persist from the subprocess
13
+ assert_active @server_id
14
+ end
15
+ end
16
+
17
+ Then(/^the server "(.+)" should be active$/) do |server_name|
18
+ server = @compute.servers.all.find{|s| s.name == server_name}
19
+ assert_active server.id
20
+ end
21
+
22
+ def assert_active server_id
23
+ server = @compute.servers.get server_id
24
+ server.state.should == 'ACTIVE'
25
+ end
@@ -0,0 +1,37 @@
1
+ require 'fog'
2
+ require 'aruba/cucumber'
3
+
4
+ Fog.mock! if ENV['RAX_MOCK'] == 'true'
5
+
6
+ Before do | scenario |
7
+ @aruba_timeout_seconds = 600
8
+ @scenario = File.basename(scenario.file)
9
+ ENV['CASSETTE'] = @scenario
10
+
11
+ proxy_options = {
12
+ :connection_options => {
13
+ :proxy => ENV['https_proxy'],
14
+ :ssl_verify_peer => false
15
+ }
16
+ }
17
+
18
+ connect_options = {
19
+ :provider => 'rackspace',
20
+ :rackspace_username => ENV['RAX_USERNAME'],
21
+ :rackspace_api_key => ENV['RAX_API_KEY'],
22
+ :version => :v2, # Use Next Gen Cloud Servers
23
+ :rackspace_region => ENV['RAX_REGION'].downcase.to_sym
24
+ }
25
+ connect_options.merge!(proxy_options) unless ENV['https_proxy'].nil?
26
+ @compute = Fog::Compute.new(connect_options)
27
+ end
28
+
29
+ Around do | scenario, block |
30
+ Bundler.with_clean_env do
31
+ block.call
32
+ end
33
+ end
34
+
35
+ After('@creates_server') do
36
+ @compute.servers.delete @server_id
37
+ end
@@ -0,0 +1,19 @@
1
+ require 'fog'
2
+ if ENV['RAX_MOCK'] == 'true'
3
+ Fog.mock!
4
+ Fog::Rackspace::MockData.configure do |c|
5
+ c[:image_name_generator] = Proc.new { "Ubuntu" }
6
+ c[:ipv4_generator] = Proc.new { "10.11.12.2"}
7
+ end
8
+ connect_options = {
9
+ :provider => 'rackspace',
10
+ :rackspace_username => ENV['RAX_USERNAME'],
11
+ :rackspace_api_key => ENV['RAX_API_KEY'],
12
+ :version => :v2, # Use Next Gen Cloud Servers
13
+ :rackspace_region => :ord #Use Chicago Region
14
+ }
15
+ connect_options.merge!(proxy_options) unless ENV['https_proxy'].nil?
16
+ compute = Fog::Compute.new(connect_options)
17
+ # Force creation of Ubuntu image so it will show up in compute.images.list
18
+ compute.images.get(0)
19
+ end
@@ -0,0 +1,74 @@
1
+ @announce
2
+ @vagrant-rackspace
3
+ Feature: vagrant-rackspace fog tests
4
+ As a Fog developer
5
+ I want to smoke (or "fog") test vagrant-rackspace.
6
+ So I am confident my upstream changes did not create downstream problems.
7
+
8
+ Background:
9
+ Given I have Rackspace credentials available
10
+ And I have a "fog_mock.rb" file
11
+
12
+ Scenario: Create a single server (region)
13
+ Given a file named "Vagrantfile" with:
14
+ """
15
+ # Testing options
16
+ require File.expand_path '../fog_mock', __FILE__
17
+
18
+ Vagrant.configure("2") do |config|
19
+ # dev/test method of loading plugin, normally would be 'vagrant plugin install vagrant-rackspace'
20
+ Vagrant.require_plugin "vagrant-rackspace"
21
+
22
+ config.vm.box = "dummy"
23
+ config.ssh.username = "vagrant" if Fog.mock?
24
+ config.ssh.private_key_path = "~/.ssh/id_rsa" unless Fog.mock?
25
+ config.ssh.max_tries = 1
26
+ config.ssh.timeout = 10
27
+
28
+ config.vm.provider :rackspace do |rs|
29
+ rs.server_name = 'vagrant-single-server'
30
+ rs.username = ENV['RAX_USERNAME']
31
+ rs.api_key = ENV['RAX_API_KEY']
32
+ rs.rackspace_region = ENV['RAX_REGION'].downcase.to_sym
33
+ rs.flavor = /512MB/
34
+ rs.image = /Ubuntu/
35
+ rs.public_key_path = "~/.ssh/id_rsa.pub" unless Fog.mock?
36
+ end
37
+ end
38
+ """
39
+ When I successfully run `bundle exec vagrant up --provider rackspace`
40
+ # I want to capture the ID like I do in tests for other tools, but Vagrant doesn't print it!
41
+ # And I get the server from "Instance ID:"
42
+ Then the server "vagrant-single-server" should be active
43
+
44
+ Scenario: Create a single server (compute_url)
45
+ Given a file named "Vagrantfile" with:
46
+ """
47
+ # Testing options
48
+ require File.expand_path '../fog_mock', __FILE__
49
+
50
+ Vagrant.configure("2") do |config|
51
+ # dev/test method of loading plugin, normally would be 'vagrant plugin install vagrant-rackspace'
52
+ Vagrant.require_plugin "vagrant-rackspace"
53
+
54
+ config.vm.box = "dummy"
55
+ config.ssh.username = "vagrant" if Fog.mock?
56
+ config.ssh.private_key_path = "~/.ssh/id_rsa" unless Fog.mock?
57
+ config.ssh.max_tries = 1
58
+ config.ssh.timeout = 10
59
+
60
+ config.vm.provider :rackspace do |rs|
61
+ rs.server_name = 'vagrant-single-server'
62
+ rs.username = ENV['RAX_USERNAME']
63
+ rs.api_key = ENV['RAX_API_KEY']
64
+ rs.compute_url = "https://#{ENV['RAX_REGION'].downcase}.servers.api.rackspacecloud.com/v2"
65
+ rs.flavor = /512MB/
66
+ rs.image = /Ubuntu/
67
+ rs.public_key_path = "~/.ssh/id_rsa.pub" unless Fog.mock?
68
+ end
69
+ end
70
+ """
71
+ When I successfully run `bundle exec vagrant up --provider rackspace`
72
+ # I want to capture the ID like I do in tests for other tools, but Vagrant doesn't print it!
73
+ # And I get the server from "Instance ID:"
74
+ Then the server "vagrant-single-server" should be active
@@ -24,6 +24,22 @@ module VagrantPlugins
24
24
  end
25
25
  end
26
26
 
27
+ # This action is called when `vagrant provision` is called.
28
+ def self.action_provision
29
+ Vagrant::Action::Builder.new.tap do |b|
30
+ b.use ConfigValidate
31
+ b.use Call, IsCreated do |env, b2|
32
+ if !env[:result]
33
+ b2.use MessageNotCreated
34
+ next
35
+ end
36
+
37
+ b2.use Provision
38
+ b2.use SyncFolders
39
+ end
40
+ end
41
+ end
42
+
27
43
  # This action is called to read the SSH info of the machine. The
28
44
  # resulting state is expected to be put into the `:machine_ssh_info`
29
45
  # key.
@@ -17,17 +17,27 @@ module VagrantPlugins
17
17
  # Get the configs
18
18
  config = env[:machine].provider_config
19
19
  api_key = config.api_key
20
- endpoint = config.endpoint
21
20
  username = config.username
22
21
 
23
- @logger.info("Connecting to Rackspace...")
24
- env[:rackspace_compute] = Fog::Compute.new({
25
- :provider => :rackspace,
26
- :version => :v2,
27
- :rackspace_api_key => api_key,
28
- :rackspace_endpoint => endpoint,
29
- :rackspace_username => username
30
- })
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
+ })
31
+ 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
31
41
 
32
42
  @app.call(env)
33
43
  end
@@ -90,6 +90,20 @@ module VagrantPlugins
90
90
  # Clear the line one more time so the progress is removed
91
91
  env[:ui].clear_line
92
92
 
93
+ # Wait for RackConnect to complete
94
+ if ( config.rackconnect )
95
+ env[:ui].info(I18n.t("vagrant_rackspace.waiting_for_rackconnect"))
96
+ while true
97
+ status = server.metadata.all["rackconnect_automation_status"]
98
+ if ( !status.nil? )
99
+ env[:ui].info( status )
100
+ end
101
+ break if env[:interrupted]
102
+ break if (status.to_s =~ /deployed/i)
103
+ sleep 10
104
+ end
105
+ end
106
+
93
107
  # Wait for SSH to become available
94
108
  env[:ui].info(I18n.t("vagrant_rackspace.waiting_for_ssh"))
95
109
  while true
@@ -1,5 +1,5 @@
1
1
  require "log4r"
2
-
2
+ require 'rbconfig'
3
3
  require "vagrant/util/subprocess"
4
4
 
5
5
  module VagrantPlugins
@@ -11,6 +11,7 @@ module VagrantPlugins
11
11
  def initialize(app, env)
12
12
  @app = app
13
13
  @logger = Log4r::Logger.new("vagrant_rackspace::action::sync_folders")
14
+ @host_os = RbConfig::CONFIG['host_os']
14
15
  end
15
16
 
16
17
  def call(env)
@@ -25,6 +26,11 @@ module VagrantPlugins
25
26
  # Make sure there is a trailing slash on the host path to
26
27
  # avoid creating an additional directory with rsync
27
28
  hostpath = "#{hostpath}/" if hostpath !~ /\/$/
29
+
30
+ # If on Windows, modify the path to work with cygwin rsync
31
+ if @host_os =~ /mswin|mingw|cygwin/
32
+ hostpath = hostpath.sub(/^([A-Za-z]):\//, "/cygdrive/#{$1.downcase}/")
33
+ end
28
34
 
29
35
  env[:ui].info(I18n.t("vagrant_rackspace.rsync_folder",
30
36
  :hostpath => hostpath,
@@ -33,15 +39,29 @@ module VagrantPlugins
33
39
  # Create the guest path
34
40
  env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
35
41
  env[:machine].communicate.sudo(
36
- "chown #{ssh_info[:username]} '#{guestpath}'")
42
+ "chown -R #{ssh_info[:username]} '#{guestpath}'")
37
43
 
38
- # Rsync over to the guest path using the SSH info
44
+ # Rsync over to the guest path using the SSH info. add
45
+ # .hg/ to exclude list as that isn't covered in
46
+ # --cvs-exclude
39
47
  command = [
40
48
  "rsync", "--verbose", "--archive", "-z",
41
- "-e", "ssh -p #{ssh_info[:port]} -i '#{ssh_info[:private_key_path]}'",
49
+ "--cvs-exclude",
50
+ "--exclude", ".hg/",
51
+ "-e", "ssh -p #{ssh_info[:port]} -i '#{ssh_info[:private_key_path]}' -o StrictHostKeyChecking=no",
42
52
  hostpath,
43
53
  "#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]
44
54
 
55
+ # during rsync, ignore files specified in .hgignore and
56
+ # .gitignore traditional .gitignore or .hgignore files
57
+ ignore_files = [".hgignore", ".gitignore"]
58
+ ignore_files.each do |ignore_file|
59
+ abs_ignore_file = env[:root_path].to_s + "/" + ignore_file
60
+ if File.exist?(abs_ignore_file)
61
+ command = command + ["--exclude-from", abs_ignore_file]
62
+ end
63
+ end
64
+
45
65
  r = Vagrant::Util::Subprocess.execute(*command)
46
66
  if r.exit_code != 0
47
67
  raise Errors::RsyncError,
@@ -8,11 +8,31 @@ module VagrantPlugins
8
8
  # @return [String]
9
9
  attr_accessor :api_key
10
10
 
11
- # The endpoint to access RackSpace. If nil, it will default
11
+ # The region to access RackSpace. If nil, it will default
12
12
  # to DFW.
13
+ # (formerly know as 'endpoint')
13
14
  #
14
- # @return [String]
15
- attr_accessor :endpoint
15
+ # expected to be a symbol - :dfw (default), :ord, :lon
16
+ #
17
+ # use this OR rackspace_compute_url
18
+ attr_accessor :rackspace_region
19
+
20
+ # The compute_url to access RackSpace. If nil, it will default
21
+ # to DFW.
22
+ # (formerly know as 'endpoint')
23
+ #
24
+ # expected to be a string url -
25
+ # 'https://dfw.servers.api.rackspacecloud.com/v2'
26
+ # 'https://ord.servers.api.rackspacecloud.com/v2'
27
+ # 'https://lon.servers.api.rackspacecloud.com/v2'
28
+ #
29
+ # alternatively, can use constants if you require 'fog/rackspace' in your Vagrantfile
30
+ # Fog::Compute::RackspaceV2::DFW_ENDPOINT
31
+ # Fog::Compute::RackspaceV2::ORD_ENDPOINT
32
+ # Fog::Compute::RackspaceV2::LON_ENDPOINT
33
+ #
34
+ # use this OR rackspace_region
35
+ attr_accessor :rackspace_compute_url
16
36
 
17
37
  # The flavor of server to launch, either the ID or name. This
18
38
  # can also be a regular expression to partially match a name.
@@ -28,6 +48,11 @@ module VagrantPlugins
28
48
  # @return [String]
29
49
  attr_accessor :public_key_path
30
50
 
51
+ # The option that indicates RackConnect usage or not.
52
+ #
53
+ # @return [Boolean]
54
+ attr_accessor :rackconnect
55
+
31
56
  # The name of the server. This defaults to the name of the machine
32
57
  # defined by Vagrant (via `config.vm.define`), but can be overriden
33
58
  # here.
@@ -40,19 +65,23 @@ module VagrantPlugins
40
65
 
41
66
  def initialize
42
67
  @api_key = UNSET_VALUE
43
- @endpoint = UNSET_VALUE
68
+ @rackspace_region = UNSET_VALUE
69
+ @rackspace_compute_url = UNSET_VALUE
44
70
  @flavor = UNSET_VALUE
45
71
  @image = UNSET_VALUE
46
72
  @public_key_path = UNSET_VALUE
73
+ @rackconnect = UNSET_VALUE
47
74
  @server_name = UNSET_VALUE
48
75
  @username = UNSET_VALUE
49
76
  end
50
77
 
51
78
  def finalize!
52
79
  @api_key = nil if @api_key == UNSET_VALUE
53
- @endpoint = nil if @endpoint == UNSET_VALUE
80
+ @rackspace_region = nil if @rackspace_region == UNSET_VALUE
81
+ @rackspace_compute_url = nil if @rackspace_compute_url == UNSET_VALUE
54
82
  @flavor = /512MB/ if @flavor == UNSET_VALUE
55
83
  @image = /Ubuntu/ if @image == UNSET_VALUE
84
+ @rackconnect = false if @rackconnect == UNSET_VALUE
56
85
  @server_name = nil if @server_name == UNSET_VALUE
57
86
  @username = nil if @username == UNSET_VALUE
58
87
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Rackspace
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -18,6 +18,8 @@ en:
18
18
  Rsyncing folder: %{hostpath} => %{guestpath}
19
19
  waiting_for_build: |-
20
20
  Waiting for the server to be built...
21
+ waiting_for_rackconnect: |-
22
+ Waiting for RackConnect to complete...
21
23
  waiting_for_ssh: |-
22
24
  Waiting for SSH to become available...
23
25
  warn_insecure_ssh: |-
@@ -11,20 +11,24 @@ describe VagrantPlugins::Rackspace::Config do
11
11
  end
12
12
 
13
13
  its(:api_key) { should be_nil }
14
- its(:endpoint) { should be_nil }
14
+ its(:rackspace_region) { should be_nil }
15
+ its(:rackspace_compute_url) { should be_nil }
15
16
  its(:flavor) { should eq(/512MB/) }
16
17
  its(:image) { should eq(/Ubuntu/) }
17
18
  its(:public_key_path) { should eql(vagrant_public_key) }
19
+ its(:rackconnect) { should be_nil }
18
20
  its(:server_name) { should be_nil }
19
21
  its(:username) { should be_nil }
20
22
  end
21
23
 
22
24
  describe "overriding defaults" do
23
25
  [:api_key,
24
- :endpoint,
26
+ :rackspace_region,
27
+ :rackspace_compute_url,
25
28
  :flavor,
26
29
  :image,
27
30
  :public_key_path,
31
+ :rackconnect,
28
32
  :server_name,
29
33
  :username].each do |attribute|
30
34
  it "should not default #{attribute} if overridden" do
@@ -16,6 +16,7 @@ Gem::Specification.new do |gem|
16
16
 
17
17
  gem.add_development_dependency "rake"
18
18
  gem.add_development_dependency "rspec", "~> 2.13.0"
19
+ gem.add_development_dependency "aruba"
19
20
 
20
21
  gem.files = `git ls-files`.split($/)
21
22
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-rackspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mitchell Hashimoto
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-18 00:00:00.000000000 Z
11
+ date: 2013-08-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: fog
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,11 +48,24 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.13.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: aruba
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
62
69
  description: Enables Vagrant to manage machines in RackSpace Cloud.
63
70
  email:
64
71
  - mitchell@hashicorp.com
@@ -72,9 +79,16 @@ files:
72
79
  - LICENSE.txt
73
80
  - README.md
74
81
  - Rakefile
82
+ - Vagrantfile
75
83
  - dummy.box
76
84
  - example_box/README.md
77
85
  - example_box/metadata.json
86
+ - features/provision.feature
87
+ - features/steps/sdk_steps.rb
88
+ - features/steps/server_steps.rb
89
+ - features/support/env.rb
90
+ - features/support/fog_mock.rb
91
+ - features/vagrant-rackspace.feature
78
92
  - lib/vagrant-rackspace.rb
79
93
  - lib/vagrant-rackspace/action.rb
80
94
  - lib/vagrant-rackspace/action/connect_rackspace.rb
@@ -97,33 +111,32 @@ files:
97
111
  - vagrant-rackspace.gemspec
98
112
  homepage: http://www.vagrantup.com
99
113
  licenses: []
114
+ metadata: {}
100
115
  post_install_message:
101
116
  rdoc_options: []
102
117
  require_paths:
103
118
  - lib
104
119
  required_ruby_version: !ruby/object:Gem::Requirement
105
- none: false
106
120
  requirements:
107
121
  - - ! '>='
108
122
  - !ruby/object:Gem::Version
109
123
  version: '0'
110
- segments:
111
- - 0
112
- hash: -1125899910436206923
113
124
  required_rubygems_version: !ruby/object:Gem::Requirement
114
- none: false
115
125
  requirements:
116
126
  - - ! '>='
117
127
  - !ruby/object:Gem::Version
118
128
  version: '0'
119
- segments:
120
- - 0
121
- hash: -1125899910436206923
122
129
  requirements: []
123
130
  rubyforge_project:
124
- rubygems_version: 1.8.23
131
+ rubygems_version: 2.0.3
125
132
  signing_key:
126
- specification_version: 3
133
+ specification_version: 4
127
134
  summary: Enables Vagrant to manage machines in RackSpace Cloud.
128
135
  test_files:
136
+ - features/provision.feature
137
+ - features/steps/sdk_steps.rb
138
+ - features/steps/server_steps.rb
139
+ - features/support/env.rb
140
+ - features/support/fog_mock.rb
141
+ - features/vagrant-rackspace.feature
129
142
  - spec/vagrant-rackspace/config_spec.rb