Unity: Attach Unity volume via IPv6.

The IPv6's ISCIS portal format is [IPv6Address]:Port.
The Unity returned IPv6 are not enclosed with brackets.
So Unity's cinder-driver has to add brackets for IPv6's ISCSI portal.

DocImpact
Change-Id: Ib54fe948d0f5d7cad6c28468503f8535573ef3fc
Implements: blueprint unity-cinder-ipv6
This commit is contained in:
Jichao Zhang 2017-12-18 16:02:50 +08:00
parent 69f721b399
commit 6171655d39
4 changed files with 35 additions and 1 deletions

View File

@ -168,6 +168,10 @@ class UnityUtilsTest(unittest.TestCase):
def test_convert_ip_to_portal(self):
self.assertEqual('1.2.3.4:3260', utils.convert_ip_to_portal('1.2.3.4'))
self.assertEqual('[fd27:2e95:e174::100]:3260',
utils.convert_ip_to_portal('fd27:2e95:e174::100'))
self.assertEqual('[fd27:2e95:e174::100]:3260',
utils.convert_ip_to_portal('[fd27:2e95:e174::100]'))
def test_convert_to_itor_tgt_map(self):
zone_mapping = {

View File

@ -51,9 +51,10 @@ class UnityDriver(driver.ManageableVD,
Version history:
1.0.0 - Initial version
2.0.0 - Add thin clone support
3.0.0 - Add IPv6 support
"""
VERSION = '02.00.00'
VERSION = '03.00.00'
VENDOR = 'Dell EMC'
# ThirdPartySystems wiki page
CI_WIKI_NAME = "EMC_UNITY_CI"

View File

@ -136,6 +136,9 @@ def extract_fc_uids(connector):
def convert_ip_to_portal(ip):
is_ipv6_without_brackets = ':' in ip and ip[-1] != ']'
if is_ipv6_without_brackets:
return '[%s]:3260' % ip
return '%s:3260' % ip

View File

@ -275,6 +275,32 @@ not efficient since a cloned volume will be created during backup.
An effective approach to backups is to create a snapshot for the volume and
connect this snapshot to the Block Storage host for volume backup.
IPv6 support
~~~~~~~~~~~~
This driver can support IPv6-based control path and data path.
For control path, please follow below steps:
- Enable Unity's Unipshere IPv6 address.
- Configure the IPv6 network to make sure that cinder node can access Unishpere
via IPv6 address.
- Change Cinder config file ``/etc/cinder/cinder.conf``. Make the ``san_ip``
as Unisphere IPv6 address. For example, ``san_ip = [fd99:f17b:37d0::100]``.
- Restart the Cinder service to make new configuration take effect.
**Note**: The IPv6 support on control path depends on the fix of cpython
`bug 32185 <https://bugs.python.org/issue32185>`__. Please make sure your
Python's version includes this bug's fix.
For data path, please follow below steps:
- On Unity, Create iSCSI interface with IPv6 address.
- Configure the IPv6 network to make sure that you can ``ping``
the Unity's iSCSI IPv6 address from the Cinder node.
- If you create a volume using Cinder and attach it to a VM,
the connection between this VM and volume will be IPv6-based iSCSI.
Troubleshooting
~~~~~~~~~~~~~~~