didata_cloud_sdk 0.3.3 → 0.3.4
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.
- 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
|