Merge "Spec: Add FibreChannel support to NetApp drivers"
This commit is contained in:
commit
6bc4a38b75
179
specs/kilo/add-fibre-channel-support-to-netapp-drivers.rst
Normal file
179
specs/kilo/add-fibre-channel-support-to-netapp-drivers.rst
Normal file
@ -0,0 +1,179 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
======================================
|
||||
NetApp Data ONTAP FibreChannel drivers
|
||||
======================================
|
||||
|
||||
https://blueprints.launchpad.net/cinder/+spec/add-fibre-channel-support-to-
|
||||
netapp-drivers
|
||||
|
||||
NetApp's Cinder volume drivers for Data ONTAP support iSCSI, and we are adding
|
||||
FibreChannel support as well.
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Cinder volume drivers must extend the protocol-specific subclass of
|
||||
VolumeDriver (i.e. ISCSIDriver or FibreChannelDriver). The inheritance model
|
||||
employed by the NetApp iSCSI drivers is not conducive to adding FibreChannel
|
||||
support to their extant iSCSI capability.
|
||||
|
||||
Other vendors have moved common, protocol-agnostic driver code into library
|
||||
modules and called those from the actual driver modules, which then become
|
||||
very thin indirection layers. NetApp will take this approach as well.
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
We will make the following changes:
|
||||
|
||||
* Move all iSCSI Data ONTAP driver code into library modules (base class plus
|
||||
subclasses for 7-mode and cluster-mode specializations).
|
||||
|
||||
* Convert the driver modules for iSCSI (7-mode and cluster-mode) into thin
|
||||
indirection layers.
|
||||
|
||||
* Add corresponding FibreChannel driver modules that call (mostly) the same
|
||||
logic in the library modules.
|
||||
|
||||
* Enhance the libraries' handling of igroups and initiators to be multi-
|
||||
initiator-aware, since FC HBAs typically report multiple host-side WWPNs to
|
||||
Nova/Cinder.
|
||||
|
||||
* Enhance the library modules to handle FC-specific attach/detach operations
|
||||
in the same way as other FC drivers. We will take full advantage of the
|
||||
Zone Manager code in Cinder.
|
||||
|
||||
* Enhance our unit tests to cover all the proposed changes, and continue the
|
||||
multi-release process of moving NetApp's Cinder unit tests into the correct
|
||||
directory structure.
|
||||
|
||||
The refactoring needed in the iSCSI drivers to pave the way for FC drivers
|
||||
will be submitted first, followed by a separate submission to add the FC
|
||||
drivers themselves.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
In addition to the library approach, we also considered building our drivers
|
||||
using Python mixins, which would eliminate the indirection layer in the driver
|
||||
modules. The problem with mixins is that IDEs cannot follow references, and
|
||||
the mixins cannot be standalone modules since they need common data such as
|
||||
Cinder configuration objects. We prototyped both approaches, but the library
|
||||
solution is much more convenient to work with.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
One new NetApp-specific config flag is required: netapp_partner_backend_name
|
||||
|
||||
NetApp Data ONTAP (7-mode) storage controllers typically operate in HA pairs,
|
||||
and in a FibreChannel (FC) environment each controller presents LUNs from its
|
||||
partner into the FC fabric(s). So the driver must be able to read the FC
|
||||
port info and LUN map info from not only the controller owning a LUN but also
|
||||
from its HA partner. The added flag identifies the config file stanza for the
|
||||
HA partner (which is always its own Cinder backend). This approach is much
|
||||
cleaner than duplicating all the partner connection details in each backend
|
||||
stanza.
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
Clinton Knight (cknight)
|
||||
|
||||
Other contributors:
|
||||
Rushil Chugh (rushil)
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Set up FC dev/test environment.
|
||||
|
||||
* Refactor drivers to move block storage code into reusable libraries.
|
||||
|
||||
* Create FC driver modules for Data ONTAP (7-mode & cluster-mode).
|
||||
|
||||
* Update & extend unit tests accordingly.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
* The refactoring to prepare for FC drivers was captured in a separate
|
||||
blueprint: https://blueprints.launchpad.net/cinder/+spec/netapp-cinder-
|
||||
driver-refactoring-phase-1
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Running our existing tempest tests in the FC dev/test environment is the
|
||||
initial step to know the FC-specific changes in the driver libraries are
|
||||
working. Regression tests in iSCSI environments will ensure nothing was
|
||||
broken.
|
||||
|
||||
We are also building a CI system, which will be extended during Kilo to
|
||||
include running tempest in an FC environment.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
What is the impact on the docs team of this change? Some changes might require
|
||||
donating resources to the docs team to have the documentation updated. Don't
|
||||
repeat details discussed above, but please reference them here.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
* The FC implementation described above was informed by pre-existing FC
|
||||
drivers from other vendors, most notably the HP/3PAR one. A conversation
|
||||
with Walter Boring was very helpful.
|
||||
|
Loading…
Reference in New Issue
Block a user