didata_cloud_sdk 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +6 -8
- data/examples/README.md +4 -0
- data/examples/list_networks.rb +14 -0
- data/examples/list_servers_in_network.rb +42 -0
- data/examples/make_servers_in_new_network.rb +88 -0
- data/examples/start_all_servers_in_network.rb +46 -0
- data/examples/util.rb +20 -0
- data/lib/ddcloud/client.rb +6 -3
- data/lib/ddcloud/connection.rb +7 -7
- data/lib/ddcloud/version.rb +1 -1
- data/lib/ddcloud.rb +14 -14
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09bfcaf3290960d982e1ce9be7491bcad842eb37
|
4
|
+
data.tar.gz: 253cb39dd854f027b2cdddf031998dc8911a340c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea2654971386c74802c6ce37fa38591399d50cdfdb93a4e992ff79a08dfe02eb8e52bbb2c04fdbe8e3f03b847f8bb4338c8396b4d1d1e09373318d08911f7c15
|
7
|
+
data.tar.gz: d0d71103156edfc84f510a9fb0063c23588b49675ef7217c132618504c4e7b18cf4a6fcd8f6f0fae5bfca61e9c01400a0fdac6b83d51e94f2a6187a292318960
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@ Dimension Data Cloud API gem designed for easy extensibility.
|
|
6
6
|
|
7
7
|
either install as a gem via Bundler
|
8
8
|
```
|
9
|
-
gem install
|
9
|
+
gem install didata_cloud_sdk
|
10
10
|
```
|
11
11
|
|
12
12
|
__or__
|
@@ -14,19 +14,20 @@ __or__
|
|
14
14
|
clone into your project, install gems from `opsource.gemspec` and do:
|
15
15
|
|
16
16
|
```
|
17
|
-
$: << '
|
18
|
-
require '
|
17
|
+
$: << 'ddcloud/lib'
|
18
|
+
require 'ddcloud.rb'
|
19
19
|
```
|
20
20
|
|
21
21
|
### Usage
|
22
22
|
|
23
23
|
```
|
24
|
+
require "ddcloud"
|
24
25
|
api_base = "https://cloudapi.nttamerica.com/oec/0.9"
|
25
26
|
dev_org_id = 'my-super-secret-org-numbersandletters'
|
26
27
|
dev_user = 'me'
|
27
28
|
dev_password = 'very secret'
|
28
29
|
|
29
|
-
c =
|
30
|
+
c = DDcloud::Client.new(api_base, dev_org_id, dev_user, dev_password)
|
30
31
|
|
31
32
|
server = c.server.list(name: 'myfavoritevm')
|
32
33
|
pp c.server.show_with_disks(server.network_id, server.id)
|
@@ -55,13 +56,10 @@ api/vip.rb
|
|
55
56
|
|
56
57
|
See `doc` folder for API info needed for adding you own methods. `api/core.rb` is the plumbing.
|
57
58
|
|
58
|
-
See `lib/
|
59
|
+
See `lib/ddcloud/api` folder for examples how to add additional endpoints.
|
59
60
|
|
60
61
|
Inspired by https://github.com/udayakiran/opsource.
|
61
62
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
63
|
### TODO
|
66
64
|
|
67
65
|
Write some tests. Make pull requests.
|
data/examples/README.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require "ddcloud"
|
5
|
+
require "pp"
|
6
|
+
require "optparse"
|
7
|
+
|
8
|
+
require "./credentials.rb"
|
9
|
+
require "./util.rb"
|
10
|
+
|
11
|
+
|
12
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
13
|
+
|
14
|
+
pp c.network.list
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require "ddcloud"
|
5
|
+
require "pp"
|
6
|
+
require "optparse"
|
7
|
+
|
8
|
+
require "./credentials.rb"
|
9
|
+
|
10
|
+
options = {}
|
11
|
+
|
12
|
+
OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: example.rb [options]"
|
14
|
+
|
15
|
+
opts.on("-n", "--network_name name", "Name of the network") do |n|
|
16
|
+
options[:name] = n
|
17
|
+
end
|
18
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
19
|
+
puts opts
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end.parse!
|
23
|
+
|
24
|
+
if not options[:name]
|
25
|
+
puts "Please specify the network name with -n"
|
26
|
+
puts "For help, use -h"
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
31
|
+
|
32
|
+
network = c.network.show_by_name options[:name]
|
33
|
+
|
34
|
+
if not network
|
35
|
+
puts "A network with this name does not exist"
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
|
39
|
+
network_id = network[:id]
|
40
|
+
|
41
|
+
pp "servers"
|
42
|
+
pp c.server.list(network_id: network_id)
|
@@ -0,0 +1,88 @@
|
|
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
|
+
(0...options[:number]).each do |n|
|
68
|
+
c.server.create "autoserver-#{n+1}", "Automatically generated server", network_id, image_id
|
69
|
+
end
|
70
|
+
(0...options[:number]).each do |n|
|
71
|
+
block_until_server_normal c, "autoserver-#{n+1}"
|
72
|
+
log "autoserver-#{n+1} started"
|
73
|
+
end
|
74
|
+
after = c.server.list(network_id: network_id)
|
75
|
+
created_servers = diff_id_hashes(before, after)
|
76
|
+
log "Created: #{created_servers.to_s}"
|
77
|
+
|
78
|
+
#create acl rule
|
79
|
+
c.network.aclrule_create(network_id, "allow ssh", 112, true, "TCP", 22, true)
|
80
|
+
|
81
|
+
#nat the servers so we can make our changes
|
82
|
+
created_servers.each do |server|
|
83
|
+
details = after.select { |a| a["id"] == server }
|
84
|
+
details = details[0]
|
85
|
+
log details.to_s
|
86
|
+
c.network.natrule_create(network_id, details[:name], details[:private_ip])
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
require "ddcloud"
|
5
|
+
require "pp"
|
6
|
+
require "optparse"
|
7
|
+
|
8
|
+
require "./credentials.rb"
|
9
|
+
|
10
|
+
options = {}
|
11
|
+
|
12
|
+
OptionParser.new do |opts|
|
13
|
+
opts.banner = "Usage: example.rb [options]"
|
14
|
+
|
15
|
+
opts.on("-n", "--network_name name", "Name of the network") do |n|
|
16
|
+
options[:name] = n
|
17
|
+
end
|
18
|
+
opts.on_tail("-h", "--help", "Show this message") do
|
19
|
+
puts opts
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
end.parse!
|
23
|
+
|
24
|
+
if not options[:name]
|
25
|
+
puts "Please specify the network name with -n"
|
26
|
+
puts "For help, use -h"
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
|
31
|
+
|
32
|
+
network = c.network.show_by_name options[:name]
|
33
|
+
|
34
|
+
if not network
|
35
|
+
puts "A network with this name does not exist"
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
|
39
|
+
network_id = network[:id]
|
40
|
+
|
41
|
+
servers = c.server.list(network_id: network_id)
|
42
|
+
|
43
|
+
servers.each do |server|
|
44
|
+
pp "Starting #{server[:name]}"
|
45
|
+
c.server.start(server[:id])
|
46
|
+
end
|
data/examples/util.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
def diff_id_hashes(h1, h2)
|
3
|
+
a1 = h1.map { |e| e[:id] }
|
4
|
+
a2 = h2.map { |e| e[:id] }
|
5
|
+
a2 - a1
|
6
|
+
end
|
7
|
+
|
8
|
+
def block_until_server_normal(c, name)
|
9
|
+
while true do
|
10
|
+
if c.server.list(name: name)[:state] == "NORMAL"
|
11
|
+
break
|
12
|
+
end
|
13
|
+
sleep 1
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def log(string)
|
18
|
+
time = DateTime.now.strftime("%H:%M")
|
19
|
+
puts "#{time} -> #{string}"
|
20
|
+
end
|
data/lib/ddcloud/client.rb
CHANGED
@@ -18,7 +18,7 @@ module DDcloud
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
def initialize(api_base, org_id, username, password, default_password="verysecurepassword", datacenter="EU1", colors = true, silent =
|
21
|
+
def initialize(api_base, org_id, username, password, default_password="verysecurepassword", datacenter="EU1", colors = true, silent = true)
|
22
22
|
@api_base = api_base
|
23
23
|
@org_id = org_id
|
24
24
|
@username = username
|
@@ -77,8 +77,11 @@ module DDcloud
|
|
77
77
|
end
|
78
78
|
|
79
79
|
# mode: bold, underscore, default
|
80
|
-
def
|
81
|
-
|
80
|
+
def log_error(message, color=nil, mode=nil)
|
81
|
+
log message, color, mode, true
|
82
|
+
end
|
83
|
+
def log(message, color = nil, mode = nil, error=nil)
|
84
|
+
return if (@silent && (not error))
|
82
85
|
if @colors
|
83
86
|
color = color.to_sym if color
|
84
87
|
mode = mode.to_sym if mode
|
data/lib/ddcloud/connection.rb
CHANGED
@@ -43,17 +43,17 @@ module DDcloud
|
|
43
43
|
if response.success?
|
44
44
|
log "...........success!", :yellow
|
45
45
|
elsif response.timed_out?
|
46
|
-
|
47
|
-
|
46
|
+
log_error "ERROR\n-----", :red
|
47
|
+
log_error "got a time out"
|
48
48
|
elsif response.code == 0
|
49
49
|
# Could not get an http response, something's wrong.
|
50
|
-
|
51
|
-
|
50
|
+
log_error "ERROR\n-----", :red
|
51
|
+
log_error response.return_message
|
52
52
|
else
|
53
53
|
# Received a non-successful http response.
|
54
|
-
|
55
|
-
|
56
|
-
|
54
|
+
log_error "ERROR\n-----", :red
|
55
|
+
log_error "HTTP request failed: " + response.code.to_s, :red
|
56
|
+
log_error response.body, :yellow
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
data/lib/ddcloud/version.rb
CHANGED
data/lib/ddcloud.rb
CHANGED
@@ -4,19 +4,19 @@ require 'typhoeus'
|
|
4
4
|
require 'xmlsimple'
|
5
5
|
require 'hashie'
|
6
6
|
|
7
|
-
require '
|
8
|
-
require '
|
7
|
+
require 'ddcloud/version.rb'
|
8
|
+
require 'ddcloud/exceptions.rb'
|
9
9
|
|
10
|
-
require '
|
11
|
-
require '
|
12
|
-
require '
|
13
|
-
require '
|
10
|
+
require 'ddcloud/connection.rb'
|
11
|
+
require 'ddcloud/params.rb'
|
12
|
+
require 'ddcloud/xml.rb'
|
13
|
+
require 'ddcloud/client.rb'
|
14
14
|
|
15
|
-
require '
|
16
|
-
require '
|
17
|
-
require '
|
18
|
-
require '
|
19
|
-
require '
|
20
|
-
require '
|
21
|
-
require '
|
22
|
-
require '
|
15
|
+
require 'ddcloud/api/core.rb'
|
16
|
+
require 'ddcloud/api/directory.rb'
|
17
|
+
require 'ddcloud/api/image.rb'
|
18
|
+
require 'ddcloud/api/network.rb'
|
19
|
+
require 'ddcloud/api/server.rb'
|
20
|
+
require 'ddcloud/api/vip.rb'
|
21
|
+
require 'ddcloud/api/account.rb'
|
22
|
+
require 'ddcloud/api/report.rb'
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juozas Gaigalas
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-12-
|
13
|
+
date: 2014-12-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: i18n
|
@@ -117,6 +117,12 @@ files:
|
|
117
117
|
- doc/schemas.txt
|
118
118
|
- doc/sections.txt
|
119
119
|
- doc/urls.txt
|
120
|
+
- examples/README.md
|
121
|
+
- examples/list_networks.rb
|
122
|
+
- examples/list_servers_in_network.rb
|
123
|
+
- examples/make_servers_in_new_network.rb
|
124
|
+
- examples/start_all_servers_in_network.rb
|
125
|
+
- examples/util.rb
|
120
126
|
- lib/ddcloud.rb
|
121
127
|
- lib/ddcloud/api/account.rb
|
122
128
|
- lib/ddcloud/api/core.rb
|