Add daemon instance to Jython shell session

Given that the Daemon instance contains all Guices injectors, all Guice
bindings can be reached from the Daemon instance.  Expose Daemon instance
to the Jython shell session as "d" variable.

For example to dump the global capabilities:

  >>> from com.google.gerrit.server.config import AllProjectsNameProvider
  >>> from com.google.gerrit.server.git.MetaDataUpdate import Server
  >>> from com.google.gerrit.server.git import ProjectConfig
  >>> i = d.sysInjector
  >>> allProjectsNameProvider = i.getInstance(AllProjectsNameProvider)
  >>> metaUpdateFactory = i.getInstance(Server)
  >>> md = metaUpdateFactory.create(allProjectsNameProvider.get())
  >>> cfg = ProjectConfig.read(md)
  >>> s = cfg.getAccessSection("GLOBAL_CAPABILITIES", True)
  >>> for p in s.getPermissions():
  >>> ...   print p
  ...
  accessDatabase [group Administrators]
  administrateServer [group Administrators]
  [...]
  streamEvents [group Non-Interactive Users]
  >>>

Change-Id: If5de7491e55002fff6078741deb43d1dc3ed855e
This commit is contained in:
David Ostrovsky
2013-11-06 22:13:11 +01:00
parent 0743d8a100
commit 947a80fde1
2 changed files with 2 additions and 4 deletions

View File

@@ -180,11 +180,8 @@ defined in the interpreter:
"schk" is "com.google.gerrit.server.schema.SchemaVersionCheck@5e8cb9bd"
"ds" is "com.google.gerrit.server.schema.DataSourceProvider@6b3592c"
"m" is "com.google.gerrit.lifecycle.LifecycleManager@6f03b248"
"q" is "com.google.gerrit.reviewdb.server.ReviewDb_Schema_GwtOrm$$23@56d3384d"
"Shell" is "com.google.gerrit.pgm.shell.JythonShell@61644f2d"
"x" is "com.google.gerrit.reviewdb.client.PatchLineComment@518acfa7"
"z" is "com.google.gwtorm.jdbc.Database@668dfd9b"
"db" is "com.google.gerrit.reviewdb.server.ReviewDb_Schema_GwtOrm$$23@6a3ccb09"
"d" is "com.google.gerrit.pgm.Daemon@28a3f689"
Welcome to the Gerrit Inspector
Enter help() to see the above again, EOF to quit and stop Gerrit

View File

@@ -226,6 +226,7 @@ public class Daemon extends SiteProgram {
shell.set("m", manager);
shell.set("ds", dbInjector.getInstance(DataSourceProvider.class));
shell.set("schk", dbInjector.getInstance(SchemaVersionCheck.class));
shell.set("d", this);
shell.run();
} else {
RuntimeShutdown.waitFor();