[lnst] XmlTemplates: error messages for template functions
Jiří Pírko
jirka at fedoraproject.org
Fri Aug 3 10:52:07 UTC 2012
commit 3e54448e4f6633ba126950829cfa1f21259365a6
Author: Ondrej Lichtner <olichtne at redhat.com>
Date: Fri Aug 3 12:38:06 2012 +0200
XmlTemplates: error messages for template functions
Passing illegal parameters to template functions would result in raising
of KeyError or IndexError exceptions.
This commit fixes that by raising XmlTemplateError exception with a
meaningful error message.
Signed-off-by: Ondrej Lichtner <olichtne at redhat.com>
Common/XmlTemplates.py | 49 ++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 43 insertions(+), 6 deletions(-)
---
diff --git a/Common/XmlTemplates.py b/Common/XmlTemplates.py
index a88ccca..d79efe5 100644
--- a/Common/XmlTemplates.py
+++ b/Common/XmlTemplates.py
@@ -223,8 +223,23 @@ class XmlTemplates:
if_id = int(params[1])
ip_id = int(params[2]) if len(params) == 3 else 0
- machines = recipe["machines"]
- ip_addr = machines[m_id]['netconfig'][if_id]['addresses'][ip_id]
+ if 'machines' not in recipe or m_id not in recipe['machines']:
+ msg = "First parameter of function ip() is invalid: "\
+ "Machine %s does not exist." % m_id
+ raise XmlTemplateError(msg)
+ machine = recipe["machines"][m_id]
+
+
+ if if_id not in machine['netconfig']:
+ msg = "Second parameter of function ip() is invalid: "\
+ "Interface %s does not exist." % if_id
+ raise XmlTemplateError(msg)
+ if ip_id >= len(machine['netconfig'][if_id]['addresses']):
+ msg = "Third parameter of function ip() is invalid: "\
+ "Address %s does not exist." % ip_id
+ raise XmlTemplateError(msg)
+ ip_addr = machine['netconfig'][if_id]['addresses'][ip_id]
+
return ip_addr.split('/')[0]
@@ -234,8 +249,19 @@ class XmlTemplates:
m_id = int(params[0])
if_id = int(params[1])
- machines = recipe["machines"]
- return machines[m_id]['netconfig'][if_id]['hwaddr']
+ if 'machines' not in recipe or m_id not in recipe['machines']:
+ msg = "First parameter of function hwaddr() is invalid: "\
+ "Machine %s does not exist." % m_id
+ raise XmlTemplateError(msg)
+ machine = recipe["machines"][m_id]
+
+ if if_id not in machine['netconfig']:
+ msg = "Second parameter of function hwaddr() is invalid: "\
+ "Interface %s does not exist." % if_id
+ raise XmlTemplateError(msg)
+ mac_addr = machine['netconfig'][if_id]['hwaddr']
+
+ return mac_addr
def _devname_func(self, params):
@@ -244,8 +270,19 @@ class XmlTemplates:
m_id = int(params[0])
if_id = int(params[1])
- machines = recipe["machines"]
- return machines[m_id]['netconfig'][if_id]['name']
+ if 'machines' not in recipe or m_id not in recipe['machines']:
+ msg = "First parameter of function devname() is invalid: "\
+ "Machine %s does not exist." % m_id
+ raise XmlTemplateError(msg)
+ machines = recipe["machines"][m_id]
+
+ if if_id not in machine['netconfig']:
+ msg = "Second parameter of function devname() is invalid: "\
+ "Interface %s does not exist." % if_id
+ raise XmlTemplateError(msg)
+ dev_name = machines['netconfig'][if_id]['name']
+
+ return dev_name
@staticmethod
def _validate_func_params(name, params, mandatory, optional):
More information about the LNST-developers
mailing list