You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sj...@apache.org on 2015/10/26 12:16:41 UTC

[1/7] incubator-brooklyn git commit: Update to /guide/ops/locations/index.md to simplify text by moving some detail to sub-page.

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master 9a441be8f -> 39653056d


Update to /guide/ops/locations/index.md to simplify text by moving some detail to sub-page.

Move section "AWS VPC issues which may affect users with older AWS accounts" to its own
page.  This was one of the observations from the First Encounter of the Belfast team.


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

Branch: refs/heads/master
Commit: c9bc03ca7a86f2b3019c8d1d3ccbf5f340674adc
Parents: 5fda6ed
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Mon Oct 19 17:59:57 2015 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Mon Oct 19 17:59:57 2015 +0100

----------------------------------------------------------------------
 docs/guide/ops/locations/index.md      | 31 +---------------------------
 docs/guide/ops/locations/vpc-issues.md | 32 +++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c9bc03ca/docs/guide/ops/locations/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/locations/index.md b/docs/guide/ops/locations/index.md
index 6cb5ec3..db3cbd1 100644
--- a/docs/guide/ops/locations/index.md
+++ b/docs/guide/ops/locations/index.md
@@ -254,40 +254,11 @@ If the method call cannot be matched to the template options available - for exa
 specific option but your location is an OpenStack cloud - then a warning is logged and the option is ignored.
 
 
-### AWS VPC issues which may affect users with older AWS accounts
 
-AWS now has different default behaviour depending on the age of your AWS account and whether you used the target region before, or during, 2013.
-In this case VM provisioning may fail with an error like:
-
-{% highlight text %}
-
-Detected that your EC2 account is a legacy 'classic' account, but the recommended instance type requires VPC. 
-You can specify the 'eu-central-1' region to avoid this problem, or you can specify a classic-compatible instance type, 
-or you can specify a subnet to use with 'networkName' 
-taking care that the subnet auto-assigns public IP's and allows ingress on all ports, 
-as Brooklyn does not currently configure security groups for non-default VPC's; 
-or setting up Brooklyn to be in the subnet or have a jump host or other subnet access configuration). 
-For more information on VPC vs classic see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html.
-
-{% endhighlight %}
-
-Specifically, there are issues with the certain AMIs and instance types.  If these are specified or a recommended 
-by brooklyn then you may see the above error. There are a few options for fixing this:
-
-- specify a different region which does not support EC2-classic.  
-  You can check this on the AWS console under "Supported Platforms.
-  Frankfurt (eu-central-1) is guaranteed to be VPC only.
-  
-- specify an instance type that is compatible with ec2-classic.  
-  Instance types C4, M4, T2 are only supported in VPC so should not be used.
-  This is described [here](index.html#vm-creation)
-    
-- create a subnet to use with the instance. Ensure that the subnet is set to auto-assign public IPs
-  and allows ingress on all ports.  Brooklyn cannot currently do this for you.
-  Use the networkName parameter to specify this value in your blueprint.
   
 See the following resources for more information:
 
+- [AWS VPC issues which may affect users with older AWS accounts](vpc-issues.html)
 - [Amazon EC2 and Amazon Virtual Private Cloud](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#vpc-only-instance-types)
 - [Your Default VPC and Subnets](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/default-vpc.html)
 - [Amazon VPC FAQs](http://aws.amazon.com/vpc/faqs/#Default_VPCs)

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c9bc03ca/docs/guide/ops/locations/vpc-issues.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/locations/vpc-issues.md b/docs/guide/ops/locations/vpc-issues.md
new file mode 100644
index 0000000..b2b362b
--- /dev/null
+++ b/docs/guide/ops/locations/vpc-issues.md
@@ -0,0 +1,32 @@
+
+### AWS VPC issues which may affect users with older AWS accounts
+
+AWS now has different default behaviour depending on the age of your AWS account and whether you used the target region before, or during, 2013.
+In this case VM provisioning may fail with an error like:
+
+{% highlight text %}
+
+Detected that your EC2 account is a legacy 'classic' account, but the recommended instance type requires VPC. 
+You can specify the 'eu-central-1' region to avoid this problem, or you can specify a classic-compatible instance type, 
+or you can specify a subnet to use with 'networkName' 
+taking care that the subnet auto-assigns public IP's and allows ingress on all ports, 
+as Brooklyn does not currently configure security groups for non-default VPC's; 
+or setting up Brooklyn to be in the subnet or have a jump host or other subnet access configuration). 
+For more information on VPC vs classic see http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html.
+
+{% endhighlight %}
+
+Specifically, there are issues with the certain AMIs and instance types.  If these are specified or a recommended 
+by brooklyn then you may see the above error. There are a few options for fixing this:
+
+- specify a different region which does not support EC2-classic.  
+  You can check this on the AWS console under "Supported Platforms.
+  Frankfurt (eu-central-1) is guaranteed to be VPC only.
+  
+- specify an instance type that is compatible with ec2-classic.  
+  Instance types C4, M4, T2 are only supported in VPC so should not be used.
+  This is described [here](index.html#vm-creation)
+    
+- create a subnet to use with the instance. Ensure that the subnet is set to auto-assign public IPs
+  and allows ingress on all ports.  Brooklyn cannot currently do this for you.
+  Use the networkName parameter to specify this value in your blueprint.
\ No newline at end of file


[7/7] incubator-brooklyn git commit: This closes #969

Posted by sj...@apache.org.
This closes #969


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

Branch: refs/heads/master
Commit: 39653056d364e54604f14cb7c79122ba4fdbe636
Parents: 991a255 faa5e42
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon Oct 26 11:02:05 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Mon Oct 26 11:02:05 2015 +0000

----------------------------------------------------------------------
 .../guide/ops/catalog/images/add-to-catalog.png | Bin 0 -> 4919 bytes
 docs/guide/ops/catalog/index.md                 |  13 +++++---
 docs/guide/ops/locations/index.md               |  33 ++-----------------
 docs/guide/ops/locations/vpc-issues.md          |  32 ++++++++++++++++++
 docs/guide/start/managing.md                    |   3 ++
 5 files changed, 46 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/39653056/docs/guide/ops/locations/index.md
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/39653056/docs/guide/start/managing.md
----------------------------------------------------------------------
diff --cc docs/guide/start/managing.md
index dbe0d4b,29788eb..7139f32
--- a/docs/guide/start/managing.md
+++ b/docs/guide/start/managing.md
@@@ -17,29 -17,13 +17,32 @@@ We can explore the management hierarch
  
  
  
 -Clicking on the "My Web" entity will show the "Summary" tab,
 +Clicking on the "My Web Cluster" entity will show the "Summary" tab,
  giving a very high level of what that component is doing. 
+ Click on each of the child components in turn for more detail on that component. 
+ Note that the cluster of web servers includes a "quarantine group", to which members of the 
+ cluster that fail will be added. These are excluded from the load-balancer's targets.
  
 -![Exploring My Web.](images/my-web.png)
 +[![Exploring My Web.](images/my-web.png)](images/my-web-large.png)
 +
 +
 +## Activities
 +
 +The Activity tab allows us to drill down into the tasks each entity is currently executing or has recently completed. It is possible to drill down through all child tasks, and view the commands issued, along with any errors or warnings that occurred.
 +
 +For example clicking on the NginxController in the left hand tree and opening its Activity tab you can observe the 'start' task is 'In progress'.
 +
 +**Note**: You may observe different tasks depending on how far your deployment has progressed).
 +
 +[![My DB Activities Step 1.](images/my-db-activities-step1.png)](images/my-db-activities-step1-large.png)
 +
 +Clicking on the 'start' task you can discover more details on the actions being carried out by that task (a task may consist of additional subtasks).
 +
 +[![My DB Activities Step 2.](images/my-db-activities-step2.png)](images/my-db-activities-step2-large.png)
 +
 +Continuing to drill down into the 'In progress' tasks you will eventually reach the currently active task where you can investigate the ssh command executed on the target node including the current stdin, stdout and stderr output.
 +
 +[![My DB Activities Step 3.](images/my-db-activities-step3.png)](images/my-db-activities-step3-large.png)
  
  
  ## Sensors


[4/7] incubator-brooklyn git commit: Tidying description of adding to and deleting from the catalog.

Posted by sj...@apache.org.
Tidying description of adding to and deleting from the catalog.

Fix the URL example for deleting an application to use .../application instead of .../entity (actually both of them work, but .../application is surely more appropriate for applications).


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

Branch: refs/heads/master
Commit: faa5e421cd12f9486aa16b72aed72d3916f24e6b
Parents: 9d0648b
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Tue Oct 20 10:25:55 2015 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Tue Oct 20 10:25:55 2015 +0100

----------------------------------------------------------------------
 docs/guide/ops/catalog/images/add-to-catalog.png | Bin 0 -> 4919 bytes
 docs/guide/ops/catalog/index.md                  |  13 +++++++++----
 2 files changed, 9 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/faa5e421/docs/guide/ops/catalog/images/add-to-catalog.png
----------------------------------------------------------------------
diff --git a/docs/guide/ops/catalog/images/add-to-catalog.png b/docs/guide/ops/catalog/images/add-to-catalog.png
new file mode 100644
index 0000000..0565e7e
Binary files /dev/null and b/docs/guide/ops/catalog/images/add-to-catalog.png differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/faa5e421/docs/guide/ops/catalog/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/catalog/index.md b/docs/guide/ops/catalog/index.md
index dea666f..700b24f 100644
--- a/docs/guide/ops/catalog/index.md
+++ b/docs/guide/ops/catalog/index.md
@@ -238,7 +238,10 @@ The Catalog tab in the web console will show all versions of catalog items,
 and allow you to add new items.
 
 
-##### Adding to the Catalog
+#### Adding to the Catalog
+
+On the UI the "add" button <img src="images/add-to-catalog.png" width="24" alt="add-to-catalog" /> at the top of the menu panel allows the
+addition of new Applications to the catalog, via YAML, and of new Locations.
 
 In addition to the GUI, items can be added to the catalog via the REST API
 with a `POST` of the YAML file to `/v1/catalog` endpoint.
@@ -250,13 +253,15 @@ curl http://127.0.0.1:8081/v1/catalog --data-binary @/path/to/riak.catalog.bom
 
 
 
-##### Deleting from the Catalog
+#### Deleting from the Catalog
+
+On the UI, if an item is selected, a 'Delete' button in the detail panel can be used to delete it from the catalog.
 
-You can delete a versioned item from the catalog using the same endpoint as the REST API. 
+Using the REST API, you can delete a versioned item from the catalog using the corresponding endpoint. 
 For example, to delete the item with id `datastore` and version `1.0` with `curl`:
 
 ~~~ bash
-curl -X DELETE http://127.0.0.1:8081/v1/catalog/entities/datastore/1.0
+curl -X DELETE http://127.0.0.1:8081/v1/catalog/applications/datastore/1.0
 ~~~ 
 
 **Note:** Catalog items should not be deleted if there are running apps which were created using the same item. 


[2/7] incubator-brooklyn git commit: Add definition of "vCD" to Locations page.

Posted by sj...@apache.org.
Add definition of "vCD" to Locations page.

This was one of the observations from the Belfast team First Encounter.


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

Branch: refs/heads/master
Commit: 5f609df3a99af204cad97cb1be6918766d56a5f7
Parents: c9bc03c
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Mon Oct 19 18:04:17 2015 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Mon Oct 19 18:04:17 2015 +0100

----------------------------------------------------------------------
 docs/guide/ops/locations/index.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5f609df3/docs/guide/ops/locations/index.md
----------------------------------------------------------------------
diff --git a/docs/guide/ops/locations/index.md b/docs/guide/ops/locations/index.md
index db3cbd1..9817605 100644
--- a/docs/guide/ops/locations/index.md
+++ b/docs/guide/ops/locations/index.md
@@ -76,7 +76,7 @@ The keys `loginUser` and either `loginUser.password` or `loginUser.privateKeyFil
 Brooklyn to use specific credentials for the initial login to a cloud-provisioned machine.
 
 (This custom login is particularly useful when using a custom image templates where the cloud-side account 
-management logic is not enabled. For example, a vCD template can have guest customization that will change
+management logic is not enabled. For example, a vCloud (vCD) template can have guest customization that will change
 the root password. This setting tells AMP to only use the given password, rather than the initial 
 randomly generated password that vCD returns. Without this property, there is a race for such templates:
 does Brooklyn manage to create the admin user before the guest customization changes the login and reboots,


[6/7] incubator-brooklyn git commit: This closes #981

Posted by sj...@apache.org.
This closes #981


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

Branch: refs/heads/master
Commit: 991a2552ccc3a0c02e30a5204aeadb02eba907f7
Parents: 9a441be e56b096
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Mon Oct 26 10:56:45 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Mon Oct 26 10:56:45 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/catalog/CatalogYamlRebindTest.java | 24 +++++++++++++++-----
 1 file changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------



[3/7] incubator-brooklyn git commit: Add brief explanation of "quarantine" to Monitoring and Managing Applications.

Posted by sj...@apache.org.
Add brief explanation of "quarantine" to Monitoring and Managing Applications.


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

Branch: refs/heads/master
Commit: 9d0648bedbadbc2ac58a99bcd748593c1abb830f
Parents: 5f609df
Author: Geoff Macartney <ge...@cloudsoftcorp.com>
Authored: Tue Oct 20 09:32:42 2015 +0100
Committer: Geoff Macartney <ge...@cloudsoftcorp.com>
Committed: Tue Oct 20 09:32:42 2015 +0100

----------------------------------------------------------------------
 docs/guide/start/managing.md | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/9d0648be/docs/guide/start/managing.md
----------------------------------------------------------------------
diff --git a/docs/guide/start/managing.md b/docs/guide/start/managing.md
index e01edbf..29788eb 100644
--- a/docs/guide/start/managing.md
+++ b/docs/guide/start/managing.md
@@ -19,6 +19,9 @@ We can explore the management hierarchy of the application, which will show us t
 
 Clicking on the "My Web" entity will show the "Summary" tab,
 giving a very high level of what that component is doing. 
+Click on each of the child components in turn for more detail on that component. 
+Note that the cluster of web servers includes a "quarantine group", to which members of the 
+cluster that fail will be added. These are excluded from the load-balancer's targets.
 
 ![Exploring My Web.](images/my-web.png)
 


[5/7] incubator-brooklyn git commit: Fix catalog item disabled/deprecated test

Posted by sj...@apache.org.
Fix catalog item disabled/deprecated test


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

Branch: refs/heads/master
Commit: e56b0962ad381a4f5810662d227b1fe55450e876
Parents: e3553a1
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Wed Oct 21 17:53:07 2015 +0300
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Wed Oct 21 17:53:07 2015 +0300

----------------------------------------------------------------------
 .../brooklyn/catalog/CatalogYamlRebindTest.java | 24 +++++++++++++++-----
 1 file changed, 18 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e56b0962/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
index cfc8ae1..67ef06c 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlRebindTest.java
@@ -48,11 +48,13 @@ import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.entity.StartableApplication;
 import org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore;
 import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore;
+import org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore.StoreObjectAccessor;
 import org.apache.brooklyn.core.mgmt.rebind.RebindOptions;
 import org.apache.brooklyn.core.test.policy.TestEnricher;
 import org.apache.brooklyn.core.test.policy.TestPolicy;
 import org.apache.brooklyn.entity.stock.BasicEntity;
 import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.text.Strings;
 import org.testng.annotations.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -196,6 +198,14 @@ public class CatalogYamlRebindTest extends AbstractYamlRebindTest {
                 addCatalogItems(String.format(locCatalogFormat, locVersion));
                 break;
             case STRIP_DEPRECATION_AND_ENABLEMENT_FROM_CATALOG_ITEM:
+                //Make sure that the flags are actually removed from the XML instead of still being there with false values
+                appItem.setDeprecated(true);
+                appItem.setDisabled(true);
+                mgmt().getCatalog().persist(appItem);
+                locItem.setDisabled(true);
+                locItem.setDeprecated(true);
+                mgmt().getCatalog().persist(locItem);
+                break;
             case NO_OP:
                 break; // no-op
             default:
@@ -209,19 +219,21 @@ public class CatalogYamlRebindTest extends AbstractYamlRebindTest {
                     .stateTransformer(new Function<BrooklynMementoPersister, Void>() {
                         @Override public Void apply(BrooklynMementoPersister input) {
                             PersistenceObjectStore objectStore = ((BrooklynMementoPersisterToObjectStore)input).getObjectStore();
-                            String appItemMemento = checkNotNull(objectStore.newAccessor("catalog/"+appItemId.replace(":", "_")).get(), "appItem in catalog");
-                            String locItemMemento = checkNotNull(objectStore.newAccessor("catalog/"+locItemId.replace(":", "_")).get(), "locItem in catalog");
+                            StoreObjectAccessor appItemAccessor = objectStore.newAccessor("catalog/"+Strings.makeValidFilename(appItemId));
+                            StoreObjectAccessor locItemAccessor = objectStore.newAccessor("catalog/"+Strings.makeValidFilename(locItemId));
+                            String appItemMemento = checkNotNull(appItemAccessor.get(), "appItem in catalog");
+                            String locItemMemento = checkNotNull(locItemAccessor.get(), "locItem in catalog");
                             String newAppItemMemento = removeFromXml(appItemMemento, ImmutableList.of("catalogItem/deprecated", "catalogItem/disabled"));
-                            String newLocItemMemento = removeFromXml(appItemMemento, ImmutableList.of("catalogItem/deprecated", "catalogItem/disabled"));
-                            objectStore.newAccessor("catalog/"+appItemId).put(newAppItemMemento);
-                            objectStore.newAccessor("catalog/"+locItemId).put(newLocItemMemento);
+                            String newLocItemMemento = removeFromXml(locItemMemento, ImmutableList.of("catalogItem/deprecated", "catalogItem/disabled"));
+                            appItemAccessor.put(newAppItemMemento);
+                            locItemAccessor.put(newLocItemMemento);
                             return null;
                         }}));
         } else {
             rebind();
         }
 
-        // Ensure app is still there, and that it is usabe - e.g. "stop" effector functions as expected
+        // Ensure app is still there, and that it is usable - e.g. "stop" effector functions as expected
         BasicEntity newEntity = (BasicEntity) Iterables.getOnlyElement(newApp.getChildren());
         Policy newPolicy = Iterables.getOnlyElement(newEntity.policies());
         Enricher newEnricher = Iterables.tryFind(newEntity.enrichers(), Predicates.instanceOf(TestEnricher.class)).get();