コード例 #1
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*(Thin )?Pool Name:\s+",
                                        vbo.StoragePoolState, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             o.to_string(tim, "emc")
コード例 #2
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*LOGICAL UNIT NUMBER\s+",
                                        vbo.DeviceState, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             o.to_string(tim, "emc")
コード例 #3
0
ファイル: vnx_block_loader.py プロジェクト: chenziliang/src
    def _get_nas_control_devices(self, storage_groups, devices):
        if not self._support_naviseccli:
            return {"devices": []}

        sg_devs = set((dev_id for sg in storage_groups for dev_id in sg.device_ids))
        all_devs = set((dev.id for dev in devices))
        nas_control_devs = sg_devs - all_devs

        opts = [
            "",
            "-np",
            "getlun",
            "-messner",
            "",
            "-name",
            "-capacity",
            "-private",
            "-state",
            "-drivetype",
            "-owner",
            "-default",
            "-rg",
            "-type",
            "-uid",
            "-ismetalun",
        ]

        if self._support_virtual_provisioning():
            opts.extend(("-isthinlun", "-ispoollun"))

        _logger.info("start collect nas device inventory for %s" % self.ip)
        devs = []
        random.shuffle(self.agents)
        for dev_id in nas_control_devs:
            opts[4] = dev_id
            for agent in self.agents:
                opts[0] = agent.ip
                cli = self.cli_common + opts
                output = timed_popen(cli, 60)
                if output.count(None) == 2:
                    self._timed_out_count += 1
                    _logger.error(self._log_template % (agent.ip, "getlun", "timed_out"))
                    continue

                self._timed_out_count = 0
                if output[1]:
                    _logger.error(self._log_template % (agent.ip, "getlun", output[1]))
                else:
                    output = "LOGICAL UNIT NUMBER %s\n%s" % (dev_id, output[0])
                    devs.extend(vbo.parse_block_objects(agent, output, r"^\s*LOGICAL UNIT NUMBER\s+", vbo.Device))
                    self._dump(agent, "getlun", output)
                    break
        _logger.info("end collect nas device inventory for %s" % self.ip)
        return {"devices": devs}
コード例 #4
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*Storage Group Name:\s+",
                                        vbo.StorageGroup, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             for did in o.device_ids:
                 self.assertGreaterEqual(int(did), 0)
             o.to_string(tim, "emc")
コード例 #5
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*Bus\s+\d+",
                                        vbo.Drive, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             self.assertRegexpMatches(o.id, r"\d+_\d+_\d+")
             self.assertGreater(int(o.capacity), 0)
             self.assertTrue(int(o.raid_group) == -1 or int(o.raid_group) >= 0)
             self.assertTrue(o.is_hotspare in ("True", "False"))
             o.to_string(tim, "emc")
コード例 #6
0
    def test_all(self):
        times = []
        for i in range(5):
            tim_begin = time.time()
            objs = vbo.parse_block_objects(self.agent, self.pool_luns,
                                           r"^\s*LOGICAL UNIT NUMBER\s+",
                                           vbo.DevicePerfMetrics, False)
            for o in objs:
                o.to_string(tim_begin, "emc")
            times.append((len(objs), time.time() - tim_begin))

        print "vnx_block_objects.parse_block_objects perf"
        for t in times:
            print "Parse %d DevicePerfMetrics in %f seconds" % (t[0], t[1])
コード例 #7
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*LOGICAL UNIT NUMBER\s+",
                                        vbo.DevicePerfMetrics, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             self.assertGreaterEqual(int(o.blocks_read), 0)
             self.assertGreaterEqual(int(o.blocks_written), 0)
             self.assertGreaterEqual(int(o.busy_ticks), 0)
             self.assertGreaterEqual(int(o.idle_ticks), 0)
             self.assertGreaterEqual(int(o.device_id), 0)
             o.to_string(tim, "emc")
コード例 #8
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*Bus\s+\d+",
                                        vbo.DrivePerfMetrics, False)
         self.assertGreaterEqual(len(objs), 1)
         for o in objs:
             self.assertTrue(o.is_valid())
             self.assertGreaterEqual(int(o.kbytes_read), 0)
             self.assertGreaterEqual(int(o.kbytes_written), 0)
             self.assertGreaterEqual(int(o.busy_ticks), 0)
             self.assertGreaterEqual(int(o.idle_ticks), 0)
             self.assertGreaterEqual(int(o.number_reads), 0)
             self.assertGreaterEqual(int(o.number_writes), 0)
             self.assertRegexpMatches(o.drive_id, r"\d+_\d+_\d+")
             o.to_string(tim, "emc")
コード例 #9
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
    def test_all(self):
        tim = time.time()
        for sample in self.samples:
            objs = vbo.parse_block_objects(self.agent, sample,
                                           r"^\s*RaidGroup ID:\s+",
                                           vbo.RaidGroup, False)
            self.assertGreaterEqual(len(objs), 1)
            for o in objs:
                self.assertTrue(o.is_valid())
                self.assertGreaterEqual(int(o.id), 0)
                self.assertGreater(int(o.raw_cap), 0)
                self.assertGreater(int(o.logical_cap), 0)
                self.assertGreaterEqual(int(o.free_cap), 0)
                self.assertTrue(o.rtype in ("hot_spare", "r1", "r2", "r3", "r5", "r6"))
                self.assertGreater(len(o._drive_ids), 0)

                for did in o._drive_ids:
                    self.assertRegexpMatches(did, r"\d+_\d+_\d+")
                o.to_string(tim, "emc")
コード例 #10
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
 def test_all(self):
     tim = time.time()
     for sample in self.samples:
         objs = vbo.parse_block_objects(self.agent, sample,
                                        r"^\s*LOGICAL UNIT NUMBER\s+",
                                        vbo.Device, False)
         self.assertGreaterEqual(len(objs), 1)
         sps = ("n/a", "sp a", "sp b")
         for o in objs:
             self.assertTrue(o.is_valid())
             self.assertGreaterEqual(int(o.id), 0)
             self.assertGreater(int(o.capacity), 0)
             self.assertTrue(o.current_owner.lower() in sps)
             self.assertTrue(o.default_owner.lower() in sps)
             self.assertTrue(int(o.raid_group) == -1 or int(o.raid_group) >= 0)
             self.assertTrue(o.is_private in ("True", "False"))
             self.assertTrue(o.is_meta in ("True", "False"))
             self.assertTrue(o.is_thin in ("True", "False"))
             self.assertTrue(o.is_pool_based in ("True", "False"))
             o.to_string(tim, "emc")
コード例 #11
0
ファイル: test_block_objects.py プロジェクト: chenziliang/src
    def test_all(self):
        tim = time.time()
        for sample in self.samples:
            objs = vbo.parse_block_objects(self.agent, sample,
                                           r"^\s*(Thin )?Pool Name:\s+",
                                           vbo.StoragePool, False)
            self.assertGreaterEqual(len(objs), 1)
            for o in objs:
                self.assertTrue(o.is_valid())
                self.assertGreaterEqual(int(o.id), 0)
                self.assertGreater(int(o.raw_cap), 0)
                self.assertGreater(int(o.user_cap), 0)
                self.assertGreater(int(o.used_cap), 0)
                self.assertGreaterEqual(int(o.free_cap), 0)
                self.assertTrue(o.rtype in ("r_1", "r_2", "r_3", "r_5", "r_6"))
                self.assertGreater(len(o._drive_ids), 0)

                for did in o._drive_ids:
                    self.assertRegexpMatches(did, r"\d+_\d+_\d+")

                for did in o._device_ids:
                    self.assertGreaterEqual(int(did), 0)
                o.to_string(tim, "emc")
コード例 #12
0
ファイル: vnx_block_loader.py プロジェクト: chenziliang/src
    def _do_collect(self, cli_opts, start_tag, StorageClass, timeout=90):
        self._get_agents()
        if not self.is_valid():
            _logger.warn("VNX Block %s is not valid, ignore" % self.ip)
            return []

        cli_common = self._get_cli()
        random.shuffle(self.agents)
        for agent in self.agents:
            cli_opts[0] = agent.ip
            cli = cli_common + cli_opts
            output = timed_popen(cli, timeout)
            if output.count(None) == 2:
                self._timed_out_count += 1
                _logger.error(self._log_template % (agent.ip, cli_opts[2], "timed_out"))
                continue

            self._timed_out_count = 0
            if output[1]:
                _logger.error(self._log_template % (agent.ip, cli_ops[2], output[1]))
            else:
                self._dump(agent, cli, output[0])
                return vbo.parse_block_objects(agent, output[0], start_tag, StorageClass)
        return []