#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright (C) 2019 tribe29 GmbH - License: GNU General Public License v2
# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
# conditions defined in the file COPYING, which is part of this source code package.


def _try_set(node, nkey, parsed, pkey):
    try:
        node[nkey] = parsed[pkey]
    except KeyError:
        pass


def parse_aix_lparstat_inventory(info):
    lines = (raw[0] for raw in info if ":" in raw[0])
    pairs = (line.split(":", 1) for line in lines)
    parsed = {k.strip(): v.strip() for k, v in pairs}
    return parsed


def inv_aix_lparstat_inventory(info, inventory_tree):
    parsed = parse_aix_lparstat_inventory(info)

    cpu_node = inventory_tree.get_dict("hardware.cpu.")
    sys_node = inventory_tree.get_dict("hardware.system.")

    _try_set(cpu_node, "cpu_max_capa", parsed, "Maximum Capacity")
    _try_set(cpu_node, "type", parsed, "Type")

    _try_set(sys_node, "node_name", parsed, "Node Name")
    _try_set(sys_node, "partition_name", parsed, "Partition Name")
    _try_set(sys_node, "partition_number", parsed, "Partition Number")


inv_info["aix_lparstat_inventory"] = {
    "inv_function": inv_aix_lparstat_inventory,
}
