Beispiel #1
0
def main():
    module_args = {
        "plugins": {
            "type": "dict",
            "required": True
        }
    }
    module = AnsibleModule(argument_spec=module_args)

    plugins = module.params["plugins"] or {}
    components = []
    for p, meta in plugins.items():
        plugin = dr.get_component(p)
        components.append(plugin)
        if meta:
            dr.COMPONENT_METADATA[plugin] = meta

    results = run(components)
    response = {}
    for p in components:
        r = results.get(p)
        if r:
            response.update(serialize(p, r))

    result = {"ansible_facts": {"insights": response}}
    module.exit_json(changed=False, **result)
Beispiel #2
0
def deserialize(data):
    if not data.get("type"):
        return data["object"]

    _type = dr.get_component(data["type"])
    if not _type:
        raise Exception("Unrecognized type: %s" % data["type"])

    to_obj = get_deserializer(_type)
    if not to_obj:
        raise Exception("No deserializer for type: %s" % data["type"])

    return to_obj(_type, data["object"])
Beispiel #3
0
def hydrate(payload, broker=None):
    broker = broker or dr.Broker()
    name = payload["name"]
    key = dr.get_component(name) or name

    results = unmarshal(payload["results"])
    if results:
        broker[key] = results

    errors = unmarshal(payload["errors"])
    if errors:
        broker.exceptions[key] = errors

    return broker
Beispiel #4
0
def loads(string):
    """Loads the filters dictionary given a string."""
    d = _loads(string)
    for k, v in d.items():
        FILTERS[dr.get_component(k) or k] = set(v)