Bug 1073947

Summary: Fence-agent (ssh) fails on login if identity file was used
Product: Red Hat Enterprise Linux 7 Reporter: Ondrej Mular <omular>
Component: fence-agentsAssignee: Marek Grac <mgrac>
Status: CLOSED ERRATA QA Contact: Cluster QE <mspqa-list>
Severity: high Docs Contact:
Priority: high    
Version: 7.0CC: cluster-maint, djansa, jherrman, mjuricek
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: fence-agents-4.0.11-1.el7 Doc Type: Bug Fix
Doc Text:
Prior to this update, fence agents that connected using the SSH protocol failed on login if an identity file was used as the method of authentication. The bug has been fixed and these fence agents now successfully authenticate through an identity file.
Story Points: ---
Clone Of:
: 1075683 1075691 (view as bug list) Environment:
Last Closed: 2015-03-05 09:06:53 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:
Bug Depends On:    
Bug Blocks: 1075683, 1075691, 1113520    

Description Ondrej Mular 2014-03-07 14:38:23 UTC
Description of problem:
Fence-agent (ssh) fails on login if identity file was used, because of uncaught exception.

How reproducible:
use identity file as authentication method in fence-agent

Steps to Reproduce:
1. fence_alom -a node -l username -k ~/.ssh/id_rsa -o status

Actual results:
Traceback (most recent call last):
  File "fence_alom", line 65, in <module>
    main()
  File "fence_alom", line 52, in main
    conn = fence_login(options)
  File "/.../fencing.py", line 1027, in fence_login
    "Enter passphrase for key '" + options["--identity-file"] + "':" ], int(options["--login-timeout"]))
  File "/.../fencing.py", line 383, in log_expect
    result = self.expect(pattern, timeout)
  File "/usr/lib/python2.7/site-packages/pexpect.py", line 1310, in expect
    compiled_pattern_list = self.compile_pattern_list(pattern)
  File "/usr/lib/python2.7/site-packages/pexpect.py", line 1229, in compile_pattern_list
    raise TypeError ('Argument must be one of StringTypes, EOF, TIMEOUT, SRE_Pattern, or a list of those type. %s' % str(type(p)))
TypeError: Argument must be one of StringTypes, EOF, TIMEOUT, SRE_Pattern, or a list of those type. <type 'list'>

Expected results:
Status: ON

Comment 2 Marek Grac 2014-03-12 15:50:48 UTC
Patch is in upstream now: 

https://git.fedorahosted.org/cgit/fence-agents.git/commit/?id=a90a90cf56f713be9a4064a02c0f630425b2091c

Unit test:

before applying patch:
[root@virt-135 ~]# fence_apc -a node -l username -k /etc/passwd -o status -x -n 1
Traceback (most recent call last):
  File "/sbin/fence_apc", line 289, in ?
    main()
  File "/sbin/fence_apc", line 259, in main
    conn = fence_login(options)
  File "/usr/lib/fence/fencing.py", line 925, in fence_login
    result = conn.log_expect(options, [ options["-c"], "Are you sure you want to continue connecting (yes/no)?", "Enter passphrase for key '"+options["-k"]+"':" ], int(options["-y"]))
  File "/usr/lib/fence/fencing.py", line 406, in log_expect
    result = self.expect(pattern, timeout)
  File "/usr/lib/python2.4/site-packages/pexpect.py", line 1310, in expect
    compiled_pattern_list = self.compile_pattern_list(pattern)
  File "/usr/lib/python2.4/site-packages/pexpect.py", line 1229, in compile_pattern_list
    raise TypeError ('Argument must be one of StringTypes, EOF, TIMEOUT, SRE_Pattern, or a list of those type. %s' % str(type(p)))
TypeError: Argument must be one of StringTypes, EOF, TIMEOUT, SRE_Pattern, or a list of those type. <type 'list'>

after applying patch:
fence_apc -a node -l username -k /etc/passwd -o status -x -n 1
Unable to connect/login to fencing device

Comment 4 Marek Grac 2014-09-03 11:59:20 UTC
Patch is part of the fence-agents 4.0.11

Comment 8 errata-xmlrpc 2015-03-05 09:06:53 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://rhn.redhat.com/errata/RHBA-2015-0393.html