25166316 vague expection due to incomplete driver_info/publishers value
authorMatt Keenan <matt.keenan@oracle.com>
Wed, 30 Nov 2016 16:50:50 +0000
changeset 7410 544ee1480a82
parent 7408 a8982bb719b4
child 7411 178d9ed8175b
25166316 vague expection due to incomplete driver_info/publishers value 25169790 node-validate fails if versions are specified on FMRI
components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py
--- a/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py	Tue Nov 29 23:00:07 2016 -0800
+++ b/components/openstack/ironic/files/drivers/modules/solaris_ipmitool.py	Wed Nov 30 16:50:50 2016 +0000
@@ -60,7 +60,7 @@
 if PLATFORM != "SunOS":
     import tarfile
 else:
-    from pkg.fmri import is_valid_pkg_name
+    from pkg.fmri import IllegalFmri, PkgFmri
     from pkg.misc import valid_pub_prefix, valid_pub_url
 
 
@@ -1211,9 +1211,12 @@
             "Missing IPS package name in fmri (%s).") % (fmri))
     elif PLATFORM == "SunOS":
         # Validate package name
-        if not is_valid_pkg_name(url.path.strip("/")):
-            raise exception.InvalidParameterValue(_(
-                "Malformed IPS package name in fmri (%s).") % (fmri))
+        try:
+            # PkgFmri object does not like the @latest special case so
+            # strip it off if it's there.
+            _pkgfmri = PkgFmri(fmri.strip('@latest'))
+        except IllegalFmri as err:
+            raise exception.InvalidParameterValue(err)
 
 
 def _validate_publishers(task):
@@ -1232,11 +1235,17 @@
     # Split publishers into list of name@origin publishers
     pub_list = [pub.strip() for pub in pubs.split('+') if pub.strip()]
     for pub in pub_list:
-        # Split into name origin
-        name, origin = pub.split('@', 1)
+        try:
+            # Split into name origin
+            name, origin = pub.split('@', 1)
+        except ValueError:
+            raise exception.InvalidParameterValue(_(
+                "Malformed IPS publisher, must be of format "
+                "name@origin (%s).") % (pub))
+
         if not name or not origin:
             raise exception.InvalidParameterValue(_(
-                "Malformed IPS publisher must be of format "
+                "Malformed IPS publisher, must be of format "
                 "name@origin (%s).") % (pub))
 
         if PLATFORM == "SunOS":