cloudstack_ruby_client 0.0.5 → 0.1.0

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.
@@ -0,0 +1,67 @@
1
+ class Module
2
+ def cmd_processor(*args)
3
+ args.each do |arg|
4
+ arga = arg.to_s.split('_')
5
+ meta_method = %Q{
6
+ def #{arga[0]+"_"+arga[1]}#{('_'+arga[2]) unless arga[2].nil?}#{('_'+arga[3]) unless arga[3].nil?}#{('_'+arga[4]) unless arga[4].nil?}#{('_'+arga[5]) unless arga[5].nil?}#{('_'+arga[6]) unless arga[6].nil?}(args={});
7
+
8
+ command = "#{arga[0]}#{arga[1].capitalize}#{arga[2].capitalize unless arga[2].nil?}#{arga[3].capitalize unless arga[3].nil?}#{arga[4].capitalize unless arga[4].nil?}#{arga[5].capitalize unless arga[5].nil?}#{arga[6].capitalize unless arga[6].nil?}";
9
+
10
+ resp_title = "#{arga[0]}#{arga[1]}#{arga[2] unless arga[2].nil?}#{arga[3] unless arga[3].nil?}#{arga[4] unless arga[4].nil?}#{arga[5] unless arga[5].nil?}#{arga[6] unless arga[6].nil?}response";
11
+ } +
12
+
13
+ #
14
+ # The following code block is dealing with malformed api commands
15
+ #
16
+
17
+ %Q{
18
+
19
+ if /getvmpassword/i =~ command;
20
+ command = 'getVMPassword';
21
+ end;
22
+
23
+ if /(list|create|delete)networkacl.*/i =~ command;
24
+ command.gsub! /acl/i, 'ACL'
25
+ end;
26
+
27
+ if /.*ssh.*/i =~ command;
28
+ command.gsub! /ssh/i, 'SSH'
29
+ end;
30
+
31
+ if /(list|create|delete)lbstickinesspolic.*/i =~ command;
32
+ command.gsub! /lb/i, 'LB'
33
+ end;
34
+
35
+ if /.*vpc.*/i =~ command;
36
+ command.gsub! /vpc/i, 'VPC'
37
+ end;
38
+
39
+ } +
40
+ %Q{
41
+ params = {'command' => command};
42
+ params.merge! args unless args.empty?;
43
+
44
+ response = request params;
45
+
46
+ if !response.is_a?(Net::HTTPOK);
47
+
48
+ if response.code == "431" &&
49
+ JSON.parse(response.body)[resp_title]['cserrorcode'] == 9999;
50
+
51
+ raise ArgumentError, JSON.parse(response.body)[resp_title]['errortext'];
52
+ end;
53
+
54
+ puts 'Error' + response.code + ':'
55
+ puts JSON.pretty_generate(JSON.parse(response.body));
56
+ exit 1;
57
+ end;
58
+
59
+ json = JSON.parse(response.body);
60
+ json[params['command'].downcase + 'response']
61
+ end;
62
+ }
63
+
64
+ self.class_eval meta_method
65
+ end
66
+ end
67
+ end
@@ -1,3 +1,3 @@
1
1
  module CloudstackRubyClient
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.0"
3
3
  end
data/test/config.yml ADDED
@@ -0,0 +1,6 @@
1
+ cloudstack:
2
+ host: '10.1.192.92'
3
+ port: '8080'
4
+ admin_port: '8096'
5
+ api_key: 'Vjx7Onwakz3t711ozmVBYEn279Vx8Cvo1ZCPdSDMflBfQnMyp90K3ZsBP-a8ai6VIUViolHll9uflM4JW561LQ'
6
+ secret_key: 'cRph9bBFx32dg8yUjtv7srUyaC5eoM9_QimtutcO8b4l4RekQyuoNTUla7jx0D9GgjCfrEnAu_Vvck_4li7Ong'
File without changes
@@ -0,0 +1,112 @@
1
+ require 'test/unit'
2
+ require 'yaml'
3
+ require_relative '../../lib/cloudstack_ruby_client'
4
+
5
+ class EmptyTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ config = YAML.load_file("test/config.yml")
9
+ _host = config['cloudstack']['host']
10
+ _port = config['cloudstack']['port']
11
+ _admin_port = config['cloudstack']['admin_port']
12
+ _api_key = config['cloudstack']['api_key']
13
+ _secret_key = config['cloudstack']['secret_key']
14
+ @client = CloudstackRubyClient::Client.new \
15
+ "http://#{_host}:#{_port}/client/api",
16
+ "#{_api_key}",
17
+ "#{_secret_key}"
18
+ end
19
+
20
+ def teardown
21
+ # Do nothing here!
22
+ end
23
+
24
+
25
+ ### Zone Test ####
26
+
27
+ def test_list_zones
28
+ @client.list_zones
29
+ end
30
+
31
+ def test_create_zone
32
+ @client.create_zone
33
+ end
34
+
35
+ def test_update_zone
36
+ @client.update_zone
37
+ end
38
+
39
+ def test_delete_zone
40
+ @client.delete_zone
41
+ end
42
+
43
+ def test_dedicate_zone
44
+ @client.dedicate_zone
45
+ end
46
+
47
+ ### Pod Test ###
48
+
49
+ def test_list_pods
50
+ @client.list_pods
51
+ end
52
+
53
+ def test_create_pod
54
+ @client.create_pod
55
+ end
56
+
57
+ def test_update_pod
58
+ @client.update_pod
59
+ end
60
+
61
+ def test_delete_pod
62
+ @client.delete_pod
63
+ end
64
+
65
+ ### Cluster Test ###
66
+
67
+ def test_list_clusters
68
+ @client.list_clusters
69
+ end
70
+
71
+ def test_add_cluster
72
+ @client.add_cluster
73
+ end
74
+
75
+ def test_update_cluster
76
+ @client.update_cluster
77
+ end
78
+
79
+ def test_delete_cluster
80
+ @client.delete_cluster
81
+ end
82
+
83
+ def test_dedicate_cluster
84
+ @client.dedicate_cluster
85
+ end
86
+
87
+ ### Host Test ###
88
+
89
+ def test_list_hosts
90
+ @client.list_hosts
91
+ end
92
+
93
+ def test_add_host
94
+ @client.add_host
95
+ end
96
+
97
+ def test_update_host
98
+ @client.udpate_host
99
+ end
100
+
101
+ def test_delete_host
102
+ @client.delete_host
103
+ end
104
+
105
+ def test_reconnect_host
106
+ @client.reconnect_host
107
+ end
108
+
109
+ def test_dedicate_host
110
+ @client.dedicate_host
111
+ end
112
+ end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudstack_ruby_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-29 00:00:00.000000000 Z
12
+ date: 2013-08-07 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Ruby client for CloudStack's API, licensed via the Apache Software
15
15
  License v2.
@@ -27,11 +27,31 @@ files:
27
27
  - Rakefile
28
28
  - cloudstack_ruby_client.gemspec
29
29
  - lib/cloudstack_ruby_client.rb
30
+ - lib/cloudstack_ruby_client/api/accounts_api.rb
31
+ - lib/cloudstack_ruby_client/api/autoscale_api.rb
32
+ - lib/cloudstack_ruby_client/api/config.rb
33
+ - lib/cloudstack_ruby_client/api/configuration_api.rb
34
+ - lib/cloudstack_ruby_client/api/firewall_api.rb
35
+ - lib/cloudstack_ruby_client/api/infra_api.rb
36
+ - lib/cloudstack_ruby_client/api/network_api.rb
37
+ - lib/cloudstack_ruby_client/api/project_api.rb
38
+ - lib/cloudstack_ruby_client/api/securitygroup_api.rb
39
+ - lib/cloudstack_ruby_client/api/serviceoffering_api.rb
40
+ - lib/cloudstack_ruby_client/api/snapshot_api.rb
41
+ - lib/cloudstack_ruby_client/api/storage_api.rb
42
+ - lib/cloudstack_ruby_client/api/systemvm_api.rb
43
+ - lib/cloudstack_ruby_client/api/template_api.rb
44
+ - lib/cloudstack_ruby_client/api/vm_api.rb
45
+ - lib/cloudstack_ruby_client/api/volume_api.rb
30
46
  - lib/cloudstack_ruby_client/base_client.rb
31
47
  - lib/cloudstack_ruby_client/client.rb
48
+ - lib/cloudstack_ruby_client/client_helper.rb
32
49
  - lib/cloudstack_ruby_client/version.rb
50
+ - test/config.yml
33
51
  - test/integration/client_test.rb
34
- - test/unit/empty_test.rb
52
+ - test/unit/accounts_test.rb
53
+ - test/unit/infra_test.rb
54
+ - test/unit/vm_test.rb
35
55
  homepage: http://chipchilders.github.io/cloudstack_ruby_client/
36
56
  licenses: []
37
57
  post_install_message:
@@ -57,5 +77,8 @@ signing_key:
57
77
  specification_version: 3
58
78
  summary: A Ruby client for CloudStack's API.
59
79
  test_files:
80
+ - test/config.yml
60
81
  - test/integration/client_test.rb
61
- - test/unit/empty_test.rb
82
+ - test/unit/accounts_test.rb
83
+ - test/unit/infra_test.rb
84
+ - test/unit/vm_test.rb
@@ -1,9 +0,0 @@
1
- require 'test/unit'
2
-
3
- class EmptyTest < Test::Unit::TestCase
4
-
5
- def test_empty
6
- return nil
7
- end
8
-
9
- end