]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Add retype logic in manage_existing for VNX
authorCedric Zhuang <cedric.zhuang@gmail.com>
Wed, 17 Jun 2015 10:02:04 +0000 (18:02 +0800)
committerCedric Zhuang <cedric.zhuang@emc.com>
Mon, 2 Nov 2015 03:07:35 +0000 (19:07 -0800)
commitc80d070fae9c4eb53ce28101714d3910d2b850aa
treeb3de8fa83811412b29b58aea64d8b208b2245d2d
parentd6d9b4833ff2d8ec1657f1696b23be440548bbf3
Add retype logic in manage_existing for VNX

The manage existing API for VNX driver didn't check the volume type.
Add type check and retype the volume if it's not match.
Raise ManageExistingVolumeTypeMismatch if volume type cannot be
satisfied.

Details of the change:

  * In order to compare the type of the LUN and the volume type, new
    logic need to be introduced to convert LUN properties to
    provisioning type and tiering type used in volume type.  Following
    changes are introduced as a side effect of this enhancement.
      * _Enum class is extracted from VNXError as a base class for
        enumerations.
      * Provisioning type and tiering type are converted to enum.
      * More properties need to be retrieved from array to check the
        type.
        Following changes are introduced by this change:
          * Separate resource property descriptors to individual class
            so that they are better organized.
          * Remove common matchers from property descriptor to reduce
            the possibility of error.
          * Enhance the output parsing framework and assemble the logic
            in VNXCliParser class.
          * Create helper class Dict to allow access of properties with
            dot.
  * Reuse the logic in retype API when LUN type and volume type doesn't
    match.
  * Add API level unit tests for the retype logic.
  * Add unit tests for all refactoring.

Closes-Bug: #1480851
Change-Id: I1de604124f9896ac4762854853a6215020a459d9
cinder/tests/unit/test_emc_vnxdirect.py
cinder/volume/drivers/emc/emc_cli_fc.py
cinder/volume/drivers/emc/emc_cli_iscsi.py
cinder/volume/drivers/emc/emc_vnx_cli.py