def _get_available_models(broker, group=dr.GROUPS.single): """ Given a broker populated with datasources, return everything that could run based on them. """ state = set(broker.instances.keys()) models = {} for comp in dr.run_order(dr.COMPONENTS[group]): if comp in dr.DELEGATES and not plugins.is_datasource(comp): if dr.DELEGATES[comp].get_missing_dependencies(state): continue if plugins.is_type( comp, (plugins.rule, plugins.condition, plugins.incident)): name = "_".join( [dr.get_base_module_name(comp), dr.get_simple_name(comp)]) else: name = dr.get_simple_name(comp) if name in models: prev = models[name] models[dr.get_name(prev).replace(".", "_")] = prev del models[name] name = dr.get_name(comp).replace(".", "_") models[name] = comp state.add(comp) return models
def dry_run(graph=dr.COMPONENTS[dr.GROUPS.single], broker=None): broker = broker or dr.Broker() for c in broker.instances: yield c for c in dr.run_order(graph): d = dr.get_delegate(c) if d and d.get_missing_dependencies(broker) is None: broker[c] = 1 yield c