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