Bug 1596731

Summary: lsmcli smis plugin shows python traceback with invalid url
Product: Red Hat Enterprise Linux 7 Reporter: Jakub Krysl <jkrysl>
Component: libstoragemgmtAssignee: Tony Asleson <tasleson>
Status: CLOSED ERRATA QA Contact: Jakub Krysl <jkrysl>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.6CC: tasleson
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-08-06 12:40:28 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jakub Krysl 2018-06-29 14:48:03 UTC
Description of problem:
1) Having 2x namespace in url:
# lsmcli -u "smispy://admin@server:5988?namespace=root/emc:5988?namespace=root/emc" list --type='POOLS'
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/lsm/lsmcli/cmdline.py", line 66, in cmd_line_wrapper
    cli = CmdLine()
  File "/usr/lib/python2.7/site-packages/lsm/lsmcli/cmdline.py", line 1771, in __init__
    u = uri_parse(self.uri)
  File "/usr/lib/python2.7/site-packages/lsm/_common.py", line 295, in uri_parse
    rc['parameters'] = uri_parameters(u)
  File "/usr/lib/python2.7/site-packages/lsm/_common.py", line 329, in uri_parameters 
    return dict([part.split('=') for part in query.split('&')])
ValueError: dictionary update sequence element #0 has length 3; 2 is required

2) Forgetting about the namespace when using ssl:
# lsmcli -u "smispy+ssl://admin@server:5989&no_ssl_verify=yes" list --type='VOLUMES'
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/lsm/lsmcli/cmdline.py", line 66, in cmd_line_wrapper
    cli = CmdLine()
  File "/usr/lib/python2.7/site-packages/lsm/lsmcli/cmdline.py", line 1771, in __init__
    u = uri_parse(self.uri)
  File "/usr/lib/python2.7/site-packages/lsm/_common.py", line 284, in uri_parse
    if u.port:
  File "/usr/lib64/python2.7/urlparse.py", line 112, in port
    port = int(port, 10)
ValueError: invalid literal for int() with base 10: '5989&no_ssl_verify=yes'

Version-Release number of selected component (if applicable):
libstoragemgmt-1.6.2-2.el7
libstoragemgmt-smis-plugin-1.6.2-2.el7

How reproducible:
100%

Steps to Reproduce:
1.lsmcli -u "smispy://admin@server:5988?namespace=root/emc:5988?namespace=root/emc" list --type='POOLS'

2.lsmcli -u "smispy+ssl://admin@server:5989&no_ssl_verify=yes" list --type='VOLUMES'

Actual results:
1. ValueError: dictionary update sequence element #0 has length 3; 2 is required

2. ValueError: invalid literal for int() with base 10: '5989&no_ssl_verify=yes'

Expected results:
INVALID_ARGUMENT error

Additional info:

Comment 4 Jakub Krysl 2019-03-28 11:28:44 UTC
libstoragemgmt-smis-plugin-1.7.3-2.el7.noarch
libstoragemgmt-1.7.3-2.el7.x86_64

# lsmcli -u "smispy://admin@server:5988?namespace=root/emc:5988?namespace=root/emc" list --type='POOLS'
INVALID_ARGUMENT(101): uri invalid: reason: dictionary update sequence element #0 has length 3; 2 is required 
# lsmcli -u "smispy+ssl://admin@server:5989&no_ssl_verify=yes" list --type='VOLUMES'
INVALID_ARGUMENT(101): uri invalid: reason: invalid literal for int() with base 10: '5989&no_ssl_verify=yes'

Comment 6 errata-xmlrpc 2019-08-06 12:40:28 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2019:2064