didata_cloud_sdk 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -1
- data/examples/list_networks.rb +3 -1
- data/examples/make_servers_in_new_network.rb +5 -2
- data/examples/make_servers_in_new_network2.rb +87 -0
- data/examples/remove_server_from_server_farm.rb +69 -0
- data/examples/start_and_add_server_to_server_farm.rb +73 -0
- data/lib/ddcloud/client.rb +2 -0
- data/lib/ddcloud/version.rb +1 -1
- metadata +21 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea28e11f44f4c085361fd7a23731036fe57c38d
|
4
|
+
data.tar.gz: faf096072e454843070199f7ed9acb60d585718d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e3dd238b33ddef888105e77fb5924a7619f0e898beb4ac58138a686fe2619d8a1dce24141b9a729f462304f36ad137a435cad6f84a92e7fcaa4f35a5dbe01b2
|
7
|
+
data.tar.gz: e7854665565e3a0b294a3eb9342ab83c47a288f80f2c87a877fff8f6a274ce4ffc918d39bd1172f37734d581fac61825d459e4994e7679b56df09b6b82c5a3d4
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ require 'ddcloud.rb'
|
|
22
22
|
|
23
23
|
```
|
24
24
|
require "ddcloud"
|
25
|
-
api_base =
|
25
|
+
api_base = DDcloud::Client::API_URL[:eu]
|
26
26
|
dev_org_id = 'my-super-secret-org-numbersandletters'
|
27
27
|
dev_user = 'me'
|
28
28
|
dev_password = 'very secret'
|
@@ -35,6 +35,9 @@ pp c.server.show_with_disks(server.network_id, server.id)
|
|
35
35
|
|
36
36
|
### Examples
|
37
37
|
|
38
|
+
See ```/examples``` for more examples.
|
39
|
+
|
40
|
+
|
38
41
|
```
|
39
42
|
#create a new network
|
40
43
|
c.network.create("network-name", "description", "EU1")
|
data/examples/list_networks.rb
CHANGED
@@ -9,6 +9,8 @@ require "./credentials.rb"
|
|
9
9
|
require "./util.rb"
|
10
10
|
|
11
11
|
|
12
|
-
c = DDcloud::Client.new
|
12
|
+
c = DDcloud::Client.new DDcloud::Client::API_URL[:eu], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
13
|
+
|
14
|
+
puts DDcloud::Client::API_URL[:eu]
|
13
15
|
|
14
16
|
pp c.network.list
|
@@ -8,6 +8,9 @@ require "optparse"
|
|
8
8
|
require "./credentials.rb"
|
9
9
|
|
10
10
|
def diff_id_hashes(h1, h2)
|
11
|
+
puts "in diff"
|
12
|
+
pp h1
|
13
|
+
pp h2
|
11
14
|
a1 = h1.map { |e| e[:id] }
|
12
15
|
a2 = h2.map { |e| e[:id] }
|
13
16
|
a2 - a1
|
@@ -15,7 +18,7 @@ end
|
|
15
18
|
|
16
19
|
def block_until_server_normal(c, name)
|
17
20
|
while true do
|
18
|
-
if c.server.list(name: name)[:state] == "NORMAL"
|
21
|
+
if((not c.server.list(name: name).empty?) && (c.server.list(name: name)[:state] == "NORMAL"))
|
19
22
|
break
|
20
23
|
end
|
21
24
|
sleep 1
|
@@ -60,7 +63,7 @@ c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[
|
|
60
63
|
c.network.create options[:name], "Automatically generated network"
|
61
64
|
|
62
65
|
network_id = c.network.show_by_name(options[:name])[:id]
|
63
|
-
image_id =
|
66
|
+
image_id = DDcloud::Client::IMAGES[:ubuntu_14_04] #image id for ubuntu 14.04
|
64
67
|
|
65
68
|
|
66
69
|
before = c.server.list(network_id: network_id)
|
@@ -0,0 +1,87 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require "ddcloud"
|
5
|
+
require "pp"
|
6
|
+
require "optparse"
|
7
|
+
|
8
|
+
require "./credentials.rb"
|
9
|
+
|
10
|
+
def diff_id_hashes(h1, h2)
|
11
|
+
a1 = h1.map { |e| e[:id] }
|
12
|
+
a2 = h2.map { |e| e[:id] }
|
13
|
+
a2 - a1
|
14
|
+
end
|
15
|
+
|
16
|
+
def block_until_server_normal(c, name)
|
17
|
+
while true do
|
18
|
+
if c.server.list(name: name)[:state] == "NORMAL"
|
19
|
+
break
|
20
|
+
end
|
21
|
+
sleep 1
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def log(string)
|
26
|
+
time = DateTime.now.strftime("%H:%M")
|
27
|
+
puts "#{time} -> #{string}"
|
28
|
+
end
|
29
|
+
|
30
|
+
options = {}
|
31
|
+
|
32
|
+
OptionParser.new do |opts|
|
33
|
+
opts.banner = "Usage: example.rb [options]"
|
34
|
+
|
35
|
+
opts.on("-n", "--number NUMBER", "Number of hosts") do |n|
|
36
|
+
options[:number] = n.to_i
|
37
|
+
end
|
38
|
+
opts.on("-a", "--network_name name", "Name of the network to be created") do |n|
|
39
|
+
options[:name] = n
|
40
|
+
end
|
41
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
42
|
+
puts opts
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
end.parse!
|
46
|
+
|
47
|
+
if not options[:number]
|
48
|
+
puts "Please specify the number of machines to create with -n"
|
49
|
+
puts "For help, use -h"
|
50
|
+
exit
|
51
|
+
end
|
52
|
+
if not options[:name]
|
53
|
+
puts "Please specify the network name with -a"
|
54
|
+
puts "For help, use -h"
|
55
|
+
exit
|
56
|
+
end
|
57
|
+
|
58
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
59
|
+
|
60
|
+
c.network.create options[:name], "Automatically generated network"
|
61
|
+
|
62
|
+
network_id = c.network.show_by_name(options[:name])[:id]
|
63
|
+
image_id = "d4ed6d40-e2f0-11e2-84e5-180373fb68df" #default image id
|
64
|
+
|
65
|
+
|
66
|
+
before = c.server.list(network_id: network_id)
|
67
|
+
c.server.create "jumphost", "Automatically generated server", network_id, image_id
|
68
|
+
(1...options[:number]).each do |n|
|
69
|
+
c.server.create "autoserver-#{n+1}", "Automatically generated server", network_id, image_id
|
70
|
+
end
|
71
|
+
(1...options[:number]).each do |n|
|
72
|
+
block_until_server_normal c, "autoserver-#{n+1}"
|
73
|
+
log "autoserver-#{n+1} started"
|
74
|
+
end
|
75
|
+
after = c.server.list(network_id: network_id)
|
76
|
+
created_servers = diff_id_hashes(before, after)
|
77
|
+
log "Created: #{created_servers.to_s}"
|
78
|
+
|
79
|
+
#create acl rule
|
80
|
+
c.network.aclrule_create(network_id, "allow ssh", 112, true, "TCP", 22, true)
|
81
|
+
|
82
|
+
#nat the servers so we can make our changes
|
83
|
+
server = created_servers[0]
|
84
|
+
details = after.select { |a| a["id"] == server }
|
85
|
+
details = details[0]
|
86
|
+
log details.to_s
|
87
|
+
c.network.natrule_create(network_id, details[:name], details[:private_ip])
|
@@ -0,0 +1,69 @@
|
|
1
|
+
|
2
|
+
require "ddcloud"
|
3
|
+
require "pp"
|
4
|
+
require "optparse"
|
5
|
+
|
6
|
+
require "./credentials.rb"
|
7
|
+
|
8
|
+
def diff_id_hashes(h1, h2)
|
9
|
+
a1 = h1.map { |e| e[:id] }
|
10
|
+
a2 = h2.map { |e| e[:id] }
|
11
|
+
a2 - a1
|
12
|
+
end
|
13
|
+
|
14
|
+
def block_until_server_normal(c, name)
|
15
|
+
while true do
|
16
|
+
if c.server.list(name: name)[:state] == "NORMAL"
|
17
|
+
break
|
18
|
+
end
|
19
|
+
sleep 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def log(string)
|
24
|
+
time = DateTime.now.strftime("%H:%M")
|
25
|
+
puts "#{time} -> #{string}"
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
31
|
+
|
32
|
+
network_id = "8a55ac56-2821-11e1-ada2-180373fb68df"
|
33
|
+
farm_id = "8b4eaa29-b290-4771-96f0-b9c79596bc44"
|
34
|
+
|
35
|
+
|
36
|
+
log "server farm list"
|
37
|
+
pp c.vip.server_farm_list network_id
|
38
|
+
|
39
|
+
log "server farm details"
|
40
|
+
real_servers = c.vip.server_farm_details network_id, farm_id
|
41
|
+
|
42
|
+
pp real_servers
|
43
|
+
log "server farm real server details"
|
44
|
+
pp real_servers[:real_server]
|
45
|
+
if real_servers[:real_server].length > 1 && real_servers[:real_server].kind_of?(Array)
|
46
|
+
host = real_servers[:real_server][0]
|
47
|
+
|
48
|
+
list_real_servers = c.vip.real_servers_list network_id
|
49
|
+
|
50
|
+
server_id = ""
|
51
|
+
real_server_id = host[:id]
|
52
|
+
pp real_server_id
|
53
|
+
list_real_servers.each do |real_server|
|
54
|
+
if real_server[:id] == real_server_id
|
55
|
+
server_id = real_server[:server_id]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
pp server_id
|
60
|
+
|
61
|
+
puts "----removing from the server farm----"
|
62
|
+
pp c.vip.real_server_from_server_farm network_id, farm_id, real_server_id, 80
|
63
|
+
puts "----shutting down server----"
|
64
|
+
pp c.server.shutdown server_id
|
65
|
+
else
|
66
|
+
log "no more servers to remove"
|
67
|
+
end
|
68
|
+
|
69
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
|
2
|
+
require "ddcloud"
|
3
|
+
require "pp"
|
4
|
+
require "optparse"
|
5
|
+
|
6
|
+
require "./credentials.rb"
|
7
|
+
|
8
|
+
def diff_id_hashes(h1, h2)
|
9
|
+
a1 = h1.map { |e| e[:id] }
|
10
|
+
a2 = h2.map { |e| e[:id] }
|
11
|
+
a2 - a1
|
12
|
+
end
|
13
|
+
|
14
|
+
def block_until_server_normal(c, name, network_id)
|
15
|
+
while true do
|
16
|
+
if c.server.list(name: name, network_id: network_id)[:state] == "NORMAL"
|
17
|
+
break
|
18
|
+
end
|
19
|
+
sleep 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def log(string)
|
24
|
+
time = DateTime.now.strftime("%H:%M")
|
25
|
+
puts "#{time} -> #{string}"
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
31
|
+
|
32
|
+
network_id = "8a55ac56-2821-11e1-ada2-180373fb68df"
|
33
|
+
farm_id = "8b4eaa29-b290-4771-96f0-b9c79596bc44"
|
34
|
+
|
35
|
+
|
36
|
+
pp c.vip.server_farm_list network_id
|
37
|
+
|
38
|
+
real_servers = c.vip.server_farm_details network_id, farm_id
|
39
|
+
|
40
|
+
pp real_servers
|
41
|
+
pp real_servers[:real_server]
|
42
|
+
pp real_servers[:real_server].length
|
43
|
+
if real_servers[:real_server].length < 5 || (not real_servers[:real_server].kind_of?(Array))
|
44
|
+
|
45
|
+
list_real_servers = c.vip.real_servers_list network_id
|
46
|
+
|
47
|
+
server_id = ""
|
48
|
+
real_server_id = ""
|
49
|
+
pp real_server_id
|
50
|
+
list_real_servers.each do |real_server|
|
51
|
+
pp real_server
|
52
|
+
real_server_id = real_server[:id]
|
53
|
+
server = c.server.show( real_server[:server_id])
|
54
|
+
if server[:is_started] == "false"
|
55
|
+
#start the server
|
56
|
+
log "---- starting server #{server[:name]} ----"
|
57
|
+
pp c.server.start server[:id]
|
58
|
+
block_until_server_normal(c, server[:name], network_id)
|
59
|
+
|
60
|
+
log "---- adding server to server farm ----"
|
61
|
+
pp c.vip.real_server_to_server_farm network_id, farm_id, real_server_id, 80
|
62
|
+
|
63
|
+
log("done")
|
64
|
+
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
else
|
70
|
+
log "We don't have any more servers in our farm"
|
71
|
+
end
|
72
|
+
|
73
|
+
|
data/lib/ddcloud/client.rb
CHANGED
@@ -16,6 +16,8 @@ module DDcloud
|
|
16
16
|
attr_accessor :silent, :colors # log setting
|
17
17
|
attr_accessor :page_size, :page_number, :order_by, :filter_with
|
18
18
|
|
19
|
+
IMAGES = {suse_ent_64: "d4edfe22-e2f0-11e2-84e5-180373fb68df", ubuntu_14_04: "abef3a94-3361-4ce4-a937-5e587042586a", ubuntu_12_04: "d4ed6d40-e2f0-11e2-84e5-180373fb68df", ubuntu_10_04: "d4edba02-e2f0-11e2-84e5-180373fb68df"}
|
20
|
+
API_URL = {na: "https://api-na.dimensiondata.com/oec/0.9", eu: "https://api-eu.dimensiondata.com/oec/0.9", au: "https://api-au.dimensiondata.com/oec/0.9", mea: "https://api-mea.dimensiondata.com/oec/0.9", ap: "https://api-ap.dimensiondata.com/oec/0.9"}
|
19
21
|
|
20
22
|
|
21
23
|
def initialize(api_base, org_id, username, password, default_password="verysecurepassword", datacenter="EU1", colors = true, silent = true)
|
data/lib/ddcloud/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: didata_cloud_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juozas Gaigalas
|
@@ -10,90 +10,90 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-04-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: i18n
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: activesupport
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: typhoeus
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '0'
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: xml-simple
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: hashie
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: colorize
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
description: SDK to access Dimension Data Cloud api'
|
@@ -105,7 +105,7 @@ executables: []
|
|
105
105
|
extensions: []
|
106
106
|
extra_rdoc_files: []
|
107
107
|
files:
|
108
|
-
- .gitignore
|
108
|
+
- ".gitignore"
|
109
109
|
- Gemfile
|
110
110
|
- LICENSE
|
111
111
|
- README.md
|
@@ -121,7 +121,10 @@ files:
|
|
121
121
|
- examples/list_networks.rb
|
122
122
|
- examples/list_servers_in_network.rb
|
123
123
|
- examples/make_servers_in_new_network.rb
|
124
|
+
- examples/make_servers_in_new_network2.rb
|
125
|
+
- examples/remove_server_from_server_farm.rb
|
124
126
|
- examples/start_all_servers_in_network.rb
|
127
|
+
- examples/start_and_add_server_to_server_farm.rb
|
125
128
|
- examples/util.rb
|
126
129
|
- lib/ddcloud.rb
|
127
130
|
- lib/ddcloud/api/account.rb
|
@@ -148,17 +151,17 @@ require_paths:
|
|
148
151
|
- lib
|
149
152
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
153
|
requirements:
|
151
|
-
- -
|
154
|
+
- - ">="
|
152
155
|
- !ruby/object:Gem::Version
|
153
156
|
version: '0'
|
154
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
158
|
requirements:
|
156
|
-
- -
|
159
|
+
- - ">="
|
157
160
|
- !ruby/object:Gem::Version
|
158
161
|
version: '0'
|
159
162
|
requirements: []
|
160
163
|
rubyforge_project: ddcloud
|
161
|
-
rubygems_version: 2.
|
164
|
+
rubygems_version: 2.2.2
|
162
165
|
signing_key:
|
163
166
|
specification_version: 4
|
164
167
|
summary: Dimension Data REST API client gem
|