Bug 1481121

Summary: netapp driver fails to initialize
Product: Red Hat OpenStack Reporter: Eduard Barrera <ebarrera>
Component: openstack-cinderAssignee: Eric Harney <eharney>
Status: CLOSED ERRATA QA Contact: Avi Avraham <aavraham>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 10.0 (Newton)CC: eharney, lruzicka, mschuppe, nchandek, pablo.iranzo, pgrist, srevivo, tshefi
Target Milestone: z6Keywords: OtherQA, Reopened, Triaged, ZStream
Target Release: 10.0 (Newton)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-cinder-9.1.4-10.el7ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1585196 (view as bug list) Environment:
Last Closed: 2018-06-01 13:14:33 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: 1585196    

Description Eduard Barrera 2017-08-14 07:36:35 UTC
Description of problem:

After providing a new cinder package to the customer coming from (BZ#1437556) customer has new netapp issues.

Hi All,

We provided openstack-cinder-9.1.3-3.el7ost to the customer but he is still experiencing issues.

It seems to be https://bugs.launchpad.net/cinder/+bug/1694579
"""
2017-05-30 19:39:15.602 28704 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/client/api.py", line 222, in invoke_successfully
2017-05-30 19:39:15.602 28704 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode raise NaApiError(code, msg)
2017-05-30 19:39:15.602 28704 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode NaApiError: NetApp API failed. Reason - 13001:Object "system:constituent" was not found. <======
2017-05-30 19:39:15.602 28704 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode
"""

This is customer's trace:

2017-08-10 08:25:19.586 170638 WARNING cinder.volume.drivers.nfs [req-901d7b32-4155-4649-924e-3acb4735c1ba - - - - -] The NAS file operations will be run as root: allowing root level access at the storage backend. This is considered an insecure NAS environment. Please see http://docs.openstack.org/admin-guide/blockstorage_nfs_backend.html for information on a secure NAS configuration.
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode [req-901d7b32-4155-4649-924e-3acb4735c1ba - - - - -] Could not get performance base counter name. Performance-based scheduler functions may not be available.
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode Traceback (most recent call last):
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/performance/perf_cmode.py", line 47, in _init_counter_info
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     'avg_processor_busy'))
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/performance/perf_base.py", line 224, in _get_base_counter_name
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     object_name, counter_name)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 842, in trace_method_logging_wrapper
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     return f(*args, **kwargs)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/client/client_base.py", line 292, in get_performance_counter_info
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     enable_tunneling=False)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 842, in trace_method_logging_wrapper
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     return f(*args, **kwargs)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/client/client_base.py", line 93, in send_request
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     return self.connection.invoke_successfully(request, enable_tunneling)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/client/api.py", line 222, in invoke_successfully
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode     raise NaApiError(code, msg)
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode NaApiError: NetApp API failed. Reason - 13001:Object "system:constituent" was not found.
2017-08-10 08:25:19.673 170638 ERROR cinder.volume.drivers.netapp.dataontap.performance.perf_cmode
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager [req-901d7b32-4155-4649-924e-3acb4735c1ba - - - - -] Failed to initialize driver.
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager Traceback (most recent call last):
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/volume/manager.py", line 415, in init_host
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     self.driver.check_for_setup_error()
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 842, in trace_method_logging_wrapper
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     return f(*args, **kwargs)
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 842, in trace_method_logging_wrapper
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     return f(*args, **kwargs)
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 842, in trace_method_logging_wrapper
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     return f(*args, **kwargs)
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/nfs_cmode.py", line 99, in check_for_setup_error
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     self.ssc_library.check_api_permissions()
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/dataontap/utils/capabilities.py", line 79, in check_api_permissions
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager     raise exception.VolumeBackendAPIException(data=msg)
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager VolumeBackendAPIException: Bad or unexpected response from the storage volume backend API: User not permitted to query Data ONTAP volumes.
2017-08-10 08:25:19.753 170638 ERROR cinder.volume.manager



And this is the network communication between the driver and netapp, at least is what was captured:

We establish connection:

- HTTP Request:

POST /servlets/netapp.servlets.admin.XMLrequest_filer HTTP/1.1
Accept-Encoding: identity
Content-Length: 102
Charset: utf-8
Host: 126.190.62.124:80
User-Agent: Python-urllib/2.7
Connection: close
Content-Type: text/xml

<netapp xmlns="http://www.netapp.com/filer/admin" version="1.15"><system-get-ontapi-version/></netapp>


- Response: 

HTTP/1.1 401 Unauthorized
Date: Thu, 10 Aug 2017 11:50:49 GMT
Server: Apache
WWW-Authenticate: Basic realm="Remote Administrative API Support"
Content-Length: 381
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

Connection Closed



We establish another connextion

- Second HTTP Request:

POST /servlets/netapp.servlets.admin.XMLrequest_filer HTTP/1.1
Accept-Encoding: identity
Content-Length: 102
Charset: utf-8
Connection: close
User-Agent: Python-urllib/2.7
Host: 126.190.62.124:80
Content-Type: text/xml
Authorization: Basic b3BlbnN0YWNrX2FkbWluOk9TdGFja1NLMTIj

<netapp xmlns="http://www.netapp.com/filer/admin" version="1.15"><system-get-ontapi-version/></netapp>


Second Response:

|^EEY@@~>|~;CPu
A^yHTTP/1.1 200 OK
Date: Thu, 10 Aug 2017 11:50:49 GMT
Server: libzapid-httpd
Content-Length: 268
Content-Type: text/xml
Connection: close

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE netapp SYSTEM 'file:/etc/netapp_gx.dtd'>
<netapp version='1.110' xmlns='http://www.netapp.com/filer/admin'>
<results status="passed"><major-version>1</major-version><minor-version>110</minor-version></results></netapp>

Connection Closed


This is the workaround in upstream:
"""
I solve the problem in my environment.
It looks like the driver does not work at all with "Vserver Scoped" permissions.
Vserver scoped user can not get object system:constituent.
With Cluster permissions scoped user everything work.
"""

This is the documentation customer is using (Please note that there is a 8.0 a " OpenStack @ NetAppOpenStack Deployment and Operations Guide  - Version 8.0 " but customer is using On the storage site, we have ONTAP 9.1P5 . :
http://netapp.github.io/openstack-deploy-ops-guide/newton/content/cinder.fas.configuration.html

Answer from customer said when I told them to apply the workaround:

 SVM scoped account should work correctly. We cannot use cluster scope due to security reason.



Version-Release number of selected component (if applicable):
RHOS 10

How reproducible:

always

Steps to Reproduce:
1. Install package openstack-cinder-9.1.3-3.el7ost that solves https://bugzilla.redhat.com/show_bug.cgi?id=1437556
2. Setup a netapp backed
3. restart cinder

Actual results:
Netapp driver can initialize

Expected results:
Netapp able to initialize

Additional info:

Comment 1 Eric Harney 2017-08-14 14:04:43 UTC
It looks like this was just fixed upstream here:

https://bugs.launchpad.net/cinder/+bug/1705738

This patch is currently only present in Pike.

Comment 17 errata-xmlrpc 2017-11-15 13:47:50 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-2017:3233