| --- |
| title: Code Structure |
| --- |
| |
| Brooklyn is split into the following subprojects: |
| |
| * **brooklyn-server**: |
| * **api**: the pure-Java interfaces for interacting with the system |
| * **camp**: the components for a server which speaks with the CAMP REST API and understands the CAMP YAML plan language |
| * **core**: the base class implementations for entities and applications, entity traits, locations, policies, sensor and effector support, tasks, and more |
| * **karaf**: OSGi support |
| * **launcher**: for launching brooklyn, either using a main method or invoked from the cli project |
| * **locations**: specific location integrations |
| * **jclouds**: integration with many cloud APIs and providers via Apache jclouds |
| * **logging**: how we enable configurable logging |
| * **logback-includes**: Various helpful logback XML files that can be included; does not contain logback.xml |
| * **logback-xml**: Contains a logback.xml that references the include files in brooklyn-logback-includes |
| * **parent**: a meta-project parent to collect dependencies and other maven configuration for re-use |
| * **policy**: collection of useful policies for automating entity activity |
| * **rest**: supporting the REST API |
| * **rest-api**: The API classes for the Brooklyn REST api |
| * **rest-client**: A client Java implementation for using the Brooklyn REST API |
| * **rest-server**: The server-side implementation of the Brooklyn REST API |
| * **server-cli**: implementation of the Brooklyn *server* command line interface; not to be confused with the client CLI |
| * **software**: support frameworks for creating entities which mainly launch software processes on machines |
| * **base**: software process lifecycle abstract classes and drivers (e.g. SSH) |
| * **winrm**: support for connecting to Windows machines |
| * **test-framework**: provides Brooklyn entities for building YAML tests for other entities |
| * **test-support**: provides Brooklyn-specific support for Java TestNG tests, used by nearly all projects in scope ``test``, building on `utils/test-support` |
| * **utils**: projects with lower level utilities |
| * **common**: Utility classes and methods developed for Brooklyn but not dependent on Brooklyn |
| * **groovy**: Groovy extensions and utility classes and methods developed for Brooklyn but not dependent on Brooklyn |
| * **jmx/jmxmp-ssl-agent**: An agent implementation that can be attached to a Java process, to give expose secure JMXMP |
| * **jmx/jmxrmi-agent**: An agent implementation that can be attached to a Java process, to give expose JMX-RMI without requiring all high-number ports to be open |
| * **rest-swagger**: Swagger REST API utility classes and methods developed for Brooklyn but not dependent on Brooklyn |
| * **test-support**: Test utility classes and methods developed for Brooklyn but not dependent on Brooklyn |
| |
| * **brooklyn-ui**: Javascript web-app for the brooklyn management web console (builds a WAR) |
| |
| * **brooklyn-library**: a library of useful blueprints |
| * **examples**: some canonical examples |
| * **qa**: longevity and stress tests |
| * **sandbox**: experimental items |
| * **software**: blueprints for software processes |
| * **webapp**: web servers (JBoss, Tomcat), load-balancers (Nginx), and DNS (Geoscaling) |
| * **database**: relational databases (SQL) |
| * **nosql**: datastores other than RDBMS/SQL (often better in distributed environments) |
| * **messaging**: messaging systems, including Qpid, Apache MQ, RabbitMQ |
| * **monitoring**: monitoring tools, including Monit |
| * **osgi**: OSGi servers |
| |
| * **brooklyn-docs**: the markdown source code for this documentation |
| |
| * **brooklyn-dist**: projects for packaging Brooklyn and making it easier to consume |
| * **all**: maven project to supply a shaded JAR (containing all dependencies) for convenience |
| * **archetypes**: A maven archetype for easily generating the structure of new downstream projects |
| * **dist**: builds brooklyn as a downloadable .zip and .tar.gz |
| * **scripts**: various scripts useful for building, updating, etc. (see comments in the scripts) |