- bnc#623833 - Error in Xend-API method VM_set_actions_after_crash
21866-xenapi.patch - bnc#625003 - Fix vm config options coredump-{restart,destroy} Added hunk to xm-create-xflag.patch - bnc#605186 - Squelch harmless error messages in block-iscsi - bnc#623438 - Add ability to control SCSI device path scanning in xend 21847-pscsi.patch 21723-get-domu-state.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=68
This commit is contained in:
parent
87d62a38d6
commit
393ad2e586
188
21723-get-domu-state.patch
Normal file
188
21723-get-domu-state.patch
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Ian Jackson <Ian.Jackson@eu.citrix.com>
|
||||||
|
# Date 1277819571 -3600
|
||||||
|
# Node ID a60c604b5829db6285ff89d8163478330ac12ee2
|
||||||
|
# Parent 7b00193bd0334606b6f6779c3f14a1667a952fe4
|
||||||
|
tools/xend, xm: add a command to get the state of VMs
|
||||||
|
|
||||||
|
add a command "domstate" to get the state of Vms, which may have one state of
|
||||||
|
{'shutoff', 'idle','shutdown','running','crashed','paused' or 'paused by
|
||||||
|
admin"}.
|
||||||
|
|
||||||
|
For case of pause, I distinguish it into two conditions. One is "paused" the
|
||||||
|
other is "paused by admin".
|
||||||
|
"pasued by admin" means that users pause a domain voluntary by "xm paused
|
||||||
|
VM" or " API"
|
||||||
|
|
||||||
|
Signed-off-by James (Song Wei) <jsong@novell.com>
|
||||||
|
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomain.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomain.py
|
||||||
|
@@ -250,6 +250,18 @@ class XendDomain:
|
||||||
|
@return: path to config file.
|
||||||
|
"""
|
||||||
|
return os.path.join(self._managed_path(domuuid), CACHED_CONFIG_FILE)
|
||||||
|
+ def domain_setpauseflag(self, dom, flag=False):
|
||||||
|
+ try:
|
||||||
|
+ dominfo = self.domain_lookup_nr(dom)
|
||||||
|
+ dominfo.paused_by_admin = flag
|
||||||
|
+ except Exception, err:
|
||||||
|
+ log.debug("error in in setpauseflag")
|
||||||
|
+ def domain_getpauseflag(self, dom):
|
||||||
|
+ try:
|
||||||
|
+ dominfo = self.domain_lookup_nr(dom)
|
||||||
|
+ return dominfo.paused_by_admin
|
||||||
|
+ except Exception, err:
|
||||||
|
+ log.debug("error in in getpauseflag")
|
||||||
|
|
||||||
|
def _managed_check_point_path(self, domuuid):
|
||||||
|
"""Returns absolute path to check point file for managed domain.
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
||||||
|
@@ -327,6 +327,8 @@ class XendDomainInfo:
|
||||||
|
@type info: dictionary
|
||||||
|
@ivar domid: Domain ID (if VM has started)
|
||||||
|
@type domid: int or None
|
||||||
|
+ @ivar paused_by_admin: Is this Domain paused by command or API
|
||||||
|
+ @type paused_by_admin: bool
|
||||||
|
@ivar guest_bitsize: the bitsize of guest
|
||||||
|
@type guest_bitsize: int or None
|
||||||
|
@ivar alloc_mem: the memory domain allocated when booting
|
||||||
|
@@ -390,6 +392,7 @@ class XendDomainInfo:
|
||||||
|
self.domid = domid
|
||||||
|
self.guest_bitsize = None
|
||||||
|
self.alloc_mem = None
|
||||||
|
+ self.paused_by_admin = False
|
||||||
|
|
||||||
|
maxmem = self.info.get('memory_static_max', 0)
|
||||||
|
memory = self.info.get('memory_dynamic_max', 0)
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/server/SrvDomain.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/server/SrvDomain.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/server/SrvDomain.py
|
||||||
|
@@ -225,6 +225,20 @@ class SrvDomain(SrvDir):
|
||||||
|
self.acceptCommand(req)
|
||||||
|
return self.xd.domain_reset(self.dom.getName())
|
||||||
|
|
||||||
|
+ def op_do_get_pauseflag(self, op, req):
|
||||||
|
+ self.acceptCommand(req)
|
||||||
|
+ return req.threadRequest(self.do_get_pauseflag, op, req)
|
||||||
|
+
|
||||||
|
+ def do_get_pauseflag(self, _, req):
|
||||||
|
+ return self.xd.domain_getpauseflag(self.dom.getName(), req)
|
||||||
|
+
|
||||||
|
+ def op_do_set_pauseflag(self, op, req):
|
||||||
|
+ self.acceptCommand(req)
|
||||||
|
+ return req.threadRequest(self.do_set_pauseflag, op, req)
|
||||||
|
+
|
||||||
|
+ def do_set_pauseflag(self, _, req):
|
||||||
|
+ return self.xd.domain_setpauseflag(self.dom.getName(), req)
|
||||||
|
+
|
||||||
|
def op_usb_add(self, op, req):
|
||||||
|
self.acceptCommand(req)
|
||||||
|
return req.threadRequest(self.do_usb_add, op, req)
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xm/main.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xm/main.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xm/main.py
|
||||||
|
@@ -165,6 +165,8 @@ SUBCOMMAND_HELP = {
|
||||||
|
#usb
|
||||||
|
'usb-add' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Add the usb device to FV VM.'),
|
||||||
|
'usb-del' : ('<domain> <[host:bus.addr] [host:vendor_id:product_id]>','Delete the usb device to FV VM.'),
|
||||||
|
+ #domstate
|
||||||
|
+ 'domstate' : ('<domain> ', 'get the state of a domain'),
|
||||||
|
|
||||||
|
# device commands
|
||||||
|
|
||||||
|
@@ -370,6 +372,7 @@ common_commands = [
|
||||||
|
"uptime",
|
||||||
|
"usb-add",
|
||||||
|
"usb-del",
|
||||||
|
+ "domstate",
|
||||||
|
"vcpu-set",
|
||||||
|
]
|
||||||
|
|
||||||
|
@@ -404,6 +407,7 @@ domain_commands = [
|
||||||
|
"uptime",
|
||||||
|
"usb-add",
|
||||||
|
"usb-del",
|
||||||
|
+ "domstate",
|
||||||
|
"vcpu-list",
|
||||||
|
"vcpu-pin",
|
||||||
|
"vcpu-set",
|
||||||
|
@@ -901,7 +905,6 @@ def getDomains(domain_names, state, full
|
||||||
|
return "-"
|
||||||
|
state_str = "".join([state_on_off(state)
|
||||||
|
for state in states])
|
||||||
|
-
|
||||||
|
dom_rec.update({'name': dom_rec['name_label'],
|
||||||
|
'memory_actual': int(dom_metrics_rec['memory_actual'])/1024,
|
||||||
|
'vcpus': dom_metrics_rec['VCPUs_number'],
|
||||||
|
@@ -1395,8 +1398,10 @@ def xm_pause(args):
|
||||||
|
|
||||||
|
if serverType == SERVER_XEN_API:
|
||||||
|
server.xenapi.VM.pause(get_single_vm(dom))
|
||||||
|
+ server.xenapi.VM.set_pauseflag(get_single_vm(dom), True)
|
||||||
|
else:
|
||||||
|
server.xend.domain.pause(dom)
|
||||||
|
+ server.xend.domain.setpauseflag(dom, True)
|
||||||
|
|
||||||
|
def xm_unpause(args):
|
||||||
|
arg_check(args, "unpause", 1)
|
||||||
|
@@ -1404,8 +1409,10 @@ def xm_unpause(args):
|
||||||
|
|
||||||
|
if serverType == SERVER_XEN_API:
|
||||||
|
server.xenapi.VM.unpause(get_single_vm(dom))
|
||||||
|
+ server.xenapi.VM.set_pauseflag(get_single_vm(dom), False)
|
||||||
|
else:
|
||||||
|
server.xend.domain.unpause(dom)
|
||||||
|
+ server.xend.domain.setpauseflag(dom, False)
|
||||||
|
|
||||||
|
def xm_dump_core(args):
|
||||||
|
live = False
|
||||||
|
@@ -1515,6 +1522,32 @@ def xm_usb_add(args):
|
||||||
|
arg_check(args, "usb-add", 2)
|
||||||
|
server.xend.domain.usb_add(args[0],args[1])
|
||||||
|
|
||||||
|
+def xm_domstate(args):
|
||||||
|
+ arg_check(args, "domstate", 1)
|
||||||
|
+ (opitons, params) = getopt.gnu_getopt(args, 's', ['domname='])
|
||||||
|
+ doms = getDomains(params, 'all')
|
||||||
|
+ d = parse_doms_info(doms[0])
|
||||||
|
+ state = d['state']
|
||||||
|
+ if state:
|
||||||
|
+ if state.find('s') > 0:
|
||||||
|
+ print 'shutoff'
|
||||||
|
+ elif state.find('b') > 0:
|
||||||
|
+ print 'idle'
|
||||||
|
+ elif state.find('d') > 0:
|
||||||
|
+ print 'shutdown'
|
||||||
|
+ elif state.find('r') > 0:
|
||||||
|
+ print 'running'
|
||||||
|
+ elif state.find('c') > 0:
|
||||||
|
+ print 'crashed'
|
||||||
|
+ elif state.find('p') > 0:
|
||||||
|
+ if server.xend.domain.getpauseflag(args[0]):
|
||||||
|
+ print 'paused by admin'
|
||||||
|
+ else:
|
||||||
|
+ print 'paused'
|
||||||
|
+ else:
|
||||||
|
+ print 'shutoff'
|
||||||
|
+ return
|
||||||
|
+
|
||||||
|
def xm_usb_del(args):
|
||||||
|
arg_check(args, "usb-del", 2)
|
||||||
|
server.xend.domain.usb_del(args[0],args[1])
|
||||||
|
@@ -3538,6 +3571,8 @@ commands = {
|
||||||
|
#usb
|
||||||
|
"usb-add": xm_usb_add,
|
||||||
|
"usb-del": xm_usb_del,
|
||||||
|
+ #domstate
|
||||||
|
+ "domstate": xm_domstate,
|
||||||
|
}
|
||||||
|
|
||||||
|
## The commands supported by a separate argument parser in xend.xm.
|
130
21847-pscsi.patch
Normal file
130
21847-pscsi.patch
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User "Dube, Lutz" <lutz.dube@ts.fujitsu.com>
|
||||||
|
# Date 1279902875 -3600
|
||||||
|
# Node ID 4814e16ea4105502332407e3379c49da92018899
|
||||||
|
# Parent e23302fcb83c72f93ec01285bd7f4f1641eb67e4
|
||||||
|
tools/xend: Fix performance of xend with more than 10000 FC device paths
|
||||||
|
|
||||||
|
On server startup xend start or a later xend restart needs approx. 30 min to
|
||||||
|
start/restart. Without attached FC devices xend start/restart needs only some
|
||||||
|
seconds.
|
||||||
|
|
||||||
|
server type: Fujitsu Primergy RX600-S5
|
||||||
|
|
||||||
|
The time gets lost in xen/xend/XendNode.py line 329 while calling
|
||||||
|
vscsi_util.get_all_scsi_device().
|
||||||
|
|
||||||
|
329 for pscsi_record in vscsi_util.get_all_scsi_devices():
|
||||||
|
330 scsi_id = pscsi_record['scsi_id']
|
||||||
|
331 if scsi_id:
|
||||||
|
332 saved_HBA_uuid = None
|
||||||
|
|
||||||
|
I think, in most cases we don't need all the PSCSI devices registered in
|
||||||
|
xend, but only a few of it.
|
||||||
|
So a good solution for this perforamce issue is to scan only the SCSI device
|
||||||
|
paths we need, controlled by a new option in xend-config.sxp.
|
||||||
|
|
||||||
|
I have made a patch to allow specification of scsi devices we need in xend
|
||||||
|
in the config file xend-config.sxp.
|
||||||
|
The new options pscsi-device-mask expects a list of device ids oder partial
|
||||||
|
device ids like the option of lsscsi, e.g.
|
||||||
|
(pscsi-device-mask ('<partial-dev-id1' 'partial-dev-id2' ...))
|
||||||
|
|
||||||
|
Without this option set in xend-config.sxp or if lsscsi is not support, all
|
||||||
|
device paths are process like today.
|
||||||
|
|
||||||
|
Signed-off-by: Lutz Dube Lutz.Dube@ts.fujitsu.com
|
||||||
|
Comment from Masaki Kanno <kanno.masaki@jp.fujitsu.com>: "Well done"
|
||||||
|
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
|
||||||
|
|
||||||
|
Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/examples/xend-config.sxp
|
||||||
|
+++ xen-4.0.0-testing/tools/examples/xend-config.sxp
|
||||||
|
@@ -277,3 +277,11 @@
|
||||||
|
# we have to realize this may incur security issue and we can't make sure the
|
||||||
|
# device assignment could really work properly even after we do this.
|
||||||
|
#(pci-passthrough-strict-check yes)
|
||||||
|
+
|
||||||
|
+# If we have a very big scsi device configuration, start of xend is slow,
|
||||||
|
+# because xend scans all the device paths to build its internal PSCSI device
|
||||||
|
+# list. If we need only a few devices for assigning to a guest, we can reduce
|
||||||
|
+# the scan to this device. Set list list of device paths in same syntax like in
|
||||||
|
+# command lsscsi, e.g. ('16:0:0:0' '15:0')
|
||||||
|
+# (pscsi-device-mask ('*'))
|
||||||
|
+
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/util/vscsi_util.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/util/vscsi_util.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/util/vscsi_util.py
|
||||||
|
@@ -148,11 +148,12 @@ def _vscsi_get_scsidevices_by_sysfs():
|
||||||
|
return devices
|
||||||
|
|
||||||
|
|
||||||
|
-def vscsi_get_scsidevices():
|
||||||
|
+def vscsi_get_scsidevices(mask=""):
|
||||||
|
""" get all scsi devices information """
|
||||||
|
|
||||||
|
- devices = _vscsi_get_scsidevices_by_lsscsi("")
|
||||||
|
- if devices:
|
||||||
|
+ devices = _vscsi_get_scsidevices_by_lsscsi("[%s]" % mask)
|
||||||
|
+ if devices or (len(mask) and mask[0] != "*"):
|
||||||
|
+ # devices found or partial device scan
|
||||||
|
return devices
|
||||||
|
return _vscsi_get_scsidevices_by_sysfs()
|
||||||
|
|
||||||
|
@@ -274,9 +275,9 @@ def get_scsi_device(pHCTL):
|
||||||
|
return _make_scsi_record(scsi_info)
|
||||||
|
return None
|
||||||
|
|
||||||
|
-def get_all_scsi_devices():
|
||||||
|
+def get_all_scsi_devices(mask=""):
|
||||||
|
scsi_records = []
|
||||||
|
- for scsi_info in vscsi_get_scsidevices():
|
||||||
|
+ for scsi_info in vscsi_get_scsidevices(mask):
|
||||||
|
scsi_record = _make_scsi_record(scsi_info)
|
||||||
|
scsi_records.append(scsi_record)
|
||||||
|
return scsi_records
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
||||||
|
@@ -323,7 +323,12 @@ class XendNode:
|
||||||
|
pscsi_table = {}
|
||||||
|
pscsi_HBA_table = {}
|
||||||
|
|
||||||
|
- for pscsi_record in vscsi_util.get_all_scsi_devices():
|
||||||
|
+ pscsi_records = []
|
||||||
|
+ for pscsi_mask in xendoptions().get_pscsi_device_mask():
|
||||||
|
+ pscsi_records += vscsi_util.get_all_scsi_devices(pscsi_mask)
|
||||||
|
+ log.debug("pscsi record count: %s" % len(pscsi_records))
|
||||||
|
+
|
||||||
|
+ for pscsi_record in pscsi_records:
|
||||||
|
scsi_id = pscsi_record['scsi_id']
|
||||||
|
if scsi_id:
|
||||||
|
saved_HBA_uuid = None
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendOptions.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
|
||||||
|
@@ -164,6 +164,9 @@ class XendOptions:
|
||||||
|
"""
|
||||||
|
print >>sys.stderr, "xend [ERROR]", fmt % args
|
||||||
|
|
||||||
|
+ """Default mask for pscsi device scan."""
|
||||||
|
+ xend_pscsi_device_mask = ['*']
|
||||||
|
+
|
||||||
|
|
||||||
|
def configure(self):
|
||||||
|
self.set_config()
|
||||||
|
@@ -430,6 +433,10 @@ class XendOptions:
|
||||||
|
return self.get_config_bool("pci-passthrough-strict-check",
|
||||||
|
self.pci_dev_assign_strict_check_default)
|
||||||
|
|
||||||
|
+ def get_pscsi_device_mask(self):
|
||||||
|
+ return self.get_config_value("pscsi-device-mask",
|
||||||
|
+ self.xend_pscsi_device_mask)
|
||||||
|
+
|
||||||
|
class XendOptionsFile(XendOptions):
|
||||||
|
|
||||||
|
"""Default path to the config file."""
|
90
21866-xenapi.patch
Normal file
90
21866-xenapi.patch
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# User Lutz Dube <lutz.dube@ts.fujitsu.com>
|
||||||
|
# Date 1280245980 -3600
|
||||||
|
# Node ID e017930af272c888f2a562f842af4e142a973d5f
|
||||||
|
# Parent 5078f2c1e3d6a3a06ecf352a068eb496f09a2a98
|
||||||
|
xend (XenAPI): Error in Xend-API method VM_set_actions_after_crash
|
||||||
|
|
||||||
|
Xend-API defines the method VM_set_actions_after_crash with valid
|
||||||
|
action names coredump_and_destroy, coredump_and_restart,... . These
|
||||||
|
values have to be converted into internal representation
|
||||||
|
"coredump-destroy", "coredump-restart", ... otherwise start of the
|
||||||
|
domain is rejected. Same error occurs, if I try to create a VM using
|
||||||
|
the Xend-API with actions_after_crash set to coredump_and_destroy.
|
||||||
|
|
||||||
|
Could you please apply my patch to xen-4-0-testing, too.
|
||||||
|
|
||||||
|
Signed-off-by: Lutz Dube Lutz.Dube@ts.fujitsu.com
|
||||||
|
Acked-by: Jim Fehlig <jfehlig@novell.com>
|
||||||
|
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
|
||||||
|
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
||||||
|
@@ -1667,7 +1667,8 @@ class XendAPI(object):
|
||||||
|
def VM_set_actions_after_crash(self, session, vm_ref, action):
|
||||||
|
if action not in XEN_API_ON_CRASH_BEHAVIOUR:
|
||||||
|
return xen_api_error(['VM_ON_CRASH_BEHAVIOUR_INVALID', vm_ref])
|
||||||
|
- return self.VM_set('actions_after_crash', session, vm_ref, action)
|
||||||
|
+ return self.VM_set('actions_after_crash', session, vm_ref,
|
||||||
|
+ XEN_API_ON_CRASH_BEHAVIOUR_LEGACY[action])
|
||||||
|
|
||||||
|
def VM_set_HVM_boot_policy(self, session, vm_ref, value):
|
||||||
|
if value != "" and value != "BIOS order":
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
@@ -63,6 +63,18 @@ XEN_API_ON_CRASH_BEHAVIOUR_FILTER = {
|
||||||
|
'rename_restart' : 'rename_restart',
|
||||||
|
}
|
||||||
|
|
||||||
|
+XEN_API_ON_CRASH_BEHAVIOUR_LEGACY = {
|
||||||
|
+ 'destroy' : 'destroy',
|
||||||
|
+ 'coredump-destroy' : 'coredump-destroy',
|
||||||
|
+ 'coredump_and_destroy' : 'coredump-destroy',
|
||||||
|
+ 'restart' : 'restart',
|
||||||
|
+ 'coredump-restart' : 'coredump-restart',
|
||||||
|
+ 'coredump_and_restart' : 'coredump-restart',
|
||||||
|
+ 'preserve' : 'preserve',
|
||||||
|
+ 'rename-restart' : 'rename-restart',
|
||||||
|
+ 'rename_restart' : 'rename-restart',
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
XEN_API_VBD_MODE = ['RO', 'RW']
|
||||||
|
XEN_API_VDI_TYPE = ['system', 'user', 'ephemeral']
|
||||||
|
XEN_API_VBD_TYPE = ['CD', 'Disk']
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
|
@@ -41,6 +41,7 @@ from xen.util.pci import pci_opts_list_f
|
||||||
|
from xen.xend.XendSXPDev import dev_dict_to_sxp
|
||||||
|
from xen.util import xsconstants
|
||||||
|
from xen.util import auxbin
|
||||||
|
+from xen.xend.XendAPIConstants import *
|
||||||
|
import xen.util.fileuri
|
||||||
|
|
||||||
|
log = logging.getLogger("xend.XendConfig")
|
||||||
|
@@ -62,6 +63,11 @@ def reverse_dict(adict):
|
||||||
|
def bool0(v):
|
||||||
|
return v != '0' and v != 'False' and bool(v)
|
||||||
|
|
||||||
|
+def convert_on_crash(v):
|
||||||
|
+ v = str(v)
|
||||||
|
+ return XEN_API_ON_CRASH_BEHAVIOUR_LEGACY[v] \
|
||||||
|
+ if v in XEN_API_ON_CRASH_BEHAVIOUR else v
|
||||||
|
+
|
||||||
|
# Recursively copy a data struct, scrubbing out VNC passwords.
|
||||||
|
# Will scrub any dict entry with a key of 'vncpasswd' or any
|
||||||
|
# 2-element list whose first member is 'vncpasswd'. It will
|
||||||
|
@@ -211,7 +217,7 @@ XENAPI_CFG_TYPES = {
|
||||||
|
'VCPUs_live': int,
|
||||||
|
'actions_after_shutdown': str,
|
||||||
|
'actions_after_reboot': str,
|
||||||
|
- 'actions_after_crash': str,
|
||||||
|
+ 'actions_after_crash': convert_on_crash,
|
||||||
|
'PV_bootloader': str,
|
||||||
|
'PV_kernel': str,
|
||||||
|
'PV_ramdisk': str,
|
@ -22,7 +22,7 @@ find_sdev()
|
|||||||
{
|
{
|
||||||
unset dev
|
unset dev
|
||||||
for session in /sys/class/iscsi_session/session*; do
|
for session in /sys/class/iscsi_session/session*; do
|
||||||
if [ "$1" = "`cat $session/targetname`" ]; then
|
if [ "$1" = "`cat $session/targetname 2>/dev/null`" ]; then
|
||||||
dev=`basename $session/device/target*/*:0:*/block*/*`
|
dev=`basename $session/device/target*/*:0:*/block*/*`
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -35,7 +35,7 @@ find_sdev_rev()
|
|||||||
for session in /sys/class/iscsi_session/session*; do
|
for session in /sys/class/iscsi_session/session*; do
|
||||||
dev=`basename $session/device/target*/*:0:*/block*/*`
|
dev=`basename $session/device/target*/*:0:*/block*/*`
|
||||||
if [ "$dev" = "$1" ]; then
|
if [ "$dev" = "$1" ]; then
|
||||||
tgt=`cat $session/targetname`
|
tgt=`cat $session/targetname 2>/dev/null`
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
@ -516,7 +516,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
|||||||
except Exception, ex:
|
except Exception, ex:
|
||||||
log.exception(ex)
|
log.exception(ex)
|
||||||
|
|
||||||
@@ -1835,7 +1870,9 @@ class XendAPI(object):
|
@@ -1836,7 +1871,9 @@ class XendAPI(object):
|
||||||
'is_control_domain': xeninfo.info['is_control_domain'],
|
'is_control_domain': xeninfo.info['is_control_domain'],
|
||||||
'metrics': xeninfo.get_metrics(),
|
'metrics': xeninfo.get_metrics(),
|
||||||
'security_label': xeninfo.get_security_label(),
|
'security_label': xeninfo.get_security_label(),
|
||||||
@ -527,7 +527,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
|||||||
}
|
}
|
||||||
return xen_api_success(record)
|
return xen_api_success(record)
|
||||||
|
|
||||||
@@ -1933,6 +1970,25 @@ class XendAPI(object):
|
@@ -1934,6 +1971,25 @@ class XendAPI(object):
|
||||||
xendom.domain_restore(src, bool(paused))
|
xendom.domain_restore(src, bool(paused))
|
||||||
return xen_api_success_void()
|
return xen_api_success_void()
|
||||||
|
|
||||||
@ -1465,7 +1465,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
||||||
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
@@ -128,6 +128,7 @@ XENAPI_CFG_TO_LEGACY_CFG = {
|
@@ -134,6 +134,7 @@ XENAPI_CFG_TO_LEGACY_CFG = {
|
||||||
'PV_bootloader': 'bootloader',
|
'PV_bootloader': 'bootloader',
|
||||||
'PV_bootloader_args': 'bootloader_args',
|
'PV_bootloader_args': 'bootloader_args',
|
||||||
'Description': 'description',
|
'Description': 'description',
|
||||||
@ -1473,7 +1473,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
}
|
}
|
||||||
|
|
||||||
LEGACY_CFG_TO_XENAPI_CFG = reverse_dict(XENAPI_CFG_TO_LEGACY_CFG)
|
LEGACY_CFG_TO_XENAPI_CFG = reverse_dict(XENAPI_CFG_TO_LEGACY_CFG)
|
||||||
@@ -234,6 +235,7 @@ XENAPI_CFG_TYPES = {
|
@@ -240,6 +241,7 @@ XENAPI_CFG_TYPES = {
|
||||||
'superpages' : int,
|
'superpages' : int,
|
||||||
'memory_sharing': int,
|
'memory_sharing': int,
|
||||||
'Description': str,
|
'Description': str,
|
||||||
@ -1481,7 +1481,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
}
|
}
|
||||||
|
|
||||||
# List of legacy configuration keys that have no equivalent in the
|
# List of legacy configuration keys that have no equivalent in the
|
||||||
@@ -279,6 +281,7 @@ LEGACY_CFG_TYPES = {
|
@@ -285,6 +287,7 @@ LEGACY_CFG_TYPES = {
|
||||||
'bootloader': str,
|
'bootloader': str,
|
||||||
'bootloader_args': str,
|
'bootloader_args': str,
|
||||||
'description': str,
|
'description': str,
|
||||||
@ -1489,7 +1489,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Values that should be stored in xenstore's /vm/<uuid> that is used
|
# Values that should be stored in xenstore's /vm/<uuid> that is used
|
||||||
@@ -300,6 +303,7 @@ LEGACY_XENSTORE_VM_PARAMS = [
|
@@ -306,6 +309,7 @@ LEGACY_XENSTORE_VM_PARAMS = [
|
||||||
'on_xend_stop',
|
'on_xend_stop',
|
||||||
'bootloader',
|
'bootloader',
|
||||||
'bootloader_args',
|
'bootloader_args',
|
||||||
@ -1497,7 +1497,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
]
|
]
|
||||||
|
|
||||||
##
|
##
|
||||||
@@ -408,6 +412,7 @@ class XendConfig(dict):
|
@@ -414,6 +418,7 @@ class XendConfig(dict):
|
||||||
'other_config': {},
|
'other_config': {},
|
||||||
'platform': {},
|
'platform': {},
|
||||||
'target': 0,
|
'target': 0,
|
||||||
@ -1634,7 +1634,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
|
|
||||||
def _init_networks(self):
|
def _init_networks(self):
|
||||||
# Initialise networks
|
# Initialise networks
|
||||||
@@ -361,6 +364,18 @@ class XendNode:
|
@@ -366,6 +369,18 @@ class XendNode:
|
||||||
for physical_host, pscsi_HBA_uuid in pscsi_HBA_table.items():
|
for physical_host, pscsi_HBA_uuid in pscsi_HBA_table.items():
|
||||||
XendPSCSI_HBA(pscsi_HBA_uuid, {'physical_host': physical_host})
|
XendPSCSI_HBA(pscsi_HBA_uuid, {'physical_host': physical_host})
|
||||||
|
|
||||||
@ -1653,7 +1653,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
|
|
||||||
def add_network(self, interface):
|
def add_network(self, interface):
|
||||||
# TODO
|
# TODO
|
||||||
@@ -581,6 +596,7 @@ class XendNode:
|
@@ -586,6 +601,7 @@ class XendNode:
|
||||||
self.save_PPCIs()
|
self.save_PPCIs()
|
||||||
self.save_PSCSIs()
|
self.save_PSCSIs()
|
||||||
self.save_PSCSI_HBAs()
|
self.save_PSCSI_HBAs()
|
||||||
@ -1661,7 +1661,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
|
|
||||||
def save_PIFs(self):
|
def save_PIFs(self):
|
||||||
pif_records = dict([(pif_uuid, XendAPIStore.get(
|
pif_records = dict([(pif_uuid, XendAPIStore.get(
|
||||||
@@ -623,6 +639,12 @@ class XendNode:
|
@@ -628,6 +644,12 @@ class XendNode:
|
||||||
for pscsi_HBA_uuid in XendPSCSI_HBA.get_all()])
|
for pscsi_HBA_uuid in XendPSCSI_HBA.get_all()])
|
||||||
self.state_store.save_state('pscsi_HBA', pscsi_HBA_records)
|
self.state_store.save_state('pscsi_HBA', pscsi_HBA_records)
|
||||||
|
|
||||||
@ -1674,7 +1674,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@@ -934,6 +956,7 @@ class XendNode:
|
@@ -939,6 +961,7 @@ class XendNode:
|
||||||
self.format_node_to_memory(info, 'node_to_memory')
|
self.format_node_to_memory(info, 'node_to_memory')
|
||||||
info['node_to_dma32_mem'] = \
|
info['node_to_dma32_mem'] = \
|
||||||
self.format_node_to_memory(info, 'node_to_dma32_mem')
|
self.format_node_to_memory(info, 'node_to_dma32_mem')
|
||||||
@ -1682,7 +1682,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
|
|
||||||
# FIXME: These are hard-coded to be the inverse of the getXenMemory
|
# FIXME: These are hard-coded to be the inverse of the getXenMemory
|
||||||
# functions in image.py. Find a cleaner way.
|
# functions in image.py. Find a cleaner way.
|
||||||
@@ -953,6 +976,7 @@ class XendNode:
|
@@ -958,6 +981,7 @@ class XendNode:
|
||||||
'virt_caps',
|
'virt_caps',
|
||||||
'total_memory',
|
'total_memory',
|
||||||
'free_memory',
|
'free_memory',
|
||||||
|
@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
||||||
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
@@ -1855,7 +1855,14 @@ class XendConfig(dict):
|
@@ -1861,7 +1861,14 @@ class XendConfig(dict):
|
||||||
ports = sxp.child(dev_sxp, 'port')
|
ports = sxp.child(dev_sxp, 'port')
|
||||||
for port in ports[1:]:
|
for port in ports[1:]:
|
||||||
try:
|
try:
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
--- a/tools/python/xen/lowlevel/xc/xc.c
|
Index: xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
|
||||||
+++ b/tools/python/xen/lowlevel/xc/xc.c
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/lowlevel/xc/xc.c
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
|
||||||
@@ -944,16 +944,16 @@ static PyObject *pyxc_hvm_build(XcObject
|
@@ -944,16 +944,16 @@ static PyObject *pyxc_hvm_build(XcObject
|
||||||
#endif
|
#endif
|
||||||
int i;
|
int i;
|
||||||
@ -30,9 +32,11 @@
|
|||||||
|
|
||||||
return Py_BuildValue("{}");
|
return Py_BuildValue("{}");
|
||||||
}
|
}
|
||||||
--- a/tools/python/xen/xend/XendConfig.py
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
+++ b/tools/python/xen/xend/XendConfig.py
|
===================================================================
|
||||||
@@ -151,6 +151,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
|
@@ -157,6 +157,7 @@ XENAPI_PLATFORM_CFG_TYPES = {
|
||||||
'nographic': int,
|
'nographic': int,
|
||||||
'nomigrate': int,
|
'nomigrate': int,
|
||||||
'pae' : int,
|
'pae' : int,
|
||||||
@ -40,8 +44,10 @@
|
|||||||
'rtc_timeoffset': int,
|
'rtc_timeoffset': int,
|
||||||
'parallel': str,
|
'parallel': str,
|
||||||
'serial': str,
|
'serial': str,
|
||||||
--- a/tools/python/xen/xend/image.py
|
Index: xen-4.0.0-testing/tools/python/xen/xend/image.py
|
||||||
+++ b/tools/python/xen/xend/image.py
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/image.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/image.py
|
||||||
@@ -839,6 +839,7 @@ class HVMImageHandler(ImageHandler):
|
@@ -839,6 +839,7 @@ class HVMImageHandler(ImageHandler):
|
||||||
|
|
||||||
self.apic = int(vmConfig['platform'].get('apic', 0))
|
self.apic = int(vmConfig['platform'].get('apic', 0))
|
||||||
@ -66,8 +72,10 @@
|
|||||||
acpi = self.acpi,
|
acpi = self.acpi,
|
||||||
apic = self.apic)
|
apic = self.apic)
|
||||||
rc['notes'] = { 'SUSPEND_CANCEL': 1 }
|
rc['notes'] = { 'SUSPEND_CANCEL': 1 }
|
||||||
--- a/tools/python/xen/xm/create.py
|
Index: xen-4.0.0-testing/tools/python/xen/xm/create.py
|
||||||
+++ b/tools/python/xen/xm/create.py
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xm/create.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xm/create.py
|
||||||
@@ -242,6 +242,10 @@ gopts.var('viridian', val='VIRIDIAN',
|
@@ -242,6 +242,10 @@ gopts.var('viridian', val='VIRIDIAN',
|
||||||
use="""Expose Viridian interface to x86 HVM guest?
|
use="""Expose Viridian interface to x86 HVM guest?
|
||||||
(Default is 0).""")
|
(Default is 0).""")
|
||||||
|
@ -325,7 +325,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
|
||||||
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
|
||||||
@@ -236,6 +236,7 @@ XENAPI_CFG_TYPES = {
|
@@ -242,6 +242,7 @@ XENAPI_CFG_TYPES = {
|
||||||
'memory_sharing': int,
|
'memory_sharing': int,
|
||||||
'Description': str,
|
'Description': str,
|
||||||
'pool_name' : str,
|
'pool_name' : str,
|
||||||
|
@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
|
||||||
+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
||||||
@@ -911,15 +911,39 @@ class XendNode:
|
@@ -916,15 +916,39 @@ class XendNode:
|
||||||
|
|
||||||
info['cpu_mhz'] = info['cpu_khz'] / 1000
|
info['cpu_mhz'] = info['cpu_khz'] / 1000
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
|
|||||||
ITEM_ORDER = ['nr_cpus',
|
ITEM_ORDER = ['nr_cpus',
|
||||||
'nr_nodes',
|
'nr_nodes',
|
||||||
'cores_per_socket',
|
'cores_per_socket',
|
||||||
@@ -929,6 +953,9 @@ class XendNode:
|
@@ -934,6 +958,9 @@ class XendNode:
|
||||||
'virt_caps',
|
'virt_caps',
|
||||||
'total_memory',
|
'total_memory',
|
||||||
'free_memory',
|
'free_memory',
|
||||||
|
26
xen.changes
26
xen.changes
@ -1,3 +1,27 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 27 16:32:57 MDT 2010 - jfehlig@novell.com
|
||||||
|
|
||||||
|
- bnc#623833 - Error in Xend-API method VM_set_actions_after_crash
|
||||||
|
21866-xenapi.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 27 15:39:17 MDT 2010 - jfehlig@novell.com
|
||||||
|
|
||||||
|
- bnc#625003 - Fix vm config options coredump-{restart,destroy}
|
||||||
|
Added hunk to xm-create-xflag.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 26 16:49:39 MDT 2010 - jfehlig@novell.com
|
||||||
|
|
||||||
|
- bnc#605186 - Squelch harmless error messages in block-iscsi
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jul 26 16:45:21 MDT 2010 - jfehlig@novell.com
|
||||||
|
|
||||||
|
- bnc#623438 - Add ability to control SCSI device path scanning
|
||||||
|
in xend
|
||||||
|
21847-pscsi.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 21 11:46:41 MDT 2010 - carnold@novell.com
|
Wed Jul 21 11:46:41 MDT 2010 - carnold@novell.com
|
||||||
|
|
||||||
@ -48,7 +72,7 @@ Tue Jul 6 11:31:33 MDT 2010 - carnold@novell.com
|
|||||||
Fri Jun 25 15:43:35 CST 2010 - jsong@novell.com
|
Fri Jun 25 15:43:35 CST 2010 - jsong@novell.com
|
||||||
|
|
||||||
- bnc#599550 - Xen cannot distinguish the status of 'pause'
|
- bnc#599550 - Xen cannot distinguish the status of 'pause'
|
||||||
addcommand_domstate.patch
|
21723-get-domu-state.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 22 11:50:35 MDT 2010 - jfehlig@novell.com
|
Tue Jun 22 11:50:35 MDT 2010 - jfehlig@novell.com
|
||||||
|
8
xen.spec
8
xen.spec
@ -133,7 +133,10 @@ Patch55: 21700-32on64-vm86-gpf.patch
|
|||||||
Patch56: 21705-trace-printk.patch
|
Patch56: 21705-trace-printk.patch
|
||||||
Patch57: 21706-trace-security.patch
|
Patch57: 21706-trace-security.patch
|
||||||
Patch58: 21712-amd-osvw.patch
|
Patch58: 21712-amd-osvw.patch
|
||||||
Patch59: 21744-x86-cpufreq-range-check.patch
|
Patch59: 21723-get-domu-state.patch
|
||||||
|
Patch60: 21744-x86-cpufreq-range-check.patch
|
||||||
|
Patch61: 21847-pscsi.patch
|
||||||
|
Patch62: 21866-xenapi.patch
|
||||||
# Our patches
|
# Our patches
|
||||||
Patch300: xen-config.diff
|
Patch300: xen-config.diff
|
||||||
Patch301: xend-config.diff
|
Patch301: xend-config.diff
|
||||||
@ -639,6 +642,9 @@ Authors:
|
|||||||
%patch57 -p1
|
%patch57 -p1
|
||||||
%patch58 -p1
|
%patch58 -p1
|
||||||
%patch59 -p1
|
%patch59 -p1
|
||||||
|
%patch60 -p1
|
||||||
|
%patch61 -p1
|
||||||
|
%patch62 -p1
|
||||||
%patch300 -p1
|
%patch300 -p1
|
||||||
%patch301 -p1
|
%patch301 -p1
|
||||||
%patch302 -p1
|
%patch302 -p1
|
||||||
|
@ -2,11 +2,10 @@ Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/examples/xend-config.sxp
|
--- xen-4.0.0-testing.orig/tools/examples/xend-config.sxp
|
||||||
+++ xen-4.0.0-testing/tools/examples/xend-config.sxp
|
+++ xen-4.0.0-testing/tools/examples/xend-config.sxp
|
||||||
@@ -304,3 +304,62 @@
|
@@ -305,6 +305,65 @@
|
||||||
# we have to realize this may incur security issue and we can't make sure the
|
|
||||||
# device assignment could really work properly even after we do this.
|
# device assignment could really work properly even after we do this.
|
||||||
#(pci-passthrough-strict-check yes)
|
#(pci-passthrough-strict-check yes)
|
||||||
+
|
|
||||||
+# Domain Locking
|
+# Domain Locking
|
||||||
+# In a multihost environment, domain locking prevents simultaneously
|
+# In a multihost environment, domain locking prevents simultaneously
|
||||||
+# running a domain on more than one host.
|
+# running a domain on more than one host.
|
||||||
@ -65,6 +64,10 @@ Index: xen-4.0.0-testing/tools/examples/xend-config.sxp
|
|||||||
+# before starting vm1 on HostA.
|
+# before starting vm1 on HostA.
|
||||||
+#
|
+#
|
||||||
+#(xend-domain-lock-utility domain-lock)
|
+#(xend-domain-lock-utility domain-lock)
|
||||||
|
+
|
||||||
|
# If we have a very big scsi device configuration, start of xend is slow,
|
||||||
|
# because xend scans all the device paths to build its internal PSCSI device
|
||||||
|
# list. If we need only a few devices for assigning to a guest, we can reduce
|
||||||
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
|
||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
|
||||||
@ -200,7 +203,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendOptions.py
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.configure()
|
self.configure()
|
||||||
|
|
||||||
@@ -398,6 +409,24 @@ class XendOptions:
|
@@ -401,6 +412,24 @@ class XendOptions:
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -29,3 +29,18 @@ Index: xen-4.0.0-testing/tools/python/xen/xm/create.py
|
|||||||
from xml.dom.ext import PrettyPrint as XMLPrettyPrint
|
from xml.dom.ext import PrettyPrint as XMLPrettyPrint
|
||||||
XMLPrettyPrint(doc)
|
XMLPrettyPrint(doc)
|
||||||
|
|
||||||
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
===================================================================
|
||||||
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPIConstants.py
|
||||||
|
@@ -45,8 +45,10 @@ XEN_API_ON_NORMAL_EXIT = [
|
||||||
|
XEN_API_ON_CRASH_BEHAVIOUR = [
|
||||||
|
'destroy',
|
||||||
|
'coredump_and_destroy',
|
||||||
|
+ 'coredump_destroy',
|
||||||
|
'restart',
|
||||||
|
'coredump_and_restart',
|
||||||
|
+ 'coredump_restart',
|
||||||
|
'preserve',
|
||||||
|
'rename_restart'
|
||||||
|
]
|
||||||
|
@ -2,7 +2,7 @@ Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
|||||||
===================================================================
|
===================================================================
|
||||||
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
|
||||||
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
|
||||||
@@ -1922,10 +1922,10 @@ class XendAPI(object):
|
@@ -1923,10 +1923,10 @@ class XendAPI(object):
|
||||||
bool(live), port, node, ssl, bool(chs))
|
bool(live), port, node, ssl, bool(chs))
|
||||||
return xen_api_success_void()
|
return xen_api_success_void()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user