Ejemplo n.º 1
0
def main():
    # NOTE(mkwiek): no arguments should be supplied to solar-worker
    argparse.ArgumentParser().parse_args()
    log.info('Database in use: {}'.format(C.solar_db))
    runner = loader.get_runner(C.runner)
    constructors = loader.get_constructors()
    clients = loader.get_clients()
    exts = loader.get_extensions(clients)
    runner.driver(constructors, exts, clients)
Ejemplo n.º 2
0
def main():
    # NOTE(mkwiek): no arguments should be supplied to solar-worker
    argparse.ArgumentParser().parse_args()
    log.info('Database in use: {}'.format(C.solar_db))
    runner = loader.get_runner(C.runner)
    constructors = loader.get_constructors()
    clients = loader.get_clients()
    exts = loader.get_extensions(clients)
    runner.driver(constructors, exts, clients)
Ejemplo n.º 3
0
def run_all(construct_manager, extensions, clients):
    def _spawn(constructor, extensions, clients):
        return gevent.spawn(constructor.plugin, extensions, clients)

    try:
        log.info('Spawning scheduler, system log and tasks workers.')
        gevent.joinall(construct_manager.map(_spawn, extensions, clients))
    except KeyboardInterrupt:
        log.info('Exit solar-worker')
        sys.exit()
Ejemplo n.º 4
0
def run_all(construct_manager, extensions, clients):

    def _spawn(constructor, extensions, clients):
        return gevent.spawn(constructor.plugin, extensions, clients)

    try:
        log.info('Spawning scheduler, system log and tasks workers.')
        gevent.joinall(
            construct_manager.map(_spawn, extensions, clients))
    except KeyboardInterrupt:
        log.info('Exit solar-worker')
        sys.exit()
Ejemplo n.º 5
0
 def _single(single, emitter, receiver, inps_emitter, inps_receiver):
     # this function is responsible for doing magic with transports_id and location_id
     # it tries to be safe and smart as possible
     # it connects only when 100% that it can and should
     # user can always use direct mappings,
     # we also use direct mappings in VR
     # when we will remove location_id and transports_id from inputs then this function,
     #     will be deleted too
     if inps_emitter and inps_receiver:
         if not inps_emitter == inps_receiver:
             log.warning("Different %r defined %r => %r", single, emitter.name, receiver.name)
             return
         else:
             log.debug("The same %r defined for %r => %r, skipping", single, emitter.name, receiver.name)
             return
     emitter_single = emitter.db_obj.meta_inputs[single]
     receiver_single = receiver.db_obj.meta_inputs[single]
     emitter_single_reverse = emitter_single.get('reverse')
     receiver_single_reverse = receiver_single.get('reverse')
     if inps_receiver is None and inps_emitter is not None:
         # we don't connect automaticaly when receiver is None and emitter is not None
         # for cases when we connect existing transports to other data containers
         if receiver_single_reverse:
             log.info("Didn't connect automaticaly %s::%s -> %s::%s",
                      receiver.name,
                      single,
                      emitter.name,
                      single)
             return
     if emitter_single.get('is_emit') is False:
         # this case is when we connect resource to transport itself
         # like adding ssh_transport for solard_transport and we don't want then
         # transports_id to be messed
         # it forbids passing this value around
         log.debug("Disabled %r mapping for %r", single, emitter.name)
         return
     if receiver_single.get('is_own') is False:
         # this case is when we connect resource which has location_id but that is
         # from another resource
         log.debug("Not is_own %r for %r ", single, emitter.name)
         return
     # connect in other direction
     if emitter_single_reverse:
         if receiver_single_reverse:
             connect_single(receiver, single, emitter, single)
             _remove_from_mapping(single)
             return
     if receiver_single_reverse:
         connect_single(receiver, single, emitter, single)
         _remove_from_mapping(single)
         return
     if isinstance(orig_mapping, dict):
         orig_mapping[single] = single
Ejemplo n.º 6
0
 def _single(single, emitter, receiver, inps_emitter, inps_receiver):
     # this function is responsible for doing magic with transports_id and location_id
     # it tries to be safe and smart as possible
     # it connects only when 100% that it can and should
     # user can always use direct mappings,
     # we also use direct mappings in VR
     # when we will remove location_id and transports_id from inputs then this function,
     #     will be deleted too
     if inps_emitter and inps_receiver:
         if not inps_emitter == inps_receiver:
             log.warning("Different %r defined %r => %r", single, emitter.name, receiver.name)
             return
         else:
             log.debug("The same %r defined for %r => %r, skipping", single, emitter.name, receiver.name)
             return
     emitter_single = emitter.db_obj.meta_inputs[single]
     receiver_single = receiver.db_obj.meta_inputs[single]
     emitter_single_reverse = emitter_single.get('reverse')
     receiver_single_reverse = receiver_single.get('reverse')
     if inps_receiver is None and inps_emitter is not None:
         # we don't connect automaticaly when receiver is None and emitter is not None
         # for cases when we connect existing transports to other data containers
         if receiver_single_reverse:
             log.info("Didn't connect automaticaly %s::%s -> %s::%s",
                      receiver.name,
                      single,
                      emitter.name,
                      single)
             return
     if emitter_single.get('is_emit') is False:
         # this case is when we connect resource to transport itself
         # like adding ssh_transport for solard_transport and we don't want then
         # transports_id to be messed
         # it forbids passing this value around
         log.debug("Disabled %r mapping for %r", single, emitter.name)
         return
     if receiver_single.get('is_own') is False:
         # this case is when we connect resource which has location_id but that is
         # from another resource
         log.debug("Not is_own %r for %r ", single, emitter.name)
         return
     # connect in other direction
     if emitter_single_reverse:
         if receiver_single_reverse:
             connect_single(receiver, single, emitter, single)
             _remove_from_mapping(single)
             return
     if receiver_single_reverse:
         connect_single(receiver, single, emitter, single)
         _remove_from_mapping(single)
         return
     if isinstance(orig_mapping, dict):
         orig_mapping[single] = single
Ejemplo n.º 7
0
def main():
    import sys
    from gevent import spawn
    from gevent import joinall
    servers = [
        spawn(construct_scheduler, C.tasks_address, C.scheduler_address),
        spawn(construct_system_log, C.system_log_address),
        spawn(construct_tasks, C.system_log_address, C.tasks_address,
              C.scheduler_address)
        ]
    try:
        log.info('Spawning scheduler, system log and tasks workers.')
        joinall(servers)
    except KeyboardInterrupt:
        log.info('Exit solar-worker')
        sys.exit()