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