provisionr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From as...@apache.org
Subject [2/2] git commit: PROVISIONR-33. Extract templates from core as standalone examples sub-module
Date Wed, 05 Jun 2013 20:31:39 GMT
PROVISIONR-33. Extract templates from core as standalone examples sub-module


Project: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/commit/78166fe3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/tree/78166fe3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-provisionr/diff/78166fe3

Branch: refs/heads/master
Commit: 78166fe3ac77d484bf4084ac30c570a105cb8d3b
Parents: 358ee90
Author: Andrei Savu <asavu@apache.org>
Authored: Tue Jun 4 00:53:25 2013 +0300
Committer: Andrei Savu <asavu@apache.org>
Committed: Wed Jun 5 19:28:16 2013 +0300

----------------------------------------------------------------------
 README.md                                          |    9 +-
 api/pom.xml                                        |    6 +-
 core/pom.xml                                       |   24 +--
 .../provisionr/core/templates/xml/XmlTemplate.java |   18 +-
 core/src/main/resources/features.xml               |   12 --
 .../org/apache/provisionr/core/templates/cdh3.xml  |  108 ----------
 .../org/apache/provisionr/core/templates/cdh4.xml  |   59 ------
 .../apache/provisionr/core/templates/jenkins.xml   |  132 -------------
 .../core/templates/PoolTemplateInstallerTest.java  |    8 +-
 .../core/templates/xml/XmlTemplateTest.java        |   46 -----
 examples/pom.xml                                   |  151 +++++++++++++++
 .../main/resources/OSGI-INF/blueprint/context.xml  |   21 ++
 examples/src/main/resources/features.xml           |   38 ++++
 .../apache/provisionr/examples/templates/cdh3.xml  |  108 ++++++++++
 .../apache/provisionr/examples/templates/cdh4.xml  |   59 ++++++
 .../provisionr/examples/templates/jenkins.xml      |  132 +++++++++++++
 .../core/templates/xml/ExampleTemplatesTest.java   |   77 ++++++++
 integration/rundeck/pom.xml                        |    5 +-
 .../provisionr/commands/CreatePoolCommandTest.java |    6 +-
 .../commands/ListTemplatesCommandTest.java         |   12 +-
 .../provisionr/commands/templates/test-1.xml       |   54 +++++
 .../provisionr/commands/templates/test-2.xml       |   54 +++++
 karaf/features/pom.xml                             |    7 +-
 karaf/features/src/main/resources/features.xml     |    5 +
 parent/pom.xml                                     |   15 ++
 pom.xml                                            |    1 +
 providers/amazon-tests/pom.xml                     |    4 +
 .../amazon/AmazonProvisionrLiveTest.java           |   49 ++++--
 test-support/pom.xml                               |    3 +-
 29 files changed, 800 insertions(+), 423 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 67e88a6..ad380df 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,11 @@ Apache Provisionr
 
 *Simple Service for Managing Pools of 10s or 100s of Virtual Machines*
 
-With Provisionr we want to solve the problem of cloud portability by hiding completely the API and only focusing on building a cluster that matches the same set of assumptions on all clouds, assumptions like: running a specific operating system (e.g. Ubuntu LTS), having the same set of pre-installed packages and binaries, sane dns settings (forward & reverse ip resolution - as needed for [Hadoop](http://hadoop.apache.org/)), ntp settings, networking settings, ssh admin access, vpn access etc.
+With Provisionr we want to solve the problem of cloud portability by hiding completely the API and only
+focusing on building a cluster that matches the same set of assumptions on all clouds, assumptions like:
+running a specific operating system (e.g. Ubuntu LTS), having the same set of pre-installed packages and
+binaries, sane dns settings (forward & reverse ip resolution - as needed for [Hadoop](http://hadoop.apache.org/)),
+ntp settings, networking settings, ssh admin access, vpn access etc.
 
 Features
 --------
@@ -39,7 +43,8 @@ http://apache.org/licenses/LICENSE-2.0.txt
 Supported cloud providers
 -------------------------
 
-We are working on making all this run as expected on [Amazon EC2](http://aws.amazon.com/ec2/) & [CloudStack](http://incubator.apache.org/cloudstack/) 
+We are working on making all this run as expected on [Amazon EC2](http://aws.amazon.com/ec2/)
+(as a reference implementation) & [CloudStack](http://incubator.apache.org/cloudstack/)
 
 How to create a distribution?
 -----------------------------

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/api/pom.xml
----------------------------------------------------------------------
diff --git a/api/pom.xml b/api/pom.xml
index c48fa8e..6b064d8 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -16,7 +16,8 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.provisionr</groupId>
@@ -26,6 +27,8 @@
     </parent>
 
     <name>Apache Provisionr :: API</name>
+    <description>Core domain classes that describe pools of virtual machines</description>
+
     <artifactId>provisionr-api</artifactId>
     <packaging>bundle</packaging>
 
@@ -54,6 +57,7 @@
                 <configuration>
                     <outputDirectory>${basedir}/target/classes</outputDirectory>
                     <instructions>
+                        <!-- Inject as fragment to make the objects accessible inside the processes -->
                         <Fragment-Host>org.activiti.engine</Fragment-Host>
                         <Export-Package>org.apache.provisionr.api*</Export-Package>
                         <Private-Package>!*</Private-Package>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 8652732..5db10e9 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -17,7 +17,8 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <groupId>org.apache.provisionr</groupId>
         <artifactId>provisionr-parent</artifactId>
@@ -178,27 +179,6 @@
                                     <type>cfg</type>
                                     <classifier>fileinstall</classifier>
                                 </artifact>
-                                <artifact>
-                                    <file>
-                                        ${project.build.directory}/classes/org/apache/provisionr/core/templates/cdh3.xml
-                                    </file>
-                                    <type>template</type>
-                                    <classifier>cdh3</classifier>
-                                </artifact>
-                                <artifact>
-                                    <file>
-                                        ${project.build.directory}/classes/org/apache/provisionr/core/templates/cdh4.xml
-                                    </file>
-                                    <type>template</type>
-                                    <classifier>cdh4</classifier>
-                                </artifact>
-                                <artifact>
-                                    <file>
-                                        ${project.build.directory}/classes/org/apache/provisionr/core/templates/jenkins.xml
-                                    </file>
-                                    <type>template</type>
-                                    <classifier>jenkins</classifier>
-                                </artifact>
                             </artifacts>
                         </configuration>
                     </execution>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java b/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
index cb77409..da2bba3 100644
--- a/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
+++ b/core/src/main/java/org/apache/provisionr/core/templates/xml/XmlTemplate.java
@@ -18,15 +18,6 @@
 
 package org.apache.provisionr.core.templates.xml;
 
-import org.apache.provisionr.api.network.Network;
-import org.apache.provisionr.api.network.NetworkBuilder;
-import org.apache.provisionr.api.network.Rule;
-import org.apache.provisionr.api.pool.Pool;
-import org.apache.provisionr.api.pool.PoolBuilder;
-import org.apache.provisionr.api.software.Repository;
-import org.apache.provisionr.api.software.Software;
-import org.apache.provisionr.api.software.SoftwareBuilder;
-import org.apache.provisionr.core.templates.PoolTemplate;
 import com.google.common.annotations.VisibleForTesting;
 import static com.google.common.base.Preconditions.checkNotNull;
 import com.google.common.base.Throwables;
@@ -44,6 +35,15 @@ import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElementWrapper;
 import javax.xml.bind.annotation.XmlRootElement;
+import org.apache.provisionr.api.network.Network;
+import org.apache.provisionr.api.network.NetworkBuilder;
+import org.apache.provisionr.api.network.Rule;
+import org.apache.provisionr.api.pool.Pool;
+import org.apache.provisionr.api.pool.PoolBuilder;
+import org.apache.provisionr.api.software.Repository;
+import org.apache.provisionr.api.software.Software;
+import org.apache.provisionr.api.software.SoftwareBuilder;
+import org.apache.provisionr.core.templates.PoolTemplate;
 
 /**
  * Basic representation of a pool template

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/features.xml b/core/src/main/resources/features.xml
index 09dc33c..d83d815 100644
--- a/core/src/main/resources/features.xml
+++ b/core/src/main/resources/features.xml
@@ -62,17 +62,5 @@
         <configfile finalname="/etc/org.apache.felix.fileinstall-templates.cfg">
             mvn:org.apache.provisionr/provisionr-core/${project.version}/cfg/fileinstall
         </configfile>
-
-        <configfile finalname="/templates/cdh3.xml">
-            mvn:org.apache.provisionr/provisionr-core/${project.version}/template/cdh3
-        </configfile>
-
-        <configfile finalname="/templates/cdh4.xml">
-            mvn:org.apache.provisionr/provisionr-core/${project.version}/template/cdh4
-        </configfile>
-
-        <configfile finalname="/templates/jenkins.xml">
-            mvn:org.apache.provisionr/provisionr-core/${project.version}/template/jenkins
-        </configfile>
     </feature>
 </features>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/main/resources/org/apache/provisionr/core/templates/cdh3.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/org/apache/provisionr/core/templates/cdh3.xml b/core/src/main/resources/org/apache/provisionr/core/templates/cdh3.xml
deleted file mode 100644
index a289182..0000000
--- a/core/src/main/resources/org/apache/provisionr/core/templates/cdh3.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<template id="cdh3" os-version="10.04 LTS">
-    <description>
-        Cloudera CDH3 template for Ubuntu 10.04 LTS (lucid) including the Cloudera Manager installer
-    </description>
-    <packages>
-        <package>cloudera-manager-agent</package>
-        <package>cloudera-manager-daemons</package>
-        <package>oracle-j2sdk1.6</package>
-        <package>hadoop-0.20</package>
-        <package>hadoop-0.20-native</package>
-        <package>hadoop-hive</package>
-        <package>hadoop-pig</package>
-        <package>oozie-client</package>
-        <package>oozie</package>
-        <package>hue-plugins</package>
-        <package>hue-common</package>
-        <package>hue-proxy</package>
-        <package>hue-about</package>
-        <package>hue-help</package>
-        <package>hue-filebrowser</package>
-        <package>hue-jobsub</package>
-        <package>hue-beeswax</package>
-        <package>hue-useradmin</package>
-        <package>hue-shell</package>
-        <package>hue</package>
-    </packages>
-    <ports>
-        <port>7180</port>
-        <port>8888</port>
-        <port>8080</port>
-    </ports>
-    <files>
-        <file source="http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin"
-              destination="/opt/cloudera-manager-installer.bin"/>
-    </files>
-    <repositories>
-        <repository id="cloudera-cdh3">
-            <entries>
-                <entry>deb http://archive.cloudera.com/debian lucid-cdh3 contrib</entry>
-            </entries>
-            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
-GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
-dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
-EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
-/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
-PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
-ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
-kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
-znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
-QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
-Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
-Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
-NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
-8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
-7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
-GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
-tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
-f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
-jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
-Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
-6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
-ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
-gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
-oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
-=H6IR
------END PGP PUBLIC KEY BLOCK-----]]></key>
-        </repository>
-        <repository id="cloudera-cm4">
-            <entries>
-                <entry>deb http://archive.cloudera.com/cm4/ubuntu/lucid/amd64/cm lucid-cm4 contrib</entry>
-                <entry>deb-src http://archive.cloudera.com/cm4/ubuntu/lucid/amd64/cm lucid-cm4 contrib</entry>
-            </entries>
-            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
-GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
-dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
-EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
-/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
-PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
-ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
-kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
-znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
-QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
-Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
-Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
-NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
-8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
-7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
-GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
-tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
-f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
-jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
-Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
-6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
-ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
-gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
-oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
-=H6IR
------END PGP PUBLIC KEY BLOCK-----]]></key>
-        </repository>
-    </repositories>
-</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/main/resources/org/apache/provisionr/core/templates/cdh4.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/org/apache/provisionr/core/templates/cdh4.xml b/core/src/main/resources/org/apache/provisionr/core/templates/cdh4.xml
deleted file mode 100644
index bd9181b..0000000
--- a/core/src/main/resources/org/apache/provisionr/core/templates/cdh4.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<template id="cdh4" os-version="10.04 LTS">
-    <description>
-        Cloudera CDH4 template for Ubuntu 10.04 LTS (lucid)
-    </description>
-    <packages>
-        <package>openjdk-6-jdk</package>
-        <package>hadoop-0.20-mapreduce-jobtracker</package>
-        <package>hadoop-hdfs-namenode</package>
-        <package>hadoop-0.20-mapreduce-tasktracker</package>
-        <package>hadoop-hdfs-datanode</package>
-        <package>hadoop-client</package>
-        <package>xmlstarlet</package>
-    </packages>
-    <ports>
-        <port>7180</port>
-        <port>8888</port>
-        <port>8080</port>
-        <port>8020</port>
-        <port>50010</port>
-        <port>50020</port>
-    </ports>
-    <repositories>
-        <repository id="cloudera-cdh4">
-            <entries>
-                <entry>deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib</entry>
-            </entries>
-            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.9 (GNU/Linux)
-
-mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
-GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
-dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
-EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
-/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
-PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
-ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
-kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
-znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
-QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
-Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
-Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
-NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
-8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
-7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
-GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
-tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
-f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
-jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
-Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
-6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
-ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
-gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
-oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
-=H6IR
------END PGP PUBLIC KEY BLOCK-----]]></key>
-        </repository>
-    </repositories>
-</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/main/resources/org/apache/provisionr/core/templates/jenkins.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/org/apache/provisionr/core/templates/jenkins.xml b/core/src/main/resources/org/apache/provisionr/core/templates/jenkins.xml
deleted file mode 100644
index c7297f3..0000000
--- a/core/src/main/resources/org/apache/provisionr/core/templates/jenkins.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<template id="jenkins">
-    <description>A short template that installs the latest jenkins with git &amp; svn</description>
-    <packages>
-        <package>jenkins</package>
-        <package>git-core</package>
-        <package>subversion</package>
-    </packages>
-    <ports>
-        <port>8080</port>
-    </ports>
-    <repositories>
-        <repository id="jenkins">
-            <entries>
-                <entry>deb http://pkg.jenkins-ci.org/debian binary/</entry>
-            </entries>
-            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
-        Version: GnuPG v1.4.9 (GNU/Linux)
-
-        mQGiBEmFQG0RBACXScOxb6BTV6rQE/tcJopAEWsdvmE0jNIRWjDDzB7HovX6Anrq
-        n7+Vq4spAReSFbBVaYiiOx2cGDymj2dyx2i9NAI/9/cQXJOU+RPdDzHVlO1Edksp
-        5rKn0cGPWY5sLxRf8s/tO5oyKgwCVgTaB5a8gBHaoGms3nNC4YYf+lqlpwCgjbti
-        3u1iMIx6Rs+dG0+xw1oi5FUD/2tLJMx7vCUQHhPRupeYFPoD8vWpcbGb5nHfHi4U
-        8/x4qZspAIwvXtGw0UBHildGpqe9onp22Syadn/7JgMWhHoFw5Ke/rTMlxREL7pa
-        TiXuagD2G84tjJ66oJP1FigslJzrnG61y85V7THL61OFqDg6IOP4onbsdqHby4VD
-        zZj9A/9uQxIn5250AGLNpARStAcNPJNJbHOQuv0iF3vnG8uO7/oscB0TYb8/juxr
-        hs9GdSN0U0BxENR+8KWy5lttpqLMKlKRknQYy34UstQiyFgAQ9Epncu9uIbVDgWt
-        y7utnqXN033EyYkcWx5EhLAgHkC7wSzeSWABV3JSXN7CeeOif7QiS29oc3VrZSBL
-        YXdhZ3VjaGkgPGtrQGtvaHN1a2Uub3JnPohjBBMRAgAjAhsDBgsJCAcDAgQVAggD
-        BBYCAwECHgECF4AFAko/7vYCGQEACgkQm30y8tUFguabhgCgi54IQR4rpJZ/uUHe
-        ZB879zUWTQwAniQDBO+Zly7Fsvm0Mcvqvl02UzxCtC1Lb2hzdWtlIEthd2FndWNo
-        aSA8a29oc3VrZS5rYXdhZ3VjaGlAc3VuLmNvbT6IYAQTEQIAIAUCSj/qbQIbAwYL
-        CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEJt9MvLVBYLm38gAoIGR2+TQeJaCeEa8
-        CQhZYzDoiJkQAJ0cpmD+0VA+leOAr5LEccNVd70Z/dHNy83JARAAAQEAAAAAAAAA
-        AAAAAAD/2P/gABBKRklGAAEBAQBgAGAAAP/hAGBFeGlmAABJSSoACAAAAAQAMQEC
-        ABkAAAA+AAAAEFEBAAEAAAABQ5AAEVEEAAEAAAASCwAAElEEAAEAAAASCwAAAAAA
-        AE1hY3JvbWVkaWEgRmlyZXdvcmtzIDQuMAAA/9sAQwAIBgYHBgUIBwcHCQkICgwU
-        DQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy
-        /9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
-        MjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgArgCWAwEiAAIRAQMRAf/EAB8AAAEF
-        AQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQEC
-        AwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
-        NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqS
-        k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk
-        5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
-        C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGx
-        wQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla
-        Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
-        t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQAC
-        EQMRAD8A9wEj/wB9vzpfMf8Avt+dRinCpGSeY398/nS72/vH86YKBQBJvb+8fzpd
-        7f3j+dMFLQA/e394/nS7j6n86ZSimA7cfU07cfU1HnFOFADtx9aXJ9TTKUUxD8n1
-        pc+9Mp1AC5ozSUtAC0maKKADNFJ2ooAoCnCmilzWZQ6lFJSimAopaQUtAC54rOvN
-        dsLCTZPPGrdwXAry/wCKHxXfRppND0Mq16Bie5PIi9lHdv5V8/X+rXt/O8tzcyyy
-        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
-        =cjdq
-        -----END PGP PUBLIC KEY BLOCK-----
-    ]]></key>
-        </repository>
-    </repositories>
-</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/test/java/org/apache/provisionr/core/templates/PoolTemplateInstallerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/provisionr/core/templates/PoolTemplateInstallerTest.java b/core/src/test/java/org/apache/provisionr/core/templates/PoolTemplateInstallerTest.java
index bf03c1c..9e07dd5 100644
--- a/core/src/test/java/org/apache/provisionr/core/templates/PoolTemplateInstallerTest.java
+++ b/core/src/test/java/org/apache/provisionr/core/templates/PoolTemplateInstallerTest.java
@@ -23,8 +23,6 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.Dictionary;
 import org.apache.ibatis.io.Resources;
-import org.apache.provisionr.core.templates.PoolTemplate;
-import org.apache.provisionr.core.templates.PoolTemplateInstaller;
 import org.junit.Test;
 import org.mockito.Matchers;
 import static org.mockito.Matchers.any;
@@ -47,7 +45,7 @@ public class PoolTemplateInstallerTest {
         when(bundleContext.registerService(eq(PoolTemplate.class.getName()), any(),
             Matchers.<Dictionary<String, ?>>any())).thenReturn(registration);
 
-        File file = getPathToCdh3Template();
+        File file = getPathToTestTemplate();
         PoolTemplateInstaller installer = new PoolTemplateInstaller(bundleContext);
 
         installer.install(file);
@@ -59,7 +57,7 @@ public class PoolTemplateInstallerTest {
         verify(registration).unregister();
     }
 
-    private File getPathToCdh3Template() throws URISyntaxException, IOException {
-        return new File(Resources.getResourceURL("org/apache/provisionr/core/templates/cdh3.xml").toURI());
+    private File getPathToTestTemplate() throws URISyntaxException, IOException {
+        return new File(Resources.getResourceURL("templates/test.xml").toURI());
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/core/src/test/java/org/apache/provisionr/core/templates/xml/XmlTemplateTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/provisionr/core/templates/xml/XmlTemplateTest.java b/core/src/test/java/org/apache/provisionr/core/templates/xml/XmlTemplateTest.java
index c0ae6d7..68cb762 100644
--- a/core/src/test/java/org/apache/provisionr/core/templates/xml/XmlTemplateTest.java
+++ b/core/src/test/java/org/apache/provisionr/core/templates/xml/XmlTemplateTest.java
@@ -22,58 +22,12 @@ import com.google.common.base.Charsets;
 import static com.google.common.collect.Lists.newArrayList;
 import com.google.common.io.Resources;
 import java.io.IOException;
-import org.apache.provisionr.api.network.Network;
-import org.apache.provisionr.api.network.Rule;
-import org.apache.provisionr.api.software.Software;
 import org.apache.provisionr.core.BaseJaxbTest;
 import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
-import static org.fest.assertions.api.Assertions.assertThat;
 import org.junit.Test;
 
 public class XmlTemplateTest extends BaseJaxbTest {
 
-    public static final String DEFAULT_JENKINS_TEMPLATE = "org/apache/provisionr/core/templates/jenkins.xml";
-
-    public static final String DEFAULT_CDH3_TEMPLATE = "org/apache/provisionr/core/templates/cdh3.xml";
-
-    @Test
-    public void testLoadDefaultCdh3Template() throws Exception {
-        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_CDH3_TEMPLATE));
-
-        assertThat(template.getId()).isEqualTo("cdh3");
-        assertThat(template.getPackages()).contains("hue");
-        assertThat(template.getOsVersion()).isEqualTo("10.04 LTS");
-
-        assertThat(template.getRepositories()).hasSize(2);
-        assertThat(template.getFiles()).hasSize(1);
-    }
-
-    @Test
-    public void testApplyCdh3TemplateToNetworkAndSoftware() throws Exception {
-        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_CDH3_TEMPLATE));
-
-        Network network = template.apply(Network.builder().createNetwork());
-        assertThat(network.getIngress()).contains(
-            Rule.builder().anySource().tcp().port(8080).createRule());
-
-
-        Software software = template.apply(Software.builder().createSoftware());
-        assertThat(software.getPackages()).contains("hue").contains("hadoop-0.20");
-
-        assertThat(software.getFiles()).hasSize(1);
-        assertThat(software.getRepositories()).hasSize(2);
-    }
-
-    @Test
-    public void testLoadDefaultJenkinsTemplate() throws Exception {
-        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_JENKINS_TEMPLATE));
-
-        assertThat(template.getPorts()).contains(8080);
-        assertThat(template.getRepositories()).hasSize(1);
-
-        assertThat(template.getPackages()).contains("jenkins").contains("git-core");
-    }
-
     @Test
     public void testSerializeBasicTemplateAsXml() throws Exception {
         XmlTemplate template = new XmlTemplate();

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
new file mode 100644
index 0000000..667216d
--- /dev/null
+++ b/examples/pom.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.provisionr</groupId>
+        <artifactId>provisionr-parent</artifactId>
+        <version>0.4.0-incubating-SNAPSHOT</version>
+        <relativePath>../parent</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <name>Apache Provisionr :: Examples</name>
+    <description>Examples showing how to define templates and use the Java API</description>
+
+    <artifactId>provisionr-examples</artifactId>
+    <packaging>bundle</packaging>
+
+    <properties>
+        <osgi.import/>
+        <osgi.export>org.apache.provisionr.examples*</osgi.export>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.provisionr</groupId>
+            <artifactId>provisionr-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.easytesting</groupId>
+            <artifactId>fest-assert-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Import-Packages>${osgi.import}</Import-Packages>
+                        <Export-Packages>${osgi.export}</Export-Packages>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-artifacts</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    <file>${project.build.directory}/classes/features.xml</file>
+                                    <type>xml</type>
+                                    <classifier>features</classifier>
+                                </artifact>
+                                <artifact>
+                                    <file>
+                                        ${project.build.directory}/classes/org/apache/provisionr/examples/templates/cdh3.xml
+                                    </file>
+                                    <type>template</type>
+                                    <classifier>cdh3</classifier>
+                                </artifact>
+                                <artifact>
+                                    <file>
+                                        ${project.build.directory}/classes/org/apache/provisionr/examples/templates/cdh4.xml
+                                    </file>
+                                    <type>template</type>
+                                    <classifier>cdh4</classifier>
+                                </artifact>
+                                <artifact>
+                                    <file>
+                                        ${project.build.directory}/classes/org/apache/provisionr/examples/templates/jenkins.xml
+                                    </file>
+                                    <type>template</type>
+                                    <classifier>jenkins</classifier>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>features-maven-plugin</artifactId>
+                <version>${karaf.version}</version>
+                <executions>
+                    <execution>
+                        <id>add-features-to-repo</id>
+                        <phase>package</phase>
+                        <goals>
+                            <!-- We are doing so to just to validate that all artifacts are reachable -->
+                            <goal>add-features-to-repo</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>file:${project.build.directory}/classes/features.xml</descriptor>
+                            </descriptors>
+                            <features>
+                                <feature>provisionr-examples</feature>
+                            </features>
+                            <repository>target/features-repo</repository>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/main/resources/OSGI-INF/blueprint/context.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/OSGI-INF/blueprint/context.xml b/examples/src/main/resources/OSGI-INF/blueprint/context.xml
new file mode 100644
index 0000000..0348784
--- /dev/null
+++ b/examples/src/main/resources/OSGI-INF/blueprint/context.xml
@@ -0,0 +1,21 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+    <!-- Just a placeholder for future examples on how to use the Java API -->
+</blueprint>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/features.xml b/examples/src/main/resources/features.xml
new file mode 100644
index 0000000..e1cf09d
--- /dev/null
+++ b/examples/src/main/resources/features.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<features name="provisionr-examples-features-${project.version}"
+          xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
+
+    <feature name="provisionr-examples" version="${project.version}">
+        <configfile finalname="/templates/cdh3.xml">
+            mvn:org.apache.provisionr/provisionr-examples/${project.version}/template/cdh3
+        </configfile>
+
+        <configfile finalname="/templates/cdh4.xml">
+            mvn:org.apache.provisionr/provisionr-examples/${project.version}/template/cdh4
+        </configfile>
+
+        <configfile finalname="/templates/jenkins.xml">
+            mvn:org.apache.provisionr/provisionr-examples/${project.version}/template/jenkins
+        </configfile>
+    </feature>
+
+</features>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh3.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh3.xml b/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh3.xml
new file mode 100644
index 0000000..a289182
--- /dev/null
+++ b/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh3.xml
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template id="cdh3" os-version="10.04 LTS">
+    <description>
+        Cloudera CDH3 template for Ubuntu 10.04 LTS (lucid) including the Cloudera Manager installer
+    </description>
+    <packages>
+        <package>cloudera-manager-agent</package>
+        <package>cloudera-manager-daemons</package>
+        <package>oracle-j2sdk1.6</package>
+        <package>hadoop-0.20</package>
+        <package>hadoop-0.20-native</package>
+        <package>hadoop-hive</package>
+        <package>hadoop-pig</package>
+        <package>oozie-client</package>
+        <package>oozie</package>
+        <package>hue-plugins</package>
+        <package>hue-common</package>
+        <package>hue-proxy</package>
+        <package>hue-about</package>
+        <package>hue-help</package>
+        <package>hue-filebrowser</package>
+        <package>hue-jobsub</package>
+        <package>hue-beeswax</package>
+        <package>hue-useradmin</package>
+        <package>hue-shell</package>
+        <package>hue</package>
+    </packages>
+    <ports>
+        <port>7180</port>
+        <port>8888</port>
+        <port>8080</port>
+    </ports>
+    <files>
+        <file source="http://archive.cloudera.com/cm4/installer/latest/cloudera-manager-installer.bin"
+              destination="/opt/cloudera-manager-installer.bin"/>
+    </files>
+    <repositories>
+        <repository id="cloudera-cdh3">
+            <entries>
+                <entry>deb http://archive.cloudera.com/debian lucid-cdh3 contrib</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
+GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
+dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
+EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
+/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
+PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
+ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
+kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
+znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
+QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
+Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
+Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
+NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
+8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
+7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
+GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
+tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
+f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
+jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
+Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
+6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
+ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
+gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
+oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
+=H6IR
+-----END PGP PUBLIC KEY BLOCK-----]]></key>
+        </repository>
+        <repository id="cloudera-cm4">
+            <entries>
+                <entry>deb http://archive.cloudera.com/cm4/ubuntu/lucid/amd64/cm lucid-cm4 contrib</entry>
+                <entry>deb-src http://archive.cloudera.com/cm4/ubuntu/lucid/amd64/cm lucid-cm4 contrib</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
+GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
+dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
+EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
+/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
+PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
+ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
+kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
+znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
+QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
+Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
+Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
+NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
+8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
+7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
+GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
+tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
+f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
+jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
+Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
+6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
+ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
+gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
+oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
+=H6IR
+-----END PGP PUBLIC KEY BLOCK-----]]></key>
+        </repository>
+    </repositories>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh4.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh4.xml b/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh4.xml
new file mode 100644
index 0000000..bd9181b
--- /dev/null
+++ b/examples/src/main/resources/org/apache/provisionr/examples/templates/cdh4.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template id="cdh4" os-version="10.04 LTS">
+    <description>
+        Cloudera CDH4 template for Ubuntu 10.04 LTS (lucid)
+    </description>
+    <packages>
+        <package>openjdk-6-jdk</package>
+        <package>hadoop-0.20-mapreduce-jobtracker</package>
+        <package>hadoop-hdfs-namenode</package>
+        <package>hadoop-0.20-mapreduce-tasktracker</package>
+        <package>hadoop-hdfs-datanode</package>
+        <package>hadoop-client</package>
+        <package>xmlstarlet</package>
+    </packages>
+    <ports>
+        <port>7180</port>
+        <port>8888</port>
+        <port>8080</port>
+        <port>8020</port>
+        <port>50010</port>
+        <port>50020</port>
+    </ports>
+    <repositories>
+        <repository id="cloudera-cdh4">
+            <entries>
+                <entry>deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/lucid/amd64/cdh lucid-cdh4 contrib</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
+GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
+dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
+EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
+/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
+PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
+ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
+kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
+znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
+QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
+Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
+Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
+NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
+8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
+7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
+GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
+tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
+f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
+jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
+Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
+6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
+ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
+gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
+oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
+=H6IR
+-----END PGP PUBLIC KEY BLOCK-----]]></key>
+        </repository>
+    </repositories>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/main/resources/org/apache/provisionr/examples/templates/jenkins.xml
----------------------------------------------------------------------
diff --git a/examples/src/main/resources/org/apache/provisionr/examples/templates/jenkins.xml b/examples/src/main/resources/org/apache/provisionr/examples/templates/jenkins.xml
new file mode 100644
index 0000000..c7297f3
--- /dev/null
+++ b/examples/src/main/resources/org/apache/provisionr/examples/templates/jenkins.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template id="jenkins">
+    <description>A short template that installs the latest jenkins with git &amp; svn</description>
+    <packages>
+        <package>jenkins</package>
+        <package>git-core</package>
+        <package>subversion</package>
+    </packages>
+    <ports>
+        <port>8080</port>
+    </ports>
+    <repositories>
+        <repository id="jenkins">
+            <entries>
+                <entry>deb http://pkg.jenkins-ci.org/debian binary/</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+        Version: GnuPG v1.4.9 (GNU/Linux)
+
+        mQGiBEmFQG0RBACXScOxb6BTV6rQE/tcJopAEWsdvmE0jNIRWjDDzB7HovX6Anrq
+        n7+Vq4spAReSFbBVaYiiOx2cGDymj2dyx2i9NAI/9/cQXJOU+RPdDzHVlO1Edksp
+        5rKn0cGPWY5sLxRf8s/tO5oyKgwCVgTaB5a8gBHaoGms3nNC4YYf+lqlpwCgjbti
+        3u1iMIx6Rs+dG0+xw1oi5FUD/2tLJMx7vCUQHhPRupeYFPoD8vWpcbGb5nHfHi4U
+        8/x4qZspAIwvXtGw0UBHildGpqe9onp22Syadn/7JgMWhHoFw5Ke/rTMlxREL7pa
+        TiXuagD2G84tjJ66oJP1FigslJzrnG61y85V7THL61OFqDg6IOP4onbsdqHby4VD
+        zZj9A/9uQxIn5250AGLNpARStAcNPJNJbHOQuv0iF3vnG8uO7/oscB0TYb8/juxr
+        hs9GdSN0U0BxENR+8KWy5lttpqLMKlKRknQYy34UstQiyFgAQ9Epncu9uIbVDgWt
+        y7utnqXN033EyYkcWx5EhLAgHkC7wSzeSWABV3JSXN7CeeOif7QiS29oc3VrZSBL
+        YXdhZ3VjaGkgPGtrQGtvaHN1a2Uub3JnPohjBBMRAgAjAhsDBgsJCAcDAgQVAggD
+        BBYCAwECHgECF4AFAko/7vYCGQEACgkQm30y8tUFguabhgCgi54IQR4rpJZ/uUHe
+        ZB879zUWTQwAniQDBO+Zly7Fsvm0Mcvqvl02UzxCtC1Lb2hzdWtlIEthd2FndWNo
+        aSA8a29oc3VrZS5rYXdhZ3VjaGlAc3VuLmNvbT6IYAQTEQIAIAUCSj/qbQIbAwYL
+        CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEJt9MvLVBYLm38gAoIGR2+TQeJaCeEa8
+        CQhZYzDoiJkQAJ0cpmD+0VA+leOAr5LEccNVd70Z/dHNy83JARAAAQEAAAAAAAAA
+        AAAAAAD/2P/gABBKRklGAAEBAQBgAGAAAP/hAGBFeGlmAABJSSoACAAAAAQAMQEC
+        ABkAAAA+AAAAEFEBAAEAAAABQ5AAEVEEAAEAAAASCwAAElEEAAEAAAASCwAAAAAA
+        AE1hY3JvbWVkaWEgRmlyZXdvcmtzIDQuMAAA/9sAQwAIBgYHBgUIBwcHCQkICgwU
+        DQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy
+        /9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+        MjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgArgCWAwEiAAIRAQMRAf/EAB8AAAEF
+        AQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQEC
+        AwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq
+        NDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqS
+        k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk
+        5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
+        C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGx
+        wQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla
+        Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2
+        t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQAC
+        EQMRAD8A9wEj/wB9vzpfMf8Avt+dRinCpGSeY398/nS72/vH86YKBQBJvb+8fzpd
+        7f3j+dMFLQA/e394/nS7j6n86ZSimA7cfU07cfU1HnFOFADtx9aXJ9TTKUUxD8n1
+        pc+9Mp1AC5ozSUtAC0maKKADNFJ2ooAoCnCmilzWZQ6lFJSimAopaQUtAC54rOvN
+        dsLCTZPPGrdwXAry/wCKHxXfRppND0Mq16Bie5PIi9lHdv5V8/X+rXt/O8tzcyyy
+        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
+        =cjdq
+        -----END PGP PUBLIC KEY BLOCK-----
+    ]]></key>
+        </repository>
+    </repositories>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/examples/src/test/java/org/apache/provisionr/core/templates/xml/ExampleTemplatesTest.java
----------------------------------------------------------------------
diff --git a/examples/src/test/java/org/apache/provisionr/core/templates/xml/ExampleTemplatesTest.java b/examples/src/test/java/org/apache/provisionr/core/templates/xml/ExampleTemplatesTest.java
new file mode 100644
index 0000000..e8c561c
--- /dev/null
+++ b/examples/src/test/java/org/apache/provisionr/core/templates/xml/ExampleTemplatesTest.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.provisionr.core.templates.xml;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+import java.io.IOException;
+import org.apache.provisionr.api.network.Network;
+import org.apache.provisionr.api.network.Rule;
+import org.apache.provisionr.api.software.Software;
+import static org.fest.assertions.api.Assertions.assertThat;
+import org.junit.Test;
+
+public class ExampleTemplatesTest {
+
+    public static final String DEFAULT_JENKINS_TEMPLATE = "org/apache/provisionr/examples/templates/jenkins.xml";
+
+    public static final String DEFAULT_CDH3_TEMPLATE = "org/apache/provisionr/examples/templates/cdh3.xml";
+
+    @Test
+    public void testLoadDefaultCdh3Template() throws Exception {
+        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_CDH3_TEMPLATE));
+
+        assertThat(template.getId()).isEqualTo("cdh3");
+        assertThat(template.getPackages()).contains("hue");
+        assertThat(template.getOsVersion()).isEqualTo("10.04 LTS");
+
+        assertThat(template.getRepositories()).hasSize(2);
+        assertThat(template.getFiles()).hasSize(1);
+    }
+
+    @Test
+    public void testApplyCdh3TemplateToNetworkAndSoftware() throws Exception {
+        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_CDH3_TEMPLATE));
+
+        Network network = template.apply(Network.builder().createNetwork());
+        assertThat(network.getIngress()).contains(
+            Rule.builder().anySource().tcp().port(8080).createRule());
+
+
+        Software software = template.apply(Software.builder().createSoftware());
+        assertThat(software.getPackages()).contains("hue").contains("hadoop-0.20");
+
+        assertThat(software.getFiles()).hasSize(1);
+        assertThat(software.getRepositories()).hasSize(2);
+    }
+
+    @Test
+    public void testLoadDefaultJenkinsTemplate() throws Exception {
+        XmlTemplate template = XmlTemplate.newXmlTemplate(readResource(DEFAULT_JENKINS_TEMPLATE));
+
+        assertThat(template.getPorts()).contains(8080);
+        assertThat(template.getRepositories()).hasSize(1);
+
+        assertThat(template.getPackages()).contains("jenkins").contains("git-core");
+    }
+
+    private String readResource(String resource) throws IOException {
+        return Resources.toString(Resources.getResource(resource), Charsets.UTF_8);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/integration/rundeck/pom.xml
----------------------------------------------------------------------
diff --git a/integration/rundeck/pom.xml b/integration/rundeck/pom.xml
index 6756c75..5a1fa24 100644
--- a/integration/rundeck/pom.xml
+++ b/integration/rundeck/pom.xml
@@ -17,7 +17,8 @@
   limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
         <artifactId>provisionr-parent</artifactId>
         <groupId>org.apache.provisionr</groupId>
@@ -124,7 +125,7 @@
                                 <descriptor>file:${project.build.directory}/classes/features.xml</descriptor>
                             </descriptors>
                             <features>
-                                <feature>provisionr-core</feature>
+                                <feature>provisionr-rundeck</feature>
                             </features>
                             <repository>target/features-repo</repository>
                         </configuration>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/commands/src/test/java/org/apache/provisionr/commands/CreatePoolCommandTest.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/test/java/org/apache/provisionr/commands/CreatePoolCommandTest.java b/karaf/commands/src/test/java/org/apache/provisionr/commands/CreatePoolCommandTest.java
index 8969b4c..22a4737 100644
--- a/karaf/commands/src/test/java/org/apache/provisionr/commands/CreatePoolCommandTest.java
+++ b/karaf/commands/src/test/java/org/apache/provisionr/commands/CreatePoolCommandTest.java
@@ -94,7 +94,7 @@ public class CreatePoolCommandTest {
 
     @Test
     public void testCreatePoolWithTemplate() {
-        final PoolTemplate template = XmlTemplate.newXmlTemplate(readDefaultTemplate("jenkins"));
+        final PoolTemplate template = XmlTemplate.newXmlTemplate(readDefaultTemplate("test-1"));
 
         CreatePoolCommand command = newPoolCommandWithMockedAdminAccess(template);
 
@@ -109,7 +109,7 @@ public class CreatePoolCommandTest {
         Pool pool = command.createPoolFromArgumentsAndServiceDefaults(service);
 
         assertThat(pool.getSoftware().getRepositories()).hasSize(1);
-        assertThat(pool.getSoftware().getPackages()).contains("jenkins").contains("git-core");
+        assertThat(pool.getSoftware().getPackages()).contains("package-1a");
     }
 
     @Test
@@ -189,7 +189,7 @@ public class CreatePoolCommandTest {
     private String readDefaultTemplate(String name) {
         try {
             return Resources.toString(Resources.getResource(PoolTemplate.class,
-                String.format("/org/apache/provisionr/core/templates/%s.xml", name)), Charsets.UTF_8);
+                String.format("/org/apache/provisionr/commands/templates/%s.xml", name)), Charsets.UTF_8);
 
         } catch (IOException e) {
             throw Throwables.propagate(e);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/commands/src/test/java/org/apache/provisionr/commands/ListTemplatesCommandTest.java
----------------------------------------------------------------------
diff --git a/karaf/commands/src/test/java/org/apache/provisionr/commands/ListTemplatesCommandTest.java b/karaf/commands/src/test/java/org/apache/provisionr/commands/ListTemplatesCommandTest.java
index e39f767..496318d 100644
--- a/karaf/commands/src/test/java/org/apache/provisionr/commands/ListTemplatesCommandTest.java
+++ b/karaf/commands/src/test/java/org/apache/provisionr/commands/ListTemplatesCommandTest.java
@@ -18,8 +18,6 @@
 
 package org.apache.provisionr.commands;
 
-import org.apache.provisionr.core.templates.PoolTemplate;
-import org.apache.provisionr.core.templates.xml.XmlTemplate;
 import com.google.common.base.Charsets;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
@@ -28,6 +26,8 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintStream;
 import org.apache.felix.service.command.CommandSession;
+import org.apache.provisionr.core.templates.PoolTemplate;
+import org.apache.provisionr.core.templates.xml.XmlTemplate;
 import static org.fest.assertions.api.Assertions.assertThat;
 import org.junit.After;
 import org.junit.Before;
@@ -54,8 +54,8 @@ public class ListTemplatesCommandTest {
     @Test
     public void testListTemplates() throws Exception {
         final ImmutableList<PoolTemplate> templates = ImmutableList.<PoolTemplate>of(
-            XmlTemplate.newXmlTemplate(readDefaultTemplate("jenkins")),
-            XmlTemplate.newXmlTemplate(readDefaultTemplate("cdh3")));
+            XmlTemplate.newXmlTemplate(readDefaultTemplate("test-1")),
+            XmlTemplate.newXmlTemplate(readDefaultTemplate("test-2")));
 
         ListTemplatesCommand command = new ListTemplatesCommand(templates);
 
@@ -64,13 +64,13 @@ public class ListTemplatesCommandTest {
 
         out.flush();
 
-        assertThat(outputStream.toString()).contains("jenkins").contains("cdh3");
+        assertThat(outputStream.toString()).contains("test-1").contains("test-2");
     }
 
     private String readDefaultTemplate(String name) {
         try {
             return Resources.toString(Resources.getResource(PoolTemplate.class,
-                String.format("/org/apache/provisionr/core/templates/%s.xml", name)), Charsets.UTF_8);
+                String.format("/org/apache/provisionr/commands/templates/%s.xml", name)), Charsets.UTF_8);
 
         } catch (IOException e) {
             throw Throwables.propagate(e);

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-1.xml
----------------------------------------------------------------------
diff --git a/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-1.xml b/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-1.xml
new file mode 100644
index 0000000..bbaf908
--- /dev/null
+++ b/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-1.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template id="test-1">
+    <description>
+        Random test template
+    </description>
+    <packages>
+        <package>package-1a</package>
+        <package>package-2a</package>
+    </packages>
+    <ports>
+        <port>8888</port>
+        <port>8080</port>
+    </ports>
+    <files>
+        <file source="http://provisionr.incubator.apache.org/something.tar.gz"
+              destination="/opt/something.tar.gz"/>
+    </files>
+    <repositories>
+        <repository id="custom-package">
+            <entries>
+                <entry>deb http://provisionr.incubator.apache.org/debian lucid-test contrib</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
+GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
+dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
+EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
+/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
+PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
+ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
+kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
+znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
+QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
+Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
+Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
+NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
+8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
+7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
+GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
+tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
+f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
+jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
+Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
+6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
+ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
+gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
+oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
+=H6IR
+-----END PGP PUBLIC KEY BLOCK-----]]></key>
+        </repository>
+    </repositories>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-2.xml
----------------------------------------------------------------------
diff --git a/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-2.xml b/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-2.xml
new file mode 100644
index 0000000..ede1778
--- /dev/null
+++ b/karaf/commands/src/test/resources/org/apache/provisionr/commands/templates/test-2.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<template id="test-2" os-version="10.04 LTS">
+    <description>
+        Random test template
+    </description>
+    <packages>
+        <package>package-1b</package>
+        <package>package-2b</package>
+    </packages>
+    <ports>
+        <port>8888</port>
+        <port>8080</port>
+    </ports>
+    <files>
+        <file source="http://provisionr.incubator.apache.org/something.tar.gz"
+              destination="/opt/something.tar.gz"/>
+    </files>
+    <repositories>
+        <repository id="custom-package">
+            <entries>
+                <entry>deb http://provisionr.incubator.apache.org/debian lucid-test contrib</entry>
+            </entries>
+            <key><![CDATA[-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+mQGiBEnvgi0RBADLx1qQlXlrvHOo13dUvoWL97Ny/0s0S/GcMEgAqYvZzUPVcq8H
+GUsOb4PLTfcL1H7Ptq9fqr02uIb5Bc/ltdwE9GFaT2nvdfBx9T8jr8LrW9JE2xJq
+dCyFO5yP9YbZeFAxNO3yBxeP85lQ9CdWWLvyYdtQ+T84EYerqkcVbSvYRwCg6zyx
+EE3jWYvyVv/3HTrVTYpgHgMD/2kMR1Z2vEYOSM7h4cnRnxiadhefqJ2WCm4L30Rx
+/F9JBLAEuIuUndiOShoB043iDY+rrqCHqHQ/uI2D4piW9cDYMo7EJlsFtQ5g2SFg
+PcS4+DLhU464dTQsTGAhvcv+F0VQV4iu1HdD2/kKJkCS/MZL4rr4emqsh6VIBDdG
+ytPaA/9cyRJZe2BrBM2pECGncE5RUaM3g37Ka+VnmMVOXgZdzgCxwFZyVhyxzssD
+kB4jcm75UEZx8BiaoPQDQEsBongdx5M4Vwv5XnvUq7sK7eZLmUzW9hmkPjgLea0/
+znchvPsLeTNqSfIcH14TbFt6B2y1G3Vbi5/6UiAaIqLrqjZlCrQXQ2xvdWRlcmEg
+QXB0IFJlcG9zaXRvcnmIYAQTEQIAIAUCSe+CLQIbAwYLCQgHAwIEFQIIAwQWAgMB
+Ah4BAheAAAoJEDJ1dO4CqBjdGQUAnitydC/NGEh0aZXDN1v22pWFpRzTAJ46N4gT
+Zx25oWfyppX3R7fSH+7TPrkCDQRJ74ItEAgAq8s4iMsGhk9nnMF6wlarqHjws4Dw
+NFZBzA1Ah8KnMtrdr8t99OfzY1b7PNzHXujcaTTqL6L881ezdsls9aHp2kr24Btr
+8nqEZJHSjCnQscAGu+NrhoH2KvK+tMRCHGRcy5UNQbLTJi4Hf8Lo+zv0WUy9BCDu
+7HoDlwrrh1Rw5oOwLFc2UXSTEB6BwYna0mZcNjVpfKNHa//wJcKR0AtsCwRT9znP
+GS0Hpqi1l0/iU7sJhNWyyF427ANg+Jv2n4IP+dd734ZiFeJ9tWCtBjfc3MZJKETk
+tiCtX7FVIIqBAmYLwPqcvZMGJMrNzLBtRuuiBv5bFcPpMEhoD40oQEG8uwADBQf/
+f3NpQbuAcZLMzbrHYu3FB/+4ETvDJXJIEUiQUdobWancSBUhuNPOqIgLzIWM1jRu
+jWGIpkeP6iqNW9kDrq26CuMFP2CoVvnaMiLXUvyf62HWAiYXXlZle5O97bvhYMtM
+Y4o5sMo2ktI9IcgYIFicFwcmuGyGL7nJ3Bo9FAUV2LvMe++O/f13jsPpygoTZgGT
+6w0erglWgrgf5pXt8ajlI4TUrlMVg9Iy/tB9ZzVHnpk21o4vLHwZkgXe1WlK/Rze
+ZCruXyXHaFyEJN2zlP2xNj2F2WisL+/HEnl/qzU4IpNI2LQV2aiY9Nt8MBXgSHAh
+gWKWkjiB+tswgzuNsBOTM4hJBBgRAgAJBQJJ74ItAhsMAAoJEDJ1dO4CqBjd988A
+oJ1WlEx2BcFA7W1RMyErejcvB6thAKCf3t0thSQvkoGi3AOJ4Haj/C3yUQ==
+=H6IR
+-----END PGP PUBLIC KEY BLOCK-----]]></key>
+        </repository>
+    </repositories>
+</template>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/features/pom.xml
----------------------------------------------------------------------
diff --git a/karaf/features/pom.xml b/karaf/features/pom.xml
index 986d773..cdaf12a 100644
--- a/karaf/features/pom.xml
+++ b/karaf/features/pom.xml
@@ -55,13 +55,16 @@
         <dependency>
             <groupId>org.apache.provisionr</groupId>
             <artifactId>provisionr-rundeck</artifactId>
-            <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.apache.provisionr</groupId>
             <artifactId>provisionr-commands</artifactId>
-            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.provisionr</groupId>
+            <artifactId>provisionr-examples</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/karaf/features/src/main/resources/features.xml b/karaf/features/src/main/resources/features.xml
index c5091be..ffc83c8 100644
--- a/karaf/features/src/main/resources/features.xml
+++ b/karaf/features/src/main/resources/features.xml
@@ -63,6 +63,9 @@
     <repository>
         mvn:org.apache.provisionr/provisionr-rundeck/${project.version}/xml/features
     </repository>
+    <repository>
+        mvn:org.apache.provisionr/provisionr-examples/${project.version}/xml/features
+    </repository>
 
     <feature name="provisionr-commands" version="${project.version}">
         <bundle start="true">mvn:org.apache.provisionr/provisionr-commands/${project.version}</bundle>
@@ -78,6 +81,8 @@
         <!--<feature version="${project.version}">provisionr-console</feature>-->
         <!--<feature version="${project.version}">provisionr-cloudstack</feature>-->
 
+        <feature version="${project.version}">provisionr-examples</feature>
+
         <feature version="${project.version}">activiti-karaf-commands</feature>
         <feature version="${project.version}">activiti-karaf-web-explorer</feature>
     </feature>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index eff5afc..14994bf 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -211,6 +211,21 @@
                 <version>${project.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.apache.provisionr</groupId>
+                <artifactId>provisionr-commands</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.provisionr</groupId>
+                <artifactId>provisionr-rundeck</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.provisionr</groupId>
+                <artifactId>provisionr-examples</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.activiti</groupId>
                 <artifactId>activiti-engine</artifactId>
                 <version>${activiti.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 7fe94b1..5252a61 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
         <module>parent</module>
         <module>api</module>
         <module>core</module>
+        <module>examples</module>
         <module>console</module>
         <module>test-support</module>
         <module>providers/amazon</module>

http://git-wip-us.apache.org/repos/asf/incubator-provisionr/blob/78166fe3/providers/amazon-tests/pom.xml
----------------------------------------------------------------------
diff --git a/providers/amazon-tests/pom.xml b/providers/amazon-tests/pom.xml
index aa5560f..7003407 100644
--- a/providers/amazon-tests/pom.xml
+++ b/providers/amazon-tests/pom.xml
@@ -37,6 +37,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.provisionr</groupId>
+            <artifactId>provisionr-examples</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.provisionr</groupId>
             <artifactId>provisionr-amazon</artifactId>
         </dependency>
         <dependency>


Mime
View raw message