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 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