rumm 0.0.23 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +11 -3
  3. data/app.rb +13 -0
  4. data/app/controllers/authentication_controller.rb +12 -11
  5. data/app/controllers/railsifications_controller.rb +24 -21
  6. data/app/controllers/servers_controller.rb +14 -4
  7. data/app/controllers/users_controller.rb +15 -0
  8. data/app/forms/servers/update_form.rb +7 -0
  9. data/app/forms/volumes/create_form.rb +1 -2
  10. data/app/help/create_container.txt +0 -1
  11. data/app/help/create_dbinstance.txt +1 -1
  12. data/app/help/create_server.txt +1 -1
  13. data/app/help/destroy_node_on_loadbalancer.txt +1 -1
  14. data/app/help/railsify_server.txt +1 -1
  15. data/app/help/show_attachment_on_server.txt +4 -4
  16. data/app/help/show_server.txt +1 -1
  17. data/app/help/update_server.txt +19 -0
  18. data/app/providers/configuration_provider.rb +118 -0
  19. data/app/providers/credentials_provider.rb +4 -4
  20. data/app/providers/login_information_provider.rb +34 -0
  21. data/app/providers/users_provider.rb +13 -0
  22. data/app/routes.rb +1 -0
  23. data/app/views/authentication/login.txt.erb +1 -1
  24. data/app/views/help/show.txt.erb +1 -1
  25. data/app/views/servers/update.txt.erb +1 -0
  26. data/app/views/users/create.txt.erb +1 -1
  27. data/app/views/users/destroy.txt.erb +1 -0
  28. data/app/views/users/show.txt.erb +1 -0
  29. data/lib/rumm/exceptions.rb +5 -0
  30. data/lib/rumm/version.rb +1 -1
  31. data/rumm.gemspec +1 -2
  32. data/spec/features/attachments_spec.rb +1 -1
  33. data/spec/features/configuration_spec.rb +143 -0
  34. data/spec/features/containers_spec.rb +1 -1
  35. data/spec/features/databases_spec.rb +1 -1
  36. data/spec/features/dbinstances_spec.rb +1 -1
  37. data/spec/features/files_spec.rb +1 -1
  38. data/spec/features/help_spec.rb +1 -1
  39. data/spec/features/loadbalancers_spec.rb +1 -1
  40. data/spec/features/login_spec.rb +47 -33
  41. data/spec/features/nodes_spec.rb +1 -1
  42. data/spec/features/servers_spec.rb +1 -1
  43. data/spec/features/users_spec.rb +28 -0
  44. data/spec/features/volumes_spec.rb +1 -1
  45. data/spec/fixtures/cassettes/authentication/successful-login.yml +9 -5
  46. data/spec/fixtures/cassettes/authentication/unsuccessful-login.yml +5 -3
  47. data/spec/fixtures/cassettes/users/create.yml +122 -0
  48. data/spec/fixtures/cassettes/users/destroy.yml +200 -0
  49. data/spec/fixtures/cassettes/users/show-all.yml +122 -0
  50. data/spec/fixtures/cassettes/users/show.yml +165 -0
  51. data/spec/spec_helper.rb +19 -11
  52. metadata +25 -19
  53. data/app/providers/user_provider.rb +0 -23
@@ -0,0 +1,122 @@
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-username>","apiKey":"<rackspace-api-key>"}}}'
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.12.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, 26 Aug 2013 15:46:15 GMT
26
+ Content-Type:
27
+ - application/json
28
+ Connection:
29
+ - keep-alive
30
+ vary:
31
+ - Accept, Accept-Encoding, X-Auth-Token
32
+ VIA:
33
+ - 1.0 Repose (Repose/2.3.5)
34
+ Content-Length:
35
+ - '6168'
36
+ Front-End-Https:
37
+ - 'on'
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"access":{"token":{"id":"<rackspace-api-token>","expires":"2013-08-27T10:45:57.448-05:00","tenant":{"id":"833532","name":"833532"},"RAX-AUTH:authenticatedBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"object-store"},{"name":"cloudDatabases","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.databases.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:database"},{"name":"cloudMonitoring","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:monitor"},{"name":"cloudBlockStorage","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.blockstorage.api.rackspacecloud.com\/v1\/833532"}],"type":"volume"},{"name":"cloudServersOpenStack","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/syd.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/syd.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/iad.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/iad.servers.api.rackspacecloud.com\/","versionId":"2"}],"type":"compute"},{"name":"cloudServers","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/833532","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"type":"compute"},{"name":"cloudDNS","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:dns"},{"name":"cloudLoadBalancers","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:load-balancer"},{"name":"cloudBackup","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:backup"}],"user":{"id":"10038092","roles":[{"id":"10000150","description":"Checkmate
41
+ Access role","name":"checkmate"},{"id":"3","description":"User Admin Role.","name":"identity:user-admin"},{"tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","id":"5","description":"A
42
+ Role that allows a user access to keystone Service methods","name":"object-store:default"},{"tenantId":"833532","id":"6","description":"A
43
+ Role that allows a user access to keystone Service methods","name":"compute:default"}],"name":"<rackspace-username>","RAX-AUTH:defaultRegion":"ORD"}}}'
44
+ http_version:
45
+ recorded_at: Mon, 26 Aug 2013 15:46:15 GMT
46
+ - request:
47
+ method: get
48
+ uri: https://ord.databases.api.rackspacecloud.com/v1.0/833532/instances
49
+ body:
50
+ encoding: US-ASCII
51
+ string: ''
52
+ headers:
53
+ User-Agent:
54
+ - fog/1.12.1
55
+ Content-Type:
56
+ - application/json
57
+ Accept:
58
+ - application/json
59
+ X-Auth-Token:
60
+ - <rackspace-api-token>
61
+ response:
62
+ status:
63
+ code: 200
64
+ message:
65
+ headers:
66
+ Content-Type:
67
+ - application/json
68
+ Via:
69
+ - 1.1 Repose (Repose/2.6.11)
70
+ Content-Length:
71
+ - '630'
72
+ Date:
73
+ - Mon, 26 Aug 2013 15:46:15 GMT
74
+ Server:
75
+ - Jetty(8.0.y.z-SNAPSHOT)
76
+ body:
77
+ encoding: UTF-8
78
+ string: '{"instances": [{"status": "ACTIVE", "name": "decided-irony", "links":
79
+ [{"href": "https://ord.databases.api.rackspacecloud.com:443/v1.0/833532/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f",
80
+ "rel": "self"}, {"href": "https://ord.databases.api.rackspacecloud.com:443/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f",
81
+ "rel": "bookmark"}], "volume": {"size": 1}, "flavor": {"id": "1", "links":
82
+ [{"href": "https://ord.databases.api.rackspacecloud.com:443/v1.0/833532/flavors/1",
83
+ "rel": "self"}, {"href": "https://ord.databases.api.rackspacecloud.com:443/flavors/1",
84
+ "rel": "bookmark"}]}, "id": "1c651e9e-f207-44a3-8b52-0ae620f43b4f"}]}'
85
+ http_version:
86
+ recorded_at: Mon, 26 Aug 2013 15:46:15 GMT
87
+ - request:
88
+ method: get
89
+ uri: https://ord.databases.api.rackspacecloud.com/v1.0/833532/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f/users
90
+ body:
91
+ encoding: US-ASCII
92
+ string: ''
93
+ headers:
94
+ User-Agent:
95
+ - fog/1.12.1
96
+ Content-Type:
97
+ - application/json
98
+ Accept:
99
+ - application/json
100
+ X-Auth-Token:
101
+ - <rackspace-api-token>
102
+ response:
103
+ status:
104
+ code: 200
105
+ message:
106
+ headers:
107
+ Content-Type:
108
+ - application/json
109
+ Via:
110
+ - 1.1 Repose (Repose/2.6.11)
111
+ Content-Length:
112
+ - '88'
113
+ Date:
114
+ - Mon, 26 Aug 2013 15:46:16 GMT
115
+ Server:
116
+ - Jetty(8.0.y.z-SNAPSHOT)
117
+ body:
118
+ encoding: UTF-8
119
+ string: '{"users": [{"host": "%", "name": "test", "databases": [{"name": "dependable-bottom"}]}]}'
120
+ http_version:
121
+ recorded_at: Mon, 26 Aug 2013 15:46:16 GMT
122
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,165 @@
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-username>","apiKey":"<rackspace-api-key>"}}}'
9
+ headers:
10
+ User-Agent:
11
+ - fog/1.12.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, 26 Aug 2013 15:46:06 GMT
26
+ Content-Type:
27
+ - application/json
28
+ Connection:
29
+ - keep-alive
30
+ vary:
31
+ - Accept, Accept-Encoding, X-Auth-Token
32
+ VIA:
33
+ - 1.0 Repose (Repose/2.3.5)
34
+ Content-Length:
35
+ - '6168'
36
+ Front-End-Https:
37
+ - 'on'
38
+ body:
39
+ encoding: UTF-8
40
+ string: '{"access":{"token":{"id":"<rackspace-api-token>","expires":"2013-08-27T10:45:57.448-05:00","tenant":{"id":"833532","name":"833532"},"RAX-AUTH:authenticatedBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFiles","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"object-store"},{"name":"cloudFilesCDN","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"rax:object-cdn"},{"name":"cloudBackup","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:backup"},{"name":"cloudBlockStorage","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.blockstorage.api.rackspacecloud.com\/v1\/833532"}],"type":"volume"},{"name":"cloudServersOpenStack","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/syd.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/syd.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/iad.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/iad.servers.api.rackspacecloud.com\/","versionId":"2"}],"type":"compute"},{"name":"cloudMonitoring","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:monitor"},{"name":"cloudDatabases","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.databases.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:database"},{"name":"cloudServers","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/833532","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"type":"compute"},{"name":"cloudDNS","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:dns"},{"name":"cloudLoadBalancers","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:load-balancer"}],"user":{"id":"10038092","roles":[{"id":"10000150","description":"Checkmate
41
+ Access role","name":"checkmate"},{"id":"3","description":"User Admin Role.","name":"identity:user-admin"},{"tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","id":"5","description":"A
42
+ Role that allows a user access to keystone Service methods","name":"object-store:default"},{"tenantId":"833532","id":"6","description":"A
43
+ Role that allows a user access to keystone Service methods","name":"compute:default"}],"name":"<rackspace-username>","RAX-AUTH:defaultRegion":"ORD"}}}'
44
+ http_version:
45
+ recorded_at: Mon, 26 Aug 2013 15:46:06 GMT
46
+ - request:
47
+ method: post
48
+ uri: https://identity.api.rackspacecloud.com/v2.0/tokens
49
+ body:
50
+ encoding: UTF-8
51
+ string: '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<rackspace-username>","apiKey":"<rackspace-api-key>"}}}'
52
+ headers:
53
+ User-Agent:
54
+ - fog/1.12.1
55
+ Content-Type:
56
+ - application/json
57
+ Accept:
58
+ - application/json
59
+ X-Auth-Token: []
60
+ response:
61
+ status:
62
+ code: 200
63
+ message:
64
+ headers:
65
+ Server:
66
+ - nginx/0.8.55
67
+ Date:
68
+ - Mon, 26 Aug 2013 15:46:13 GMT
69
+ Content-Type:
70
+ - application/json
71
+ Connection:
72
+ - keep-alive
73
+ vary:
74
+ - Accept, Accept-Encoding, X-Auth-Token
75
+ VIA:
76
+ - 1.0 Repose (Repose/2.3.5)
77
+ Content-Length:
78
+ - '6168'
79
+ Front-End-Https:
80
+ - 'on'
81
+ body:
82
+ encoding: UTF-8
83
+ string: '{"access":{"token":{"id":"<rackspace-api-token>","expires":"2013-08-27T10:45:57.448-05:00","tenant":{"id":"833532","name":"833532"},"RAX-AUTH:authenticatedBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFiles","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.ord1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.syd2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.dfw1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","internalURL":"https:\/\/snet-storage101.iad3.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"object-store"},{"name":"cloudFilesCDN","endpoints":[{"region":"ORD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"SYD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"DFW","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"},{"region":"IAD","tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","publicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd"}],"type":"rax:object-cdn"},{"name":"cloudBlockStorage","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.blockstorage.api.rackspacecloud.com\/v1\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.blockstorage.api.rackspacecloud.com\/v1\/833532"}],"type":"volume"},{"name":"cloudLoadBalancers","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.loadbalancers.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:load-balancer"},{"name":"cloudServersOpenStack","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/syd.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/syd.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/dfw.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/dfw.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/ord.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/ord.servers.api.rackspacecloud.com\/","versionId":"2"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.servers.api.rackspacecloud.com\/v2\/833532","versionInfo":"https:\/\/iad.servers.api.rackspacecloud.com\/v2","versionList":"https:\/\/iad.servers.api.rackspacecloud.com\/","versionId":"2"}],"type":"compute"},{"name":"cloudDatabases","endpoints":[{"region":"SYD","tenantId":"833532","publicURL":"https:\/\/syd.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"DFW","tenantId":"833532","publicURL":"https:\/\/dfw.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"ORD","tenantId":"833532","publicURL":"https:\/\/ord.databases.api.rackspacecloud.com\/v1.0\/833532"},{"region":"IAD","tenantId":"833532","publicURL":"https:\/\/iad.databases.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:database"},{"name":"cloudDNS","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/dns.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:dns"},{"name":"cloudServers","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/servers.api.rackspacecloud.com\/v1.0\/833532","versionInfo":"https:\/\/servers.api.rackspacecloud.com\/v1.0","versionList":"https:\/\/servers.api.rackspacecloud.com\/","versionId":"1.0"}],"type":"compute"},{"name":"cloudMonitoring","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/monitoring.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:monitor"},{"name":"cloudBackup","endpoints":[{"tenantId":"833532","publicURL":"https:\/\/backup.api.rackspacecloud.com\/v1.0\/833532"}],"type":"rax:backup"}],"user":{"id":"10038092","roles":[{"id":"10000150","description":"Checkmate
84
+ Access role","name":"checkmate"},{"id":"3","description":"User Admin Role.","name":"identity:user-admin"},{"tenantId":"MossoCloudFS_558014f8-1c3d-44b9-a771-f42ace65e8dd","id":"5","description":"A
85
+ Role that allows a user access to keystone Service methods","name":"object-store:default"},{"tenantId":"833532","id":"6","description":"A
86
+ Role that allows a user access to keystone Service methods","name":"compute:default"}],"name":"<rackspace-username>","RAX-AUTH:defaultRegion":"ORD"}}}'
87
+ http_version:
88
+ recorded_at: Mon, 26 Aug 2013 15:46:13 GMT
89
+ - request:
90
+ method: get
91
+ uri: https://ord.databases.api.rackspacecloud.com/v1.0/833532/instances
92
+ body:
93
+ encoding: US-ASCII
94
+ string: ''
95
+ headers:
96
+ User-Agent:
97
+ - fog/1.12.1
98
+ Content-Type:
99
+ - application/json
100
+ Accept:
101
+ - application/json
102
+ X-Auth-Token:
103
+ - <rackspace-api-token>
104
+ response:
105
+ status:
106
+ code: 200
107
+ message:
108
+ headers:
109
+ Content-Type:
110
+ - application/json
111
+ Via:
112
+ - 1.1 Repose (Repose/2.6.11)
113
+ Content-Length:
114
+ - '630'
115
+ Date:
116
+ - Mon, 26 Aug 2013 15:46:14 GMT
117
+ Server:
118
+ - Jetty(8.0.y.z-SNAPSHOT)
119
+ body:
120
+ encoding: UTF-8
121
+ string: '{"instances": [{"status": "ACTIVE", "name": "decided-irony", "links":
122
+ [{"href": "https://ord.databases.api.rackspacecloud.com:443/v1.0/833532/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f",
123
+ "rel": "self"}, {"href": "https://ord.databases.api.rackspacecloud.com:443/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f",
124
+ "rel": "bookmark"}], "volume": {"size": 1}, "flavor": {"id": "1", "links":
125
+ [{"href": "https://ord.databases.api.rackspacecloud.com:443/v1.0/833532/flavors/1",
126
+ "rel": "self"}, {"href": "https://ord.databases.api.rackspacecloud.com:443/flavors/1",
127
+ "rel": "bookmark"}]}, "id": "1c651e9e-f207-44a3-8b52-0ae620f43b4f"}]}'
128
+ http_version:
129
+ recorded_at: Mon, 26 Aug 2013 15:46:14 GMT
130
+ - request:
131
+ method: get
132
+ uri: https://ord.databases.api.rackspacecloud.com/v1.0/833532/instances/1c651e9e-f207-44a3-8b52-0ae620f43b4f/users
133
+ body:
134
+ encoding: US-ASCII
135
+ string: ''
136
+ headers:
137
+ User-Agent:
138
+ - fog/1.12.1
139
+ Content-Type:
140
+ - application/json
141
+ Accept:
142
+ - application/json
143
+ X-Auth-Token:
144
+ - <rackspace-api-token>
145
+ response:
146
+ status:
147
+ code: 200
148
+ message:
149
+ headers:
150
+ Content-Type:
151
+ - application/json
152
+ Via:
153
+ - 1.1 Repose (Repose/2.6.11)
154
+ Content-Length:
155
+ - '88'
156
+ Date:
157
+ - Mon, 26 Aug 2013 15:46:14 GMT
158
+ Server:
159
+ - Jetty(8.0.y.z-SNAPSHOT)
160
+ body:
161
+ encoding: UTF-8
162
+ string: '{"users": [{"host": "%", "name": "test", "databases": [{"name": "dependable-bottom"}]}]}'
163
+ http_version:
164
+ recorded_at: Mon, 26 Aug 2013 15:46:14 GMT
165
+ recorded_with: VCR 2.5.0
@@ -2,7 +2,6 @@ require "rumm"
2
2
  require "vcr"
3
3
  require "aruba/api"
4
4
  require "rspec-given"
5
- require "netrc"
6
5
  $: << File.expand_path("../../app/providers", __FILE__)
7
6
 
8
7
  module Rumm::SpecHelper
@@ -43,20 +42,29 @@ RSpec.configure do |config|
43
42
  end
44
43
  end
45
44
 
46
- shared_context "netrc" do
45
+ shared_context "rummrc" do
47
46
  before do
48
- if netrc = Netrc.read['api.rackspace.com']
49
- login, api_token = netrc
47
+ if File.exists? "#{File.expand_path('~')}/.rummrc"
48
+ FileUtils.copy_file "#{File.expand_path('~')}/.rummrc", home.join('.rummrc')
50
49
  else
51
- login, api_token = '<rackspace-username>', '<rackspace-api-token>'
52
- end
53
- File.open(home.join('.netrc'), "w") do |f|
54
- f.chmod 0600
55
- f.puts "machine api.rackspace.com"
56
- f.puts " login #{login}"
57
- f.puts " password #{api_token}"
50
+ File.open(home.join('.rummrc'), "w") do |f|
51
+ f.puts "{\"environments\":{\"default\":{\"region\":\"ord\",\"username\":\"<rackspace_username>\",\"api_key\":\"<rackspace_api_key>\"}}}"
52
+ end
58
53
  end
59
54
  end
55
+ include_context "set home"
56
+ end
57
+
58
+ shared_context "set fake home" do
59
+ Given(:home) {Pathname(set_env "HOME", "#{File.expand_path(current_dir)}/tmp")}
60
+
61
+ after do
62
+ restore_env
63
+ end
64
+
65
+ end
66
+ shared_context "set home" do
67
+
60
68
  Given(:home) {Pathname(set_env "HOME", File.expand_path(current_dir))}
61
69
 
62
70
  after do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.23
4
+ version: 0.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Lowell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-03 00:00:00.000000000 Z
11
+ date: 2013-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mvcli
@@ -30,28 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 1.15.0
33
+ version: 1.16.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: 1.15.0
41
- - !ruby/object:Gem::Dependency
42
- name: netrc
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
40
+ version: 1.16.0
55
41
  description: Lift heavy things inside your Rackspace
56
42
  email:
57
43
  - cowboyd@thefrontside.net
@@ -90,6 +76,7 @@ files:
90
76
  - app/forms/loadbalancers/create_form.rb
91
77
  - app/forms/nodes/create_form.rb
92
78
  - app/forms/servers/create_form.rb
79
+ - app/forms/servers/update_form.rb
93
80
  - app/forms/users/create_form.rb
94
81
  - app/forms/volumes/create_form.rb
95
82
  - app/help/commands.txt
@@ -140,10 +127,12 @@ files:
140
127
  - app/help/show_volume.txt
141
128
  - app/help/show_volumes.txt
142
129
  - app/help/ssh.txt
130
+ - app/help/update_server.txt
143
131
  - app/models/help.rb
144
132
  - app/models/loadbalancers/node.rb
145
133
  - app/providers/access_token_provider.rb
146
134
  - app/providers/compute_provider.rb
135
+ - app/providers/configuration_provider.rb
147
136
  - app/providers/console_provider.rb
148
137
  - app/providers/containers_provider.rb
149
138
  - app/providers/credentials_provider.rb
@@ -151,12 +140,13 @@ files:
151
140
  - app/providers/instance_provider.rb
152
141
  - app/providers/instances_provider.rb
153
142
  - app/providers/loadbalancers_provider.rb
143
+ - app/providers/login_information_provider.rb
154
144
  - app/providers/naming/adj.txt
155
145
  - app/providers/naming/dictionary.pstore
156
146
  - app/providers/naming/nouns.txt
157
147
  - app/providers/naming_provider.rb
158
148
  - app/providers/nodes_provider.rb
159
- - app/providers/user_provider.rb
149
+ - app/providers/users_provider.rb
160
150
  - app/providers/volumes_provider.rb
161
151
  - app/routes.rb
162
152
  - app/views/attachments/attach.txt.erb
@@ -197,17 +187,22 @@ files:
197
187
  - app/views/servers/destroy.txt.erb
198
188
  - app/views/servers/index.txt.erb
199
189
  - app/views/servers/show.txt.erb
190
+ - app/views/servers/update.txt.erb
200
191
  - app/views/users/create.txt.erb
192
+ - app/views/users/destroy.txt.erb
201
193
  - app/views/users/index.txt.erb
194
+ - app/views/users/show.txt.erb
202
195
  - app/views/volumes/create.txt.erb
203
196
  - app/views/volumes/destroy.txt.erb
204
197
  - app/views/volumes/index.txt.erb
205
198
  - app/views/volumes/show.txt.erb
206
199
  - bin/rumm
207
200
  - lib/rumm.rb
201
+ - lib/rumm/exceptions.rb
208
202
  - lib/rumm/version.rb
209
203
  - rumm.gemspec
210
204
  - spec/features/attachments_spec.rb
205
+ - spec/features/configuration_spec.rb
211
206
  - spec/features/containers_spec.rb
212
207
  - spec/features/databases_spec.rb
213
208
  - spec/features/dbinstances_spec.rb
@@ -217,6 +212,7 @@ files:
217
212
  - spec/features/login_spec.rb
218
213
  - spec/features/nodes_spec.rb
219
214
  - spec/features/servers_spec.rb
215
+ - spec/features/users_spec.rb
220
216
  - spec/features/volumes_spec.rb
221
217
  - spec/fixtures/cassettes/attachments/create.yml
222
218
  - spec/fixtures/cassettes/attachments/destroy.yml
@@ -253,6 +249,10 @@ files:
253
249
  - spec/fixtures/cassettes/servers/destroy.yml
254
250
  - spec/fixtures/cassettes/servers/show-all.yml
255
251
  - spec/fixtures/cassettes/servers/show.yml
252
+ - spec/fixtures/cassettes/users/create.yml
253
+ - spec/fixtures/cassettes/users/destroy.yml
254
+ - spec/fixtures/cassettes/users/show-all.yml
255
+ - spec/fixtures/cassettes/users/show.yml
256
256
  - spec/fixtures/cassettes/volumes/create.yml
257
257
  - spec/fixtures/cassettes/volumes/destroy.yml
258
258
  - spec/fixtures/cassettes/volumes/show-all.yml
@@ -286,6 +286,7 @@ specification_version: 4
286
286
  summary: CLI and API for managing Rackspace infrastructure
287
287
  test_files:
288
288
  - spec/features/attachments_spec.rb
289
+ - spec/features/configuration_spec.rb
289
290
  - spec/features/containers_spec.rb
290
291
  - spec/features/databases_spec.rb
291
292
  - spec/features/dbinstances_spec.rb
@@ -295,6 +296,7 @@ test_files:
295
296
  - spec/features/login_spec.rb
296
297
  - spec/features/nodes_spec.rb
297
298
  - spec/features/servers_spec.rb
299
+ - spec/features/users_spec.rb
298
300
  - spec/features/volumes_spec.rb
299
301
  - spec/fixtures/cassettes/attachments/create.yml
300
302
  - spec/fixtures/cassettes/attachments/destroy.yml
@@ -331,6 +333,10 @@ test_files:
331
333
  - spec/fixtures/cassettes/servers/destroy.yml
332
334
  - spec/fixtures/cassettes/servers/show-all.yml
333
335
  - spec/fixtures/cassettes/servers/show.yml
336
+ - spec/fixtures/cassettes/users/create.yml
337
+ - spec/fixtures/cassettes/users/destroy.yml
338
+ - spec/fixtures/cassettes/users/show-all.yml
339
+ - spec/fixtures/cassettes/users/show.yml
334
340
  - spec/fixtures/cassettes/volumes/create.yml
335
341
  - spec/fixtures/cassettes/volumes/destroy.yml
336
342
  - spec/fixtures/cassettes/volumes/show-all.yml