mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-12 07:13:53 +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 log as tahoe_log
|
||||||
from allmydata.util import iputil, observer, humanreadable
|
from allmydata.util import iputil, observer, humanreadable
|
||||||
from allmydata.util.assertutil import precondition
|
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)
|
# 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]*))?$")
|
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
|
ob.formatTime = newmeth
|
||||||
# TODO: twisted >2.5.0 offers maxRotatedFiles=50
|
# 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):
|
def log(self, msg, src="", args=(), **kw):
|
||||||
if src:
|
if src:
|
||||||
logsrc = src
|
logsrc = src
|
||||||
@ -222,17 +238,7 @@ class Node(service.MultiService):
|
|||||||
|
|
||||||
def tub_ready(self):
|
def tub_ready(self):
|
||||||
# called when the Tub is available for registerReference
|
# called when the Tub is available for registerReference
|
||||||
self.setup_log_publisher()
|
pass
|
||||||
|
|
||||||
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"))
|
|
||||||
|
|
||||||
def when_tub_ready(self):
|
def when_tub_ready(self):
|
||||||
return self._tub_ready_observerlist.when_fired()
|
return self._tub_ready_observerlist.when_fired()
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
|
|
||||||
import os, time
|
import os, time
|
||||||
from zope.interface import implements
|
|
||||||
from twisted.trial import unittest
|
from twisted.trial import unittest
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
from twisted.python import log
|
from twisted.python import log
|
||||||
|
|
||||||
from foolscap import Tub, Referenceable
|
from foolscap.eventual import flushEventualQueue
|
||||||
from foolscap.eventual import fireEventually, flushEventualQueue
|
|
||||||
from twisted.application import service
|
from twisted.application import service
|
||||||
import allmydata
|
|
||||||
from allmydata.node import Node, formatTimeTahoeStyle
|
from allmydata.node import Node, formatTimeTahoeStyle
|
||||||
from allmydata.util import testutil, fileutil
|
from allmydata.util import testutil, fileutil
|
||||||
from allmydata import logpublisher
|
|
||||||
|
|
||||||
class LoggingMultiService(service.MultiService):
|
class LoggingMultiService(service.MultiService):
|
||||||
def log(self, msg, **kw):
|
def log(self, msg, **kw):
|
||||||
@ -59,16 +55,3 @@ class TestCase(unittest.TestCase, testutil.SignalMixin):
|
|||||||
self.failUnless("Z" in t)
|
self.failUnless("Z" in t)
|
||||||
t2 = formatTimeTahoeStyle("ignored", int(time.time()))
|
t2 = formatTimeTahoeStyle("ignored", int(time.time()))
|
||||||
self.failUnless("Z" in t2)
|
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
|
import os
|
||||||
from twisted.trial import unittest
|
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 bencode, idlib, humanreadable, mathutil
|
||||||
from allmydata.util import assertutil, fileutil, testutil, log
|
from allmydata.util import assertutil, fileutil, testutil
|
||||||
|
|
||||||
|
|
||||||
class IDLib(unittest.TestCase):
|
class IDLib(unittest.TestCase):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user