All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Novotny <minovotn@redhat.com>
To: "'xen-devel@lists.xensource.com'" <xen-devel@lists.xensource.com>
Subject: [PATCH] XenD: Check for device model if path is not specified (i.e. using auxbin path)
Date: Tue, 30 Nov 2010 13:19:19 +0100	[thread overview]
Message-ID: <4CF4EBC7.9060508@redhat.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 2366 bytes --]

Hi,
this is the patch to check for device model (in XendConfig.py) when the 
device_model had no path specified, i.e. XenD was trying to read the 
file on the auxbin path. Without this patch applied the meaningless 
python error "coercing to Unicode: need string or buffer, NoneType 
found" occurred:

[2010-11-30 13:56:47 5255] ERROR (xmlrpclib2:181) Internal error 
handling xend.domain.create
Traceback (most recent call last):
   File "/usr/lib64/python2.4/site-packages/xen/util/xmlrpclib2.py", 
line 134, in _marshaled_dispatch
     response = self._dispatch(method, params)
   File "/usr/lib64/python2.4/SimpleXMLRPCServer.py", line 406, in _dispatch
     return func(*params)
   File 
"/usr/lib64/python2.4/site-packages/xen/xend/server/XMLRPCServer.py", 
line 80, in domain_create
     info = XendDomain.instance().domain_create(config)
   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomain.py", 
line 1001, in domain_create
     dominfo = XendDomainInfo.create(config)
   File "/usr/lib64/python2.4/site-packages/xen/xend/XendDomainInfo.py", 
line 97, in create
     domconfig = XendConfig.XendConfig(sxp_obj = config)
   File "/usr/lib64/python2.4/site-packages/xen/xend/XendConfig.py", 
line 367, in __init__
     self.validate()
   File "/usr/lib64/python2.4/site-packages/xen/xend/XendConfig.py", 
line 558, in validate
     self._platform_sanity_check()
   File "/usr/lib64/python2.4/site-packages/xen/xend/XendConfig.py", 
line 502, in _platform_sanity_check
     if not os.path.exists(self['platform']['device_model']):
   File "/usr/lib64/python2.4/posixpath.py", line 171, in exists
     st = os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found

This patch raises VmError with message that no valid device model was 
specified if None type was found in the device_model specification.

It's been tested on non-existing device model where the message is being 
printed. If an invalid (but existing) device_model is set in the 
configuration file the domain was destroyed because it crashed. If there 
is a path specified (i.e. it's not using auxbin path) it bails with 
error that the device model was not found (which was already implemented 
there).

Michal

Signed-off-by: Michal Novotny <minovotn@redhat.com>

-- 
Michal Novotny<minovotn@redhat.com>, RHCE
Virtualization Team (xen userspace), Red Hat


[-- Attachment #2: xen-check-for-device-model.patch --]
[-- Type: text/x-patch, Size: 896 bytes --]

diff --git a/tools/python/xen/xend/XendConfig.py b/tools/python/xen/xend/XendConfig.py
index 4181d6c..5568d35 100644
--- a/tools/python/xen/xend/XendConfig.py
+++ b/tools/python/xen/xend/XendConfig.py
@@ -498,6 +498,10 @@ class XendConfig(dict):
             if os.path.dirname(self['platform']['device_model']) == "":
                 self['platform']['device_model'] = \
                     auxbin.pathTo(self['platform']['device_model'])
+            # If the device_model is not set the os.path.exists() would raise
+            # an exception so we return our error message instead if applicable
+            if not self['platform']['device_model']:
+                raise VmError("No valid device model specified")
             if not os.path.exists(self['platform']['device_model']):
                 raise VmError("device model '%s' not found" % str(self['platform']['device_model']))
 

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

             reply	other threads:[~2010-11-30 12:19 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-30 12:19 Michal Novotny [this message]
2011-01-11 18:51 ` [PATCH] XenD: Check for device model if path is not specified (i.e. using auxbin path) Ian Jackson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CF4EBC7.9060508@redhat.com \
    --to=minovotn@redhat.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.