wiki:RefactorClient

Version 5 (modified by desai, 13 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.

Desai's 4-Step Plan

  1. create a module Bcfg2.Client.Tool.BaseTool that defines an API for all tools (things like Bcfg2.Client.Tool.RPM and Bcfg2.Client.Tool.SMF, etc)
  2. build a set of error types that can be raised during tool instantiation and operation
  3. modify the Bcfg2.Client.Frame code to figure out what methods to call tools for entry verification, installation and removal.
  4. is things like schema updates and metadata code updates

Desai might try to hack up a baseline for the BaseTool class soon.

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.)

ToolStatusWho
RPMVerify-OnlyNLD
POSIXVerify-OnlyNLD
EncapDC
APTNLD
SYSV
ChkConfig?CL
Update-RC.d
SMF
Launchd
Emerge