Example #1
0
    def start(self):
        '''Maps to the CLI command and starts one or more Wishbone processes in background.
        '''

        router_config = ConfigFile(self.config, 'SYSLOG').dump()
        pid_file = PIDFile(self.pid)

        with DaemonContext(stdout=sys.stdout,
                           stderr=sys.stderr,
                           detach_process=True):
            if self.instances == 1:
                sys.stdout.write("\nWishbone instance started with pid %s\n" %
                                 (os.getpid()))
                sys.stdout.flush()
                pid_file.create([os.getpid()])
                self.initializeRouter(router_config)
            else:
                for instance in range(self.instances):
                    self.routers.append(
                        gipc.start_process(self.initializeRouter,
                                           args=(router_config, ),
                                           daemon=True))

                pids = [str(p.pid) for p in self.routers]
                print(("\nInstances started in foreground with pid %s\n" %
                       (", ".join(pids))))
                pid_file.create(pids)

            self.bootstrapBlock()
Example #2
0
    def start(self, command, config, instances, pid, queue_size, frequency, identification):
        '''
        Handles the Wishbone start command.
        '''

        config = self.config.load(config)
        self.pid = PIDFile(pid)

        if instances == 1:
            print ("Starting 1 instance to background with pid %s." % (os.getpid()))
            try:
                with DaemonContext(stdout=sys.stdout, stderr=sys.stderr, files_preserve=self.__getCurrentFD(), detach_process=True):
                    self.pid.create([os.getpid()])
                    instance = RouterBootstrap(config, debug=False, queue_size=queue_size, frequency=frequency, identification=identification)
                    instance.start()
            except Exception as err:
                sys.stdout.write("Failed to start instance.  Reason: %s\n" % (err))
        else:
            try:
                print "Starting %s instances in background." % (instances)
                with DaemonContext(stdout=sys.stdout, stderr=sys.stderr, files_preserve=self.__getCurrentFD(), detach_process=True):
                    pids = []
                    processes = []
                    for counter in xrange(instances):
                        processes.append(RouterBootstrapProcess(config, debug=False, queue_size=queue_size, frequency=frequency, identification=identification))
                        processes[-1].start()
                        pids.append(processes[-1].pid)
                    self.pid.create(pids)
                    for process in processes:
                        process.join()

            except Exception as err:
                sys.stdout.write("Failed to start instance.  Reason: %s\n" % (err))
Example #3
0
    def stop(self):
        '''Maps to the CLI command and stop the running Wishbone processes.
        '''

        try:
            pid = PIDFile(self.pid)
            sys.stdout.write("Stopping instance with PID ")
            sys.stdout.flush()
            for entry in pid.read():
                sys.stdout.write(" %s " % (entry))
                sys.stdout.flush()
                pid.sendSigint(entry)
            pid.cleanup()
            print("")
        except Exception as err:
            print("")
            print(("Failed to stop instances.  Reason: %s" % (err)))
Example #4
0
    def stop(self, command, pid):
        '''
        Handles the Wishbone stop command.
        '''

        try:
            pid = PIDFile(pid)
            sys.stdout.write("Stopping instance with PID ")
            sys.stdout.flush()
            for entry in pid.read():
                sys.stdout.write(" %s " % (entry))
                sys.stdout.flush()
                pid.sendSigint(entry)
            pid.cleanup()
            print("")
        except Exception as err:
            print ("")
            print ("Failed to stop instances.  Reason: %s" % (err))