示例#1
0
文件: sg.py 项目: optionalg/storops
 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)
示例#2
0
文件: cg.py 项目: optionalg/storops
 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))
示例#3
0
文件: lun.py 项目: optionalg/storops
    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.')
示例#4
0
文件: lun.py 项目: optionalg/storops
 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)
示例#5
0
 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
示例#6
0
文件: lun.py 项目: optionalg/storops
 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)
示例#7
0
文件: lun.py 项目: optionalg/storops
 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))
示例#8
0
 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
示例#9
0
文件: lun.py 项目: optionalg/storops
 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)
示例#10
0
文件: lun.py 项目: optionalg/storops
 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)))
示例#11
0
文件: vdm.py 项目: optionalg/storops
 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
示例#12
0
 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)
示例#13
0
文件: lun.py 项目: optionalg/storops
 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)))
示例#14
0
文件: lun.py 项目: optionalg/storops
 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
示例#15
0
文件: lun.py 项目: optionalg/storops
 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
示例#16
0
文件: lun.py 项目: optionalg/storops
 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)
示例#17
0
 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
示例#18
0
 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)
示例#19
0
 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)
示例#20
0
 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)
示例#21
0
文件: fs.py 项目: optionalg/storops
    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)
示例#22
0
 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)
示例#23
0
文件: lun.py 项目: optionalg/storops
    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.')
示例#24
0
 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)
示例#25
0
文件: vdm.py 项目: optionalg/storops
 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
示例#26
0
文件: lun.py 项目: optionalg/storops
 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))
示例#27
0
 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)
示例#28
0
 def remove(self):
     out = self._cli.remove_snap(self._get_name(), poll=self.poll)
     raise_if_err(out, ex.VNXRemoveSnapError)
示例#29
0
文件: cg.py 项目: optionalg/storops
 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)
示例#30
0
 def f():
     raise_if_err('specified lun may not exist', VNXException,
                  expected_error=VNXError.GENERAL_NOT_FOUND)
示例#31
0
 def remove(self):
     ret = self._cli.remove_rg(self._get_raid_group_id(), poll=self.poll)
     raise_if_err(ret, ex.VNXRemoveRaidGroupError)
示例#32
0
文件: sg.py 项目: optionalg/storops
 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))
示例#33
0
文件: lun.py 项目: optionalg/storops
 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.')
示例#34
0
 def remove(self):
     ret = self._cli.remove_pool(poll=self.poll, **self._get_name_or_id())
     raise_if_err(ret, ex.VNXRemovePoolError)
示例#35
0
文件: cg.py 项目: optionalg/storops
 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))
示例#36
0
 def test_raise_if_err_normal(self):
     raise_if_err('')
示例#37
0
 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)
示例#38
0
 def f():
     raise_if_err('error msg', msg="error received")
示例#39
0
 def remove(self):
     ret = self._cli.remove_pool(poll=self.poll, **self._get_name_or_id())
     raise_if_err(ret, ex.VNXRemovePoolError)
示例#40
0
 def f():
     resp = NasXmlResponse(MockXmlPost.read_file('fs_not_found.xml'))
     raise_if_err(resp, VNXException,
                  expected_error=VNXError.FS_NOT_FOUND)
示例#41
0
文件: lun.py 项目: optionalg/storops
 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.')