Background

In a cluster, HTCondor binaries and configuration files are placed on the head node. Worker nodes access these files via shared file system. Thus, drone rpm is designed to install on these worker nodes.

Design

  1. The head node will install HTCondor by using normal RPM with relocate option.
  2. The worker node will install drone rpm which is basically a bunch of scripts that will start HTCondor from shared file system.
  3. Condor_master_wrapper is a python script that act like a master but it will copy the master binary to local file system before starting it. It will also update the master if there is change in the share folder.
  4. Profile.d script is provided so that necessary environment variables are set (PATH, CONDOR_CONFIG). Manpath is not set because man will be able to find manpages by itself.

Implementation

RPM Installation Behavior

pre (pre-install)

  1. Add 'HTCondor' user/group if not exists

postinst

  1. Add HTCondor service (chkconfig --add)

preun

  1. Call init script to stop HTCondor only if we are removing the last instance of HTCondor (not include upgrading). If the init script fails, abort the uninstall
  2. Remove HTCondor service (chkconfig --del)

postun

  1. Do nothing

Package Building

Related Files

File Description
src/condor_scripts/native/SPECS/condor-minimal.spec Spec file
src/condor_scripts/make_native_packages.pl Main script
src/condor_examples/condor.boot.vdt Used for /etc/init.d/condor
src/condor_examples/condor.sh /etc/profile.d/condor.sh
src/condor_examples/condor.csh /etc/profile.d/condor.csh
src/condor_examples/condor.sysconfig Template for sysconfig file
src/condor_examples/condor.sysconfig.drone.patch Patch for default parameters in Drone RPM

Build Process

After creating normal RPM, make_native_packages.pl will populate the build area with files required for building drone rpm. Then it will invoke rpmbuild to create the package.