def detach_alu(self, lun): alu = storops.vnx.resource.lun.VNXLun.get_id(lun) hlu = self.get_hlu(lun) out = self._cli.sg_remove_hlu(self._get_name(), hlu, poll=self.poll) raise_if_err(out, ex.VNXStorageGroupError, 'failed to detach hlu {}/alu {}.'.format(hlu, alu)) self._remove_alu(alu)
def _cg_member_op(self, op, lun_list): clz = storops.vnx.resource.lun.VNXLun id_list = clz.get_id_list(*lun_list) name = self._get_name() out = op(name, *id_list, poll=self.poll) raise_if_err(out, ex.VNXConsistencyGroupError, 'error change member of "{}".'.format(name))
def remove(self, remove_snapshots=False, force_detach=False, detach_from_sg=False, detach_from_cg=False, force=False): if force: remove_snapshots = True force_detach = True detach_from_sg = True detach_from_cg = True if detach_from_sg: self.detach_from_sg() if detach_from_cg: self.detach_from_cg() out = self._cli.remove_pool_lun(self._lun_id, self._name, remove_snapshots=remove_snapshots, force_detach=force_detach, poll=self.poll) raise_if_err(out, ex.VNXLunNotFoundError, expected_error=VNXError.GENERAL_NOT_FOUND) raise_if_err(out, ex.VNXRemoveLunError, 'failed to remove lun.')
def create_snap(self, name, allow_rw=None, auto_delete=None): out = self._cli.create_snap(self.get_id(self), name, allow_rw, auto_delete, poll=self.poll) raise_if_err(out, ex.VNXCreateSnapError, 'failed to create snap "{}"'.format(name)) return VNXSnap(name, self._cli)
def rename(self, new_name): if new_name is not None and new_name != self._name: ret = self._cli.modify_storage_pool(new_name=new_name, poll=self.poll, **self._get_name_or_id()) raise_if_err(ret, ex.VNXModifyPoolError) self._name = new_name
def tier(self, new_tier): out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, new_tier=new_tier, poll=self.poll) msg = 'error change lun tier.' raise_if_err(out, ex.VNXModifyLunError, msg)
def disable_compression(self, ignore_thresholds=None): lun_id = self.get_id(self) out = self._cli.disable_compression(lun_id, ignore_thresholds, poll=self.poll) raise_if_err(out, ex.VNXCompressionError, 'failed to disable compression on {}.'.format(lun_id))
def rename(self, new_name): if new_name is not None and new_name != self._name: ret = self._cli.modify_storage_pool(new_name=new_name, poll=self.poll, **self._get_name_or_id()) raise_if_err(ret, ex.VNXModifyPoolError) self._name = new_name
def tier(self, new_tier): out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, new_tier=new_tier, poll=self.poll) msg = 'error change lun tier.' raise_if_err(out, ex.VNXModifyLunError, msg)
def _update_dedup_state(self, tgt_state): out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, dedup=tgt_state, poll=self.poll) raise_if_err(out, ex.VNXDedupError, 'failed to set dedup state to {} for {}.' .format(tgt_state, self.get_id(self)))
def detach_nfs_interface(self, if_name): out = self._cli.detach_nfs_interface( if_name, vdm_name=self._get_name()) raise_if_err(out, VNXMoverInterfaceNotFound, expected_error=VNXError.GENERAL_NOT_FOUND) raise_if_err(out, VNXMoverInterfaceNotAttached, expected_error=VNXError.MOVER_INTERFACE_NOT_ATTACHED) return out
def create( cli, name, disks, raid_type=None, ): ret = cli.create_pool(name, disks, raid_type) raise_if_err(ret, ex.VNXCreatePoolError) return VNXPool(name=name, cli=cli)
def _update_dedup_state(self, tgt_state): out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, dedup=tgt_state, poll=self.poll) raise_if_err( out, ex.VNXDedupError, 'failed to set dedup state to {} for {}.'.format( tgt_state, self.get_id(self)))
def rename(self, new_name): if new_name is not None and self._name != new_name: out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, new_name=new_name, poll=self.poll) raise_if_err(out, ex.VNXModifyLunError, 'failed to change lun name.') self._name = new_name
def rename(self, new_name): if new_name is not None and self._name != new_name: out = self._cli.modify_lun(lun_id=self._lun_id, lun_name=self._name, new_name=new_name, poll=self.poll) raise_if_err(out, ex.VNXModifyLunError, 'failed to change lun name.') self._name = new_name
def create_snap(self, name, allow_rw=None, auto_delete=None): out = self._cli.create_snap(self.get_id(self), name, allow_rw, auto_delete, poll=self.poll) raise_if_err(out, ex.VNXCreateSnapError, 'failed to create snap "{}"'.format(name)) return VNXSnap(name, self._cli)
def modify(self, new_name=None, desc=None, auto_delete=None, rw=None): name = self._get_name() out = self._cli.modify_snap(name, new_name, desc, auto_delete, rw, poll=self.poll) raise_if_err(out, ex.VNXSnapError, 'failed to modify snap {}.'.format(name)) if new_name is not None: self._name = new_name
def create(cls, cli, name, fs, pool, size=None): fs_clz = storops.vnx.resource.fs.VNXFileSystem pool_clz = storops.vnx.resource.nas_pool.VNXNasPool fs_id = fs_clz.get_id(fs) pool_id = pool_clz.get_id(pool) resp = cli.create_snap(name, fs_id, pool_id, size) raise_if_err(resp, VNXFsSnapExistedError, expected_error=VNXError.FS_SNAP_EXIST) resp.raise_if_err() return VNXFsSnap(name=name, cli=cli)
def copy(self, new_name, ignore_migration_check=False, ignore_dedup_check=False): name = self._get_name() out = self._cli.copy_snap(name, new_name, ignore_migration_check, ignore_dedup_check, poll=self.poll) raise_if_err(out, ex.VNXSnapError, 'failed to copy snap {}.'.format(name)) return VNXSnap(name=new_name, cli=self._cli)
def create(cls, cli, name, fs, pool, size=None): fs_clz = storops.vnx.resource.fs.VNXFileSystem pool_clz = storops.vnx.resource.nas_pool.VNXNasPool fs_id = fs_clz.get_id(fs) pool_id = pool_clz.get_id(pool) resp = cli.create_snap(name, fs_id, pool_id, size) raise_if_err(resp, VNXFsSnapExistedError, expected_error=VNXError.FS_SNAP_EXIST) resp.raise_if_err() return VNXFsSnap(name=name, cli=cli)
def create(cli, name, pool, size_kb=None, mover=1, is_vdm=False): if size_kb is None: # default to 2 MB size_kb = 2 * 1024 pool = storops.vnx.resource.nas_pool.VNXNasPool.get_id(pool) mover = storops.vnx.resource.mover.VNXMover.get_id(mover) resp = cli.create_filesystem(name, size_kb, pool, mover, is_vdm) raise_if_err(resp, VNXFsExistedError, expected_error=VNXError.FS_EXIST) resp.raise_if_err() return VNXFileSystem(name, cli=cli)
def create_lun(self, lun_name=None, size_gb=1, lun_id=None, provision=None, tier=None, ignore_thresholds=None): pool = {} if self._pool_id is not None: pool['pool_id'] = self._pool_id else: pool['pool_name'] = self._get_name() ret = self._cli.create_pool_lun(lun_name=lun_name, lun_id=lun_id, size_gb=size_gb, provision=provision, tier=tier, ignore_thresholds=ignore_thresholds, poll=self.poll, **pool) raise_if_err(ret, ex.VNXCreateLunError, 'error creating lun.') return VNXLun(lun_id, lun_name, self._cli)
def remove(self, remove_snapshots=False, force_detach=False, detach_from_sg=False, detach_from_cg=False, force=False): if force: remove_snapshots = True force_detach = True detach_from_sg = True detach_from_cg = True if detach_from_sg: self.detach_from_sg() if detach_from_cg: self.detach_from_cg() out = self._cli.remove_pool_lun(self._lun_id, self._name, remove_snapshots=remove_snapshots, force_detach=force_detach, poll=self.poll) raise_if_err(out, ex.VNXLunNotFoundError, expected_error=VNXError.GENERAL_NOT_FOUND) raise_if_err(out, ex.VNXRemoveLunError, 'failed to remove lun.')
def create_lun(self, lun_name=None, size_gb=1, lun_id=None, provision=None, tier=None, ignore_thresholds=None): pool = {} if self._pool_id is not None: pool['pool_id'] = self._pool_id else: pool['pool_name'] = self._get_name() ret = self._cli.create_pool_lun( lun_name=lun_name, lun_id=lun_id, size_gb=size_gb, provision=provision, tier=tier, ignore_thresholds=ignore_thresholds, poll=self.poll, **pool) raise_if_err(ret, ex.VNXCreateLunError, 'error creating lun.') return VNXLun(lun_id, lun_name, self._cli)
def attach_nfs_interface(self, if_name): out = self._cli.attach_nfs_interface( if_name, vdm_name=self._get_name()) raise_if_err(out, VNXMoverInterfaceNotFound, expected_error=VNXError.GENERAL_NOT_FOUND) return out
def disable_compression(self, ignore_thresholds=None): lun_id = self.get_id(self) out = self._cli.disable_compression(lun_id, ignore_thresholds, poll=self.poll) raise_if_err(out, ex.VNXCompressionError, 'failed to disable compression on {}.'.format(lun_id))
def create(cli, raid_group_id, disks, raid_type=None): ret = cli.create_rg(disks, raid_group_id, raid_type) raise_if_err(ret, ex.VNXCreateRaidGroupError) return VNXRaidGroup(raid_group_id, cli)
def remove(self): out = self._cli.remove_snap(self._get_name(), poll=self.poll) raise_if_err(out, ex.VNXRemoveSnapError)
def create(cls, cli, name, members=None, auto_delete=None): out = cli.create_cg(name, members, auto_delete) raise_if_err(out, ex.VNXCreateConsistencyGroupError, 'error creating cg {}.'.format(name)) return VNXConsistencyGroup(name=name, cli=cli)
def f(): raise_if_err('specified lun may not exist', VNXException, expected_error=VNXError.GENERAL_NOT_FOUND)
def remove(self): ret = self._cli.remove_rg(self._get_raid_group_id(), poll=self.poll) raise_if_err(ret, ex.VNXRemoveRaidGroupError)
def disconnect_host(self, host): out = self._cli.sg_disconnect_host(self._get_name(), host, poll=self.poll) raise_if_err(out, ex.VNXStorageGroupError, 'failed to disconnect host {}.'.format(host))
def expand(self, new_size, ignore_thresholds=False): out = self._cli.expand_pool_lun(new_size, self.get_id(self), ignore_thresholds=ignore_thresholds, poll=self.poll) raise_if_err(out, ex.VNXModifyLunError, 'failed to expand lun.')
def remove(self): ret = self._cli.remove_pool(poll=self.poll, **self._get_name_or_id()) raise_if_err(ret, ex.VNXRemovePoolError)
def remove(self): name = self._get_name() out = self._cli.remove_cg(name, poll=self.poll) raise_if_err(out, ex.VNXConsistencyGroupError, 'error remove cg "{}".'.format(name))
def test_raise_if_err_normal(self): raise_if_err('')
def create(cli, name, disks, raid_type=None, ): ret = cli.create_pool(name, disks, raid_type) raise_if_err(ret, ex.VNXCreatePoolError) return VNXPool(name=name, cli=cli)
def f(): raise_if_err('error msg', msg="error received")
def remove(self): ret = self._cli.remove_pool(poll=self.poll, **self._get_name_or_id()) raise_if_err(ret, ex.VNXRemovePoolError)
def f(): resp = NasXmlResponse(MockXmlPost.read_file('fs_not_found.xml')) raise_if_err(resp, VNXException, expected_error=VNXError.FS_NOT_FOUND)
def expand(self, new_size, ignore_thresholds=False): out = self._cli.expand_pool_lun(new_size, self.get_id(self), ignore_thresholds=ignore_thresholds, poll=self.poll) raise_if_err(out, ex.VNXModifyLunError, 'failed to expand lun.')