Each vhost "$HOST" directive creates a $HOST.vhost file in $DOMTOOL/nodes. A change handler for .vhost files copies them to /var/domtool/vhosts. A post-handler runs domtool-publish apache, which rsyncs /var/domtool/vhosts to /etc/apache2/vhosts after any vhost has changed and runs /etc/init.d/apache2 reload to reload configuration.
The Apache plugin also manages creation and deletion of log directories. Each member should have an apache/log subdirectory of his AFS volume root, owned by domtool with read permissions for the member. The plugin creates a directory /afs/hcoop/usr/$USER/apache/log/$NODE/$HOST for each virtual host running on $NODE as $USER with full hostname $HOST. When a vhost is deleted, the plugin deletes its log directory. Since this can't be done while Apache is running, because the daemon maintains open file handles to logs, the plugin has to take Apache down until configuration is finished, reloading it afterward. Hopefully domains aren't deleted very often, so this shouldn't be much of a problem.
Apache also provides hooks that other plugins can use to request callbacks just before and/or after a vhost is configured.