cloudstack-nagios 0.4.2 → 0.5.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.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +0 -1
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +4 -2
  5. data/bin/cs-nagios +1 -2
  6. data/cloudstack-nagios.gemspec +2 -1
  7. data/lib/cloudstack-nagios/base.rb +1 -0
  8. data/lib/cloudstack-nagios/version.rb +1 -1
  9. data/lib/cloudstack_nagios.rb +2 -1
  10. metadata +23 -49
  11. data/lib/cloudstack-client/client.rb +0 -136
  12. data/lib/cloudstack-client/commands/account.rb +0 -22
  13. data/lib/cloudstack-client/commands/capacity.rb +0 -19
  14. data/lib/cloudstack-client/commands/cluster.rb +0 -19
  15. data/lib/cloudstack-client/commands/disk_offering.rb +0 -49
  16. data/lib/cloudstack-client/commands/domain.rb +0 -22
  17. data/lib/cloudstack-client/commands/host.rb +0 -28
  18. data/lib/cloudstack-client/commands/ip_address.rb +0 -82
  19. data/lib/cloudstack-client/commands/iso.rb +0 -64
  20. data/lib/cloudstack-client/commands/job.rb +0 -29
  21. data/lib/cloudstack-client/commands/load_balancer_rule.rb +0 -61
  22. data/lib/cloudstack-client/commands/network.rb +0 -128
  23. data/lib/cloudstack-client/commands/pod.rb +0 -19
  24. data/lib/cloudstack-client/commands/port_forwarding_rule.rb +0 -49
  25. data/lib/cloudstack-client/commands/project.rb +0 -32
  26. data/lib/cloudstack-client/commands/router.rb +0 -89
  27. data/lib/cloudstack-client/commands/server.rb +0 -311
  28. data/lib/cloudstack-client/commands/service_offering.rb +0 -98
  29. data/lib/cloudstack-client/commands/snapshot.rb +0 -40
  30. data/lib/cloudstack-client/commands/ssh_key_pair.rb +0 -106
  31. data/lib/cloudstack-client/commands/template.rb +0 -60
  32. data/lib/cloudstack-client/commands/user.rb +0 -32
  33. data/lib/cloudstack-client/commands/volume.rb +0 -20
  34. data/lib/cloudstack-client/commands/zone.rb +0 -57
  35. data/lib/cloudstack-client/version.rb +0 -3
  36. data/lib/cloudstack_client.rb +0 -2
@@ -1,19 +0,0 @@
1
- module CloudstackClient
2
-
3
- module Pod
4
-
5
- ##
6
- # Lists pods.
7
-
8
- def list_pods(args = {})
9
- params = {
10
- 'command' => 'listPods',
11
- }
12
-
13
- json = send_request(params)
14
- json['pod'] || []
15
- end
16
-
17
- end
18
-
19
- end
@@ -1,49 +0,0 @@
1
- module CloudstackClient
2
-
3
- module PortForwardingRule
4
-
5
- ##
6
- # Lists all port forwarding rules.
7
-
8
- def list_port_forwarding_rules(ip_address_id=nil, project_id)
9
- params = {
10
- 'command' => 'listPortForwardingRules',
11
- 'listall' => true,
12
- 'isrecursive' => true
13
- }
14
- params['ipAddressId'] = ip_address_id if ip_address_id
15
- params['projectid'] = project_id if project_id
16
- json = send_request(params)
17
- json['portforwardingrule'] || []
18
- end
19
-
20
- ##
21
- # Gets the SSH port forwarding rule for the specified server.
22
-
23
- def get_ssh_port_forwarding_rule(server, cached_rules=nil)
24
- rules = cached_rules || list_port_forwarding_rules || []
25
- rules.find_all { |r|
26
- r['virtualmachineid'] == server['id'] &&
27
- r['privateport'] == '22'&&
28
- r['publicport'] == '22'
29
- }.first
30
- end
31
-
32
- ##
33
- # Creates a port forwarding rule.
34
-
35
- def create_port_forwarding_rule(ip_address_id, private_port, protocol, public_port, virtual_machine_id, async = true)
36
- params = {
37
- 'command' => 'createPortForwardingRule',
38
- 'ipAddressId' => ip_address_id,
39
- 'privatePort' => private_port,
40
- 'protocol' => protocol,
41
- 'publicPort' => public_port,
42
- 'virtualMachineId' => virtual_machine_id
43
- }
44
- async ? send_async_request(params)['portforwardingrule'] : send_request(params)
45
- end
46
-
47
- end
48
-
49
- end
@@ -1,32 +0,0 @@
1
- module CloudstackClient
2
-
3
- module Project
4
-
5
- ##
6
- # Get project by name.
7
-
8
- def get_project(name)
9
- params = {
10
- 'command' => 'listProjects',
11
- 'name' => name,
12
- 'listall' => true,
13
- }
14
- json = send_request(params)
15
- json['project'] ? json['project'].first : nil
16
- end
17
-
18
- ##
19
- # Lists projects.
20
-
21
- def list_projects
22
- params = {
23
- 'command' => 'listProjects',
24
- 'listall' => true,
25
- }
26
- json = send_request(params)
27
- json['project'] || []
28
- end
29
-
30
- end
31
-
32
- end
@@ -1,89 +0,0 @@
1
- module CloudstackClient
2
-
3
- module Router
4
-
5
- ##
6
- # Get a router with a given name.
7
-
8
- def get_router(name, project_id = nil)
9
- params = {
10
- 'command' => 'listRouters',
11
- 'listall' => 'true',
12
- 'name' => name
13
- }
14
- params['projectid'] = project_id if project_id
15
-
16
- json = send_request(params)
17
- json['router'] ? json['router'].first : nil
18
- end
19
-
20
- ##
21
- # Lists all virtual routers.
22
-
23
- def list_routers(args = {:account => nil, :zone => nil, :projectid => nil, :status => nil, :name => nil})
24
- params = {
25
- 'command' => 'listRouters',
26
- 'listall' => 'true',
27
- 'isrecursive' => 'true'
28
- }
29
- if args[:zone]
30
- zone = get_zone(args[:zone])
31
- unless zone
32
- puts "Error: Zone #{args[:zone]} not found"
33
- exit 1
34
- end
35
- params['zoneid'] = zone['id']
36
- end
37
- params['projectid'] = args[:projectid] if args[:projectid]
38
- params['state'] = args[:status] if args[:status]
39
- params['name'] = args[:name] if args[:name]
40
- if args[:account]
41
- account = list_accounts({name: args[:account]}).first
42
- unless account
43
- puts "Error: Account #{args[:account]} not found."
44
- exit 1
45
- end
46
- params['domainid'] = account["domainid"]
47
- params['account'] = args[:account]
48
- end
49
-
50
- json = send_request(params)
51
- json['router'] || []
52
- end
53
-
54
- ##
55
- # Destroy virtual router.
56
-
57
- def destroy_router(id, opts = {async: true})
58
- params = {
59
- 'command' => 'destroyRouter',
60
- 'id' => id
61
- }
62
- opts[:async] ? send_async_request(params)['router'] : send_request(params)
63
- end
64
-
65
- ##
66
- # Start virtual router.
67
-
68
- def start_router(id, opts = {async: true})
69
- params = {
70
- 'command' => 'startRouter',
71
- 'id' => id
72
- }
73
- opts[:async] ? send_async_request(params)['router'] : send_request(params)
74
- end
75
-
76
- ##
77
- # Stop virtual router.
78
-
79
- def stop_router(id, opts = {async: true})
80
- params = {
81
- 'command' => 'stopRouter',
82
- 'id' => id
83
- }
84
- opts[:async] ? send_async_request(params)['router'] : send_request(params)
85
- end
86
-
87
- end
88
-
89
- end
@@ -1,311 +0,0 @@
1
- module CloudstackClient
2
-
3
- module Server
4
-
5
- ##
6
- # Finds the server with the specified name.
7
-
8
- def get_server(name, project_id=nil)
9
- params = {
10
- 'command' => 'listVirtualMachines',
11
- 'name' => name
12
- }
13
- params['projectid'] = project_id if project_id
14
- json = send_request(params)
15
- machines = json['virtualmachine']
16
-
17
- if !machines || machines.empty? then
18
- return nil
19
- end
20
-
21
- machines.select {|m| m['name'] == name }.first
22
- end
23
-
24
- def get_server_state(id)
25
- params = {
26
- 'command' => 'listVirtualMachines',
27
- 'id' => id
28
- }
29
- json = send_request(params)
30
- machine_state = json['virtualmachine'][0]['state']
31
-
32
- if !machine_state || machine_state.empty?
33
- return nil
34
- end
35
-
36
- machine_state
37
- end
38
-
39
- def wait_for_server_state(id, state)
40
- while get_server_state(id) != state
41
- print '..'
42
- sleep 5
43
- end
44
- state
45
- end
46
-
47
- ##
48
- # Finds the public ip for a server
49
-
50
- def get_server_public_ip(server, cached_rules=nil)
51
- return nil unless server
52
-
53
- # find the public ip
54
- nic = get_server_default_nic(server) || {}
55
- if nic['type'] == 'Virtual'
56
- ssh_rule = get_ssh_port_forwarding_rule(server, cached_rules)
57
- ssh_rule ? ssh_rule['ipaddress'] : nil
58
- else
59
- nic['ipaddress']
60
- end
61
- end
62
-
63
- ##
64
- # Returns the fully qualified domain name for a server.
65
-
66
- def get_server_fqdn(server)
67
- return nil unless server
68
-
69
- nic = get_server_default_nic(server) || {}
70
- networks = list_networks(project_id: server['projectid']) || {}
71
-
72
- id = nic['networkid']
73
- network = networks.select { |net|
74
- net['id'] == id
75
- }.first
76
- return nil unless network
77
-
78
- "#{server['name']}.#{network['networkdomain']}"
79
- end
80
-
81
- def get_server_default_nic(server)
82
- server['nic'].each do |nic|
83
- return nic if nic['isdefault']
84
- end
85
- end
86
-
87
- ##
88
- # Lists all the servers in your account.
89
-
90
- def list_servers(options = {})
91
- params = {
92
- 'command' => 'listVirtualMachines',
93
- 'listAll' => true
94
- }
95
- params['projectid'] = options[:project_id] if options[:project_id]
96
-
97
- if options[:zone]
98
- zone = get_zone(options[:zone])
99
- unless zone
100
- puts "Error: Zone #{options[:zone]} not found"
101
- exit 1
102
- end
103
- params['zoneid'] = zone['id']
104
- end
105
-
106
- if options[:account]
107
- if account = list_accounts({name: options[:account]}).first
108
- params['domainid'] = account["domainid"]
109
- params['account'] = options[:account]
110
- end
111
- end
112
-
113
- json = send_request(params)
114
- json['virtualmachine'] || []
115
- end
116
-
117
- ##
118
- # Deploys a new server using the specified parameters.
119
-
120
- def create_server(args = {})
121
- if args[:name]
122
- if get_server(args[:name])
123
- puts "Error: Server '#{args[:name]}' already exists."
124
- exit 1
125
- end
126
- end
127
-
128
- service = get_service_offering(args[:offering])
129
- if !service
130
- puts "Error: Service offering '#{args[:offering]}' is invalid"
131
- exit 1
132
- end
133
-
134
- if args[:template]
135
- template = get_template(args[:template])
136
- if !template
137
- puts "Error: Template '#{args[:template]}' is invalid"
138
- exit 1
139
- end
140
- end
141
-
142
- if args[:disk_offering]
143
- disk_offering = get_disk_offering(args[:disk_offering])
144
- unless disk_offering
145
- msg = "Disk offering '#{args[:disk_offering]}' is invalid"
146
- puts "Error: #{msg}"
147
- exit 1
148
- end
149
- end
150
-
151
- if args[:iso]
152
- iso = get_iso(args[:iso])
153
- unless iso
154
- puts "Error: Iso '#{args[:iso]}' is invalid"
155
- exit 1
156
- end
157
- unless disk_offering
158
- puts "Error: a disk offering is required when using iso"
159
- exit 1
160
- end
161
- end
162
-
163
- if !template && !iso
164
- puts "Error: Iso or Template is required"
165
- exit 1
166
- end
167
-
168
- zone = args[:zone] ? get_zone(args[:zone]) : get_default_zone
169
- if !zone
170
- msg = args[:zone] ? "Zone '#{args[:zone]}' is invalid" : "No default zone found"
171
- puts "Error: #{msg}"
172
- exit 1
173
- end
174
-
175
- if args[:project]
176
- project = get_project(args[:project])
177
- if !project
178
- msg = "Project '#{args[:project]}' is invalid"
179
- puts "Error: #{msg}"
180
- exit 1
181
- end
182
- end
183
-
184
- networks = []
185
- if args[:networks]
186
- args[:networks].each do |name|
187
- network = project ? get_network(name, project['id']) : get_network(name)
188
- if !network
189
- puts "Error: Network '#{name}' not found"
190
- exit 1
191
- end
192
- networks << network
193
- end
194
- end
195
- if networks.empty?
196
- networks << get_default_network
197
- end
198
- if networks.empty?
199
- puts "No default network found"
200
- exit 1
201
- end
202
- network_ids = networks.map { |network|
203
- network['id']
204
- }
205
-
206
- params = {
207
- 'command' => 'deployVirtualMachine',
208
- 'serviceOfferingId' => service['id'],
209
- 'templateId' => template ? template['id'] : iso['id'],
210
- 'zoneId' => zone['id'],
211
- 'networkids' => network_ids.join(',')
212
- }
213
- params['name'] = args[:name] if args[:name]
214
- params['projectid'] = project['id'] if project
215
- params['diskofferingid'] = disk_offering['id'] if disk_offering
216
- params['hypervisor'] = (args[:hypervisor] || 'vmware') if iso
217
- params['keypair'] = args[:keypair] if args[:keypair]
218
- params['size'] = args[:disk_size] if args[:disk_size]
219
- params['group'] = args[:group] if args[:group]
220
- params['displayname'] = args[:displayname] if args[:displayname]
221
-
222
- if args[:account]
223
- account = list_accounts({name: args[:account]}).first
224
- unless account
225
- puts "Error: Account #{args[:account]} not found."
226
- exit 1
227
- end
228
- params['domainid'] = account["domainid"]
229
- params['account'] = args[:account]
230
- end
231
-
232
- args[:sync] ? send_request(params) : send_async_request(params)['virtualmachine']
233
- end
234
-
235
- ##
236
- # Stops the server with the specified name.
237
- #
238
-
239
- def stop_server(name, forced=nil)
240
- server = get_server(name)
241
- if !server || !server['id']
242
- puts "Error: Virtual machine '#{name}' does not exist"
243
- exit 1
244
- end
245
-
246
- params = {
247
- 'command' => 'stopVirtualMachine',
248
- 'id' => server['id']
249
- }
250
- params['forced'] = true if forced
251
-
252
- json = send_async_request(params)
253
- json['virtualmachine']
254
- end
255
-
256
- ##
257
- # Start the server with the specified name.
258
- #
259
-
260
- def start_server(name)
261
- server = get_server(name)
262
- if !server || !server['id']
263
- puts "Error: Virtual machine '#{name}' does not exist"
264
- exit 1
265
- end
266
-
267
- params = {
268
- 'command' => 'startVirtualMachine',
269
- 'id' => server['id']
270
- }
271
-
272
- json = send_async_request(params)
273
- json['virtualmachine']
274
- end
275
-
276
- ##
277
- # Reboot the server with the specified name.
278
- #
279
-
280
- def reboot_server(name)
281
- server = get_server(name)
282
- if !server || !server['id']
283
- puts "Error: Virtual machine '#{name}' does not exist"
284
- exit 1
285
- end
286
-
287
- params = {
288
- 'command' => 'rebootVirtualMachine',
289
- 'id' => server['id']
290
- }
291
-
292
- json = send_async_request(params)
293
- json['virtualmachine']
294
- end
295
-
296
- ##
297
- # Destroy the server with the specified name.
298
- #
299
-
300
- def destroy_server(id, async = true)
301
- params = {
302
- 'command' => 'destroyVirtualMachine',
303
- 'id' => id
304
- }
305
-
306
- async ? send_async_request(params)['virtualmachine'] : send_request(params)
307
- end
308
-
309
- end
310
-
311
- end