Version 30 (modified by desai, 17 years ago) (diff) |
---|
Bcfg2 Client Code Refactoring
This branch is for work in decomposing the platform-specific client modules into service/packaging system-specific modules; the platform-specific modules will then just import the service/packaging system-specific modules they require (e.g. Redhat.py would import rpm.py and chkconfig.py, all the platforms will import encap.py, etc.)
A mailing list thread with more discussion of this is here:
Ticket #73 describes some aspects of this issue.
NLD's 4-Step Plan
- create classes in Bcfg2.Client.Tools that defines an API for all tools (Implemented as Bcfg2.Client.Tools.Tool, Bcfg2.Client.Tools.PkgTool?, and Bcfg2.Client.SvcTool?). All Tools will subclass one of these (Bcfg2.Client.Tools.RPM, Bcfg2.Client.Tools.SMF, etc) [DONE]
- build a set of error types that can be raised during tool instantiation and operation [DONE]
- Implement a tool class for each underlying tool. (see table below for status)
- modify the Bcfg2.Client.Frame code to figure out what methods to call tools for entry verification, installation and removal.
- is things like schema updates and metadata code updates
Implementation Status
This work is happening at:
https://svn.mcs.anl.gov/repos/bcfg/branches/refactor/client
Bcfg2.Client.Frame is nearly completely finished. (It mainly redirects calls to underlying tools.)
Tool | Status | Who |
RPM | done | NLD |
POSIX | done | NLD |
Encap | done | DC |
SYSV | done | NLD |
Pkg-get (Blastwave) | done | NLD |
APT | done | NLD |
ChkConfig? | done | NLD |
SMF | done | NLD |
DebInit? | ||
SolInit? | ||
PostInstall? | ||
Launchd | TL | |
Emerge |
(V == Verify/I == Install/E == Extra detection/R == Removal)
Design Notes
Bcfg2.Client.Frame redirects calls to underlying tools. Its methods are:
- Inventory - Compare client state to configuration specification
- Install - Install wrong entries (sparsely, if specified)
- FindExtra - Locate extra entries using tool-specific heuristics
- Query - get user input of which entries should be modified
- Remove - remove specified extra entries
Tool methods:
- Verify<entry.tag> - verify entry state. Must return True/False?
- Install<entry.tag> - install entry. Must return True/False?
- Install (optional) - bulk install method for entries
- FindExtra - locate extra entries
Writing a Client Tool Module
See WritingClientToolDrivers for details.