rackconnect 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +44 -0
  6. data/Rakefile +5 -0
  7. data/lib/rackconnect.rb +14 -0
  8. data/lib/rackconnect/lib/auth.rb +27 -0
  9. data/lib/rackconnect/lib/bulk_nodes.rb +48 -0
  10. data/lib/rackconnect/lib/bulkable_model.rb +22 -0
  11. data/lib/rackconnect/lib/constants.rb +6 -0
  12. data/lib/rackconnect/lib/model.rb +72 -0
  13. data/lib/rackconnect/lib/request.rb +52 -0
  14. data/lib/rackconnect/lib/singleton_model.rb +19 -0
  15. data/lib/rackconnect/models/cloud_network.rb +7 -0
  16. data/lib/rackconnect/models/load_balancer_pool.rb +8 -0
  17. data/lib/rackconnect/models/load_balancer_pool_details.rb +8 -0
  18. data/lib/rackconnect/models/load_balancer_pool_node.rb +8 -0
  19. data/lib/rackconnect/models/load_balancer_pool_node_details.rb +10 -0
  20. data/lib/rackconnect/models/public_ip.rb +8 -0
  21. data/lib/rackconnect/models/server_group.rb +8 -0
  22. data/lib/rackconnect/models/server_group_details.rb +8 -0
  23. data/lib/rackconnect/models/server_group_node.rb +8 -0
  24. data/lib/rackconnect/models/server_group_node_details.rb +10 -0
  25. data/lib/rackconnect/version.rb +3 -0
  26. data/rackconnect.gemspec +29 -0
  27. data/spec/rackconnect/models/cloud_network_spec.rb +25 -0
  28. data/spec/rackconnect/models/load_balancer_pool_details_spec.rb +25 -0
  29. data/spec/rackconnect/models/load_balancer_pool_node_details.rb +23 -0
  30. data/spec/rackconnect/models/load_balancer_pool_node_details_spec.rb +45 -0
  31. data/spec/rackconnect/models/load_balancer_pool_node_spec.rb +37 -0
  32. data/spec/rackconnect/models/load_balancer_pool_spec.rb +39 -0
  33. data/spec/rackconnect/models/public_ip_spec.rb +45 -0
  34. data/spec/rackconnect/models/server_group_details_spec.rb +14 -0
  35. data/spec/rackconnect/models/server_group_node_details_spec.rb +45 -0
  36. data/spec/rackconnect/models/server_group_node_spec.rb +38 -0
  37. data/spec/rackconnect/models/server_group_spec.rb +53 -0
  38. data/spec/spec_helper.rb +25 -0
  39. data/spec/vcr/apiary/auth.yml +76 -0
  40. data/spec/vcr/apiary/lbpn_create.yml +52 -0
  41. data/spec/vcr/apiary/lbpnd_get_details.yml +86 -0
  42. data/spec/vcr/apiary/load_balancer_bulk_add_nodes.yml +58 -0
  43. data/spec/vcr/apiary/load_balancer_bulk_remove_nodes.yml +97 -0
  44. data/spec/vcr/apiary/load_balancer_pool.yml +57 -0
  45. data/spec/vcr/apiary/load_balancer_pool_details.yml +57 -0
  46. data/spec/vcr/apiary/load_balancer_pool_node.yml +48 -0
  47. data/spec/vcr/apiary/load_balancer_pool_node_destroy.yml +42 -0
  48. data/spec/vcr/apiary/load_balancer_pool_node_details.yml +57 -0
  49. data/spec/vcr/apiary/load_balancer_pool_nodes.yml +60 -0
  50. data/spec/vcr/apiary/load_balancer_pools.yml +85 -0
  51. data/spec/vcr/apiary/network.yml +51 -0
  52. data/spec/vcr/apiary/networks.yml +53 -0
  53. data/spec/vcr/apiary/pool.yml +57 -0
  54. data/spec/vcr/apiary/pools.yml +85 -0
  55. data/spec/vcr/apiary/public_ip.yml +66 -0
  56. data/spec/vcr/apiary/public_ip_create.yml +70 -0
  57. data/spec/vcr/apiary/public_ip_destroy.yml +42 -0
  58. data/spec/vcr/apiary/public_ips.yml +68 -0
  59. data/spec/vcr/apiary/public_ips_for_server.yml +68 -0
  60. data/spec/vcr/apiary/server_group.yml +57 -0
  61. data/spec/vcr/apiary/server_group_bulk_add_nodes.yml +58 -0
  62. data/spec/vcr/apiary/server_group_bulk_remove_nodes.yml +97 -0
  63. data/spec/vcr/apiary/server_group_create.yml +60 -0
  64. data/spec/vcr/apiary/server_group_destroy.yml +42 -0
  65. data/spec/vcr/apiary/server_group_details.yml +92 -0
  66. data/spec/vcr/apiary/server_group_node.yml +48 -0
  67. data/spec/vcr/apiary/server_group_node_destroy.yml +42 -0
  68. data/spec/vcr/apiary/server_group_node_details.yml +57 -0
  69. data/spec/vcr/apiary/server_group_nodes.yml +60 -0
  70. data/spec/vcr/apiary/server_groups.yml +85 -0
  71. data/spec/vcr/apiary/sgnd_for_server.yml +66 -0
  72. data/spec/vcr/apiary/sgnn_create.yml +52 -0
  73. metadata +260 -0
@@ -0,0 +1,8 @@
1
+ class Rackconnect::ServerGroup
2
+ include Rackconnect::Model
3
+ include Rackconnect::BulkNodes
4
+
5
+ endpoint "/server_groups"
6
+ attributes :created, :id, :name, :node_counts, :status, :status_detail, :updated
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ class Rackconnect::ServerGroupDetails
2
+ include Rackconnect::Model # Curiously; *not Singleton*
3
+
4
+ endpoint_vars :group_id
5
+ endpoint { "/server_groups/#{group_id}/nodes/details" }
6
+ attributes :created, :cloud_server, :id, :server_group, :status, :status_detail, :updated
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ class Rackconnect::ServerGroupNode
2
+ include Rackconnect::Model
3
+
4
+ endpoint_vars :group_id
5
+ endpoint { "/server_groups/#{self.group_id}/nodes" }
6
+ attributes :created, :cloud_server, :id, :server_group, :status, :status_detail, :updated
7
+
8
+ end
@@ -0,0 +1,10 @@
1
+ class Rackconnect::ServerGroupNodeDetails
2
+ include Rackconnect::SingletonModel
3
+ include Rackconnect::BulkableModel
4
+
5
+ attributes :created, :cloud_server, :id, :server_group, :status, :status_detail, :updated
6
+ endpoint_vars :group_id, :node_id
7
+ endpoint { "/server_groups/#{group_id}/nodes/#{node_id}/details" }
8
+ bulk_path "/server_groups/nodes/details"
9
+
10
+ end
@@ -0,0 +1,3 @@
1
+ module Rackconnect
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rackconnect/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rackconnect"
8
+ spec.version = Rackconnect::VERSION
9
+ spec.authors = ["Matt Darby"]
10
+ spec.email = ["matt.darby@rackspace.com"]
11
+ spec.summary = "API Wrapper for RackConnect v3 service from Rackspace"
12
+ spec.description = "API Wrapper for RackConnect v3 service from Rackspace"
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "pry"
24
+ spec.add_development_dependency "rspec"
25
+ spec.add_development_dependency "webmock"
26
+ spec.add_development_dependency "vcr"
27
+
28
+ spec.add_dependency "rest-client"
29
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::CloudNetwork do
4
+
5
+ let(:networks) do
6
+ VCR.use_cassette('networks') do
7
+ Rackconnect::CloudNetwork.all
8
+ end
9
+ end
10
+
11
+ let(:network) do
12
+ VCR.use_cassette('network') do
13
+ Rackconnect::CloudNetwork.find(networks.first.id)
14
+ end
15
+ end
16
+
17
+ it "is indexable" do
18
+ expect(networks.count).to eq(1)
19
+ end
20
+
21
+ it "is findable" do
22
+ expect(network.nil?).to eq(false)
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::LoadBalancerPoolDetails do
4
+ let(:pools) do
5
+ VCR.use_cassette('pools') do
6
+ Rackconnect::LoadBalancerPool.all
7
+ end
8
+ end
9
+
10
+ let(:pool) do
11
+ VCR.use_cassette('pool') do
12
+ Rackconnect::LoadBalancerPool.find(pools.first.id)
13
+ end
14
+ end
15
+
16
+ let(:load_balancer_pool_details) do
17
+ VCR.use_cassette('load_balancer_pool_details') do
18
+ Rackconnect::LoadBalancerPoolDetails.all(pool_id: pool.id)
19
+ end
20
+ end
21
+
22
+ it "is reachable" do
23
+ expect(load_balancer_pool_details.nil?).to eq(false)
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::LoadBalancerPoolNodeDetails do
4
+ let(:load_balancer_pool_node_details) do
5
+ VCR.use_cassette('load_balancer_pool_node_details') do
6
+ Rackconnect::Cloudload_balancer_pool_detail.all
7
+ end
8
+ end
9
+
10
+ let(:load_balancer_pool_detail) do
11
+ VCR.use_cassette('load_balancer_pool_detail') do
12
+ Rackconnect::Cloudload_balancer_pool_detail.find(load_balancer_pool_node_details.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(load_balancer_pool_node_details.count).to eq(1)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(load_balancer_pool_detail.nil?).to eq(false)
22
+ end
23
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::LoadBalancerPoolNodeDetails do
4
+ let(:pools) do
5
+ VCR.use_cassette('pools') do
6
+ Rackconnect::LoadBalancerPool.all
7
+ end
8
+ end
9
+
10
+ let(:pool) do
11
+ VCR.use_cassette('pool') do
12
+ Rackconnect::LoadBalancerPool.find(pools.first.id)
13
+ end
14
+ end
15
+
16
+ let(:load_balancer_pool_nodes) do
17
+ VCR.use_cassette('load_balancer_pool_nodes') do
18
+ Rackconnect::LoadBalancerPoolNode.all
19
+ end
20
+ end
21
+
22
+ let(:load_balancer_pool_node) do
23
+ VCR.use_cassette('load_balancer_pool_node') do
24
+ Rackconnect::LoadBalancerPoolNode.find(load_balancer_pool_nodes.first.id)
25
+ end
26
+ end
27
+
28
+ let(:load_balancer_pool_node_details) do
29
+ VCR.use_cassette('load_balancer_pool_node_details') do
30
+ Rackconnect::LoadBalancerPoolNodeDetails.all(pool_id: pool.id, node_id: load_balancer_pool_node.id)
31
+ end
32
+ end
33
+
34
+ it "is gettable" do
35
+ expect(load_balancer_pool_node_details.nil?).to eq(false)
36
+ end
37
+
38
+ it "can get details for a server" do
39
+ VCR.use_cassette('lbpnd_get_details') do
40
+ id = "1860451d-fb89-45b8-b54e-151afceb50e5"
41
+ expect(Rackconnect::LoadBalancerPoolNodeDetails.for_server(id).created.nil?).to eq(false)
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::LoadBalancerPoolNode do
4
+ let(:load_balancer_pool_nodes) do
5
+ VCR.use_cassette('load_balancer_pool_nodes') do
6
+ Rackconnect::LoadBalancerPoolNode.all
7
+ end
8
+ end
9
+
10
+ let(:load_balancer_pool_node) do
11
+ VCR.use_cassette('load_balancer_pool_node') do
12
+ Rackconnect::LoadBalancerPoolNode.find(load_balancer_pool_nodes.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(load_balancer_pool_nodes.count).to eq(3)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(load_balancer_pool_node.nil?).to eq(false)
22
+ end
23
+
24
+ it "is creatable" do
25
+ VCR.use_cassette('lbpn_create') do
26
+ # TODO: This is a bit bothersome?
27
+ obj = Rackconnect::LoadBalancerPoolNode.create({})
28
+ expect(obj.id.nil?).to be(false)
29
+ end
30
+ end
31
+
32
+ it "is destroyable" do
33
+ VCR.use_cassette('load_balancer_pool_node_destroy') do
34
+ expect(load_balancer_pool_node.destroy).to be(true)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::LoadBalancerPool do
4
+ let(:load_balancer_pools) do
5
+ VCR.use_cassette('load_balancer_pools') do
6
+ Rackconnect::LoadBalancerPool.all
7
+ end
8
+ end
9
+
10
+ let(:load_balancer_pool) do
11
+ VCR.use_cassette('load_balancer_pool') do
12
+ Rackconnect::LoadBalancerPool.find(load_balancer_pools.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(load_balancer_pools.count).to eq(3)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(load_balancer_pool.nil?).to eq(false)
22
+ end
23
+
24
+ it "can bulk add nodes" do
25
+ VCR.use_cassette('load_balancer_bulk_add_nodes') do
26
+ nodes = load_balancer_pool.add_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
27
+ expect(nodes.count).to eq(2)
28
+ end
29
+ end
30
+
31
+ it "can bulk remove nodes" do
32
+ VCR.use_cassette('load_balancer_bulk_remove_nodes') do
33
+ nodes = load_balancer_pool.add_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
34
+ resp = load_balancer_pool.remove_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
35
+ expect(resp).to eq(true)
36
+ end
37
+ end
38
+
39
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::PublicIP do
4
+ let(:public_ips) do
5
+ VCR.use_cassette('public_ips') do
6
+ Rackconnect::PublicIP.all
7
+ end
8
+ end
9
+
10
+ let(:public_ip) do
11
+ VCR.use_cassette('public_ip') do
12
+ Rackconnect::PublicIP.find(public_ips.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(public_ips.count).to eq(1)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(public_ip.nil?).to eq(false)
22
+ end
23
+
24
+ it "can get details for a server" do
25
+ VCR.use_cassette('public_ips_for_server') do
26
+ id = "07426958-1ebf-4c38-b032-d456820ca21a"
27
+ expect(Rackconnect::PublicIP.for_server(id).created.nil?).to eq(false)
28
+ end
29
+ end
30
+
31
+ it "is creatable" do
32
+ VCR.use_cassette('public_ip_create') do
33
+ # TODO: This is a bit bothersome?
34
+ obj = Rackconnect::PublicIP.create({})
35
+ expect(obj.id.nil?).to be(false)
36
+ end
37
+ end
38
+
39
+ it "is destroyable" do
40
+ VCR.use_cassette('public_ip_destroy') do
41
+ expect(public_ip.destroy).to be(true)
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::ServerGroupDetails do
4
+ let(:server_group_details) do
5
+ VCR.use_cassette('server_group_details') do
6
+ Rackconnect::ServerGroupDetails.all
7
+ end
8
+ end
9
+
10
+ it "is findable" do
11
+ expect(server_group_details.count).to eq(3)
12
+ end
13
+
14
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::ServerGroupNodeDetails do
4
+ let(:server_groups) do
5
+ VCR.use_cassette('server_groups') do
6
+ Rackconnect::ServerGroup.all
7
+ end
8
+ end
9
+
10
+ let(:server_group) do
11
+ VCR.use_cassette('server_group') do
12
+ Rackconnect::ServerGroup.find(server_groups.first.id)
13
+ end
14
+ end
15
+
16
+ let(:server_group_nodes) do
17
+ VCR.use_cassette('server_group_nodes') do
18
+ Rackconnect::ServerGroupNode.all
19
+ end
20
+ end
21
+
22
+ let(:server_group_node) do
23
+ VCR.use_cassette('server_group_node') do
24
+ Rackconnect::ServerGroupNode.find(server_group_nodes.first.id)
25
+ end
26
+ end
27
+
28
+ let(:server_group_node_details) do
29
+ VCR.use_cassette('server_group_node_details') do
30
+ Rackconnect::ServerGroupNodeDetails.all(group_id: server_group.id, node_id: server_group_node.id)
31
+ end
32
+ end
33
+
34
+ it "is gettable" do
35
+ expect(server_group_node_details.nil?).to eq(false)
36
+ end
37
+
38
+ it "can get details for a server" do
39
+ VCR.use_cassette('sgnd_for_server') do
40
+ id = "07426958-1ebf-4c38-b032-d456820ca21a"
41
+ expect(Rackconnect::ServerGroupNodeDetails.for_server(id).created.nil?).to eq(false)
42
+ end
43
+ end
44
+
45
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::ServerGroupNode do
4
+ let(:server_group_nodes) do
5
+ VCR.use_cassette('server_group_nodes') do
6
+ Rackconnect::ServerGroupNode.all
7
+ end
8
+ end
9
+
10
+ let(:server_group_node) do
11
+ VCR.use_cassette('server_group_node') do
12
+ Rackconnect::ServerGroupNode.find(server_group_nodes.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(server_group_nodes.count).to eq(3)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(server_group_node.nil?).to eq(false)
22
+ end
23
+
24
+ it "is creatable" do
25
+ VCR.use_cassette('sgnn_create') do
26
+ # TODO: This is a bit bothersome?
27
+ obj = Rackconnect::ServerGroupNode.create({})
28
+ expect(obj.id.nil?).to be(false)
29
+ end
30
+ end
31
+
32
+ it "is destroyable" do
33
+ VCR.use_cassette('server_group_node_destroy') do
34
+ expect(server_group_node.destroy).to be(true)
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rackconnect::ServerGroup do
4
+ let(:server_groups) do
5
+ VCR.use_cassette('server_groups') do
6
+ Rackconnect::ServerGroup.all
7
+ end
8
+ end
9
+
10
+ let(:server_group) do
11
+ VCR.use_cassette('server_group') do
12
+ Rackconnect::ServerGroup.find(server_groups.first.id)
13
+ end
14
+ end
15
+
16
+ it "is indexable" do
17
+ expect(server_groups.count).to eq(3)
18
+ end
19
+
20
+ it "is findable" do
21
+ expect(server_group.nil?).to eq(false)
22
+ end
23
+
24
+ it "is creatable" do
25
+ VCR.use_cassette('server_group_create') do
26
+ # TODO: This is a bit bothersome?
27
+ obj = Rackconnect::ServerGroup.create({})
28
+ expect(obj.id.nil?).to be(false)
29
+ end
30
+ end
31
+
32
+ it "is destroyable" do
33
+ VCR.use_cassette('server_group_destroy') do
34
+ expect(server_group.destroy).to be(true)
35
+ end
36
+ end
37
+
38
+ it "can bulk add nodes" do
39
+ VCR.use_cassette('server_group_bulk_add_nodes') do
40
+ nodes = server_group.add_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
41
+ expect(nodes.count).to eq(2)
42
+ end
43
+ end
44
+
45
+ it "can bulk remove nodes" do
46
+ VCR.use_cassette('server_group_bulk_remove_nodes') do
47
+ nodes = server_group.add_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
48
+ resp = server_group.remove_nodes(["d95ae0c4-6ab8-4873-b82f-f8433840cff2"])
49
+ expect(resp).to eq(true)
50
+ end
51
+ end
52
+
53
+ end