knife-ovmcli 0.0.7 → 0.0.8
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 +4 -4
- data/lib/chef/knife/BaseOraclevmCommand.rb +98 -2
- data/lib/chef/knife/ovmcli_vm_deletevdisk.rb +33 -0
- data/lib/chef/knife/ovmcli_vm_migrate.rb +50 -0
- data/lib/chef/knife/ovmcli_vm_removevdisk.rb +33 -0
- data/lib/chef/knife/ovmcli_vm_state.rb +12 -1
- data/lib/knife-ovmcli/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ca4b8d7413b43ba034295d856dc210bc0479fa1
|
4
|
+
data.tar.gz: 4a68816c34d48db63d6d9d341934f018bf8198fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b054d4e3b86eaf731c8316c5d4db6ecef701a1529ffbd9cef013a6005f64c9ae293c5e99bc878679ce4272ad966b59d6bce6bad49cdb957ca50e00270378d2a
|
7
|
+
data.tar.gz: c71b2b72f7463470d8f244172dbc2fa88ea6ab7acd4d202f0857fa243cc453a3d2f2ff449e7b8894a028032c6efe96ff4e38c89e0e6edda2fc975ac7213c1036
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Author:: Geoff O'Callaghan (<geoffocallaghan@gmail.com>)
|
3
3
|
# Contributor:: Michael Huisman michhuis@gmail.com
|
4
4
|
# License:: Apache License, Version 2.0
|
5
|
-
#
|
5
|
+
# Version::0.0.8
|
6
6
|
|
7
7
|
require 'chef/knife'
|
8
8
|
|
@@ -270,6 +270,30 @@ class Chef
|
|
270
270
|
return current
|
271
271
|
end
|
272
272
|
#
|
273
|
+
# kill_vm, given a vmname issue a kill request
|
274
|
+
#
|
275
|
+
def kill_vm(vmname)
|
276
|
+
current = {:errormsg => "", :status => "", :time => "", :vmstatus => ""}
|
277
|
+
|
278
|
+
conn_opts=get_cli_connection
|
279
|
+
Chef::Log.debug("#{conn_opts[:host]}...show vm name=#{vmname}")
|
280
|
+
Net::SSH.start( conn_opts[:host], conn_opts[:user], :password => conn_opts[:password], :port => conn_opts[:port] ) do|ssh|
|
281
|
+
output = ssh.exec!("kill vm name=#{vmname}")
|
282
|
+
output.each_line do |line|
|
283
|
+
if line.match(/Status:/)
|
284
|
+
current[:status]=line.split[1].strip
|
285
|
+
elsif line.match(/Time:/)
|
286
|
+
line["Time: "]=""
|
287
|
+
current[:time]=line.strip
|
288
|
+
elsif line.match(/Error Msg:/)
|
289
|
+
line["Error Msg: "]=""
|
290
|
+
current[:errormsg]=line.strip
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|
294
|
+
return current
|
295
|
+
end
|
296
|
+
#
|
273
297
|
# list_vm, display all vm's
|
274
298
|
#
|
275
299
|
def list_vm(vmname)
|
@@ -459,7 +483,55 @@ class Chef
|
|
459
483
|
end
|
460
484
|
end
|
461
485
|
return current
|
462
|
-
end
|
486
|
+
end
|
487
|
+
#
|
488
|
+
# remove_vdisk, delete vdisk diskmapping
|
489
|
+
#
|
490
|
+
def remove_vdisk(vdiskid)
|
491
|
+
current = {:errormsg => "", :status => "", :time => "", :vmstatus => ""}
|
492
|
+
|
493
|
+
conn_opts=get_cli_connection
|
494
|
+
Chef::Log.debug("#{conn_opts[:host]}...delete VmDiskMapping id=#{vdiskid}")
|
495
|
+
Net::SSH.start( conn_opts[:host], conn_opts[:user], :password => conn_opts[:password], :port => conn_opts[:port] ) do|ssh|
|
496
|
+
output = ssh.exec!("delete VmDiskMapping id=#{vdiskid}")
|
497
|
+
output.each_line do |line|
|
498
|
+
if line.match(/Status:/)
|
499
|
+
current[:status]=line.split[1].strip
|
500
|
+
elsif line.match(/Time:/)
|
501
|
+
line["Time: "]=""
|
502
|
+
current[:time]=line.strip
|
503
|
+
elsif line.match(/Error Msg:/)
|
504
|
+
line["Error Msg: "]=""
|
505
|
+
current[:errormsg]=line.strip
|
506
|
+
end
|
507
|
+
end
|
508
|
+
end
|
509
|
+
return current
|
510
|
+
end
|
511
|
+
#
|
512
|
+
# delete_vdisk, delete vdisk
|
513
|
+
#
|
514
|
+
def delete_vdisk(vdisk)
|
515
|
+
current = {:errormsg => "", :status => "", :time => "", :vmstatus => ""}
|
516
|
+
|
517
|
+
conn_opts=get_cli_connection
|
518
|
+
Chef::Log.debug("#{conn_opts[:host]}...delete VirtualDisk name=#{vdisk}")
|
519
|
+
Net::SSH.start( conn_opts[:host], conn_opts[:user], :password => conn_opts[:password], :port => conn_opts[:port] ) do|ssh|
|
520
|
+
output = ssh.exec!("delete VirtualDisk name=#{vdisk}")
|
521
|
+
output.each_line do |line|
|
522
|
+
if line.match(/Status:/)
|
523
|
+
current[:status]=line.split[1].strip
|
524
|
+
elsif line.match(/Time:/)
|
525
|
+
line["Time: "]=""
|
526
|
+
current[:time]=line.strip
|
527
|
+
elsif line.match(/Error Msg:/)
|
528
|
+
line["Error Msg: "]=""
|
529
|
+
current[:errormsg]=line.strip
|
530
|
+
end
|
531
|
+
end
|
532
|
+
end
|
533
|
+
return current
|
534
|
+
end
|
463
535
|
#
|
464
536
|
# edit_vm, edit VM cpu and memory
|
465
537
|
#
|
@@ -485,6 +557,30 @@ class Chef
|
|
485
557
|
return current
|
486
558
|
end
|
487
559
|
#
|
560
|
+
# migrate_vm, migrate VM to another server
|
561
|
+
#
|
562
|
+
def migrate_vm(vmname, server)
|
563
|
+
current = {:errormsg => "", :status => "", :time => "", :vmstatus => ""}
|
564
|
+
|
565
|
+
conn_opts=get_cli_connection
|
566
|
+
Chef::Log.debug("#{conn_opts[:host]}...migrate vm name=#{vmname},destServer=#{server}")
|
567
|
+
Net::SSH.start( conn_opts[:host], conn_opts[:user], :password => conn_opts[:password], :port => conn_opts[:port] ) do|ssh|
|
568
|
+
output = ssh.exec!("migrate vm name=#{vmname} destServer=#{server}")
|
569
|
+
output.each_line do |line|
|
570
|
+
if line.match(/Status:/)
|
571
|
+
current[:status]=line.split[1].strip
|
572
|
+
elsif line.match(/Time:/)
|
573
|
+
line["Time: "]=""
|
574
|
+
current[:time]=line.strip
|
575
|
+
elsif line.match(/Error Msg:/)
|
576
|
+
line["Error Msg: "]=""
|
577
|
+
current[:errormsg]=line.strip
|
578
|
+
end
|
579
|
+
end
|
580
|
+
end
|
581
|
+
return current
|
582
|
+
end
|
583
|
+
#
|
488
584
|
# add_vnic, add vnic on vm
|
489
585
|
#
|
490
586
|
def add_vnic(vmname, network, vnicname)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Code copied from Author:: Geoff O'Callaghan (<geoffocallaghan@gmail.com>)
|
3
|
+
# Author:: Michael Huisman michhuis@gmail.com
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'chef/knife'
|
8
|
+
require 'chef/knife/BaseOraclevmCommand'
|
9
|
+
require 'netaddr'
|
10
|
+
require 'net/ssh'
|
11
|
+
|
12
|
+
# Delete a virtual disk
|
13
|
+
class Chef::Knife::OvmcliVmDeletevdisk < Chef::Knife::BaseOraclevmCommand
|
14
|
+
|
15
|
+
banner "knife ovmcli vm deletevdisk VDISK"
|
16
|
+
|
17
|
+
get_common_options
|
18
|
+
|
19
|
+
def run
|
20
|
+
|
21
|
+
$stdout.sync = true
|
22
|
+
|
23
|
+
vdisk = @name_args[0]
|
24
|
+
|
25
|
+
current=delete_vdisk(vdisk)
|
26
|
+
Chef::Log.debug("Status = #{current[:status]}. Time = #{current[:time]}. VM Status = #{current[:vmstatus]}.")
|
27
|
+
|
28
|
+
if current[:status]!="Success"
|
29
|
+
puts "Call to OVM CLI Failed with #{current[:errormsg]}"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Geoff O'Callaghan (<geoffocallaghan@gmail.com>)
|
3
|
+
# Michael Huisman <michhuis@gmail.com>
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'chef/knife'
|
8
|
+
require 'chef/knife/BaseOraclevmCommand'
|
9
|
+
require 'netaddr'
|
10
|
+
require 'net/ssh'
|
11
|
+
|
12
|
+
# Migrate a VM
|
13
|
+
class Chef::Knife::OvmcliVmMigrate < Chef::Knife::BaseOraclevmCommand
|
14
|
+
|
15
|
+
banner "knife ovmcli vm migrate VMNAME (options)"
|
16
|
+
|
17
|
+
get_common_options
|
18
|
+
|
19
|
+
option :server,
|
20
|
+
:short => "-s VALUE",
|
21
|
+
:long => "--server VALUE",
|
22
|
+
:description => "The name of the Oracle VM Server on which to migrate the virtual machine."
|
23
|
+
|
24
|
+
def run
|
25
|
+
|
26
|
+
$stdout.sync = true
|
27
|
+
|
28
|
+
vmname = @name_args[0]
|
29
|
+
if vmname.nil?
|
30
|
+
show_usage
|
31
|
+
ui.fatal("You must specify a virtual machine name")
|
32
|
+
exit 1
|
33
|
+
end
|
34
|
+
|
35
|
+
current=show_vm_status(vmname)
|
36
|
+
Chef::Log.debug("Status = #{current[:status]}. Time = #{current[:time]}. VM Status = #{current[:vmstatus]}.")
|
37
|
+
|
38
|
+
if current[:status]=="Success"
|
39
|
+
server=get_config(:server)
|
40
|
+
mstatus=migrate_vm(vmname, server)
|
41
|
+
if mstatus[:status] == "Success"
|
42
|
+
puts "#{mstatus[:status]}"
|
43
|
+
else
|
44
|
+
puts "Failed with #{mstatus[:errormsg]}"
|
45
|
+
end
|
46
|
+
else
|
47
|
+
puts "Call to OVM CLI Failed with #{current[:errormsg]}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Code copied from Author:: Geoff O'Callaghan (<geoffocallaghan@gmail.com>)
|
3
|
+
# Author:: Michael Huisman michhuis@gmail.com
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'chef/knife'
|
8
|
+
require 'chef/knife/BaseOraclevmCommand'
|
9
|
+
require 'netaddr'
|
10
|
+
require 'net/ssh'
|
11
|
+
|
12
|
+
# Remove a virtual disk
|
13
|
+
class Chef::Knife::OvmcliVmRemovevdisk < Chef::Knife::BaseOraclevmCommand
|
14
|
+
|
15
|
+
banner "knife ovmcli vm removevdisk VDISKID"
|
16
|
+
|
17
|
+
get_common_options
|
18
|
+
|
19
|
+
def run
|
20
|
+
|
21
|
+
$stdout.sync = true
|
22
|
+
|
23
|
+
vdiskid = @name_args[0]
|
24
|
+
|
25
|
+
current=remove_vdisk(vdiskid)
|
26
|
+
Chef::Log.debug("Status = #{current[:status]}. Time = #{current[:time]}. VM Status = #{current[:vmstatus]}.")
|
27
|
+
|
28
|
+
if current[:status]!="Success"
|
29
|
+
puts "Call to OVM CLI Failed with #{current[:errormsg]}"
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Geoff O'Callaghan (<geoffocallaghan@gmail.com>)
|
3
|
+
# Michael Huisman <michhuis@gmail.com>
|
3
4
|
# License:: Apache License, Version 2.0
|
4
5
|
#
|
5
6
|
|
@@ -18,7 +19,7 @@ class Chef::Knife::OvmcliVmState < Chef::Knife::BaseOraclevmCommand
|
|
18
19
|
option :state,
|
19
20
|
:short => "-s STATE",
|
20
21
|
:long => "--state STATE",
|
21
|
-
:description => "The power state to transition the VM into; one of on|off|suspend|resume|restart"
|
22
|
+
:description => "The power state to transition the VM into; one of on|off|suspend|resume|restart|kill"
|
22
23
|
|
23
24
|
|
24
25
|
def run
|
@@ -56,6 +57,9 @@ class Chef::Knife::OvmcliVmState < Chef::Knife::BaseOraclevmCommand
|
|
56
57
|
puts "Restart virtual machine #{vmname} : #{result[:status]}"
|
57
58
|
when 'resume'
|
58
59
|
puts "Cannot Resume virtual machine #{vmname} as it is on"
|
60
|
+
when 'kill'
|
61
|
+
result=kill_vm(vmname)
|
62
|
+
puts "Kill virtual machine #{vmname} : #{result[:status]}"
|
59
63
|
else
|
60
64
|
show_usage
|
61
65
|
end
|
@@ -72,6 +76,8 @@ class Chef::Knife::OvmcliVmState < Chef::Knife::BaseOraclevmCommand
|
|
72
76
|
puts "Cannot Restrt virtual machine #{vmname} as it is off"
|
73
77
|
when 'resume'
|
74
78
|
puts "Cannot Resume virtual machine #{vmname} as it is off"
|
79
|
+
when 'kill'
|
80
|
+
puts "Cannot Kill virtual machine #{vmname} as it is off"
|
75
81
|
else
|
76
82
|
show_usage
|
77
83
|
end
|
@@ -87,6 +93,8 @@ class Chef::Knife::OvmcliVmState < Chef::Knife::BaseOraclevmCommand
|
|
87
93
|
puts "Cannot Restrt virtual machine #{vmname} as it is Stopping"
|
88
94
|
when 'resume'
|
89
95
|
puts "Cannot Resume virtual machine #{vmname} as it is Stopping"
|
96
|
+
when 'kill'
|
97
|
+
puts "Cannot Kill virtual machine #{vmname} as it is Stopping"
|
90
98
|
else
|
91
99
|
show_usage
|
92
100
|
end
|
@@ -103,6 +111,9 @@ class Chef::Knife::OvmcliVmState < Chef::Knife::BaseOraclevmCommand
|
|
103
111
|
when 'resume'
|
104
112
|
result=resume_vm(vmname)
|
105
113
|
puts "Resume virtual machine #{vmname} : #{result[:status]}"
|
114
|
+
when 'kill'
|
115
|
+
result=kill_vm(vmname)
|
116
|
+
puts "Killing virtual machine #{vmname} : #{result[:status]}"
|
106
117
|
else
|
107
118
|
show_usage
|
108
119
|
end
|
data/lib/knife-ovmcli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-ovmcli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Geoff O'Callaghan
|
7
|
+
- Michael Huisman / Geoff O'Callaghan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: netaddr
|
@@ -52,9 +52,12 @@ files:
|
|
52
52
|
- lib/chef/knife/ovmcli_vm_clone.rb
|
53
53
|
- lib/chef/knife/ovmcli_vm_createvdisk.rb
|
54
54
|
- lib/chef/knife/ovmcli_vm_delete.rb
|
55
|
+
- lib/chef/knife/ovmcli_vm_deletevdisk.rb
|
55
56
|
- lib/chef/knife/ovmcli_vm_edit.rb
|
56
57
|
- lib/chef/knife/ovmcli_vm_list.rb
|
57
58
|
- lib/chef/knife/ovmcli_vm_message.rb
|
59
|
+
- lib/chef/knife/ovmcli_vm_migrate.rb
|
60
|
+
- lib/chef/knife/ovmcli_vm_removevdisk.rb
|
58
61
|
- lib/chef/knife/ovmcli_vm_state.rb
|
59
62
|
- lib/knife-ovmcli/version.rb
|
60
63
|
homepage: http://github.com/michaelhuisman/knife-ovmcli
|