Sunday, March 12, 2006

pymon Shell Sprint Overview

pycon :: pymon :: twisted


Well, this is about a week late, but I've been sick as a dog for that
same period, so perhaps I can be forgiven ;-) Having been gone from
Colorado for two weeks (the most extended absence since I moved here),
I have to say that Evelyn Mitchell is right: there is *nothing* like
the water here at the foothills of the Rockies. Nothing. I couldn't
believe it, actually. I had to keep drinking to make sure it wasn't
some strange mental effect. After a week, I'm finally getting used to
the pure goodness of it again, but I will rest very happy knowing how
amazing the water is that I take in every day. Oh, and the air too.
When I stepped off the plane in Denver, I wanted to kiss the ground.
The air was a flood of clean sanity in an insanely polluted world.


Back to the sprint summary. Right before I packed up to leave on the
last day of the sprints, I sent a similar message to the pymon mail
list. With a few edits, here it is again.

What's done? Architecture.


  • initial coding for second round of grammar

  • initial tie-ins for higher-level application logic

  • shellparser.Grammar() has moved out of the sandbox and into it's
    own module at pymon.grammar.Grammar()

  • shellparser.ShellParser() has moved out of the sandbox and into
    pymon.parser.Shell()

What needs to be done? A little architecture touch-up and fairly
straight-forward implementation.


  • refine the grammar (introspection?) so that we can at least do
    auto-completion with tab

  • add extensive docstrings to the classes and methods for use with
    "help"

  • refine grammar to get "help" for various commands (tied closely to
    the previous two bullets)

  • add support to ZConfig schema and pymon.conf for named nodes (named
    services?) -- very easy

  • querying in-memory configuration -- very easy

  • querying in-memory service status -- a little more involved, but
    not bad

To finish the move out of the sandbox and into the lib, the following
has to happen:


  • shell.tac gets *completely* rewritten as Shell() or
    LineReceiverShell() in pymon.services() with shell-specific
    configuration added to schema.xml/pymon.conf and then plugged into
    pymon.tac.

The grammar and shell parsing seem to be very flexible, so we should be
able to use them with services like XML-RPC, jabber, and email with few
or no changes/additions.


No comments: