rumm 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +11 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +46 -0
  6. data/Rakefile +6 -0
  7. data/app.rb +7 -0
  8. data/app/controllers/attachments_controller.rb +39 -0
  9. data/app/controllers/authentication_controller.rb +47 -0
  10. data/app/controllers/containers_controller.rb +32 -0
  11. data/app/controllers/databases_controller.rb +43 -0
  12. data/app/controllers/files_controller.rb +41 -0
  13. data/app/controllers/images_controller.rb +7 -0
  14. data/app/controllers/instances_controller.rb +34 -0
  15. data/app/controllers/loadbalancers_controller.rb +32 -0
  16. data/app/controllers/nodes_controller.rb +45 -0
  17. data/app/controllers/servers_controller.rb +52 -0
  18. data/app/controllers/volumes_controller.rb +35 -0
  19. data/app/forms/loadbalancers/create_form.rb +35 -0
  20. data/app/models/loadbalancers/node.rb +10 -0
  21. data/app/models/node.rb +0 -0
  22. data/app/providers/compute_provider.rb +15 -0
  23. data/app/providers/console_provider.rb +5 -0
  24. data/app/providers/containers_provider.rb +15 -0
  25. data/app/providers/credentials_provider.rb +12 -0
  26. data/app/providers/databases_provider.rb +13 -0
  27. data/app/providers/instance_provider.rb +8 -0
  28. data/app/providers/instances_provider.rb +13 -0
  29. data/app/providers/loadbalancers_provider.rb +13 -0
  30. data/app/providers/naming/adj.txt +20574 -0
  31. data/app/providers/naming/nouns.txt +50277 -0
  32. data/app/providers/naming_provider.rb +106 -0
  33. data/app/providers/nodes_provider.rb +13 -0
  34. data/app/providers/user_provider.rb +23 -0
  35. data/app/providers/volumes_provider.rb +14 -0
  36. data/app/routes.rb +59 -0
  37. data/app/views/attachments/attach.txt.erb +3 -0
  38. data/app/views/attachments/detach.txt.erb +3 -0
  39. data/app/views/attachments/index.txt.erb +7 -0
  40. data/app/views/attachments/show.txt.erb +5 -0
  41. data/app/views/authentication/login.txt.erb +2 -0
  42. data/app/views/authentication/logout.txt.erb +1 -0
  43. data/app/views/containers/create.txt.erb +5 -0
  44. data/app/views/containers/destroy.txt.erb +1 -0
  45. data/app/views/containers/index.txt.erb +7 -0
  46. data/app/views/containers/show.txt.erb +5 -0
  47. data/app/views/databases/create.txt.erb +1 -0
  48. data/app/views/databases/destroy.txt.erb +1 -0
  49. data/app/views/databases/index.txt.erb +8 -0
  50. data/app/views/databases/show.txt.erb +1 -0
  51. data/app/views/files/create.txt.erb +5 -0
  52. data/app/views/files/destroy.txt.erb +1 -0
  53. data/app/views/files/download.txt.erb +3 -0
  54. data/app/views/files/index.txt.erb +7 -0
  55. data/app/views/files/show.txt.erb +5 -0
  56. data/app/views/images/index.txt.erb +3 -0
  57. data/app/views/instances/create.txt.erb +2 -0
  58. data/app/views/instances/destroy.txt.erb +1 -0
  59. data/app/views/instances/index.txt.erb +8 -0
  60. data/app/views/instances/show.txt.erb +1 -0
  61. data/app/views/loadbalancers/create.txt.erb +1 -0
  62. data/app/views/loadbalancers/destroy.txt.erb +1 -0
  63. data/app/views/loadbalancers/index.txt.erb +8 -0
  64. data/app/views/loadbalancers/show.txt.erb +4 -0
  65. data/app/views/nodes/create.txt.erb +5 -0
  66. data/app/views/nodes/destroy.txt.erb +1 -0
  67. data/app/views/nodes/index.txt.erb +4 -0
  68. data/app/views/nodes/show.txt.erb +5 -0
  69. data/app/views/servers/create.txt.erb +2 -0
  70. data/app/views/servers/destroy.txt.erb +1 -0
  71. data/app/views/servers/index.txt.erb +8 -0
  72. data/app/views/servers/show.txt.erb +5 -0
  73. data/app/views/volumes/create.txt.erb +5 -0
  74. data/app/views/volumes/destroy.txt.erb +1 -0
  75. data/app/views/volumes/index.txt.erb +7 -0
  76. data/app/views/volumes/show.txt.erb +5 -0
  77. data/bin/rumm +5 -0
  78. data/lib/rumm.rb +5 -0
  79. data/lib/rumm/version.rb +3 -0
  80. data/rumm.gemspec +24 -0
  81. data/spec/features/login_spec.rb +29 -0
  82. data/spec/features/servers_spec.rb +39 -0
  83. data/spec/fixtures/cassettes/create-server.yml +144 -0
  84. data/spec/fixtures/cassettes/destroy-server.yml +159 -0
  85. data/spec/fixtures/cassettes/show-server.yml +214 -0
  86. data/spec/fixtures/cassettes/show-servers.yml +141 -0
  87. data/spec/spec_helper.rb +51 -0
  88. metadata +203 -0
@@ -0,0 +1,7 @@
1
+ <% each do |volume| %>
2
+ id: <%= volume.display_name %>
3
+ <% end %>
4
+
5
+ dump
6
+
7
+ <%= self.inspect %>
@@ -0,0 +1,5 @@
1
+ <%= display_name %>
2
+
3
+ dump
4
+
5
+ <%= self.inspect %>
data/bin/rumm ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- mode: ruby -*-
3
+
4
+ require File.expand_path '../../app', __FILE__
5
+ exit Rumm::App.main
data/lib/rumm.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "rumm/version"
2
+
3
+ module Rumm
4
+
5
+ end
@@ -0,0 +1,3 @@
1
+ module Rumm
2
+ VERSION = "0.0.3"
3
+ end
data/rumm.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rumm/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rumm"
8
+ spec.version = Rumm::VERSION
9
+ spec.authors = ["Charles Lowell"]
10
+ spec.email = ["cowboyd@thefrontside.net"]
11
+ spec.description = %q{Lift heavy things inside your Rackspace}
12
+ spec.summary = %q{CLI and API for managing Rackspace infrastructure}
13
+ spec.homepage = "https://github.com/rackerlabs/rumm"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "mvcli", "~> 0.0.7"
22
+ spec.add_dependency "fog", "~> 1.11.0"
23
+ spec.add_dependency "netrc"
24
+ end
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ describe "logging in" do
4
+ before do
5
+ @announce_dir = true
6
+ @announce_cmd = true
7
+ @announce_env = true
8
+ @announce_stdout = true
9
+ @announce_stderr = true
10
+ @home = Pathname(set_env "HOME", File.expand_path(current_dir))
11
+ end
12
+ describe "interactively with valid credentials" do
13
+ before do
14
+ run_interactive "rumm login"
15
+ type "<username>"
16
+ type "<valid-password>"
17
+ stop_process @interactive
18
+ end
19
+ it "successfully exits" do
20
+ last_exit_status.should eq(0), "process failed"
21
+ end
22
+ it "stores the authentication information and service catalog" do
23
+ @home.join('.rummrc').should exist
24
+ access = Map(JSON.parse @home.join(".rummrc").read).access
25
+ access.user.name.should eql "cowboyd"
26
+ access.serviceCatalog.first.name.should eql "cloudServers"
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,39 @@
1
+ require "spec_helper"
2
+
3
+ describe "using the server api" do
4
+ context "with credentials are present" do
5
+ Given(:home) {Pathname(set_env "HOME", File.expand_path(current_dir))}
6
+ Given do
7
+ File.open(home.join('.netrc'), "w") do |f|
8
+ f.chmod 0600
9
+ f.puts "machine api.rackspace.com"
10
+ f.puts " login #{ENV['RACKSPACE_LOGIN'] || '<rackspace-username>'}"
11
+ f.puts " password #{ENV['RACKSPACE_API_TOKEN'] || '<rackspace-api-token>'}"
12
+ end
13
+ end
14
+ context "when I list all my servers (and I don't have any')" do
15
+ When {VCR.use_cassette('show-servers') {run "rumm show servers"}}
16
+ Then {all_stdout =~ /you don't have any servers/}
17
+ And {last_exit_status.should eql 0}
18
+ end
19
+ context "when I create a server" do
20
+ When {VCR.use_cassette('create-server') {run "rumm create server"}}
21
+ Then {all_stdout =~ /created server (\w+)/}
22
+ And {last_exit_status.should eql 0}
23
+ end
24
+ #context "when I ssh into a server" do
25
+ # When {VCR.use_cassette('show-server') {run "rumm ssh divine-reef"}}
26
+ # Then {all_stdout =~ /test success/}
27
+ #end
28
+ context "when I show a server" do
29
+ When {VCR.use_cassette('show-server') {run "rumm show server divine-reef"}}
30
+ Then {last_exit_status.should eql 0}
31
+ end
32
+ context "when I destroy a server that exists" do
33
+ When {VCR.use_cassette('destroy-server') {run "rumm destroy server divine-reef"}}
34
+ Then {all_stdout =~ /destruction/}
35
+ And {last_exit_status.should eql 0}
36
+ end
37
+ end
38
+ context "without credentials"
39
+ end
@@ -0,0 +1,144 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://identity.api.rackspacecloud.com/v2.0/tokens
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<rackspace-login>","apiKey":"<rackspace-api-token>"}}}'
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.11.1
12
+ Content-Type:
13
+ - application/json
14
+ Accept:
15
+ - application/json
16
+ X-Auth-Token: []
17
+ response:
18
+ status:
19
+ code: 200
20
+ message:
21
+ headers:
22
+ Server:
23
+ - nginx/0.8.55
24
+ Date:
25
+ - Mon, 27 May 2013 16:59:08 GMT
26
+ Content-Type:
27
+ - application/json
28
+ Transfer-Encoding:
29
+ - chunked
30
+ Connection:
31
+ - keep-alive
32
+ response-source:
33
+ - cloud-auth
34
+ vary:
35
+ - Accept, Accept-Encoding, X-Auth-Token
36
+ VIA:
37
+ - 1.0 Repose (Repose/2.3.5)
38
+ Front-End-Https:
39
+ - 'on'
40
+ body:
41
+ encoding: UTF-8
42
+ string: |
43
+ {"access":{"token":{"id":"6e57ad98-4d0b-4414-b9be-4c8a75e81261","expires":"2013-05-28T11:24:07.000-05:00","tenant":{"id":"829771","name":"829771"}},"serviceCatalog":[{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"}],"name":"cloudServersOpenStack","type":"compute"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/829771"}],"name":"cloudBlockStorage","type":"volume"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/829771","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"name":"cloudServers","type":"compute"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudMonitoring","type":"rax:monitor"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudBackup","type":"rax:backup"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFiles","type":"object-store"},{"endpoints":[{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"},{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudLoadBalancers","type":"rax:load-balancer"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFilesCDN","type":"rax:object-cdn"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDNS","type":"rax:dns"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDatabases","type":"rax:database"}],"user":{"id":"356537","roles":[{"id":"3","description":"User Admin Role.","name":"identity:user-admin"}],"name":"<rackspace-login>","RAX-AUTH:defaultRegion":""}}}
44
+ http_version:
45
+ recorded_at: Mon, 27 May 2013 16:59:08 GMT
46
+ - request:
47
+ method: post
48
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/servers
49
+ body:
50
+ encoding: UTF-8
51
+ string: '{"server":{"name":"divine-reef","imageRef":"9922a7c7-5a42-4a56-bc6a-93f857ae2346","flavorRef":2,"minCount":1,"maxCount":1,"networks":[{"uuid":"00000000-0000-0000-0000-000000000000"},{"uuid":"11111111-1111-1111-1111-111111111111"}]}}'
52
+ headers:
53
+ User-Agent:
54
+ - fog/1.11.1
55
+ Content-Type:
56
+ - application/json
57
+ Accept:
58
+ - application/json
59
+ X-Auth-Token:
60
+ - 6e57ad98-4d0b-4414-b9be-4c8a75e81261
61
+ response:
62
+ status:
63
+ code: 202
64
+ message:
65
+ headers:
66
+ Date:
67
+ - Mon, 27 May 2013 16:59:09 GMT
68
+ Content-Length:
69
+ - '380'
70
+ Location:
71
+ - https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/2211c095-db96-4098-9577-345e0d86a4c7
72
+ Content-Type:
73
+ - application/json
74
+ X-Compute-Request-Id:
75
+ - req-e7bdfd25-32d3-48c8-965d-15cb896aeff2
76
+ Server:
77
+ - Jetty(8.0.y.z-SNAPSHOT)
78
+ body:
79
+ encoding: UTF-8
80
+ string: '{"server": {"OS-DCF:diskConfig": "AUTO", "id": "2211c095-db96-4098-9577-345e0d86a4c7",
81
+ "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/2211c095-db96-4098-9577-345e0d86a4c7",
82
+ "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/servers/2211c095-db96-4098-9577-345e0d86a4c7",
83
+ "rel": "bookmark"}], "adminPass": "23nhD4mpHJk4"}}'
84
+ http_version:
85
+ recorded_at: Mon, 27 May 2013 16:59:09 GMT
86
+ - request:
87
+ method: get
88
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/2211c095-db96-4098-9577-345e0d86a4c7
89
+ body:
90
+ encoding: US-ASCII
91
+ string: ''
92
+ headers:
93
+ User-Agent:
94
+ - fog/1.11.1
95
+ Content-Type:
96
+ - application/json
97
+ Accept:
98
+ - application/json
99
+ X-Auth-Token:
100
+ - 6e57ad98-4d0b-4414-b9be-4c8a75e81261
101
+ response:
102
+ status:
103
+ code: 401
104
+ message:
105
+ headers:
106
+ Content-Length:
107
+ - '0'
108
+ Server:
109
+ - Jetty(8.0.y.z-SNAPSHOT)
110
+ body:
111
+ encoding: UTF-8
112
+ string: ''
113
+ http_version:
114
+ recorded_at: Mon, 03 Jun 2013 21:05:06 GMT
115
+ - request:
116
+ method: post
117
+ uri: https://ord.servers.api.rackspacecloud.com/v2/829771/servers
118
+ body:
119
+ encoding: UTF-8
120
+ string: '{"server":{"name":"snow-capped-saturniidae","imageRef":"9922a7c7-5a42-4a56-bc6a-93f857ae2346","flavorRef":2,"minCount":1,"maxCount":1,"networks":[{"uuid":"00000000-0000-0000-0000-000000000000"},{"uuid":"11111111-1111-1111-1111-111111111111"}]}}'
121
+ headers:
122
+ User-Agent:
123
+ - fog/1.11.1
124
+ Content-Type:
125
+ - application/json
126
+ Accept:
127
+ - application/json
128
+ X-Auth-Token:
129
+ - 6e57ad98-4d0b-4414-b9be-4c8a75e81261
130
+ response:
131
+ status:
132
+ code: 401
133
+ message:
134
+ headers:
135
+ Content-Length:
136
+ - '0'
137
+ Server:
138
+ - Jetty(8.0.y.z-SNAPSHOT)
139
+ body:
140
+ encoding: UTF-8
141
+ string: ''
142
+ http_version:
143
+ recorded_at: Wed, 26 Jun 2013 21:44:36 GMT
144
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,159 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://identity.api.rackspacecloud.com/v2.0/tokens
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<rackspace-login>","apiKey":"<rackspace-api-token>"}}}'
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.11.1
12
+ Content-Type:
13
+ - application/json
14
+ Accept:
15
+ - application/json
16
+ X-Auth-Token: []
17
+ response:
18
+ status:
19
+ code: 200
20
+ message:
21
+ headers:
22
+ Server:
23
+ - nginx/0.8.55
24
+ Date:
25
+ - Tue, 28 May 2013 20:16:11 GMT
26
+ Content-Type:
27
+ - application/json
28
+ Transfer-Encoding:
29
+ - chunked
30
+ Connection:
31
+ - keep-alive
32
+ response-source:
33
+ - cloud-auth
34
+ vary:
35
+ - Accept, Accept-Encoding, X-Auth-Token
36
+ VIA:
37
+ - 1.0 Repose (Repose/2.3.5)
38
+ Front-End-Https:
39
+ - 'on'
40
+ body:
41
+ encoding: UTF-8
42
+ string: |
43
+ {"access":{"token":{"id":"c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4","expires":"2013-05-29T14:36:08.000-05:00","tenant":{"id":"829771","name":"829771"}},"serviceCatalog":[{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/829771","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"name":"cloudServers","type":"compute"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFiles","type":"object-store"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudBackup","type":"rax:backup"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"}],"name":"cloudServersOpenStack","type":"compute"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFilesCDN","type":"rax:object-cdn"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDNS","type":"rax:dns"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/829771"}],"name":"cloudBlockStorage","type":"volume"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDatabases","type":"rax:database"},{"endpoints":[{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"},{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudLoadBalancers","type":"rax:load-balancer"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudMonitoring","type":"rax:monitor"}],"user":{"id":"356537","roles":[{"id":"3","description":"User Admin Role.","name":"identity:user-admin"}],"name":"<rackspace-login>","RAX-AUTH:defaultRegion":""}}}
44
+ http_version:
45
+ recorded_at: Tue, 28 May 2013 20:16:11 GMT
46
+ - request:
47
+ method: get
48
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/detail
49
+ body:
50
+ encoding: US-ASCII
51
+ string: ''
52
+ headers:
53
+ User-Agent:
54
+ - fog/1.11.1
55
+ Content-Type:
56
+ - application/json
57
+ Accept:
58
+ - application/json
59
+ X-Auth-Token:
60
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
61
+ response:
62
+ status:
63
+ code: 200
64
+ message:
65
+ headers:
66
+ Date:
67
+ - Tue, 28 May 2013 20:16:12 GMT
68
+ Content-Length:
69
+ - '1302'
70
+ Content-Type:
71
+ - application/json
72
+ X-Compute-Request-Id:
73
+ - req-0fb719cd-3ec8-4246-85a5-0c276fa1ad75
74
+ Server:
75
+ - Jetty(8.0.y.z-SNAPSHOT)
76
+ body:
77
+ encoding: UTF-8
78
+ string: '{"servers": [{"status": "ACTIVE", "updated": "2013-05-28T20:09:58Z",
79
+ "hostId": "bb771e19097c2f6c7feae19a5d86527e24c34f57b31f0df46ff3cdc8", "addresses":
80
+ {"public": [{"version": 6, "addr": "2001:4800:7810:0512:6ee9:7eb9:ff04:e242"},
81
+ {"version": 4, "addr": "166.78.13.242"}], "private": [{"version": 4, "addr":
82
+ "10.181.29.78"}]}, "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/bceb657a-a4a5-4531-9464-75abd9e6916d",
83
+ "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/servers/bceb657a-a4a5-4531-9464-75abd9e6916d",
84
+ "rel": "bookmark"}], "image": {"id": "9922a7c7-5a42-4a56-bc6a-93f857ae2346",
85
+ "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346",
86
+ "rel": "bookmark"}]}, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state":
87
+ "active", "flavor": {"id": "2", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/829771/flavors/2",
88
+ "rel": "bookmark"}]}, "id": "bceb657a-a4a5-4531-9464-75abd9e6916d", "user_id":
89
+ "356537", "name": "divine-reef", "created": "2013-05-28T19:59:33Z", "tenant_id":
90
+ "829771", "OS-DCF:diskConfig": "AUTO", "accessIPv4": "166.78.13.242", "accessIPv6":
91
+ "2001:4800:7810:512:6ee9:7eb9:ff04:e242", "progress": 100, "OS-EXT-STS:power_state":
92
+ 1, "metadata": {}}]}'
93
+ http_version:
94
+ recorded_at: Tue, 28 May 2013 20:16:12 GMT
95
+ - request:
96
+ method: delete
97
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/bceb657a-a4a5-4531-9464-75abd9e6916d
98
+ body:
99
+ encoding: US-ASCII
100
+ string: ''
101
+ headers:
102
+ User-Agent:
103
+ - fog/1.11.1
104
+ Content-Type:
105
+ - application/json
106
+ Accept:
107
+ - application/json
108
+ X-Auth-Token:
109
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
110
+ response:
111
+ status:
112
+ code: 204
113
+ message:
114
+ headers:
115
+ Date:
116
+ - Tue, 28 May 2013 20:16:13 GMT
117
+ Content-Length:
118
+ - '0'
119
+ Content-Type:
120
+ - application/json
121
+ X-Compute-Request-Id:
122
+ - req-5126182b-80b0-40e1-a593-1e1c7c78347d
123
+ Server:
124
+ - Jetty(8.0.y.z-SNAPSHOT)
125
+ body:
126
+ encoding: UTF-8
127
+ string: ''
128
+ http_version:
129
+ recorded_at: Tue, 28 May 2013 20:16:13 GMT
130
+ - request:
131
+ method: get
132
+ uri: https://ord.servers.api.rackspacecloud.com/v2/829771/servers/detail
133
+ body:
134
+ encoding: US-ASCII
135
+ string: ''
136
+ headers:
137
+ User-Agent:
138
+ - fog/1.11.1
139
+ Content-Type:
140
+ - application/json
141
+ Accept:
142
+ - application/json
143
+ X-Auth-Token:
144
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
145
+ response:
146
+ status:
147
+ code: 401
148
+ message:
149
+ headers:
150
+ Content-Length:
151
+ - '0'
152
+ Server:
153
+ - Jetty(8.0.y.z-SNAPSHOT)
154
+ body:
155
+ encoding: UTF-8
156
+ string: ''
157
+ http_version:
158
+ recorded_at: Wed, 26 Jun 2013 21:44:37 GMT
159
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,214 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://identity.api.rackspacecloud.com/v2.0/tokens
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<rackspace-login>","apiKey":"<rackspace-api-token>"}}}'
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.11.1
12
+ Content-Type:
13
+ - application/json
14
+ Accept:
15
+ - application/json
16
+ X-Auth-Token: []
17
+ response:
18
+ status:
19
+ code: 200
20
+ message:
21
+ headers:
22
+ Server:
23
+ - nginx/0.8.55
24
+ Date:
25
+ - Tue, 28 May 2013 20:13:16 GMT
26
+ Content-Type:
27
+ - application/json
28
+ Transfer-Encoding:
29
+ - chunked
30
+ Connection:
31
+ - keep-alive
32
+ response-source:
33
+ - cloud-auth
34
+ vary:
35
+ - Accept, Accept-Encoding, X-Auth-Token
36
+ VIA:
37
+ - 1.0 Repose (Repose/2.3.5)
38
+ Front-End-Https:
39
+ - 'on'
40
+ body:
41
+ encoding: UTF-8
42
+ string: |
43
+ {"access":{"token":{"id":"c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4","expires":"2013-05-29T14:36:08.000-05:00","tenant":{"id":"829771","name":"829771"}},"serviceCatalog":[{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/829771","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"name":"cloudServers","type":"compute"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFiles","type":"object-store"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudBackup","type":"rax:backup"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/829771","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"}],"name":"cloudServersOpenStack","type":"compute"},{"endpoints":[{"region":"DFW","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"},{"region":"ORD","tenantId":"MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_51a1ae47-05df-400f-91cc-0a481d4ab24d"}],"name":"cloudFilesCDN","type":"rax:object-cdn"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDNS","type":"rax:dns"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/829771"}],"name":"cloudBlockStorage","type":"volume"},{"endpoints":[{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/829771"},{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudDatabases","type":"rax:database"},{"endpoints":[{"region":"ORD","tenantId":"829771","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"},{"region":"DFW","tenantId":"829771","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudLoadBalancers","type":"rax:load-balancer"},{"endpoints":[{"tenantId":"829771","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/829771"}],"name":"cloudMonitoring","type":"rax:monitor"}],"user":{"id":"356537","roles":[{"id":"3","description":"User Admin Role.","name":"identity:user-admin"}],"name":"<rackspace-login>","RAX-AUTH:defaultRegion":""}}}
44
+ http_version:
45
+ recorded_at: Tue, 28 May 2013 20:13:16 GMT
46
+ - request:
47
+ method: get
48
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/detail
49
+ body:
50
+ encoding: US-ASCII
51
+ string: ''
52
+ headers:
53
+ User-Agent:
54
+ - fog/1.11.1
55
+ Content-Type:
56
+ - application/json
57
+ Accept:
58
+ - application/json
59
+ X-Auth-Token:
60
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
61
+ response:
62
+ status:
63
+ code: 200
64
+ message:
65
+ headers:
66
+ Date:
67
+ - Tue, 28 May 2013 20:13:17 GMT
68
+ Content-Length:
69
+ - '1302'
70
+ Content-Type:
71
+ - application/json
72
+ X-Compute-Request-Id:
73
+ - req-c50caa22-5f16-4a48-8362-eacee70d6207
74
+ Server:
75
+ - Jetty(8.0.y.z-SNAPSHOT)
76
+ body:
77
+ encoding: UTF-8
78
+ string: '{"servers": [{"status": "ACTIVE", "updated": "2013-05-28T20:09:58Z",
79
+ "hostId": "bb771e19097c2f6c7feae19a5d86527e24c34f57b31f0df46ff3cdc8", "addresses":
80
+ {"public": [{"version": 6, "addr": "2001:4800:7810:0512:6ee9:7eb9:ff04:e242"},
81
+ {"version": 4, "addr": "166.78.13.242"}], "private": [{"version": 4, "addr":
82
+ "10.181.29.78"}]}, "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/829771/servers/bceb657a-a4a5-4531-9464-75abd9e6916d",
83
+ "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/servers/bceb657a-a4a5-4531-9464-75abd9e6916d",
84
+ "rel": "bookmark"}], "image": {"id": "9922a7c7-5a42-4a56-bc6a-93f857ae2346",
85
+ "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346",
86
+ "rel": "bookmark"}]}, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state":
87
+ "active", "flavor": {"id": "2", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/829771/flavors/2",
88
+ "rel": "bookmark"}]}, "id": "bceb657a-a4a5-4531-9464-75abd9e6916d", "user_id":
89
+ "356537", "name": "divine-reef", "created": "2013-05-28T19:59:33Z", "tenant_id":
90
+ "829771", "OS-DCF:diskConfig": "AUTO", "accessIPv4": "166.78.13.242", "accessIPv6":
91
+ "2001:4800:7810:512:6ee9:7eb9:ff04:e242", "progress": 100, "OS-EXT-STS:power_state":
92
+ 1, "metadata": {}}]}'
93
+ http_version:
94
+ recorded_at: Tue, 28 May 2013 20:13:17 GMT
95
+ - request:
96
+ method: get
97
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346
98
+ body:
99
+ encoding: US-ASCII
100
+ string: ''
101
+ headers:
102
+ User-Agent:
103
+ - fog/1.11.1
104
+ Content-Type:
105
+ - application/json
106
+ Accept:
107
+ - application/json
108
+ X-Auth-Token:
109
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
110
+ response:
111
+ status:
112
+ code: 200
113
+ message:
114
+ headers:
115
+ Date:
116
+ - Tue, 28 May 2013 20:13:17 GMT
117
+ Content-Length:
118
+ - '1514'
119
+ Content-Type:
120
+ - application/json
121
+ X-Compute-Request-Id:
122
+ - req-f047d1b9-2292-4353-b896-33918bd01189
123
+ Server:
124
+ - Jetty(8.0.y.z-SNAPSHOT)
125
+ body:
126
+ encoding: UTF-8
127
+ string: '{"image": {"status": "ACTIVE", "updated": "2013-04-26T19:32:23Z", "links":
128
+ [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346",
129
+ "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346",
130
+ "rel": "bookmark"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/images/9922a7c7-5a42-4a56-bc6a-93f857ae2346",
131
+ "type": "application/vnd.openstack.image", "rel": "alternate"}], "OS-DCF:diskConfig":
132
+ "AUTO", "id": "9922a7c7-5a42-4a56-bc6a-93f857ae2346", "OS-EXT-IMG-SIZE:size":
133
+ 211452277, "name": "Ubuntu 13.04 (Raring Ringtail)", "created": "2013-04-26T13:37:43Z",
134
+ "minDisk": 0, "progress": 100, "minRam": 512, "metadata": {"os_distro": "ubuntu",
135
+ "com.rackspace__1__visible_core": "1", "com.rackspace__1__build_rackconnect":
136
+ "1", "com.rackspace__1__options": "0", "image_type": "base", "cache_in_nova":
137
+ "True", "com.rackspace__1__source": "kickstart", "org.openstack__1__os_distro":
138
+ "com.ubuntu", "com.rackspace__1__release_build_date": "2013-04-25_17-03-56",
139
+ "os_type": "linux", "auto_disk_config": "True", "com.rackspace__1__release_version":
140
+ "2", "com.rackspace__1__release_state": "kickstart_qc_pass", "com.rackspace__1__visible_rackconnect":
141
+ "1", "com.rackspace__1__release_id": "1005", "com.rackspace__1__visible_managed":
142
+ "1", "com.rackspace__1__build_core": "1", "org.openstack__1__os_version":
143
+ "13.04", "org.openstack__1__architecture": "x64", "com.rackspace__1__build_managed":
144
+ "1"}}}'
145
+ http_version:
146
+ recorded_at: Tue, 28 May 2013 20:13:17 GMT
147
+ - request:
148
+ method: get
149
+ uri: https://dfw.servers.api.rackspacecloud.com/v2/829771/flavors/2
150
+ body:
151
+ encoding: US-ASCII
152
+ string: ''
153
+ headers:
154
+ User-Agent:
155
+ - fog/1.11.1
156
+ Content-Type:
157
+ - application/json
158
+ Accept:
159
+ - application/json
160
+ X-Auth-Token:
161
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
162
+ response:
163
+ status:
164
+ code: 200
165
+ message:
166
+ headers:
167
+ Date:
168
+ - Tue, 28 May 2013 20:13:17 GMT
169
+ Content-Length:
170
+ - '353'
171
+ Content-Type:
172
+ - application/json
173
+ X-Compute-Request-Id:
174
+ - req-22347c6b-1d56-4200-a334-96d6be6dddd8
175
+ Server:
176
+ - Jetty(8.0.y.z-SNAPSHOT)
177
+ body:
178
+ encoding: UTF-8
179
+ string: '{"flavor": {"name": "512MB Standard Instance", "links": [{"href": "https://dfw.servers.api.rackspacecloud.com/v2/829771/flavors/2",
180
+ "rel": "self"}, {"href": "https://dfw.servers.api.rackspacecloud.com/829771/flavors/2",
181
+ "rel": "bookmark"}], "ram": 512, "vcpus": 1, "swap": 512, "rxtx_factor": 2.0,
182
+ "OS-FLV-EXT-DATA:ephemeral": 0, "disk": 20, "id": "2"}}'
183
+ http_version:
184
+ recorded_at: Tue, 28 May 2013 20:13:17 GMT
185
+ - request:
186
+ method: get
187
+ uri: https://ord.servers.api.rackspacecloud.com/v2/829771/servers/detail
188
+ body:
189
+ encoding: US-ASCII
190
+ string: ''
191
+ headers:
192
+ User-Agent:
193
+ - fog/1.11.1
194
+ Content-Type:
195
+ - application/json
196
+ Accept:
197
+ - application/json
198
+ X-Auth-Token:
199
+ - c8e0d8ec-c73d-48c5-9b80-548ef8f40dc4
200
+ response:
201
+ status:
202
+ code: 401
203
+ message:
204
+ headers:
205
+ Content-Length:
206
+ - '0'
207
+ Server:
208
+ - Jetty(8.0.y.z-SNAPSHOT)
209
+ body:
210
+ encoding: UTF-8
211
+ string: ''
212
+ http_version:
213
+ recorded_at: Wed, 26 Jun 2013 21:44:36 GMT
214
+ recorded_with: VCR 2.5.0