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)