Example #1
0
File: lnvm.py Project: safl/cijoe
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
Example #2
0
File: block.py Project: safl/cijoe
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
Example #3
0
File: ipmi.py Project: safl/cijoe
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
Example #4
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
Example #5
0
File: nvm.py Project: safl/cijoe
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
Example #6
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
Example #7
0
File: nvme.py Project: safl/cijoe
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