def env(): """Verify LNVM variables and construct exported variables""" if cij.ssh.env(): cij.err("cij.lnvm.env: invalid SSH environment") return 1 lnvm = cij.env_to_dict(PREFIX, REQUIRED) nvme = cij.env_to_dict("NVME", ["DEV_NAME"]) if "BGN" not in lnvm.keys(): cij.err("cij.lnvm.env: invalid LNVM_BGN") return 1 if "END" not in lnvm.keys(): cij.err("cij.lnvm.env: invalid LNVM_END") return 1 if "DEV_TYPE" not in lnvm.keys(): cij.err("cij.lnvm.env: invalid LNVM_DEV_TYPE") return 1 lnvm["DEV_NAME"] = "%sb%03de%03d" % (nvme["DEV_NAME"], int(lnvm["BGN"]), int(lnvm["END"])) lnvm["DEV_PATH"] = "/dev/%s" % lnvm["DEV_NAME"] cij.env_export(PREFIX, EXPORTED, lnvm) return 0
def env(): """Verify BLOCK variables and construct exported variables""" if cij.ssh.env(): cij.err("cij.block.env: invalid SSH environment") return 1 block = cij.env_to_dict(PREFIX, REQUIRED) block["DEV_PATH"] = "/dev/%s" % block["DEV_NAME"] cij.env_export(PREFIX, EXPORTED, block) return 0
def env(): """Verify IPMI environment""" ipmi = cij.env_to_dict(PREFIX, REQUIRED) if ipmi is None: ipmi["USER"] = "******" ipmi["PASS"] = "******" ipmi["HOST"] = "localhost" ipmi["PORT"] = "623" cij.info("ipmi.env: USER: %s, PASS: %s, HOST: %s, PORT: %s" % (ipmi["USER"], ipmi["PASS"], ipmi["HOST"], ipmi["PORT"])) cij.env_export(PREFIX, EXPORTED, ipmi) return 0
def env(): """Verify PCI variables and construct exported variables""" if cij.ssh.env(): cij.err("cij.pci.env: invalid SSH environment") return 1 pci = cij.env_to_dict(PREFIX, REQUIRED) pci["BUS_PATH"] = "/sys/bus/pci" pci["DEV_PATH"] = os.sep.join( [pci["BUS_PATH"], "devices", pci["DEV_NAME"]]) cij.env_export(PREFIX, EXPORTED, pci) return 0
def env(): """Verify NVME variables and construct exported variables""" if cij.ssh.env(): cij.err("cij.nvm.env: invalid SSH environment") return 1 nvm = cij.env_to_dict(PREFIX, REQUIRED) if "nvme" in nvm["DEV_NAME"]: nvm["DEV_PATH"] = "/dev/%s" % nvm["DEV_NAME"] else: nvm["DEV_PATH"] = "traddr:%s" % nvm["DEV_NAME"] cij.env_export(PREFIX, EXPORTED, nvm) return 0
def env(): """Verify BOARD variables and construct exported variables""" if cij.ssh.env(): cij.err("board.env: invalid SSH environment") return 1 board = cij.env_to_dict(PREFIX, REQUIRED) # Verify REQUIRED variables if board is None: cij.err("board.env: invalid BOARD environment") return 1 board["CLASS"] = "_".join([board[r] for r in REQUIRED[:-1]]) board["IDENT"] = "-".join([board["CLASS"], board["ALIAS"]]) cij.env_export(PREFIX, EXPORTED, board) # Export EXPORTED variables return 0
def env(): """Verify NVME variables and construct exported variables""" if cij.ssh.env(): cij.err("cij.nvme.env: invalid SSH environment") return 1 nvme = cij.env_to_dict(PREFIX, REQUIRED) nvme["DEV_PATH"] = os.path.join("/dev", nvme["DEV_NAME"]) # get version, chunks, luns and chs try: sysfs = os.path.join("/sys/class/block", nvme["DEV_NAME"], "lightnvm") nvme["LNVM_VERSION"] = cat_file(os.path.join(sysfs, "version")) if nvme["LNVM_VERSION"] == "2.0": luns = "punits" chs = "groups" elif nvme["LNVM_VERSION"] == "1.2": luns = "num_luns" chs = "num_channels" else: raise RuntimeError("cij.nvme.env: invalid lnvm version: %s" % nvme["LNVM_VERSION"]) nvme["LNVM_NUM_CHUNKS"] = cat_file(os.path.join(sysfs, "chunks")) nvme["LNVM_NUM_LUNS"] = cat_file(os.path.join(sysfs, luns)) nvme["LNVM_NUM_CHS"] = cat_file(os.path.join(sysfs, chs)) nvme["LNVM_TOTAL_LUNS"] = str( int(nvme["LNVM_NUM_LUNS"]) * int(nvme["LNVM_NUM_CHS"])) nvme["LNVM_TOTAL_CHUNKS"] = str( int(nvme["LNVM_TOTAL_LUNS"]) * int(nvme["LNVM_NUM_CHUNKS"])) # get spec version by identify namespace data struct if nvme["LNVM_VERSION"] == "2.0": cmd = ["nvme", "id-ctrl", nvme["DEV_PATH"], "--raw-binary"] status, stdout, _ = cij.ssh.command(cmd, shell=True) if status: raise RuntimeError("cij.nvme.env: nvme id-ctrl fail") buff = cij.bin.Buffer(types=IdentifyCDS, length=1) buff.memcopy(stdout) if buff[0].VS[1023] == 0x5a: nvme["SPEC_VERSION"] = "Denali" else: nvme["SPEC_VERSION"] = "Spec20" else: nvme["SPEC_VERSION"] = "Spec12" # get chunk meta information nvme["LNVM_CHUNK_META_LENGTH"] = str( get_sizeof_descriptor_table(nvme["SPEC_VERSION"])) nvme["LNVM_CHUNK_META_SIZE"] = str( int(nvme["LNVM_CHUNK_META_LENGTH"]) * int(nvme["LNVM_TOTAL_CHUNKS"])) except StandardError: traceback.print_exc() return 1 cij.env_export(PREFIX, EXPORTED, nvme) return 0