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}
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}
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}
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}
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}
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 }
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}
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}
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}
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}
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}
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 }