summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cobbler/action_power.py1
-rw-r--r--cobbler/item_system.py2
-rw-r--r--cobbler/modules/cli_system.py2
-rw-r--r--installer_templates/settings.template1
-rw-r--r--setup.py1
-rw-r--r--templates/power_virsh.template32
-rw-r--r--webui_templates/system_edit.tmpl2
7 files changed, 38 insertions, 3 deletions
diff --git a/cobbler/action_power.py b/cobbler/action_power.py
index 6ee5d6e2..e88c7327 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 9c73a772..8377c01f 100644
--- a/cobbler/item_system.py
+++ b/cobbler/item_system.py
@@ -569,7 +569,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 03601008..cd75daae 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 9d0e8e4a..791ed428 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 1ac15c13..c1bc5617 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 00000000..c1168448
--- /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 0e86a6e7..2a47a050 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: