= Useful Links for Developers = [[TracNav]] Links for developers wishing to develop or modify Quattor components or services: == Project Conventions == * [wiki:Web/CodingStyle Coding style document] * [https://twiki.cern.ch/twiki/bin/view/ELFms/QuattorDvpConventions Quattor modules layout] * [wiki:Web/PerlNamespaces Namespaces for PERL modules] * [wiki:CommandRenaming Command renaming] == Build Framework == The Quattor community is moving from a make-based system to one driven by maven. This shift is being done in order to simplify the build tools and to take better advantage of existing software development tools (e.g. for continuous integration). The focus will initially be on migrating the Quattor configuration components. Instructions for using both the old build system and the newer one are below. * [wiki:Web/QuattorBuildFramework Using OLD Quattor build tools] * [wiki:Web/UsingMaven Using maven build tools] == Software Development Tools == === Source Repository === The Quattor source code is managed through a Subversion repository at SourceForge. This includes the core Quattor tools as well as the configuration components. Currently, the community's common configuration for grid services resides in another repository. * Browse [http://quattor.git.sourceforge.net/git/gitweb-index.cgi Aquilon-related repositories]. All other repositories are obsoleted * Browse the [https://github.com/quattor code that makes it into our releases] * [wiki:Web/WorkingWithQuattorSourceCode Checkout code] === Generated Packages & Artifacts === The project is currently migrating to the use of maven for managing the Quattor build and release processes. For the parts of the Quattor toolkit that have migrated, there are maven repositories available: one for snapshots (development packages) and another for production releases. These can be viewed with a standard web browser or used through maven. The access and configuration information for the two repositories follows. Note: Currently those needing access for uploading to the repositories can request it. Eventually, upload access will be restricted only to the official build system. ==== Snapshot (Development) Repository ==== [http://stratuslab-srv01.lal.in2p3.fr:8081/content/repositories/quattor-snapshots/ Browse the development repository] or configure maven as follows. {{{ #!xml quattor-snapshots quattor-snapshotsname> http://stratuslab-srv01.lal.in2p3.fr:8081/content/repositories/quattor-snapshots/ }}} ==== Releases Repository ==== [http://stratuslab-srv01.lal.in2p3.fr:8081/content/repositories/quattor-releases/ Browse the releases repository] or configure maven as follows. {{{ #!xml quattor-releases quattor-releases http://lapp-repo01.in2p3.fr:8081/nexus/content/repositories/releases/ }}} In most cases, this is already provided by the parent POM. ==== Release process ==== * [wiki:Development/ReleaseProcess Documentation of the release process] === Bug tracking === See [wiki:Web/Contacts Contacts] page. == Configuration Modules == Before developing a new configuration module, please search the existing code repository to ensure that there is not already something similar. Also send an email to the Quattor discussion list to see if anyone else has a private configuration module or is interested in collaborating with you. A [http://quattor.sourceforge.net/components.html list of components along with their man pages] is available on the web. To create a working skeleton Quattor configuration module, use maven to create one from the standard "archetype". Use the following command: {{{ #!sh mvn archetype:generate \ -DarchetypeArtifactId=cfg-module \ -DarchetypeGroupId=org.quattor.maven \ -DarchetypeVersion=1.31 }}} Use the standard groupId for the component if this will become part of the Quattor repository. Once generated, you can ensure that the component compiles with `mvn package`. You should then modify the perl module and pan language files as appropriate for the component that you are building. == Pan language == * [wiki:Doc/panc pan documentation] * [wiki:Doc/panc/language pan development roadmap] == Gory details of some procedures and modules == * [wiki:Development/TestingComponents Automatic testing for components] * [wiki:YumAndSPMA Yum as a backend for SPMA] == To discuss == * [wiki:Web/VirtualMachinesMigration How to model virtual machine migration] * [wiki:TemplateToolkit Using the Template Toolkit] for simplifying the final representations. * [wiki:Development/PrePostActionsNCMNCD Configuring specific actions in ncm-ncd]