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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 09bfcaf3290960d982e1ce9be7491bcad842eb37
4
- data.tar.gz: 253cb39dd854f027b2cdddf031998dc8911a340c
3
+ metadata.gz: bea28e11f44f4c085361fd7a23731036fe57c38d
4
+ data.tar.gz: faf096072e454843070199f7ed9acb60d585718d
5
5
  SHA512:
6
- metadata.gz: ea2654971386c74802c6ce37fa38591399d50cdfdb93a4e992ff79a08dfe02eb8e52bbb2c04fdbe8e3f03b847f8bb4338c8396b4d1d1e09373318d08911f7c15
7
- data.tar.gz: d0d71103156edfc84f510a9fb0063c23588b49675ef7217c132618504c4e7b18cf4a6fcd8f6f0fae5bfca61e9c01400a0fdac6b83d51e94f2a6187a292318960
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 = "https://cloudapi.nttamerica.com/oec/0.9"
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")
@@ -9,6 +9,8 @@ require "./credentials.rb"
9
9
  require "./util.rb"
10
10
 
11
11
 
12
- c = DDcloud::Client.new @credentials[:url], @credentials[:org_id], @credentials[:user], @credentials[:pass]
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 = "d4ed6d40-e2f0-11e2-84e5-180373fb68df" #default 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
+
@@ -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)
@@ -1,5 +1,5 @@
1
1
  module DDcloud
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
 
4
4
  {"xmlns:ns3"=>"http://oec.api.opsource.net/schemas/organization",
5
5
  "xmlns:ns4"=>"http://oec.api.opsource.net/schemas/network",
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.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: 2014-12-12 00:00:00.000000000 Z
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.4.5
164
+ rubygems_version: 2.2.2
162
165
  signing_key:
163
166
  specification_version: 4
164
167
  summary: Dimension Data REST API client gem