mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-11 06:43:54 +00:00
remove logpublisher, use the Foolscap version now that this functionality has been moved into Foolscap-0.2.2
This commit is contained in:
parent
e52e14cc66
commit
69b65b6b01
@ -1,86 +0,0 @@
|
||||
|
||||
import os.path
|
||||
from zope.interface import implements
|
||||
from twisted.application import service
|
||||
from twisted.python import log
|
||||
from foolscap import Referenceable, RemoteInterface
|
||||
from foolscap.schema import DictOf, Any
|
||||
from allmydata import get_package_versions
|
||||
|
||||
class RILogObserver(RemoteInterface):
|
||||
def msg(logmsg=DictOf(str, Any())):
|
||||
return None
|
||||
class RISubscription(RemoteInterface):
|
||||
pass
|
||||
|
||||
class RILogPublisher(RemoteInterface):
|
||||
def get_versions():
|
||||
return DictOf(str, str)
|
||||
def subscribe_to_all(observer=RILogObserver):
|
||||
return RISubscription
|
||||
def unsubscribe(subscription=Any()):
|
||||
# I don't know how to get the constraint right: unsubscribe() should
|
||||
# accept return value of subscribe_to_all()
|
||||
return None
|
||||
|
||||
class RILogGatherer(RemoteInterface):
|
||||
def logport(nodeid=str, logport=RILogPublisher):
|
||||
return None
|
||||
|
||||
class Subscription(Referenceable):
|
||||
implements(RISubscription)
|
||||
|
||||
class LogPublisher(Referenceable, service.MultiService):
|
||||
implements(RILogPublisher)
|
||||
name = "log_publisher"
|
||||
|
||||
def __init__(self):
|
||||
service.MultiService.__init__(self)
|
||||
self._subscribers = {}
|
||||
self._notifyOnDisconnectors = {}
|
||||
|
||||
def startService(self):
|
||||
service.MultiService.startService(self)
|
||||
furlfile = os.path.join(self.parent.basedir, "logport.furl")
|
||||
self.parent.tub.registerReference(self, furlFile=furlfile)
|
||||
os.chmod(furlfile, 0600)
|
||||
|
||||
log.addObserver(self._twisted_log_observer)
|
||||
|
||||
def stopService(self):
|
||||
log.removeObserver(self._twisted_log_observer)
|
||||
return service.MultiService.stopService(self)
|
||||
|
||||
def _twisted_log_observer(self, d):
|
||||
# Twisted will remove this for us if it fails.
|
||||
|
||||
# keys:
|
||||
# ['message']: *args
|
||||
# ['time']: float
|
||||
# ['isError']: bool, usually False
|
||||
# ['system']: string
|
||||
|
||||
for o in self._subscribers.values():
|
||||
o.callRemoteOnly("msg", d)
|
||||
|
||||
#f = open("/tmp/f.out", "a")
|
||||
#print >>f, d['message']
|
||||
#f.close()
|
||||
|
||||
def remote_get_versions(self):
|
||||
# Convert all the version instances to strings.
|
||||
return dict([(k,str(v))
|
||||
for k,v in get_package_versions().iteritems()])
|
||||
|
||||
def remote_subscribe_to_all(self, observer):
|
||||
s = Subscription()
|
||||
self._subscribers[s] = observer
|
||||
c = observer.notifyOnDisconnect(self.remote_unsubscribe, s)
|
||||
self._notifyOnDisconnectors[s] = c
|
||||
return s
|
||||
|
||||
def remote_unsubscribe(self, s):
|
||||
observer = self._subscribers.pop(s)
|
||||
c = self._notifyOnDisconnectors.pop(s)
|
||||
observer.dontNotifyOnDisconnect(c)
|
||||
|
@ -10,7 +10,18 @@ from allmydata import get_package_versions_string
|
||||
from allmydata.util import log as tahoe_log
|
||||
from allmydata.util import iputil, observer, humanreadable
|
||||
from allmydata.util.assertutil import precondition
|
||||
from allmydata.logpublisher import LogPublisher
|
||||
|
||||
# Just to get their versions:
|
||||
import allmydata, pycryptopp, zfec
|
||||
|
||||
from foolscap.logging.publish import LogPublisher
|
||||
# Add our application versions to the data that Foolscap's
|
||||
# LogPublisher reports. Our __version__ attributes are actually
|
||||
# instances of allmydata.util.version_class.Version, so convert them
|
||||
# into strings first.
|
||||
LogPublisher.versions['allmydata'] = str(allmydata.__version__)
|
||||
LogPublisher.versions['zfec'] = str(zfec.__version__)
|
||||
LogPublisher.versions['pycryptopp'] = str(pycryptopp.__version__)
|
||||
|
||||
# group 1 will be addr (dotted quad string), group 3 if any will be portnum (string)
|
||||
ADDR_RE=re.compile("^([1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*\.[1-9][0-9]*)(:([1-9][0-9]*))?$")
|
||||
@ -177,6 +188,11 @@ class Node(service.MultiService):
|
||||
ob.formatTime = newmeth
|
||||
# TODO: twisted >2.5.0 offers maxRotatedFiles=50
|
||||
|
||||
self.tub.setOption("logport-furlfile",
|
||||
os.path.join(self.basedir, "logport.furl"))
|
||||
self.tub.setOption("log-gatherer-furlfile",
|
||||
os.path.join(self.basedir, "log_gatherer.furl"))
|
||||
|
||||
def log(self, msg, src="", args=(), **kw):
|
||||
if src:
|
||||
logsrc = src
|
||||
@ -222,17 +238,7 @@ class Node(service.MultiService):
|
||||
|
||||
def tub_ready(self):
|
||||
# called when the Tub is available for registerReference
|
||||
self.setup_log_publisher()
|
||||
|
||||
def setup_log_publisher(self):
|
||||
self.add_service(LogPublisher())
|
||||
log_gatherer_furl = self.get_config("log_gatherer.furl")
|
||||
if log_gatherer_furl:
|
||||
self.tub.connectTo(log_gatherer_furl, self._log_gatherer_connected)
|
||||
|
||||
def _log_gatherer_connected(self, rref):
|
||||
rref.callRemote("logport",
|
||||
self.nodeid, self.getServiceNamed("log_publisher"))
|
||||
pass
|
||||
|
||||
def when_tub_ready(self):
|
||||
return self._tub_ready_observerlist.when_fired()
|
||||
|
@ -1,17 +1,13 @@
|
||||
|
||||
import os, time
|
||||
from zope.interface import implements
|
||||
from twisted.trial import unittest
|
||||
from twisted.internet import defer
|
||||
from twisted.python import log
|
||||
|
||||
from foolscap import Tub, Referenceable
|
||||
from foolscap.eventual import fireEventually, flushEventualQueue
|
||||
from foolscap.eventual import flushEventualQueue
|
||||
from twisted.application import service
|
||||
import allmydata
|
||||
from allmydata.node import Node, formatTimeTahoeStyle
|
||||
from allmydata.util import testutil, fileutil
|
||||
from allmydata import logpublisher
|
||||
|
||||
class LoggingMultiService(service.MultiService):
|
||||
def log(self, msg, **kw):
|
||||
@ -59,16 +55,3 @@ class TestCase(unittest.TestCase, testutil.SignalMixin):
|
||||
self.failUnless("Z" in t)
|
||||
t2 = formatTimeTahoeStyle("ignored", int(time.time()))
|
||||
self.failUnless("Z" in t2)
|
||||
|
||||
class Gatherer(Referenceable):
|
||||
implements(logpublisher.RILogGatherer)
|
||||
def remote_logport(self, nodeid, logport):
|
||||
d = logport.callRemote("get_versions")
|
||||
d.addCallback(self.d.callback)
|
||||
|
||||
class LogObserver(Referenceable):
|
||||
implements(logpublisher.RILogObserver)
|
||||
def __init__(self):
|
||||
self.messages = []
|
||||
def remote_msg(self, d):
|
||||
self.messages.append(d)
|
||||
|
@ -4,10 +4,8 @@ def foo(): pass # keep the line number constant
|
||||
import os
|
||||
from twisted.trial import unittest
|
||||
|
||||
from twisted.python import failure
|
||||
from twisted.python import log as twisted_log
|
||||
from allmydata.util import bencode, idlib, humanreadable, mathutil
|
||||
from allmydata.util import assertutil, fileutil, testutil, log
|
||||
from allmydata.util import assertutil, fileutil, testutil
|
||||
|
||||
|
||||
class IDLib(unittest.TestCase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user