You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/05/19 12:30:04 UTC

[1/5] brooklyn-docs git commit: Tweaks to bundle uploaad docs

Repository: brooklyn-docs
Updated Branches:
  refs/heads/master b83514546 -> 513953afb


Tweaks to bundle uploaad docs


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/da1163f5
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/da1163f5
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/da1163f5

Branch: refs/heads/master
Commit: da1163f57bbc645da6a37615676f524b1d6e7f42
Parents: 1ced5fa
Author: graeme.miller <gr...@cloudsoftcorp.com>
Authored: Tue May 9 16:50:36 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Tue May 9 16:54:04 2017 +0100

----------------------------------------------------------------------
 guide/blueprints/catalog/index.md | 147 +++++++++++++--------------------
 1 file changed, 57 insertions(+), 90 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/da1163f5/guide/blueprints/catalog/index.md
----------------------------------------------------------------------
diff --git a/guide/blueprints/catalog/index.md b/guide/blueprints/catalog/index.md
index 1b01e34..bdc2515 100644
--- a/guide/blueprints/catalog/index.md
+++ b/guide/blueprints/catalog/index.md
@@ -375,153 +375,120 @@ the latest non-snapshot version will be loaded when an entity is instantiated.
 
 ### Bundling Catalog Resources
 
-When deploying a blueprint, it is possible to deploy it as an OSGI bundle with additional resources scoped
-to this bundle. This is particularly useful when, for example, deploying a Tomcat server with a `.war` file
-which is deployed using a classpath path such as `classpath://mywar.war`.
+It is possible to add an OSGi bundle to AMP. This is useful when you have a blueprint that needs to reference external scripts/resources or when you have multiple blueprints that you want to keep in sync. Brooklyn will persist any uploaded bundles so that they are available after a restart, or a HA failover.
 
-In this example, we will create a simple `server` catalog item, bundled with a simple text file.
+In this example, we will create a simple `my-server` catalog item, bundled with a simple script. The script will be run when launching the server.
 
-First, create the text file with some sample contents:
+First, create a folder called bundleFolder, then add a file called myfile.sh to it. 
+The contents of myfile.sh should be as follows:
 
 ~~~ bash
-echo Hello, World! > myfile.txt
+echo Hello, World!
 ~~~
 
-Now create a file called `catalog.bom` with the following contents:
+Now create a file in bundleFolder called `catalog.bom` with the following contents:
 
 ~~~ yaml
 brooklyn.catalog:
-  bundle: script-server
+  bundle: MyServerBundle
   version: 1.0.0
-  items:
-  - id: script-server
-    itemType: entity
-    item:
-      type: server
-      brooklyn.config:
-        files.runtime:
-          classpath://myfile.txt: files/myfile.txt
+  item:  
+    id: my-server
+    type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
+    brooklyn.config:
+      files.runtime:
+        classpath://myfile.sh: files/myfile.sh
+      launch.command: |
+        chmod +x ./files/myfile.sh
+        ./files/myfile.sh
+        
+      checkRunning.command:
+        echo "Running"  
+        
 ~~~
 
-The `bundle: script-server` line specifies the OSGI bundle name for this blueprint. Any resources included
+The `bundle: MyServerBundle` line specifies the OSGI bundle name for this bundle. Any resources included
 in this bundle will be accessible on the classpath, but will be scoped to this bundle. This prevents an
 issue where multiple bundles include the same resource.
 
-To create the bundle, simply zip the `.bom` and `.txt` files as follows:
+To create the bundle, simply use the BR command as follows:
 
 ~~~ bash
-zip script-server.zip catalog.bom myfile.txt
+br add-catalog bundleFolder
 ~~~
 
-Currently the only supported method for uploading the bundle to the server is via the API, e.g. using
-`curl`:
-
-~~~ bash
-curl -X POST -u admin:password -H "Content-Type: application/zip" --data-binary @/tmp/zip/script-server.zip "http://127.0.0.1:8081/v1/catalog"
-~~~
-
-We can now deploy an instance of our script server as follows:
+This will have added our bundle to the catalog. We can now deploy an instance of our server as follows:
 
 ~~~ yaml
 location: localhost
 services:
-- type: script-server
+- type: my-server
 ~~~
 
-And we can now inspect the contents of the file copied to the server
+We can now see the result of running that script. In the UI find the activities for this application. The start activity has a sub task called launch (you will have to click through multiple activities called start/launch. Looking at the stdout of the launch task you should see:
 
-~~~ bash
-cat /tmp/brooklyn-martin/apps/nl9djqbq2i/entities/EmptySoftwareProcess_g52gahfxnt/files/myfile.txt
-~~~
-~~~ bash
+~~~ bash  
 Hello, World!
 ~~~
 
-Now modify `myfile.txt` to contain a different message, change the version number in `catalog.bom` to
-`1.1.0`, re-build the zip file and re-post it to the server
-
-If you now deploy a new instance of the script-server using the same YAML as used above, you should be
-able to confirm that the new script has been copied to the server:
-
+Alternatively you can view the script directly if you ran this against localhost:
 ~~~ bash
-cat /tmp/brooklyn-martin/apps/bwu57darkd/entities/EmptySoftwareProcess_umcgshzduk/files/myfile.txt 
+cat /tmp/brooklyn-username/apps/nl9djqbq2i/entities/EmptySoftwareProcess_g52gahfxnt/files/myfile.sh
 ~~~
 ~~~ bash
-Goodbye
+echo Hello, World!
 ~~~
 
+Now modify `myfile.sh` to contain a different message, change the version number in `catalog.bom` to
+`1.1.0`, and use the BR command to send the bundle to the server.
+
+If you now deploy a new instance of the server using the same YAML as above, you should be
+able to confirm that the new script has been run (either by looking at the stdout of the launch task, or looking at the script itself)
+
 At this point, it is also possible to deploy the original `Hello, World!` version by explicitly stating
 the version number in the YAML:
 
 ~~~ yaml
 location: localhost
 services:
-- type: script-server:1.0.0
-~~~
-
-And we can now confirm that the original text file has been used:
-
-~~~ bash
-cat /tmp/brooklyn-martin/apps/bek7efltx8/entities/EmptySoftwareProcess_r4emcpg05y/files/myfile.txt 
-~~~
-~~~ bash
-Hello, World!
+- type: my-server:1.0.0
 ~~~
 
 To demonstrate the scoping, you can create another bundle with the following `catalog.bom`. Note the
-bundle name and entity id have been changed, but it still references the text file
+bundle name and entity id have been changed, but it still references a script with the same name.
 
 ~~~ yaml
 brooklyn.catalog:
-  bundle: different-script-server
+  bundle: DifferentServerBundle
   version: 1.0.0
-  items:
-  - id: different-script-server
-    itemType: entity
-    item:
-      type: server
-      brooklyn.config:
-        files.runtime:
-          classpath://myfile.txt: files/myfile.txt
+  item:  
+    id: different-server
+    type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
+    brooklyn.config:
+      files.runtime:
+        classpath://myfile.sh: files/myfile.sh
+      launch.command: |
+        chmod +x ./files/myfile.sh
+        ./files/myfile.sh
+        
+      checkRunning.command:
+        echo "Running"  
 ~~~
 
-Now create a new `myfile.txt` file with a different message, and zip it along with the new `catalog.bom`.
+Now create a new `myfile.sh` script with a different message, and use the BR command to send it to Brooklyn.
 This can then be posted to the Brooklyn server as follows:
 
-~~~ bash
-curl -X POST -u admin:password -H "Content-Type: application/zip" --data-binary @/tmp/zip2/different-server.zip "http://127.0.0.1:8081/v1/catalog"
-~~~
-
-Now deploy a blueprint which deploys both the old and the new script servers
+Now deploy a blueprint which deploys both the old and the new script servers. Each of the three deployments will utilise the script that was included with there bundle.
 
 ~~~ yaml
 location: localhost
 services:
-- type: script-server:1.0.0
-- type: script-server:1.1.0
-- type: different-script-server
+- type: my-server:1.0.0
+- type: my-server:1.1.0
+- type: different-server
 ~~~
 
-**Note**: Both entities copy a file from `classpath://myfile.txt`, but as they are in different bundles, we should expect the files copied to the server to be different
-
-~~~ bash
-cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_l3zb6gr4nm/files/myfile.txt
-~~~
-~~~ bash 
-Hello, World!
-~~~
-~~~ bash
-cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_roovwmq3ck/files/myfile.txt 
-~~~
-~~~ bash
-Goodbye
-~~~
-~~~ bash
-cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_qv74z4818s/files/myfile.txt 
-~~~
-~~~ bash
-Hello from a different script server
-~~~
+**Note**: Both entities copy a file from `classpath://myfile.sh`, but as they are in different bundles, the scripts copied to the server will be different.
 
 ### Brooklyn Server Command Line Arguments
 


[4/5] brooklyn-docs git commit: Fixes due to PR comments

Posted by dr...@apache.org.
Fixes due to PR comments


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/a540f6d1
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/a540f6d1
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/a540f6d1

Branch: refs/heads/master
Commit: a540f6d18d27a4a68d791f40878d9df5eb56d23e
Parents: c71bfe3
Author: graeme.miller <gr...@cloudsoftcorp.com>
Authored: Fri May 19 13:14:31 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Fri May 19 13:14:31 2017 +0100

----------------------------------------------------------------------
 guide/blueprints/catalog/index.md | 42 ++++++++++++++++------------------
 1 file changed, 20 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/a540f6d1/guide/blueprints/catalog/index.md
----------------------------------------------------------------------
diff --git a/guide/blueprints/catalog/index.md b/guide/blueprints/catalog/index.md
index 3a0d106..869bd94 100644
--- a/guide/blueprints/catalog/index.md
+++ b/guide/blueprints/catalog/index.md
@@ -392,18 +392,17 @@ Now create a file in bundleFolder called `catalog.bom` with the following conten
 brooklyn.catalog:
   bundle: MyServerBundle
   version: 1.0.0
-  item:  
-    id: my-server
-    type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
-    brooklyn.config:
-      files.runtime:
-        classpath://myfile.sh: files/myfile.sh
-      launch.command: |
-        chmod +x ./files/myfile.sh
-        ./files/myfile.sh
-        
-      checkRunning.command:
-        echo "Running"  
+  items:  
+    - id: my-server
+      item: 
+        type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
+        brooklyn.config:
+          files.runtime:
+            classpath://myfile.sh: files/myfile.sh
+          launch.command: |
+            chmod +x ./files/myfile.sh
+            ./files/myfile.sh        
+        checkRunning.command: echo "Running"  
         
 ~~~
 
@@ -411,13 +410,13 @@ The `bundle: MyServerBundle` line specifies the OSGI bundle name for this bundle
 in this bundle will be accessible on the classpath, but will be scoped to this bundle. This prevents an
 issue where multiple bundles include the same resource.
 
-To create the bundle, simply use the BR command as follows:
+To create the bundle, simply use the br command as follows. This will create a zip and send it to Brooklyn. Please note you can also specify a zip file (either on the file system or hosted remotely):
 
 ~~~ bash
-br add-catalog bundleFolder
+br catalog add bundleFolder
 ~~~
 
-This will have added our bundle to the catalog. We can now deploy an instance of our server as follows:
+This will have added our bundle to the catalog. We can now deploy an instance of our server as follows. Please note that in this example we deploy to localhost. If you have not setup your machine to use localhost please see the instructions [here](../../locations#localhost-setup) or use a non localhost location. 
 
 ~~~ yaml
 location: localhost
@@ -431,10 +430,10 @@ We can now see the result of running that script. In the UI find the activities
 Hello, World!
 ~~~
 
-Alternatively you can view the script directly if you ran this against localhost:
+Alternatively you can view the script directly if you run the following against localhost. Please note that brooklyn-username and the id of your app will be different.
 
 ~~~ bash
-cat /tmp/brooklyn-username/apps/nl9djqbq2i/entities/EmptySoftwareProcess_g52gahfxnt/files/myfile.sh
+cat /tmp/brooklyn-username/apps/nl9djqbq2i/entities/VanillaSoftwareProcess_g52gahfxnt/files/myfile.sh
 ~~~
 
 It should look like this:
@@ -444,7 +443,7 @@ echo Hello, World!
 ~~~
 
 Now modify `myfile.sh` to contain a different message, change the version number in `catalog.bom` to
-`1.1.0`, and use the BR command to send the bundle to the server.
+`1.1.0`, and use the br command to send the bundle to the server.
 
 If you now deploy a new instance of the server using the same YAML as above, you should be
 able to confirm that the new script has been run (either by looking at the stdout of the launch task, or looking at the script itself)
@@ -479,10 +478,9 @@ brooklyn.catalog:
         echo "Running"  
 ~~~
 
-Now create a new `myfile.sh` script with a different message, and use the BR command to send it to Brooklyn.
-This can then be posted to the Brooklyn server as follows:
+Now create a new `myfile.sh` script with a different message, and use the br command to send the bundle to Brooklyn.
 
-Now deploy a blueprint which deploys both the old and the new script servers. Each of the three deployments will utilise the script that was included with there bundle.
+Now deploy a blueprint which deploys all three servers. Each of the three deployments will utilise the script that was included with their bundle.
 
 ~~~ yaml
 location: localhost
@@ -492,7 +490,7 @@ services:
 - type: different-server
 ~~~
 
-**Note**: Both entities copy a file from `classpath://myfile.sh`, but as they are in different bundles, the scripts copied to the server will be different.
+**Note**: All three entities copy a file from `classpath://myfile.sh`, but as they are in different bundles, the scripts copied to the server will be different.
 
 ### Brooklyn Server Command Line Arguments
 


[3/5] brooklyn-docs git commit: Minor formatting tweak to bundle guide

Posted by dr...@apache.org.
Minor formatting tweak to bundle guide


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/c71bfe3c
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/c71bfe3c
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/c71bfe3c

Branch: refs/heads/master
Commit: c71bfe3c0b2ef41f76e66325efff5bca11ab87e8
Parents: da1163f
Author: graeme.miller <gr...@cloudsoftcorp.com>
Authored: Tue May 9 16:58:40 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Tue May 9 16:58:40 2017 +0100

----------------------------------------------------------------------
 guide/blueprints/catalog/index.md | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/c71bfe3c/guide/blueprints/catalog/index.md
----------------------------------------------------------------------
diff --git a/guide/blueprints/catalog/index.md b/guide/blueprints/catalog/index.md
index bdc2515..3a0d106 100644
--- a/guide/blueprints/catalog/index.md
+++ b/guide/blueprints/catalog/index.md
@@ -432,9 +432,13 @@ Hello, World!
 ~~~
 
 Alternatively you can view the script directly if you ran this against localhost:
+
 ~~~ bash
 cat /tmp/brooklyn-username/apps/nl9djqbq2i/entities/EmptySoftwareProcess_g52gahfxnt/files/myfile.sh
 ~~~
+
+It should look like this:
+
 ~~~ bash
 echo Hello, World!
 ~~~


[2/5] brooklyn-docs git commit: Adds documentation for bundling catalog resources in a zip file

Posted by dr...@apache.org.
Adds documentation for bundling catalog resources in a zip file


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/1ced5fa0
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/1ced5fa0
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/1ced5fa0

Branch: refs/heads/master
Commit: 1ced5fa083e8b1f79d1f23d56adfed5fd376d786
Parents: 6144986
Author: Martin Harris <gi...@nakomis.com>
Authored: Fri Apr 7 10:46:43 2017 +0100
Committer: graeme.miller <gr...@cloudsoftcorp.com>
Committed: Tue May 9 16:54:04 2017 +0100

----------------------------------------------------------------------
 guide/blueprints/catalog/index.md | 151 +++++++++++++++++++++++++++++++++
 1 file changed, 151 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/1ced5fa0/guide/blueprints/catalog/index.md
----------------------------------------------------------------------
diff --git a/guide/blueprints/catalog/index.md b/guide/blueprints/catalog/index.md
index d4605b0..1b01e34 100644
--- a/guide/blueprints/catalog/index.md
+++ b/guide/blueprints/catalog/index.md
@@ -9,6 +9,8 @@ children:
 - { section: Adding to the Catalog, title: Adding and Deleting } 
 - { section: Versioning } 
 - { section: brooklyn-server-command-line-arguments, title: CLI Options }
+- { section: Bundling Catalog Resources }
+
  
 ---
 
@@ -371,6 +373,155 @@ increment an internal version number for the catalog item.
 When referencing a blueprint, if a version number is not specified 
 the latest non-snapshot version will be loaded when an entity is instantiated.
 
+### Bundling Catalog Resources
+
+When deploying a blueprint, it is possible to deploy it as an OSGI bundle with additional resources scoped
+to this bundle. This is particularly useful when, for example, deploying a Tomcat server with a `.war` file
+which is deployed using a classpath path such as `classpath://mywar.war`.
+
+In this example, we will create a simple `server` catalog item, bundled with a simple text file.
+
+First, create the text file with some sample contents:
+
+~~~ bash
+echo Hello, World! > myfile.txt
+~~~
+
+Now create a file called `catalog.bom` with the following contents:
+
+~~~ yaml
+brooklyn.catalog:
+  bundle: script-server
+  version: 1.0.0
+  items:
+  - id: script-server
+    itemType: entity
+    item:
+      type: server
+      brooklyn.config:
+        files.runtime:
+          classpath://myfile.txt: files/myfile.txt
+~~~
+
+The `bundle: script-server` line specifies the OSGI bundle name for this blueprint. Any resources included
+in this bundle will be accessible on the classpath, but will be scoped to this bundle. This prevents an
+issue where multiple bundles include the same resource.
+
+To create the bundle, simply zip the `.bom` and `.txt` files as follows:
+
+~~~ bash
+zip script-server.zip catalog.bom myfile.txt
+~~~
+
+Currently the only supported method for uploading the bundle to the server is via the API, e.g. using
+`curl`:
+
+~~~ bash
+curl -X POST -u admin:password -H "Content-Type: application/zip" --data-binary @/tmp/zip/script-server.zip "http://127.0.0.1:8081/v1/catalog"
+~~~
+
+We can now deploy an instance of our script server as follows:
+
+~~~ yaml
+location: localhost
+services:
+- type: script-server
+~~~
+
+And we can now inspect the contents of the file copied to the server
+
+~~~ bash
+cat /tmp/brooklyn-martin/apps/nl9djqbq2i/entities/EmptySoftwareProcess_g52gahfxnt/files/myfile.txt
+~~~
+~~~ bash
+Hello, World!
+~~~
+
+Now modify `myfile.txt` to contain a different message, change the version number in `catalog.bom` to
+`1.1.0`, re-build the zip file and re-post it to the server
+
+If you now deploy a new instance of the script-server using the same YAML as used above, you should be
+able to confirm that the new script has been copied to the server:
+
+~~~ bash
+cat /tmp/brooklyn-martin/apps/bwu57darkd/entities/EmptySoftwareProcess_umcgshzduk/files/myfile.txt 
+~~~
+~~~ bash
+Goodbye
+~~~
+
+At this point, it is also possible to deploy the original `Hello, World!` version by explicitly stating
+the version number in the YAML:
+
+~~~ yaml
+location: localhost
+services:
+- type: script-server:1.0.0
+~~~
+
+And we can now confirm that the original text file has been used:
+
+~~~ bash
+cat /tmp/brooklyn-martin/apps/bek7efltx8/entities/EmptySoftwareProcess_r4emcpg05y/files/myfile.txt 
+~~~
+~~~ bash
+Hello, World!
+~~~
+
+To demonstrate the scoping, you can create another bundle with the following `catalog.bom`. Note the
+bundle name and entity id have been changed, but it still references the text file
+
+~~~ yaml
+brooklyn.catalog:
+  bundle: different-script-server
+  version: 1.0.0
+  items:
+  - id: different-script-server
+    itemType: entity
+    item:
+      type: server
+      brooklyn.config:
+        files.runtime:
+          classpath://myfile.txt: files/myfile.txt
+~~~
+
+Now create a new `myfile.txt` file with a different message, and zip it along with the new `catalog.bom`.
+This can then be posted to the Brooklyn server as follows:
+
+~~~ bash
+curl -X POST -u admin:password -H "Content-Type: application/zip" --data-binary @/tmp/zip2/different-server.zip "http://127.0.0.1:8081/v1/catalog"
+~~~
+
+Now deploy a blueprint which deploys both the old and the new script servers
+
+~~~ yaml
+location: localhost
+services:
+- type: script-server:1.0.0
+- type: script-server:1.1.0
+- type: different-script-server
+~~~
+
+**Note**: Both entities copy a file from `classpath://myfile.txt`, but as they are in different bundles, we should expect the files copied to the server to be different
+
+~~~ bash
+cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_l3zb6gr4nm/files/myfile.txt
+~~~
+~~~ bash 
+Hello, World!
+~~~
+~~~ bash
+cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_roovwmq3ck/files/myfile.txt 
+~~~
+~~~ bash
+Goodbye
+~~~
+~~~ bash
+cat /tmp/brooklyn-martin/apps/likms91qqt/entities/EmptySoftwareProcess_qv74z4818s/files/myfile.txt 
+~~~
+~~~ bash
+Hello from a different script server
+~~~
 
 ### Brooklyn Server Command Line Arguments
 


[5/5] brooklyn-docs git commit: This closes #180

Posted by dr...@apache.org.
This closes #180


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/commit/513953af
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/tree/513953af
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-docs/diff/513953af

Branch: refs/heads/master
Commit: 513953afbba33ad287de5a00bdadd5a76a49bcad
Parents: b835145 a540f6d
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Fri May 19 13:29:55 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Fri May 19 13:29:55 2017 +0100

----------------------------------------------------------------------
 guide/blueprints/catalog/index.md | 120 +++++++++++++++++++++++++++++++++
 1 file changed, 120 insertions(+)
----------------------------------------------------------------------