ontap.py: Remove the 'hidden' NetApp Volume (lun container)

Require the user to use a pool that is technically a NetApp volume which we show
call a FS when creating a logical unit.  This removes a lot of complexity
in creating/resizing and maintaining a NetApp volume for the sole purpose
of being able to create a volume/lun.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
plugin_test.py: Add asserts and cleanup fs pool selection

Signed-off-by: Tony Asleson <tasleson@redhat.com>
ontap.py: Change volume id to full path

This is unique and it allows NetApp users a framiliar id
when looking at logical units.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
plugin_test.py: Add test for duplicate ag name

We are expecting a NAME_CONFLICT error when doing this.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
Replace NO_MAPPING with NO_STATE_CHANGE V2

 * Remove lsm.ErrorNumber.NO_MAPPING and LSM_ERR_NO_MAPPING.
 * Change volume_unmask() to use NO_STATE_CHANGE in stead of NO_MAPPING.

V2: lsm_plugin_ipc.cpp, the failed call to value_to_fs is likely a memory
allocation error.  In 9 other places we are returning LSM_ERR_NO_MEMORY so
we will be consistent and return the same here.  There is some ambiguity
as if the 'Value' we pass to the function isn't a FS object instance we
will return NULL too.  I will follow-up with a future patch to remove this
ambiguity in all the places where we convert a 'Value' to the appropriate
object C structure pointer.

Signed-off-by: Gris Ge <fge@redhat.com>
Signed-off-by: Tony Asleson <tasleson@redhat.com>
C library: Add new error: LSM_ERR_IS_MASKED

Add new error LSM_ERR_IS_MASKED:
    1. lsm_volume_delete() when volume is masked to any access group.
    2. lsm_access_group_delete() when access group has any volume masked.

Signed-off-by: Gris Ge <fge@redhat.com>
Python library: Add new error: lsm.ErrorNumber.IS_MASKED

Add new error lsm.ErrorNumber.IS_MASKED:
    1. volume_delete() when volume is masked to any access group.
    2. access_group_delete() when access group has any access group masked.

Signed-off-by: Gris Ge <fge@redhat.com>
Plugins: Handle lsm.ErrorNumber.IS_MASKED

Updated these plugin to use new error IS_MASKED:
    1. ontap
       # I don't use handle_ontap_errors which use netapp error log directly.
       # Which might cause confusing(LUN vs volume, NetApp volume vs LSM Volume)
    2. sim
    3. targetd
       # New class TargetdError. _jsonrequest() will raise TargetdError
       # instead of LsmError. We should directly use targetd error number
       # as LsmError number even most of time they are the same.
       # Anyway, in this case, targetd is use 303, IS_MASKED is 160.

Two plugins skipped for this change:
    1. SMI-S
       # Not worth my time when SMI-S has __no__ good way.
    2. nstor
       # Their API allowing deleting masked volume with no indication.
       # they even raise no error when deleting non-exist volume.
       # Meanwhile, I failed to find any API document to match current code.
       # but it works, so I try not touch it.
    3. simc
       # Sorry, I am not an export of C.

Signed-off-by: Gris Ge <fge@redhat.com>