Greetings,
The following changes provide power management over libvirt managed guests. The template will support xen and qemu guests, both local and remote. The --power-pass field is not supported for /usr/bin/virsh operations. Cobbler users wishing to enable password-less power management of remotely managed libvirt guests should setup ssh keys between the two systems.
So far I've tested locally managed qemu systems:
# cobbler system edit --name vguest1 --power-type virsh --power-id vguest1 # cobbler system poweron --name vguest1 cobbler power configuration is:
type : virsh address: user : id : vguest1
- /usr/bin/virsh --connect qemu:///system start vguest1 Domain vguest1 started
# cobbler system poweroff --name vguest1 cobbler power configuration is:
type : virsh address: user : id : vguest1
- /usr/bin/virsh --connect qemu:///system destroy vguest1 Domain vguest1 destroyed
As well as remotely managed qemu systems:
# cobbler system edit --name vguest2 --power-type virsh --power-id vguest2 --power-address qemu+ssh:dell-t5400.test.redhat.com # cobbler system poweron --name vguest2 cobbler power configuration is:
type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2
- /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system start vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 started
# cobbler system poweroff --name vguest2 cobbler power configuration is:
type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2
- /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system destroy vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 destroyed
Questions/comments appreciated.
Thanks, James
--- cobbler/action_power.py | 1 + cobbler/item_system.py | 2 +- cobbler/modules/cli_system.py | 2 +- installer_templates/settings.template | 1 + setup.py | 1 + templates/power_virsh.template | 32 ++++++++++++++++++++++++++++++++ webui_templates/system_edit.tmpl | 2 +- 7 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 templates/power_virsh.template
diff --git a/cobbler/action_power.py b/cobbler/action_power.py index d524578..d0a5db6 100644 --- a/cobbler/action_power.py +++ b/cobbler/action_power.py @@ -136,6 +136,7 @@ class PowerTool: "rsa" : os.path.join(powerdir,"power_rsa.template"), "lpar" : os.path.join(powerdir,"power_lpar.template"), "bladecenter": os.path.join(powerdir,"power_bladecenter.template"), + "virsh" : os.path.join(powerdir,"power_virsh.template"), }
result = map.get(self.system.power_type, "") diff --git a/cobbler/item_system.py b/cobbler/item_system.py index 0125e47..3e38d1b 100644 --- a/cobbler/item_system.py +++ b/cobbler/item_system.py @@ -563,7 +563,7 @@ class System(item.Item):
def set_power_type(self, power_type): power_type = power_type.lower() - valid = "bullpap wti apc_snmp ether-wake ipmilan drac ipmitool ilo rsai lpar bladecenter none" + valid = "bullpap wti apc_snmp ether-wake ipmilan drac ipmitool ilo rsai lpar bladecenter virsh none" choices = valid.split(" ") choices.sort() if power_type not in choices: diff --git a/cobbler/modules/cli_system.py b/cobbler/modules/cli_system.py index 8f28bae..bfe8cef 100644 --- a/cobbler/modules/cli_system.py +++ b/cobbler/modules/cli_system.py @@ -100,7 +100,7 @@ class SystemFunction(commands.CobblerFunction): if not self.matches_args(args,["dumpvars","remove","report","getks","list"]): p.add_option("--power-pass", dest="power_pass", help="password for power management interface") if not self.matches_args(args,["dumpvars","poweron","poweroff","reboot","remove","report","getks","list"]): - p.add_option("--power-type", dest="power_type", help="one of: none, apc_snmp, bullpap, drac, ether-wake, ilo, ipmilan, ipmitool, wti, lpar, bladecenter") + p.add_option("--power-type", dest="power_type", help="one of: none, apc_snmp, bullpap, drac, ether-wake, ilo, ipmilan, ipmitool, wti, lpar, bladecenter, virsh")
if not self.matches_args(args,["dumpvars","remove","report","getks","list"]): p.add_option("--power-user", dest="power_user", help="username for power management interface, if required") diff --git a/installer_templates/settings.template b/installer_templates/settings.template index 9d0e8e4..791ed42 100644 --- a/installer_templates/settings.template +++ b/installer_templates/settings.template @@ -179,6 +179,7 @@ omshell_bin: /usr/bin/omshell # rsa # lpar # bladecenter +# virsh
power_management_default_type: 'ipmitool'
diff --git a/setup.py b/setup.py index 1ac15c1..c1bc561 100644 --- a/setup.py +++ b/setup.py @@ -242,6 +242,7 @@ if __name__ == "__main__": (powerpath, ['templates/power_ilo.template']), (powerpath, ['templates/power_lpar.template']), (powerpath, ['templates/power_bladecenter.template']), + (powerpath, ['templates/power_virsh.template']),
# templates for /usr/bin/cobbler-setup (itemplates, ['installer_templates/modules.conf.template']), diff --git a/templates/power_virsh.template b/templates/power_virsh.template new file mode 100644 index 0000000..c116844 --- /dev/null +++ b/templates/power_virsh.template @@ -0,0 +1,32 @@ +## Set proper virsh operation +#if $power_mode == "on" + #set operation = "start" +#else + #set operation = "destroy" +#end if + +## Build connection URI +## driver[+transport]://[username@][hostname][:port]/[path][?extraparameters] + +## Determine requested driver to use (defaults to 'qemu') +#if $power_address and $power_address.count(':') > 0 + #set (driver, power_address) = $power_address.split(':', 1) +#else + #set driver = "qemu" +#end if + +## Was a username requested (defaults to '')? +#if $power_user + #set $username = "%s@" % $power_user +#else + #set $username = "" +#end if + +## Default to localhost +#if $username and $power_address is None or $power_address == "" + #set $power_address = "localhost" +#end if + +## Perform requested action +## NOTE - may require additional setup by sys-admin to enable passwd-less operation +/usr/bin/virsh --connect $driver://$username$power_address/system $operation $power_id diff --git a/webui_templates/system_edit.tmpl b/webui_templates/system_edit.tmpl index 1e5be16..8ecfa73 100644 --- a/webui_templates/system_edit.tmpl +++ b/webui_templates/system_edit.tmpl @@ -686,7 +686,7 @@ function page_onload() { </td> <td class="poweredit"> <select name="power_type" id="power_type"> - #set valid_power = [ "bullpap", "wti", "apc_snmp", "ether-wake", "ipmilan", "drac", "ipmitool", "ilo", "rsa", "lpar", "bladecenter" ] + #set valid_power = [ "bullpap", "wti", "apc_snmp", "ether-wake", "ipmilan", "drac", "ipmitool", "ilo", "rsa", "lpar", "bladecenter", "virsh" ] #set nothing = valid_power.sort()
#for $value in $valid_power:
On Mon, 2008-11-24 at 13:40 -0500, James Laska wrote:
Greetings,
The following changes provide power management over libvirt managed guests. The template will support xen and qemu guests, both local and remote. The --power-pass field is not supported for /usr/bin/virsh operations. Cobbler users wishing to enable password-less power management of remotely managed libvirt guests should setup ssh keys between the two systems.
Greetings!
Any thoughts on support for power mgmt of virsh guests?
Thanks, James
So far I've tested locally managed qemu systems:
# cobbler system edit --name vguest1 --power-type virsh --power-id vguest1 # cobbler system poweron --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system start vguest1 Domain vguest1 started # cobbler system poweroff --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system destroy vguest1 Domain vguest1 destroyed
As well as remotely managed qemu systems:
# cobbler system edit --name vguest2 --power-type virsh --power-id vguest2 --power-address qemu+ssh:dell-t5400.test.redhat.com # cobbler system poweron --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system start vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 started # cobbler system poweroff --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system destroy vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 destroyed
Questions/comments appreciated.
Thanks, James
----- Original Message ----- From: "James Laska" jlaska@redhat.com To: cobbler@lists.fedorahosted.org Sent: Monday, December 1, 2008 11:00:02 AM GMT -05:00 US/Canada Eastern Subject: Re: libvirt power management support using /usr/bin/virsh
On Mon, 2008-11-24 at 13:40 -0500, James Laska wrote:
Greetings,
The following changes provide power management over libvirt managed guests. The template will support xen and qemu guests, both local and remote. The --power-pass field is not supported for /usr/bin/virsh operations. Cobbler users wishing to enable password-less power management of remotely managed libvirt guests should setup ssh keys between the two systems.
Greetings!
Any thoughts on support for power mgmt of virsh guests?
Thanks, James
I haven't had a chance to review this yet, though I very much like the capability.
Others comments on syntax and other details are welcome.
Cobbler does not register guests to the hosts that they have been installed from because they could later be migrated without cobbler's knowledge, so keeping the management address as with other power systems seems solid to me.
So far I've tested locally managed qemu systems:
# cobbler system edit --name vguest1 --power-type virsh --power-id vguest1 # cobbler system poweron --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system start vguest1 Domain vguest1 started # cobbler system poweroff --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system destroy vguest1 Domain vguest1 destroyed
As well as remotely managed qemu systems:
# cobbler system edit --name vguest2 --power-type virsh --power-id vguest2 --power-address qemu+ssh:dell-t5400.test.redhat.com # cobbler system poweron --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system start vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 started # cobbler system poweroff --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system destroy vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 destroyed
Questions/comments appreciated.
Thanks, James
_______________________________________________ cobbler mailing list cobbler@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/cobbler
James Laska wrote:
Greetings,
The following changes provide power management over libvirt managed guests. The template will support xen and qemu guests, both local and remote. The --power-pass field is not supported for /usr/bin/virsh operations. Cobbler users wishing to enable password-less power management of remotely managed libvirt guests should setup ssh keys between the two systems.
So far I've tested locally managed qemu systems:
# cobbler system edit --name vguest1 --power-type virsh --power-id vguest1 # cobbler system poweron --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system start vguest1 Domain vguest1 started # cobbler system poweroff --name vguest1 cobbler power configuration is: type : virsh address: user : id : vguest1 - /usr/bin/virsh --connect qemu:///system destroy vguest1 Domain vguest1 destroyed
As well as remotely managed qemu systems:
# cobbler system edit --name vguest2 --power-type virsh --power-id vguest2 --power-address qemu+ssh:dell-t5400.test.redhat.com # cobbler system poweron --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system start vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 started # cobbler system poweroff --name vguest2 cobbler power configuration is: type : virsh address: qemu+ssh:dell-t5400.test.redhat.com user : id : vguest2 - /usr/bin/virsh --connect qemu+ssh://dell-t5400.test.redhat.com/system destroy vguest2 root@dell-t5400.test.redhat.com's password: Domain vguest2 destroyed
Questions/comments appreciated.
Thanks, James
cobbler mailing list cobbler@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/cobbler
I merged this one in this morning, thanks!
--Michael
cobbler@lists.fedorahosted.org