cloudstack-cli 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,20 +1,19 @@
1
- class Volume < Thor
2
- desc "volume list", "list networks"
1
+ class Volume < CloudstackCli::Base
2
+
3
+ desc "list", "list networks"
3
4
  option :project
4
5
  def list
5
- cs_cli = CloudstackCli::Helper.new(options[:config])
6
- if options[:project]
7
- project = cs_cli.projects.select { |p| p['name'] == options[:project] }.first
8
- raise "Project '#{options[:project]}' not found" unless project
9
- end
10
-
11
- networks = cs_cli.networks(project ? project['id'] : nil)
6
+ project = find_project if options[:project]
7
+ networks = client.list_networks(project ? project['id'] : nil)
12
8
  if networks.size < 1
13
9
  puts "No networks found"
14
10
  else
11
+ table = [["Name", "Displaytext", "Default?"]]
15
12
  networks.each do |network|
16
- puts "#{network['name']} - #{network['displaytext']} #{' - Default' if network['isdefault']}"
13
+ table << [network['name'], network['displaytext'], network['isdefault']]
17
14
  end
15
+ print_table(table)
18
16
  end
19
17
  end
18
+
20
19
  end
@@ -1,16 +1,17 @@
1
- class Zone < Thor
1
+ class Zone < CloudstackCli::Base
2
2
 
3
- desc "zone list", "list zones"
3
+ desc "list", "list zones"
4
4
  def list
5
- cs_cli = CloudstackCli::Helper.new(options[:config])
6
- zones = cs_cli.zones
5
+ zones = client.list_zones
7
6
  if zones.size < 1
8
7
  puts "No projects found"
9
8
  else
9
+ table = [["Name", "Description"]]
10
10
  zones.each do |zone|
11
- puts "#{zone['name']} - #{zone['description']}"
11
+ table << [zone['name'] ,zone['description']]
12
12
  end
13
13
  end
14
+ print_table(table)
14
15
  end
15
16
 
16
17
  end
@@ -1,7 +1,5 @@
1
1
  module CloudstackCli
2
2
  class Helper
3
- include CommandLineReporter
4
-
5
3
  attr_reader :cs
6
4
 
7
5
  def initialize(config_file)
@@ -13,8 +11,14 @@ module CloudstackCli
13
11
  )
14
12
  end
15
13
 
16
- def remove_publicip(id)
17
- @cs.disassociate_ip_address(id)
14
+ def options
15
+ @options ||= CloudstackClient::ConnectionHelper.load_configuration(@config_file)
16
+ end
17
+
18
+ def print_options(options, attr = 'name')
19
+ options.to_enum.with_index(1).each do |option, i|
20
+ puts "#{i}: #{option[attr]}"
21
+ end
18
22
  end
19
23
 
20
24
  def domains(name = nil)
@@ -24,18 +28,6 @@ module CloudstackCli
24
28
  def server_offerings(domain = nil)
25
29
  @server_offerings ||= @cs.list_service_offerings(domain)
26
30
  end
27
-
28
- def create_offering(params)
29
- @cs.create_offering(params)
30
- end
31
-
32
- def delete_offering(id)
33
- @cs.delete_offering(id)
34
- end
35
-
36
- def update_offering(args)
37
- @cs.update_offering(args)
38
- end
39
31
 
40
32
  def templates(type = 'featured', project_id = -1)
41
33
  @templates ||= @cs.list_templates(type, project_id)
@@ -53,9 +45,6 @@ module CloudstackCli
53
45
  @cs.list_networks(project_id)
54
46
  end
55
47
 
56
- def physical_networks
57
- @cs.list_physical_networks
58
- end
59
48
 
60
49
  def volumes(project_id = nil)
61
50
  @cs.list_volumes(project_id)
@@ -64,31 +53,6 @@ module CloudstackCli
64
53
  def virtual_machines(options = {})
65
54
  @cs.list_servers(options)
66
55
  end
67
-
68
- def virtual_machines_table(vms)
69
- table(border: true) do
70
- row do
71
- column 'Name', width: 20
72
- column 'State'
73
- column 'Offering', align: 'right'
74
- column 'Template', align: 'right', width: 30
75
- column 'IP\'s', width: 14
76
- column 'Project'
77
- column 'Account'
78
- end
79
- vms.each do |vm|
80
- row do
81
- column vm['name']
82
- column vm['state']
83
- column vm['serviceofferingname']
84
- column vm['templatename']
85
- column vm['nic'].map { |nic| nic['ipaddress']}.join(" ")
86
- column vm['project']
87
- column vm['account']
88
- end
89
- end
90
- end
91
- end
92
56
 
93
57
  def bootstrap_server(name, zone, template, offering, networks, pf_rules = [], project = nil)
94
58
  puts "Create server #{name}...".color(:yellow)
@@ -128,18 +92,6 @@ module CloudstackCli
128
92
  puts "Complete!".color(:green)
129
93
  end
130
94
 
131
- def stop_server(name)
132
- @cs.stop_server(name)
133
- end
134
-
135
- def start_server(name)
136
- @cs.start_server(name)
137
- end
138
-
139
- def reboot_server(name)
140
- @cs.reboot_server(name)
141
- end
142
-
143
95
  def list_accounts(name = nil)
144
96
  @cs.list_accounts({ name: name })
145
97
  end
@@ -164,36 +116,6 @@ module CloudstackCli
164
116
  end
165
117
  end
166
118
 
167
- def list_routers(args, redundant_state = nil)
168
- routers = @cs.list_routers(args)
169
- if redundant_state
170
- return routers.select {|r| r['redundantstate'].downcase == redundant_state.downcase }
171
- end
172
- routers
173
- end
174
-
175
- def destroy_router(id)
176
- @cs.destroy_router(id)
177
- end
178
-
179
- def start_router(id)
180
- @cs.start_router(id)
181
- end
182
-
183
- def stop_router(id)
184
- @cs.stop_router(id)
185
- end
186
-
187
- def options
188
- @options ||= CloudstackClient::ConnectionHelper.load_configuration(@config_file)
189
- end
190
-
191
- def print_options(options, attr = 'name')
192
- options.to_enum.with_index(1).each do |option, i|
193
- puts "#{i}: #{option[attr]}"
194
- end
195
- end
196
-
197
119
  def bootstrap_server_interactive
198
120
  ARGV.clear
199
121
  puts
@@ -1,3 +1,3 @@
1
1
  module CloudstackCli
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,4 +1,4 @@
1
- # CloudstackClient by Nik Wolfgramm (<nik.wolfgramm@swisstxt.ch>) based on
1
+ # cloudstack-client by Nik Wolfgramm (<nik.wolfgramm@gmail.com.ch>) based on
2
2
  # knife-cloudstack by Ryan Holmes (<rholmes@edmunds.com>), KC Braunschweig (<kcbraunschweig@gmail.com>)
3
3
  #
4
4
  # License:: Apache License, Version 2.0
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'rubygems'
20
19
  require 'base64'
21
20
  require 'openssl'
22
21
  require 'uri'
@@ -127,12 +126,8 @@ module CloudstackClient
127
126
  def list_servers(options = {})
128
127
  params = {
129
128
  'command' => 'listVirtualMachines',
129
+ 'listAll' => true
130
130
  }
131
- if options[:listall]
132
- params['listAll'] = true
133
- params['projectId'] = -1
134
- options[:account] = nil
135
- end
136
131
  params['projectid'] = options[:project_id] if options[:project_id]
137
132
  if options[:account]
138
133
  params['domainid'] = list_accounts({name: options[:account]}).first["domainid"]
@@ -668,14 +663,14 @@ module CloudstackClient
668
663
  ##
669
664
  # List loadbalancer rules
670
665
 
671
- def list_load_balancer_rules(name = nil, project_name = nil)
666
+ def list_load_balancer_rules(options = {})
672
667
  params = {
673
668
  'command' => 'listLoadBalancerRules',
674
669
  }
675
- params['name'] = name if name
670
+ params['name'] = options[:name] if options[:name]
676
671
 
677
- if project_name
678
- project = get_project(project_name)
672
+ if options[:project_name]
673
+ project = get_project(options[:project_name])
679
674
  params['projectid'] = project['id']
680
675
  end
681
676
 
@@ -816,6 +811,18 @@ module CloudstackClient
816
811
  json['domain'] || []
817
812
  end
818
813
 
814
+ ##
815
+ # List capacity.
816
+
817
+ def list_capacity(args = {})
818
+ params = {
819
+ 'command' => 'listCapacity',
820
+ }
821
+
822
+ json = send_request(params)
823
+ json['capacity'] || []
824
+ end
825
+
819
826
  ##
820
827
  # Sends a synchronous request to the CloudStack API and returns the response as a Hash.
821
828
  #
@@ -1,14 +1,13 @@
1
1
  require 'yaml'
2
2
  require 'rainbow'
3
3
  require "thor"
4
- require 'command_line_reporter'
5
4
 
6
5
  require "cloudstack-cli/version"
6
+ require "cloudstack-cli/helper"
7
+ require "cloudstack-cli/base"
7
8
 
8
9
  # require subcommands
9
10
  Dir[File.dirname(__FILE__) + '/../lib/cloudstack-cli/commands/*.rb'].each do |file|
10
11
  require file
11
12
  end
12
-
13
- require "cloudstack-cli/helper"
14
13
  require "cloudstack-cli/cli"
metadata CHANGED
@@ -1,32 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudstack-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Nik Wolfgramm
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-07-23 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rdoc
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: thor
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: net-ssh
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rainbow
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,24 +86,11 @@ dependencies:
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
82
93
  version: 1.1.4
83
- - !ruby/object:Gem::Dependency
84
- name: command_line_reporter
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 3.2.1
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: 3.2.1
97
94
  description: cloudstack-cli is a CloudStack API client written in Ruby.
98
95
  email:
99
96
  - nik.wolfgramm@gmail.com
@@ -110,8 +107,10 @@ files:
110
107
  - bin/cs
111
108
  - cloudstack-cli.gemspec
112
109
  - config/cloudstack.example.yml
110
+ - lib/cloudstack-cli/base.rb
113
111
  - lib/cloudstack-cli/cli.rb
114
112
  - lib/cloudstack-cli/commands/account.rb
113
+ - lib/cloudstack-cli/commands/capacity.rb
115
114
  - lib/cloudstack-cli/commands/domain.rb
116
115
  - lib/cloudstack-cli/commands/load_balancer.rb
117
116
  - lib/cloudstack-cli/commands/network.rb
@@ -133,7 +132,6 @@ files:
133
132
  - lib/cloudstack_client.rb
134
133
  homepage: https://bitbucket.org/swisstxt/cloudstack-cli
135
134
  licenses: []
136
- metadata: {}
137
135
  post_install_message:
138
136
  rdoc_options:
139
137
  - --line-numbers
@@ -141,19 +139,21 @@ rdoc_options:
141
139
  require_paths:
142
140
  - lib
143
141
  required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
144
143
  requirements:
145
- - - '>='
144
+ - - ! '>='
146
145
  - !ruby/object:Gem::Version
147
146
  version: 1.9.3
148
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
+ none: false
149
149
  requirements:
150
- - - '>='
150
+ - - ! '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  requirements: []
154
154
  rubyforge_project:
155
- rubygems_version: 2.0.2
155
+ rubygems_version: 1.8.23
156
156
  signing_key:
157
- specification_version: 4
157
+ specification_version: 3
158
158
  summary: cloudstack-cli CloudStack API client
159
159
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 93104eb717133f717c8c4ca3cd7eca4f1bd004f2
4
- data.tar.gz: 1107b76a9e396b694f6cacfb81d83febaf60aa70
5
- SHA512:
6
- metadata.gz: 9ab5e2a02a20bc047bf5d04635c82c8981914f21f0d6f50597f37f39fe92c7dbcf24c27bc9d0b5c38471bcf9d96fe0bc1f09622abb8e58900ca2424f561b5faa
7
- data.tar.gz: 57652bbf3d82fc448836ac61e33a747b996c7908fee1f2f7a0f32c4679f9d711a88c435e4b474b8303828d809b0d222571b4d08a2534f47deba48741bb77ed71