Koji Components ====================== Koji is comprised of several components: Koji-Hub ---------- koji-hub is the center of all Koji operations. It is an XML-RPC server running under mod_python in Apache. koji-hub is passive in that it only receives XML-RPC calls and relies upon the build daemons and other components to initiate communication. koji-hub is the only component that has direct access to the database and is one of the two components that have write access to the file system. Kojid ------- kojid is the build daemon that runs on each of the build machines. Its primary responsibility is polling for incoming build requests and handling them accordingly. Essentially kojid asks koji-hub for work. Koji also has support for tasks other than building. Creating install images is one example. kojid is responsible for handling these tasks as well. kojid uses mock for building. It also creates a fresh buildroot for every build. kojid is written in Python and communicates with koji-hub via XML-RPC. Koji-Web ---------- koji-web is a set of scripts that run in mod_python and use the Cheetah templating engine to provide a web interface to Koji. It acts as a client to koji-hub providing a visual interface to preform a limited amount of administration. koji-web exposes a lot of information and also provides a means for certain operations, such as cancelling builds. Koji-client ------------- koji-client is a CLI written in Python that provides many hooks into Koji. It allows the user to query much of the data as well as perform actions such as adding users and initiating build requests. Kojira --------- kojira is a daemon that keeps the build root repodata updated. It is responsible for removing redundant build roots and cleaning up after a build request is completed.