# HG changeset patch
# User Alastair Tse <atse@xxxxxxxxxxxxx>
# Node ID 2bc0831859cba6d559310643a9181d94e6ace857
# Parent aab988d497eadd058087c615a3882ebec56770bb
[XM] Add commands to implement lifecycle commands via the XM XMLRPC interface.
Signed-off-by: Alastair Tse <atse@xxxxxxxxxxxxx>
---
tools/python/xen/xm/create.py | 20 ++++++++++++++++-
tools/python/xen/xm/main.py | 47 ++++++++++++++++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 4 deletions(-)
diff -r aab988d497ea -r 2bc0831859cb tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py Thu Oct 05 17:29:19 2006 +0100
+++ b/tools/python/xen/xm/create.py Thu Oct 05 17:29:19 2006 +0100
@@ -438,6 +438,21 @@ gopts.var('uuid', val='',
will be randomly generated if this option is not set, just like MAC
addresses for virtual network interfaces. This must be a unique
value across the entire cluster.""")
+
+gopts.var('autostart', val='no|yes',
+ fn=set_bool, default=0,
+ use="Should the start VM automatically when Xend starts.")
+
+gopts.var('autostop', val='no|yes',
+ fn=set_bool, default=0,
+ use="Should stop VM automatically when Xend stops.")
+
+gopts.var('on_xend_stop', val='shtudown|suspend',
+ fn=set_value, default="shutdown",
+ use="""Behaviour when Xend stops and autostop is on:
+ - shutdown: Domain is shutdown;
+ - suspend: Domain is suspended;
+ """)
def err(msg):
"""Print an error to stderr and exit.
@@ -668,8 +683,9 @@ def make_config(vals):
config.append([n, v])
map(add_conf, ['name', 'memory', 'maxmem', 'shadow_memory',
- 'restart', 'on_poweroff', 'on_reboot', 'on_crash',
- 'vcpus', 'features'])
+ 'restart', 'on_poweroff',
+ 'on_reboot', 'on_crash', 'vcpus', 'features',
+ 'autostart', 'autostop', 'on_xend_stop'])
if vals.uuid is not None:
config.append(['uuid', vals.uuid])
diff -r aab988d497ea -r 2bc0831859cb tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Thu Oct 05 17:29:19 2006 +0100
+++ b/tools/python/xen/xm/main.py Thu Oct 05 17:29:19 2006 +0100
@@ -91,6 +91,15 @@ SUBCOMMAND_HELP = {
'top' : ('', 'Monitor a host and the domains in real time.'),
'unpause' : ('<Domain>', 'Unpause a paused domain.'),
'uptime' : ('[-s] <Domain>', 'Print uptime for a domain.'),
+
+ # Life cycle xm commands
+ 'new' : ('<ConfigFile> [options] [vars]',
+ 'Adds a domain to Xend domain management'),
+ 'delete' : ('<DomainName>',
+ 'Remove a domain from Xend domain management.'),
+ 'start' : ('<DomainName>', 'Start a Xend managed domain'),
+ 'resume' : ('<DomainName>', 'Resume a Xend managed domain'),
+ 'suspend' : ('<DomainName>', 'Suspend a Xend maanged domain'),
# less used commands
@@ -194,6 +203,8 @@ common_commands = [
common_commands = [
"console",
"create",
+ "new",
+ "delete",
"destroy",
"dump-core",
"help",
@@ -203,8 +214,11 @@ common_commands = [
"pause",
"reboot",
"restore",
+ "resume",
"save",
"shutdown",
+ "start",
+ "suspend",
"top",
"unpause",
"uptime",
@@ -214,6 +228,8 @@ domain_commands = [
domain_commands = [
"console",
"create",
+ "new",
+ "delete",
"destroy",
"domid",
"domname",
@@ -226,8 +242,11 @@ domain_commands = [
"reboot",
"rename",
"restore",
+ "resume",
"save",
"shutdown",
+ "start",
+ "suspend",
"sysrq",
"top",
"unpause",
@@ -678,6 +697,26 @@ def xm_vcpu_list(args):
print format % locals()
+def xm_start(args):
+ arg_check(args, "start", 1)
+ dom = args[0]
+ server.xend.domain.start(dom)
+
+def xm_delete(args):
+ arg_check(args, "delete", 1)
+ dom = args[0]
+ server.xend.domain.delete(dom)
+
+def xm_suspend(args):
+ arg_check(args, "suspend", 1)
+ dom = args[0]
+ server.xend.domain.suspend(dom)
+
+def xm_resume(args):
+ arg_check(args, "resume", 1)
+ dom = args[0]
+ server.xend.domain.resume(dom)
+
def xm_reboot(args):
arg_check(args, "reboot", 1, 3)
from xen.xm import shutdown
@@ -1318,6 +1357,7 @@ commands = {
# xenstat commands
"top": xm_top,
# domain commands
+ "delete": xm_delete,
"destroy": xm_destroy,
"domid": xm_domid,
"domname": xm_domname,
@@ -1327,8 +1367,10 @@ commands = {
"restore": xm_restore,
"save": xm_save,
"shutdown": xm_shutdown,
+ "start": xm_start,
"sysrq": xm_sysrq,
"uptime": xm_uptime,
+ "suspend": xm_suspend,
"list": xm_list,
# memory commands
"mem-max": xm_mem_max,
@@ -1368,13 +1410,14 @@ commands = {
## The commands supported by a separate argument parser in xend.xm.
IMPORTED_COMMANDS = [
'create',
+ 'new',
'migrate',
'labels',
- 'addlabel',
'cfgbootpolicy',
'makepolicy',
'loadpolicy',
- 'dumppolicy',
+ 'dumppolicy',
+ 'addlabel',
'rmlabel',
'getlabel',
'dry-run',
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|