def extendProtocol(lFactory, sFactory): global dtnMonitors, BundleWriter try: if ExtensionLoader().isActive("Groups") is False: raise KeyError, "Group extension not active" if ExtensionLoader().isActive("HTTP-DTN") is False: raise KeyError, "HTTP-DTN extension not active" if ExtensionLoader().isActive("DTNHealingDataModel") is False: raise KeyError, "DTNHealingDataModel was not loaded" dtnMonitors = (ExtensionLoader(). getExtension("Groups"). getGroup("DTN-Healers")) dtnExtension = ExtensionLoader().getExtension("HTTP-DTN") BundleWriter = dtnExtension.BundleWriter except KeyError as e: return False dtnExtension.addToken('dtnhealing', DTNHealingParser) return True
def extendProtocol(lexicalFactory, syntaxFactory): # j == join # p == part # l == lookup # a == lookup answer regex = "group:(({0})|({1})|({2})|({3}))".format( "(j|l|p):{0}".format(GroupNameRegex), "a:{0}(:{1}(,[1-9][0-9]?)+)+".format(GroupNameRegex, IPHostRegex), "msg:{0}:[0-9]+:(s|a):.+".format(GroupNameRegex), "e:.*" ) if ExtensionLoader().isActive("BasicOverlay"): BProtocol = ExtensionLoader().getExtension("BasicOverlay") BProtocol.addBootstrapFunction(joinGroups) establishedState = lexicalFactory.getState('established') establishedState.addTransition('established', regex, lambda t: t.split(':')) startState = lexicalFactory.getState('start') startState.addTransition('start', regex, lambda t: t.split(':')) syntaxFactory.addToken('group', groupTokenParser) overlayAHF(removeFromGroups, True) for g in CommandLineParser().getArguments().groupsToJoin: groups[g] = Group(g, True, None, CommandLineParser().getArguments().PeerName) return True return False
def execute(host, port, df): global mainDefer mainDefer = df sshRPC = ExtensionLoader().getExtension("sshRPC").sshRPC sshRPCGroup = ExtensionLoader().getExtension("Groups").getGroup("sshRPC") runners = sshRPCGroup.getSubgroup(len(sshRPCGroup)-1) nRunners = len(sshRPCGroup)-1 i = 0 for sensor,port,passwd in sensorsList + [ (host, port, '192168061') ]: hostDefer = defer.Deferred() hostDefer.addErrback(df.errback) hostDefer.addCallback(confirmationReply) print "Asking to", runners[i % nRunners].nick, "to run the command" sshRPC(runners[i % nRunners], hostDefer, sensor, port, 'root', passwd, command) i += 1