You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Alan Conway <ac...@redhat.com> on 2014/05/22 04:50:39 UTC

Unified configuration and management for dispatch.

I've been thinking about dispatch configuration, and have a
proposal. Feedback requested!

First a question: Is anybody working on a standard notation for the AMQP
type system?  I need a notation for management events, JSON seems a good
choice but there may be a better one.

There are many possible configuration scenarios including:
- read a simple config file for initial configuration
- deployment: generate custom startup configurations for many routers in
  some topology.
- dynamic provisioning: modify configuration of running routers
- provisioning repository: central repository for configuration
  - push: repository knows router topology and sends configuration to
    routers.
  - pull: routers contact repository and request configuration

A full-service scenario would be: 
- generate and deploy simple config files with router-ids and
  config-repository location.
- routers request initial config from repo.
- Admin can make config changes at repo which are pushed to routers.

We probably don't know all the possible configuration scenarios yet.

I want to reduce this down to a few configuration primitives so we can
have maximum flexibility with minimum code. I propose the following:

- define configuration as AMQP management actions (messages), define a
  schema
- consider qdrouter.conf files as shorthand for a set of "create"
  actions, so .conf file schema becomes the "create" subset of the
  management schema.
- implement _all_ configuration on the router as executing a management
  action.  E.g. reading a config file is parsing it as "create" actions
  and executing them.
- Get rid of any "startup" assumptions in the config code, so any action
  can be executed by a running router.
- provide a python library with:
  - tools for converting between .conf files, json, python maps and AMQP
    management messages.
  - tools for building configurations programatically (as python maps)
  - agent to send management messages to a remote router

We have most of the pieces:
- tests/system_tests.py: has constructing configs & converting to conf
  files.
- qpid_router_internal/schema, parser: also has conf file conversion &
  construction stuff.
- qdstat tool: has part of the agent functionality (missing the create
  actions)
- router_config.c: has the code to apply configuration, allow it to be
  invoked via management messages, get rid of any startup assumptions.

I would like to refactor the python bits (tests, tools, internals) to
use a commmon library and avoid duplication. I don't think we have the
full management schema written down, I would see that as extending the
existing config schema in python.

Does this seem like a sensible way to go?

Cheers,
Alan.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org