cloudstack_client 0.7.0 → 0.7.1

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: 3620aef025ca6411c6be895ed5db20685c82a468
4
- data.tar.gz: a88760e188e72a8baf9f896a8e2089ff0cc34520
3
+ metadata.gz: 2e6572f2978a68ebcb38a986ac7488dc6ba8e59c
4
+ data.tar.gz: dd0d4dc3bc194ca89b6a40b664f3c3d404c5e72a
5
5
  SHA512:
6
- metadata.gz: 5c036f121986e4e52d57d0208ea4714d3a367addcfe50787afb2b733b9b53e436b2b208efca346d7f84f2c428c0a72a705a9fe60cf3fc605a3a98758cb031783
7
- data.tar.gz: 43cee73391258a369a9f10e0b26f4f7ed19d6db5f04a3eea38e714e37c94c5603ab3fbc36d129d5e8719ea3755fb017540a114779feb3aaa9653bf6f1e1c242b
6
+ metadata.gz: 3464332207e5b38f71113a0f733580125a4bf59c39a9a237e50a61b16ebdd9f7bc0d14015b7656a3e98bb4c5cb97d7cc2bafd4d014f10a5b1f1a3c6bd0eedfe6
7
+ data.tar.gz: 9189e7543dd3e651783c0cac743cb2e673e6ee2edb9f8d6474198fa9e5b68c7658809c4f6583008829b00a6688d10538bf36c6700a069a882499d8946d901a3d
@@ -21,5 +21,4 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  gem.add_development_dependency('rdoc')
23
23
  gem.add_development_dependency('rake', '~> 10.0', '>= 10.0.4')
24
- gem.add_development_dependency('thor')
25
24
  end
@@ -13,6 +13,13 @@ module CloudstackClient
13
13
  @@async_poll_interval = 2.0
14
14
  @@async_timeout = 400
15
15
 
16
+ # include all commands
17
+ Dir.glob(File.dirname(__FILE__) + "/commands/*.rb").each do |file|
18
+ require file
19
+ module_name = File.basename(file, '.rb').split('_').map{|f| f.capitalize}.join
20
+ include Object.const_get("CloudstackClient").const_get(module_name)
21
+ end
22
+
16
23
  attr_accessor :verbose
17
24
 
18
25
  def initialize(api_url, api_key, secret_key, opts = {})
@@ -21,19 +28,6 @@ module CloudstackClient
21
28
  @secret_key = secret_key
22
29
  @verbose = opts[:quiet] ? false : true
23
30
  @debug = opts[:debug] ? true : false
24
- CloudstackClient::Connection.include_commands unless opts[:no_commands]
25
- end
26
-
27
- ##
28
- # Loads all commands from the commands subdirectory and includes them
29
- #
30
-
31
- def self.include_commands
32
- Dir.glob(File.dirname(__FILE__) + "/commands/*.rb").each do |file|
33
- require file
34
- module_name = File.basename(file, '.rb').split('_').map{|f| f.capitalize}.join
35
- include Object.const_get("CloudstackClient").const_get(module_name)
36
- end
37
31
  end
38
32
 
39
33
  ##
@@ -76,6 +70,7 @@ module CloudstackClient
76
70
  exit 1
77
71
  end
78
72
 
73
+
79
74
  if response.is_a? Net::HTTPOK
80
75
  begin
81
76
  json = JSON.parse(response.body)
@@ -119,7 +119,6 @@ module CloudstackClient
119
119
  params['state'] = args[:state] if args[:state]
120
120
  params['state'] = args[:status] if args[:status]
121
121
  params['groupid'] = args[:group_id] if args[:group_id]
122
- params['keyword'] = args[:keyword] if args[:keyword]
123
122
 
124
123
  if args[:zone]
125
124
  zone = get_zone(args[:zone])
@@ -190,9 +189,7 @@ module CloudstackClient
190
189
  params['name'] = args[:name] if args[:name]
191
190
 
192
191
  if args[:name]
193
- server = params['projectid'] ?
194
- get_server(args[:name], project_id: params['projectid']) :
195
- get_server(args[:name])
192
+ server = get_server(args[:name], project_id: params['projectid'])
196
193
  if server
197
194
  puts "Error: Server '#{args[:name]}' already exists."
198
195
  exit 1
@@ -202,7 +199,7 @@ module CloudstackClient
202
199
  networks = []
203
200
  if args[:networks]
204
201
  args[:networks].each do |name|
205
- network = defined?(project) ? get_network(name, project['id']) : get_network(name)
202
+ network = get_network(name, params['projectid'])
206
203
  if !network
207
204
  puts "Error: Network '#{name}' not found"
208
205
  exit 1
@@ -211,11 +208,11 @@ module CloudstackClient
211
208
  end
212
209
  end
213
210
  if networks.empty?
214
- networks << get_default_network
215
- end
216
- if networks.empty?
217
- puts "No default network found"
218
- exit 1
211
+ unless default_network = get_default_network
212
+ puts "Error: No default network found"
213
+ exit 1
214
+ end
215
+ networks << default_network
219
216
  end
220
217
  network_ids = networks.map { |network|
221
218
  network['id']
@@ -336,14 +333,15 @@ module CloudstackClient
336
333
  # Destroy the server with the specified name.
337
334
  #
338
335
 
339
- def destroy_server(id, async = true)
336
+ def destroy_server(id, args = {})
340
337
  params = {
341
338
  'command' => 'destroyVirtualMachine',
342
339
  'id' => id
343
340
  }
344
- async ? send_async_request(params)['virtualmachine'] : send_request(params)
341
+ params['expunge'] = true if args[:expunge]
342
+ args[:sync] ? send_request(params) : send_async_request(params)['virtualmachine']
345
343
  end
346
344
 
347
345
  end
348
346
 
349
- end
347
+ end
@@ -23,7 +23,7 @@ module CloudstackClient
23
23
  params['podid'] = args[:podid] if args[:podid]
24
24
 
25
25
  json = send_request(params)
26
- json['system_vm'] || []
26
+ json['systemvm'] || []
27
27
  end
28
28
 
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module CloudstackClient
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -3,7 +3,7 @@ module CloudstackClient
3
3
  def self.load_configuration(config_file)
4
4
  begin
5
5
  return YAML::load(IO.read(config_file))
6
- rescue => e
6
+ rescue Exception => e
7
7
  puts "Unable to load '#{config_file}' : #{e}"
8
8
  exit
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudstack_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nik Wolfgramm
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 10.0.4
47
- - !ruby/object:Gem::Dependency
48
- name: thor
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
47
  description: CloudStack API client written in Ruby
62
48
  email:
63
49
  - nik.wolfgramm@gmail.com
@@ -70,11 +56,9 @@ files:
70
56
  - LICENSE.txt
71
57
  - README.md
72
58
  - Rakefile
73
- - bin/cs-command-generator
74
59
  - cloudstack_client.gemspec
75
60
  - lib/cloudstack_client.rb
76
61
  - lib/cloudstack_client/client.rb
77
- - lib/cloudstack_client/command_generator.rb
78
62
  - lib/cloudstack_client/commands/account.rb
79
63
  - lib/cloudstack_client/commands/affinity_group.rb
80
64
  - lib/cloudstack_client/commands/capacity.rb
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'cloudstack_client/command_generator'
4
-
5
- CloudstackClient::CommandGenerator.start
@@ -1,75 +0,0 @@
1
- require 'cloudstack_client/client'
2
- require 'connection_helper'
3
- require 'thor'
4
- require 'yaml'
5
-
6
- module CloudstackClient
7
- class CommandGenerator < Thor
8
- include Thor::Actions
9
-
10
- class_option :config_file,
11
- default: File.join(Dir.home, '.cloudstack-cli.yml'),
12
- aliases: '-c',
13
- desc: 'location of your cloudstack-cli configuration file'
14
-
15
- class_option :env,
16
- aliases: '-e',
17
- desc: 'environment to use'
18
-
19
- class_option :debug,
20
- desc: 'enable debug output',
21
- type: :boolean
22
-
23
- desc "generate", "generate api commands using the Cloudstack API Discovery service"
24
- def generate
25
- json = client.send_request('command' => 'listApis')
26
- commands = json['api'] || []
27
- commands.each do |command|
28
- puts "#{command['name']} : #{command['related']}"
29
- end
30
- end
31
-
32
- no_commands do
33
- def client(opts = {})
34
- @config ||= load_configuration
35
- @client ||= CloudstackClient::Connection.new(
36
- @config[:url],
37
- @config[:api_key],
38
- @config[:secret_key],
39
- {no_commands: true}
40
- )
41
- end
42
-
43
- def load_configuration(config_file = options[:config_file], env = options[:env])
44
- unless File.exists?(config_file)
45
- say "Configuration file #{config_file} not found.", :red
46
- say "Please run \'cs environment add\' to create one."
47
- exit 1
48
- end
49
-
50
- begin
51
- config = YAML::load(IO.read(config_file))
52
- rescue
53
- say "Can't load configuration from file #{config_file}.", :red
54
- exit 1
55
- end
56
-
57
- env ||= config[:default]
58
- if env
59
- unless config = config[env]
60
- say "Can't find environment #{env}.", :red
61
- exit 1
62
- end
63
- end
64
-
65
- unless config.key?(:url) && config.key?(:api_key) && config.key?(:secret_key)
66
- say "The environment #{env || '\'-\''} contains no valid data.", :red
67
- exit 1
68
- end
69
- config
70
- end
71
-
72
- end # no_commands
73
-
74
- end # class
75
- end # module