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")
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")
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}
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")
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")
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])
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")
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")
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")
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")
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")
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 []