コード例 #1
0
ファイル: huawei_driver.py プロジェクト: nitti/cinder
    def create_volume(self, volume):
        """Create a volume."""
        pool_info = self.restclient.find_pool_info()
        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI(
            'Create volume: %(volume)s, size: %(size)s.'),
            {'volume': volume_name,
             'size': volume_size})

        params = huawei_utils.get_lun_conf_params(self.xml_file_path)
        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        return {'provider_location': lun_info['ID'],
                'ID': lun_id,
                'lun_info': lun_info}
コード例 #2
0
ファイル: huawei_driver.py プロジェクト: souvik-ray/cinder
    def extend_volume(self, volume, new_size):
        """Extend a volume."""
        volume_size = huawei_utils.get_volume_size(volume)
        new_volume_size = int(new_size) * units.Gi / 512
        volume_name = huawei_utils.encode_name(volume['id'])

        LOG.info(
            _LI('Extend volume: %(volumename)s, oldsize:'
                ' %(oldsize)s  newsize: %(newsize)s.'),
            {
                'volumename': volume_name,
                'oldsize': volume_size,
                'newsize': new_volume_size
            },
        )

        lun_id = self.restclient.get_volume_by_name(volume_name)

        if lun_id is None:
            msg = (
                _("Can't find lun info on the array, lun name is: %(name)s.") %
                {
                    'name': volume_name
                })
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)

        luninfo = self.restclient.extend_volume(lun_id, new_volume_size)

        return {'provider_location': luninfo['ID'], 'lun_info': luninfo}
コード例 #3
0
ファイル: huawei_driver.py プロジェクト: potsmaster/cinder
    def extend_volume(self, volume, new_size):
        """Extend a volume."""
        volume_size = huawei_utils.get_volume_size(volume)
        new_volume_size = int(new_size) * units.Gi / 512
        volume_name = huawei_utils.encode_name(volume['id'])

        LOG.info(_LI(
            'Extend volume: %(volumename)s, oldsize:'
            ' %(oldsize)s  newsize: %(newsize)s.'),
            {'volumename': volume_name,
             'oldsize': volume_size,
             'newsize': new_volume_size},)

        lun_id = self.restclient.get_volume_by_name(volume_name)

        if lun_id is None:
            msg = (_(
                "Can't find lun info on the array, lun name is: %(name)s.")
                % {'name': volume_name})
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)

        luninfo = self.restclient.extend_volume(lun_id, new_volume_size)

        return {'provider_location': luninfo['ID'],
                'lun_info': luninfo}
コード例 #4
0
ファイル: huawei_driver.py プロジェクト: rahul4-jain/cinder
    def create_volume(self, volume):
        """Create a volume."""
        pool_name = volume_utils.extract_host(volume['host'],
                                              level='pool')
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            msg = (_('Error in getting pool information for the pool: %s.')
                   % pool_name)
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)
        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI(
            'Create volume: %(volume)s, size: %(size)s.'),
            {'volume': volume_name,
             'size': volume_size})

        params = huawei_utils.get_lun_conf_params(self.xml_file_path)
        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        return {'provider_location': lun_info['ID'],
                'ID': lun_id,
                'lun_info': lun_info}
コード例 #5
0
    def create_volume(self, volume):
        """Create a volume."""
        opts = huawei_utils.get_volume_params(volume)
        smartx_opts = smartx.SmartX().get_smartx_specs_opts(opts)
        params = huawei_utils.get_lun_params(self.xml_file_path,
                                             smartx_opts)
        pool_name = volume_utils.extract_host(volume['host'],
                                              level='pool')
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            # The following code is to keep compatibility with old version of
            # Huawei driver.
            pool_names = huawei_utils.get_pools(self.xml_file_path)
            for pool_name in pool_names.split(";"):
                pool_info = self.restclient.find_pool_info(pool_name,
                                                           pools)
                if pool_info:
                    break

        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI(
            'Create volume: %(volume)s, size: %(size)s.'),
            {'volume': volume_name,
             'size': volume_size})

        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        try:
            qos = huawei_utils.get_volume_qos(volume)
            if qos:
                smart_qos = smartx.SmartQos(self.restclient)
                smart_qos.create_qos(qos, lun_id)
            smartpartition = smartx.SmartPartition(self.restclient)
            smartpartition.add(opts, lun_id)

            smartcache = smartx.SmartCache(self.restclient)
            smartcache.add(opts, lun_id)
        except Exception as err:
            self._delete_lun_with_check(lun_id)
            raise exception.InvalidInput(
                reason=_('Create volume error. Because %s.') % err)

        return {'provider_location': lun_info['ID'],
                'ID': lun_id,
                'lun_info': lun_info}
コード例 #6
0
    def create_volume(self, volume):
        """Create a volume."""
        opts = huawei_utils.get_volume_params(volume)
        smartx_opts = smartx.SmartX().get_smartx_specs_opts(opts)
        params = huawei_utils.get_lun_params(self.xml_file_path, smartx_opts)
        pool_name = volume_utils.extract_host(volume['host'], level='pool')
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            # The following code is to keep compatibility with old version of
            # Huawei driver.
            pool_names = huawei_utils.get_pools(self.xml_file_path)
            for pool_name in pool_names.split(";"):
                pool_info = self.restclient.find_pool_info(pool_name, pools)
                if pool_info:
                    break

        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI('Create volume: %(volume)s, size: %(size)s.'), {
            'volume': volume_name,
            'size': volume_size
        })

        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        try:
            qos = huawei_utils.get_volume_qos(volume)
            if qos:
                smart_qos = smartx.SmartQos(self.restclient)
                smart_qos.create_qos(qos, lun_id)
            smartpartition = smartx.SmartPartition(self.restclient)
            smartpartition.add(opts, lun_id)

            smartcache = smartx.SmartCache(self.restclient)
            smartcache.add(opts, lun_id)
        except Exception as err:
            self._delete_lun_with_check(lun_id)
            raise exception.InvalidInput(
                reason=_('Create volume error. Because %s.') % err)

        return {
            'provider_location': lun_info['ID'],
            'ID': lun_id,
            'lun_info': lun_info
        }
コード例 #7
0
ファイル: huawei_driver.py プロジェクト: potsmaster/cinder
    def create_volume(self, volume):
        """Create a volume."""
        opts = huawei_utils.get_volume_params(volume)
        smartx_opts = smartx.SmartX().get_smartx_specs_opts(opts)
        params = huawei_utils.get_lun_params(self.xml_file_path,
                                             smartx_opts)
        pool_name = volume_utils.extract_host(volume['host'],
                                              level='pool')
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            msg = (_('Error in getting pool information for the pool: %s.')
                   % pool_name)
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)
        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI(
            'Create volume: %(volume)s, size: %(size)s.'),
            {'volume': volume_name,
             'size': volume_size})

        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        try:
            qos = huawei_utils.get_volume_qos(volume)
            if qos:
                smart_qos = smartx.SmartQos(self.restclient)
                smart_qos.create_qos(qos, lun_id)
            smartpartition = smartx.SmartPartition(self.restclient)
            smartpartition.add(opts, lun_id)

            smartcache = smartx.SmartCache(self.restclient)
            smartcache.add(opts, lun_id)
        except Exception as err:
            if lun_id:
                self._delete_lun_with_check(lun_id)
            raise exception.InvalidInput(
                reason=_('Create volume error. Because %s.') % err)

        return {'provider_location': lun_info['ID'],
                'ID': lun_id,
                'lun_info': lun_info}
コード例 #8
0
    def extend_volume(self, volume, new_size):
        """Extend a volume."""
        volume_size = huawei_utils.get_volume_size(volume)
        new_volume_size = int(new_size) * units.Gi / 512
        volume_name = huawei_utils.encode_name(volume['id'])

        LOG.info(_LI(
            'Extend volume: %(volumename)s, oldsize:'
            ' %(oldsize)s  newsize: %(newsize)s.'),
            {'volumename': volume_name,
             'oldsize': volume_size,
             'newsize': new_volume_size},)

        lun_id = self.restclient.get_lunid(volume, volume_name)
        luninfo = self.restclient.extend_volume(lun_id, new_volume_size)

        return {'provider_location': luninfo['ID'],
                'lun_info': luninfo}
コード例 #9
0
    def create_volume(self, volume):
        """Create a volume."""
        opts = huawei_utils.get_volume_params(volume)
        smartx_opts = smartx.SmartX().get_smartx_specs_opts(opts)
        params = huawei_utils.get_lun_params(self.xml_file_path, smartx_opts)
        pool_name = volume_utils.extract_host(volume["host"], level="pool")
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            msg = _("Error in getting pool information for the pool: %s.") % pool_name
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)
        volume_name = huawei_utils.encode_name(volume["id"])
        volume_description = volume["name"]
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI("Create volume: %(volume)s, size: %(size)s."), {"volume": volume_name, "size": volume_size})

        params["pool_id"] = pool_info["ID"]
        params["volume_size"] = volume_size
        params["volume_description"] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info["ID"]

        try:
            qos = huawei_utils.get_volume_qos(volume)
            if qos:
                smart_qos = smartx.SmartQos(self.restclient)
                smart_qos.create_qos(qos, lun_id)
            smartpartition = smartx.SmartPartition(self.restclient)
            smartpartition.add(opts, lun_id)

            smartcache = smartx.SmartCache(self.restclient)
            smartcache.add(opts, lun_id)
        except Exception as err:
            self._delete_lun_with_check(lun_id)
            raise exception.InvalidInput(reason=_("Create volume error. Because %s.") % err)

        return {"provider_location": lun_info["ID"], "ID": lun_id, "lun_info": lun_info}
コード例 #10
0
    def extend_volume(self, volume, new_size):
        """Extend a volume."""
        volume_size = huawei_utils.get_volume_size(volume)
        new_volume_size = int(new_size) * units.Gi / 512
        volume_name = huawei_utils.encode_name(volume['id'])

        LOG.info(
            _LI('Extend volume: %(volumename)s, oldsize:'
                ' %(oldsize)s  newsize: %(newsize)s.'),
            {
                'volumename': volume_name,
                'oldsize': volume_size,
                'newsize': new_volume_size
            },
        )

        lun_id = self.restclient.get_lunid(volume, volume_name)
        luninfo = self.restclient.extend_volume(lun_id, new_volume_size)

        return {'provider_location': luninfo['ID'], 'lun_info': luninfo}
コード例 #11
0
    def extend_volume(self, volume, new_size):
        """Extend a volume."""
        volume_size = huawei_utils.get_volume_size(volume)
        new_volume_size = int(new_size) * units.Gi / 512
        volume_name = huawei_utils.encode_name(volume["id"])

        LOG.info(
            _LI("Extend volume: %(volumename)s, oldsize:" " %(oldsize)s  newsize: %(newsize)s."),
            {"volumename": volume_name, "oldsize": volume_size, "newsize": new_volume_size},
        )

        lun_id = self.restclient.get_volume_by_name(volume_name)

        if lun_id is None:
            msg = _("Can't find lun info on the array, lun name is: %(name)s.") % {"name": volume_name}
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)

        luninfo = self.restclient.extend_volume(lun_id, new_volume_size)

        return {"provider_location": luninfo["ID"], "lun_info": luninfo}
コード例 #12
0
ファイル: huawei_driver.py プロジェクト: souvik-ray/cinder
    def create_volume(self, volume):
        """Create a volume."""
        pool_name = volume_utils.extract_host(volume['host'], level='pool')
        pools = self.restclient.find_all_pools()
        pool_info = self.restclient.find_pool_info(pool_name, pools)
        if not pool_info:
            msg = (_('Error in getting pool information for the pool: %s.') %
                   pool_name)
            LOG.error(msg)
            raise exception.VolumeBackendAPIException(data=msg)
        volume_name = huawei_utils.encode_name(volume['id'])
        volume_description = volume['name']
        volume_size = huawei_utils.get_volume_size(volume)

        LOG.info(_LI('Create volume: %(volume)s, size: %(size)s.'), {
            'volume': volume_name,
            'size': volume_size
        })

        params = huawei_utils.get_lun_conf_params(self.xml_file_path)
        params['pool_id'] = pool_info['ID']
        params['volume_size'] = volume_size
        params['volume_description'] = volume_description

        # Prepare LUN parameters.
        lun_param = huawei_utils.init_lun_parameters(volume_name, params)

        # Create LUN on the array.
        lun_info = self.restclient.create_volume(lun_param)
        lun_id = lun_info['ID']

        return {
            'provider_location': lun_info['ID'],
            'ID': lun_id,
            'lun_info': lun_info
        }