Exemplo n.º 1
0
 def is_storvol_inuse(self, stor_vol, ext_name):
     """
     Get the status of the storage volume
     """
     try:
         extent_details = None
         use = None
         details = None
         details = self.stor_obj.get_storage_volume(self.cl_name, stor_vol)
         LOG.info("Got the details of storage volume %s in %s", stor_vol,
                  self.cl_name)
         if details:
             if details.use == "used":
                 extent_name = details.used_by[0].split('/')[-1]
                 extent_details = self.get_extent(extent_name)
                 if extent_details:
                     LOG.info(
                         "The storage volume %s contains an extent"
                         " %s in %s", stor_vol, extent_name, self.cl_name)
             else:
                 if ext_name is None and self.state != 'absent':
                     msg = "Could not get extent details from {0} "\
                         "because it has no extent on it".format(stor_vol)
                     LOG.error(msg)
                     self.module.fail_json(msg=msg)
             use = details.use
         return (use, extent_details, details)
     except utils.ApiException as err:
         err_msg = ("Could not get storage volume details {0} from {1} due"
                    " to error: {2}".format(stor_vol, self.cl_name,
                                            utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 2
0
 def get_clusters(self):
     """Get all clusters object from VPLEX"""
     LOG.info('Get all clusters')
     try:
         res = self.cluster_cl.get_clusters()
         LOG.debug('Clusters details: %s', res)
         return [each.name for each in res]
     except utils.ApiException as err:
         err_msg = ("Could not get all clusters due to "
                    "error: {0}".format(utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         return str(err_msg)
    def get_clusters(self):
        """Get the list of clusters in VPLEX"""

        try:
            clusters = self.api_obj.ClustersApi(api_client=self.client)
            obj = clusters.get_clusters()
            self.logmsg('cluster', obj)
            return obj
        except utils.ApiException as err:
            err_msg = ("Could not get Clusters due to"
                       " error: {0}".format(utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 4
0
 def is_device_present(self, cluster_name, device_name):
     """ checking if device present or not """
     try:
         LOG.info("Trying to check whether given device is present")
         obj_device = self.device.get_device(cluster_name, device_name)
         LOG.info("Found the device %s in %s", device_name, cluster_name)
         return obj_device
     except utils.ApiException as ex:
         err_msg = 'Could not find the device {0}'.format(device_name)
         err_msg += ' in {0} due to error: {1}'.format(
             cluster_name, utils.error_msg(ex))
         LOG.error("%s\n%s\n", err_msg, ex)
         return None
Exemplo n.º 5
0
 def get_all_devices(self, cluster_name):
     """Get all devices from VPLEX"""
     LOG.info('Get all devices from %s', cluster_name)
     try:
         all_devs = self.dev_cl.get_devices(
             cluster_name=cluster_name)
         LOG.debug("Obtained devices details: %s", all_devs)
         return all_devs
     except utils.ApiException as err:
         err_msg = ("Could not get all devices from "
                    "{0} due to error: {1}".format(
                        cluster_name, utils.error_msg(err)))
         LOG.error("%s\n%s", err_msg, err)
         self.module.fail_json(msg=err_msg)
    def get_be_port_list(self):
        """Get the list of back end ports on a specific cluster in VPLEX"""

        try:
            be_port = self.api_obj.HardwarePortsApi(api_client=self.client)
            obj = be_port.get_hardware_ports(role="back-end")
            self.logmsg('Back end Port', obj)
            port_details = utils.serialize_content(obj)
            return port_details
        except utils.ApiException as err:
            err_msg = ("Could not get Back end Ports due to"
                       " error: {0}".format(utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 7
0
 def get_distributed_virtual_volume(self, vol_name):
     """Get distributed virtual volume object by volume name"""
     LOG.info('Get distributed virtual volume by name')
     try:
         res = self.dist_virt_cl.get_distributed_virtual_volume(vol_name)
         LOG.info("Got distributed virtual volume details %s", vol_name)
         LOG.debug("Volume details: %s", res)
         return res, None
     except utils.ApiException as err:
         err_msg = ("Could not get distributed virtual volume {0} from"
                    " {1} due to error: {2}".format(
                        vol_name, self.cluster_name, utils.error_msg(err)))
         LOG.error("%s\n%s", err_msg, err)
         return None, err_msg
 def get_distributed_device(self, dev_name):
     """
     Get distributed device details
     """
     try:
         dev = self.distvv.get_distributed_device(dev_name)
         LOG.info("Got Distributed Device details %s", dev_name)
         LOG.debug("Distributed Device Details: %s", dev)
         return dev
     except utils.ApiException as err:
         err_msg = ("Could not get the distributed device {0} due to"
                    " error: {1}".format(dev_name, utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         return None
 def get_distributed_virtual_volumes(self):
     """
     Get all distributed virtual volumes
     """
     LOG.info("Get all distributed virtual volumes")
     try:
         res = self.distvv.get_distributed_virtual_volumes()
         LOG.debug("Distributed Virtual Volumes Details: %s", res)
         return res
     except utils.ApiException as err:
         err_msg = ("Could not get the distributed virtual volumes due to"
                    " error: {0}".format(utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
 def delete_distributed_vv(self, dist_vv_name):
     """
     Delete the distributed virtual volume
     """
     try:
         self.distvv.delete_distributed_virtual_volume(dist_vv_name)
         LOG.info("Deleted distributed virtual volume %s", dist_vv_name)
         return True
     except utils.ApiException as err:
         err_msg = ("Could not delete distributed virtual volume {0} due"
                    " to error: {1}".format(dist_vv_name,
                                            utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 11
0
 def delete_storageview(self):
     """
     Delete a storageview
     """
     try:
         self.storageview.delete_storage_view(self.cl_name, self.st_name)
         LOG.info("Successfully deleted storageview %s from %s",
                  self.st_name, self.cl_name)
     except utils.ApiException as err:
         err_msg = ("Could not delete storageview {0} from {1} due to "
                    "error: {3}".format(self.st_name, self.cl_name,
                                        utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 12
0
 def delete_extent(self, extent_name):
     """
     Delete an extent
     """
     try:
         self.extent.delete_extent(self.cl_name, extent_name)
         LOG.info("Deleted extent %s from %s", extent_name, self.cl_name)
         return True
     except utils.ApiException as err:
         err_msg = ("Could not delete extent {0} from {1} due to"
                    " error: {2}".format(extent_name, self.cl_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
    def get_device_migration_list(self):
        """Get the list of device migration jobs in VPLEX"""

        try:
            device_mig = self.api_obj.DataMigrationApi(api_client=self.client)
            obj = device_mig.get_device_migrations()
            self.logmsg('Device migration job', obj)
            device_mig_details = utils.serialize_content(obj)
            return self.parse_data(device_mig_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Device migration jobs due to"
                       " error: {0}".format(utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
 def delete_d_cgrp(self, dr_cg_name):
     """
     Delete distributed consistency group on VPLEX
     """
     try:
         self.dcgrp.delete_distributed_consistency_group(dr_cg_name)
         LOG.info("Deleted the distributed consistency group %s",
                  dr_cg_name)
         return True
     except utils.ApiException as err:
         err_msg = ("Could not delete distributed consistency group {0} due"
                    " to error: {1}".format(dr_cg_name,
                                            utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
    def get_initiator_list(self, cluster_name=None):
        """Get the list of initiators on a specific cluster in VPLEX"""

        try:
            initiator = self.api_obj.ExportsApi(api_client=self.client)
            obj = initiator.get_initiator_ports(cluster_name)
            self.logmsg('Initiator', obj, cluster_name)
            initiator_details = utils.serialize_content(obj)
            return self.parse_data(initiator_details, initiator=True)
        except utils.ApiException as err:
            err_msg = ("Could not get Initiators from {0} due to"
                       " error: {1}".format(cluster_name,
                                            utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
    def get_extent_list(self, cluster_name=None):
        """Get the list of extents on a specific cluster in VPLEX"""

        try:
            extent = self.api_obj.ExtentApi(api_client=self.client)
            obj = extent.get_extents(cluster_name)
            self.logmsg('Extent', obj, cluster_name)
            device_details = utils.serialize_content(obj)
            return self.parse_data(device_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Extents from {0} due to"
                       " error: {1}".format(cluster_name,
                                            utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
    def get_distributed_consistency_group_list(self):
        """Get the list of distributed consistency groups in VPLEX"""

        try:
            dist_cgp = self.api_obj.DistributedStorageApi(
                api_client=self.client)
            obj = dist_cgp.get_distributed_consistency_groups()
            self.logmsg('Distributed Consistency Group', obj)
            dist_cg_details = utils.serialize_content(obj)
            return self.parse_data(dist_cg_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Distributed Consistency Groups due to"
                       " error: {0}".format(utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
    def get_distributed_virtual_volume_list(self):
        """Get the list of distributed virtual volumes in VPLEX"""

        try:
            dist_virt_volume = self.api_obj.DistributedStorageApi(
                api_client=self.client)
            obj = dist_virt_volume.get_distributed_virtual_volumes()
            self.logmsg('Distributed Virtual Volume', obj)
            dist_virvol_details = utils.serialize_content(obj)
            return self.parse_data(dist_virvol_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Distributed Virtual Volumes due to"
                       " error: {0}".format(utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 19
0
 def delete_distributed_device(self, distributed_device_name):
     """delete distributed device """
     try:
         msg = "Trying to delete the distributed device {0}".format(
             distributed_device_name)
         LOG.info(msg)
         dist_device_obj = self.distdevice.delete_distributed_device(
             distributed_device_name)
         LOG.info("Successfully deleted the distributed device")
         return dist_device_obj
     except utils.ApiException as ex:
         err_msg = 'Could not delete the distributed device {0}'.format(
             distributed_device_name)
         err_msg += ' due to error: {0}'.format(utils.error_msg(ex))
         LOG.error("%s\n%s\n", err_msg, ex)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 20
0
    def delete_device(self, cluster_name, device_name):
        """
        Delete device on VPLEX
        """

        try:
            obj_device = self.device.delete_device(cluster_name, device_name)
            LOG.info("Deleted device %s from %s", device_name, cluster_name)
            LOG.debug("Device details:\n%s", obj_device)
            return True
        except utils.ApiException as err:
            err_msg = ("Could not delete device {0} from {1} due to"
                       " error: {2}".format(device_name, cluster_name,
                                            utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 21
0
 def get_port(self):
     """
     Get port details
     """
     try:
         port_details = self.port.get_port(self.cl_name, self.port_nm)
         LOG.info("Obtained the port %s details in %s",
                  self.port_nm, self.cl_name)
         LOG.debug("Port Details:\n%s", port_details)
         return port_details
     except utils.ApiException as err:
         err_msg = ("Could not get the Port {0} Details in {1} due to"
                    " error: {2}".format(
                        self.port_nm, self.cl_name, utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         return None
Exemplo n.º 22
0
 def get_map(self, uri):
     """Get map object from VPLEX"""
     obj = uri.split('/')[-1]
     LOG.info('Get map for %s', obj)
     try:
         res = self.maps_cl.get_map(uri)
         LOG.info('Map Found')
         LOG.debug('Map details: %s', res)
         return res
     except utils.ApiException as err:
         err_msg = ("Could not get map for {0} in {1} due to"
                    " error: {2}".format(
                        obj, self.cluster_name,
                        utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         return str(err_msg)
Exemplo n.º 23
0
 def rediscover_initiator(self):
     """
     Rediscover initiator ports
     """
     try:
         initiator_details = self.initr.rediscover_initiator_ports(
             self.cl_name)
         LOG.info("Rediscovered initiators from %s", self.cl_name)
         LOG.debug("Initiator Details:\n%s", initiator_details)
         return initiator_details
     except utils.ApiException as err:
         err_msg = ("Could not discover initiators from {0} due to"
                    " error: {1}".format(self.cl_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 24
0
 def register_initiator(self, initiator_payload):
     """
     Register an initiator port either with iscsi_name or port_wwn
     """
     try:
         det = self.initr.register_initiator_port(  # pylint: disable=E1121
             self.cl_name, initiator_payload)
         LOG.info("Registered initiator %s in %s", det.name, self.cl_name)
         LOG.debug("Initiator Details:\n%s", det)
         return det
     except utils.ApiException as err:
         err_msg = ("Could not register initiator in {0} due to"
                    " error: {1}".format(self.cl_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
    def get_array_management_provider_list(self, cluster_name=None):
        """Get the list of registered array manamgement providers on a
        specific cluster in VPLEX"""

        try:
            amps = self.api_obj.AmpApi(api_client=self.client)
            obj = amps.get_array_management_providers(cluster_name)
            self.logmsg('Array Management Provider', obj, cluster_name)
            amp_details = utils.serialize_content(obj)
            return self.parse_data(amp_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Array Management Providers from {0}"
                       " due to error: {1}".format(cluster_name,
                                                   utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 26
0
 def rediscover_array(self, cluster_name, array_name):
     """
     Rediscover StorageArray on VPLEX
     """
     try:
         obj_array = self.rediscoverarray.rediscover_storage_array(
             cluster_name, array_name)
         LOG.info("Rediscovered StorageArray in %s", cluster_name)
         LOG.debug("StorageArray details:\n%s", obj_array)
         return obj_array
     except utils.ApiException as err:
         err_msg = ("Could not Rediscover array {0} in {1} due to"
                    " error: {2}".format(array_name, cluster_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
Exemplo n.º 27
0
 def unregister_initiator(self, initiator_name):
     """
     Unregister an initiator port
     """
     try:
         self.initr.unregister_initiator_port(
             self.cl_name, initiator_name)
         LOG.info("Unregistered initiator %s from %s", initiator_name,
                  self.cl_name)
         return True
     except utils.ApiException as err:
         err_msg = ("Could not unregister initiator {0} from {1} due to"
                    " error: {2}".format(initiator_name, self.cl_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
    def get_storage_view_list(self, cluster_name=None):
        """Get the list of storage views on a specific cluster
        in VPLEX"""

        try:
            storage_view = self.api_obj.ExportsApi(api_client=self.client)
            obj = storage_view.get_storage_views(cluster_name)
            self.logmsg('Storage View', obj, cluster_name)
            view_details = utils.serialize_content(obj)
            return self.parse_data(view_details)
        except utils.ApiException as err:
            err_msg = ("Could not get Storage Views from {0} due to"
                       " error: {1}".format(cluster_name,
                                            utils.error_msg(err)))
            LOG.error("%s\n%s\n", err_msg, err)
            self.module.fail_json(msg=err_msg)
Exemplo n.º 29
0
 def get_array(self, cluster_name, array_name):
     """
     Get the details of StorageArray
     """
     try:
         obj_array = self.rediscoverarray.get_storage_array(
             cluster_name, array_name)
         LOG.info("Got Array details %s from %s", array_name, cluster_name)
         LOG.debug("StorageArray details:\n%s", obj_array)
         return obj_array
     except utils.ApiException as err:
         err_msg = ("Could not get StorageArray {0} of {1} due to"
                    " error: {2}".format(array_name, cluster_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         self.module.fail_json(msg=err_msg)
 def get_device(self, cluster_name, device_name):
     """
     Get the details of a device
     """
     try:
         obj_device = self.device.get_device(cluster_name, device_name)
         LOG.info("Got device details for %s from %s", device_name,
                  cluster_name)
         LOG.debug("Device Details:\n%s", obj_device)
         device_details = utils.serialize_content(obj_device)
         return device_details
     except utils.ApiException as err:
         err_msg = ("Could not get device {0} details in {1} due to"
                    " error: {2}".format(device_name, cluster_name,
                                         utils.error_msg(err)))
         LOG.error("%s\n%s\n", err_msg, err)
         return None