veyron/services/mgmt/node: Hook up the logreader
This change hooks up the logreader implementation to the node manager
apps objects.
Change-Id: I8ccca706a34b02fea32e31ca5a3ca1696fbca15f
diff --git a/services/mgmt/node/impl/dispatcher.go b/services/mgmt/node/impl/dispatcher.go
index ffc2cf6..655e758 100644
--- a/services/mgmt/node/impl/dispatcher.go
+++ b/services/mgmt/node/impl/dispatcher.go
@@ -15,10 +15,12 @@
vflag "veyron.io/veyron/veyron/security/flag"
"veyron.io/veyron/veyron/security/serialization"
"veyron.io/veyron/veyron/services/mgmt/lib/toplevelglob"
+ logsimpl "veyron.io/veyron/veyron/services/mgmt/logreader/impl"
inode "veyron.io/veyron/veyron/services/mgmt/node"
"veyron.io/veyron/veyron/services/mgmt/node/config"
"veyron.io/veyron/veyron2/ipc"
+ "veyron.io/veyron/veyron2/naming"
"veyron.io/veyron/veyron2/rt"
"veyron.io/veyron/veyron2/security"
"veyron.io/veyron/veyron2/services/mgmt/node"
@@ -245,6 +247,15 @@
})
return ipc.ReflectInvoker(receiver), d.auth, nil
case appsSuffix:
+ if method != "Glob" && len(components) >= 5 && components[4] == "logs" {
+ appInstanceDir, err := instanceDir(d.config.Root, components[1:4])
+ if err != nil {
+ return nil, nil, err
+ }
+ logsDir := filepath.Join(appInstanceDir, "logs")
+ suffix := naming.Join(components[5:]...)
+ return logsimpl.NewLogFileInvoker(logsDir, suffix), d.auth, nil
+ }
receiver := node.NewServerApplication(&appInvoker{
callback: d.internal.callback,
config: d.config,