didata_cloud_sdk 0.3.2 → 0.3.3

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: aa0d979868dddb28db6d03b20bb37af5d460645c
4
- data.tar.gz: f7e5101a550d9be5a94c5513a109f1b5d1d177c7
3
+ metadata.gz: 09bfcaf3290960d982e1ce9be7491bcad842eb37
4
+ data.tar.gz: 253cb39dd854f027b2cdddf031998dc8911a340c
5
5
  SHA512:
6
- metadata.gz: 9338df5b87eeb3308381034ac8f0055a40446575c88d68e52097d581880328cb282b1be1524e66a8a45da8aa0ba6fbc64f68d33e178c0effa89dfe8136817795
7
- data.tar.gz: 43529b77a8fc7b2ec83fd486d64e4b43185633b59ac660315e50aa349b9d4eb9ab12d371df7a76a069c174728f15468fcc9c54f720e3e8aab5e6736fd117575f
6
+ metadata.gz: ea2654971386c74802c6ce37fa38591399d50cdfdb93a4e992ff79a08dfe02eb8e52bbb2c04fdbe8e3f03b847f8bb4338c8396b4d1d1e09373318d08911f7c15
7
+ data.tar.gz: d0d71103156edfc84f510a9fb0063c23588b49675ef7217c132618504c4e7b18cf4a6fcd8f6f0fae5bfca61e9c01400a0fdac6b83d51e94f2a6187a292318960
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
1
  Gemfile.lock
2
2
  *.swp
3
3
  *.gem
4
+ credentials.rb
5
+
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 gem install didata_cloud_sdk
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
- $: << 'opsource/lib'
18
- require 'opsource.rb'
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 = Opsource::Client.new(api_base, dev_org_id, dev_user, dev_password)
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/opsource/api` folder for examples how to add additional endpoints.
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.
@@ -0,0 +1,4 @@
1
+
2
+ For these examples to work, create a "credentials.rb" file in the same directory.
3
+
4
+ The file should contain a dictionary variable ```credentials``` with the following fields defined: user, pass, url, org_id
@@ -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
@@ -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 = false)
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 log(message, color = nil, mode = nil)
81
- return if @silent
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
@@ -43,17 +43,17 @@ module DDcloud
43
43
  if response.success?
44
44
  log "...........success!", :yellow
45
45
  elsif response.timed_out?
46
- log "ERROR\n-----", :red
47
- log "got a time out"
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
- log "ERROR\n-----", :red
51
- log response.return_message
50
+ log_error "ERROR\n-----", :red
51
+ log_error response.return_message
52
52
  else
53
53
  # Received a non-successful http response.
54
- log "ERROR\n-----", :red
55
- log "HTTP request failed: " + response.code.to_s, :red
56
- log response.body, :yellow
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
@@ -1,5 +1,5 @@
1
1
  module DDcloud
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.3"
3
3
 
4
4
  {"xmlns:ns3"=>"http://oec.api.opsource.net/schemas/organization",
5
5
  "xmlns:ns4"=>"http://oec.api.opsource.net/schemas/network",
data/lib/ddcloud.rb CHANGED
@@ -4,19 +4,19 @@ require 'typhoeus'
4
4
  require 'xmlsimple'
5
5
  require 'hashie'
6
6
 
7
- require './ddcloud/version.rb'
8
- require './ddcloud/exceptions.rb'
7
+ require 'ddcloud/version.rb'
8
+ require 'ddcloud/exceptions.rb'
9
9
 
10
- require './ddcloud/connection.rb'
11
- require './ddcloud/params.rb'
12
- require './ddcloud/xml.rb'
13
- require './ddcloud/client.rb'
10
+ require 'ddcloud/connection.rb'
11
+ require 'ddcloud/params.rb'
12
+ require 'ddcloud/xml.rb'
13
+ require 'ddcloud/client.rb'
14
14
 
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'
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.2
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-04 00:00:00.000000000 Z
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