You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by al...@apache.org on 2015/02/09 15:57:20 UTC

[1/3] incubator-brooklyn git commit: Allows no locations to be provided when starting applications in jsgui

Repository: incubator-brooklyn
Updated Branches:
  refs/heads/master bf1801253 -> 845afe382


Allows no locations to be provided when starting applications in jsgui


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

Branch: refs/heads/master
Commit: 30aad62725850f654500379856dd9275222df3da
Parents: 41b2805
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Thu Jan 29 19:32:48 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 15:54:44 2015 +0000

----------------------------------------------------------------------
 .../main/webapp/assets/js/model/application.js  |  4 ++
 .../assets/js/view/application-add-wizard.js    | 76 ++++++++++++--------
 .../assets/tpl/app-add-wizard/deploy.html       |  4 --
 3 files changed, 49 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/30aad627/usage/jsgui/src/main/webapp/assets/js/model/application.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/model/application.js b/usage/jsgui/src/main/webapp/assets/js/model/application.js
index 998b860..5c3a3ea 100644
--- a/usage/jsgui/src/main/webapp/assets/js/model/application.js
+++ b/usage/jsgui/src/main/webapp/assets/js/model/application.js
@@ -63,6 +63,10 @@ define([
             }
             this.set('locations', newLocations)
         },
+        /* Drops falsy locations */
+        pruneLocations: function() {
+            this.set('locations', _.compact(this.get('locations')));
+        },
         setLocationAtIndex:function (locationNumber, val) {
             var newLocations = [],
                 currentLocations = this.get("locations")

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/30aad627/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
index e45699c..c960f44 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/application-add-wizard.js
@@ -41,6 +41,9 @@ define([
              DeployLocationRowHtml, DeployLocationOptionHtml, PreviewHtml
 ) {
 
+    /** Special ID to indicate that no locations will be provided when starting the server. */
+    var NO_LOCATION_INDICATOR = "__NONE__";
+
     function setVisibility(obj, isVisible) {
         if (isVisible) obj.show();
         else obj.hide();
@@ -196,6 +199,8 @@ define([
             if (this.model.mode == "yaml") {
                 yaml = this.model.yaml;
             } else {
+                // Drop any "None" locations.
+                this.model.spec.pruneLocations();
                 yaml = JSON.stringify(specToCAMP(this.model.spec.toJSON()));
             }
 
@@ -288,7 +293,7 @@ define([
             'paste #yaml_code':'onYamlCodeChange',
             'shown a[data-toggle="tab"]':'onTabChange',
             'click #templateTab #catalog-add':'switchToCatalogAdd',
-            'click #templateTab #catalog-yaml':'showYamlTab',
+            'click #templateTab #catalog-yaml':'showYamlTab'
         },
         template:_.template(CreateHtml),
         wizard: null,
@@ -575,33 +580,39 @@ define([
         },
         renderAddedLocations:function () {
             // renders the locations added to the model
-            var that = this;
-            var container = this.$("#selector-container")
-            container.empty()
+            var rowTemplate = this.locationRowTemplate,
+                optionTemplate = this.locationOptionTemplate,
+                container = this.$("#selector-container");
+            container.empty();
             for (var li = 0; li < this.model.spec.get("locations").length; li++) {
                 var chosenLocation = this.model.spec.get("locations")[li];
-                container.append(that.locationRowTemplate({
-                        initialValue: chosenLocation,
-                        rowId: li
-                    }))
+                container.append(rowTemplate({
+                    initialValue: chosenLocation,
+                    rowId: li
+                }));
             }
-            var $locationOptions = container.find('.select-location')
-            this.locations.each(function(aLocation) {
-                    if (!aLocation.id) {
-                        log("missing id for location:");
-                        log(aLocation);
-                    } else {
-                        var $option = that.locationOptionTemplate({
-                            id:aLocation.id,
-                            name:aLocation.getPrettyName()
-                        })
-                        $locationOptions.append($option)
-                    }
-                })
+            var $locationOptions = container.find('.select-location');
+            var templated = this.locations.map(function(aLocation) {
+                return optionTemplate({
+                    id: aLocation.id || "",
+                    name: aLocation.getPrettyName()
+                });
+            });
+
+            // insert "none" location
+            $locationOptions.append(templated.join(""));
             $locationOptions.each(function(i) {
-                var w = $($locationOptions[i]);
-                w.val( w.parent().attr('initialValue') );
-            })
+                var option = $($locationOptions[i]);
+                option.val(option.parent().attr('initialValue'));
+                // Only append dashes if there are any locations
+                if (option.find("option").length > 0) {
+                    option.append("<option disabled>------</option>");
+                }
+                option.append(optionTemplate({
+                    id: NO_LOCATION_INDICATOR,
+                    name: "None"
+                }));
+            });
         },
         render:function () {
             this.delegateEvents()
@@ -635,10 +646,11 @@ define([
         addLocation:function () {
             if (this.locations.models.length>0) {
                 this.model.spec.addLocation(this.locations.models[0].get("id"))
-                this.renderAddedLocations()
             } else {
-                this.$('div.info-nolocs-message').show('slow').delay(2000).hide('slow')
+                // i.e. No location
+                this.model.spec.addLocation(undefined);
             }
+            this.renderAddedLocations()
         },
         removeLocation:function (event) {
             var toBeRemoved = $(event.currentTarget).parent().attr('rowId')
@@ -686,16 +698,18 @@ define([
             return map;
         },
         selection:function (event) {
-            var loc_id = $(event.currentTarget).val();
-            var loc = this.locations.find(function (candidate) {
+            var loc_id = $(event.currentTarget).val(),
+                isNoneLocation = loc_id === NO_LOCATION_INDICATOR;
+            var locationValid = isNoneLocation || this.locations.find(function (candidate) {
                 return candidate.get("id")==loc_id;
-            })
-            if (!loc) {
+            });
+            if (!locationValid) {
                 log("invalid location "+loc_id);
                 this.showFailure("Invalid location "+loc_id);
                 this.model.spec.set("locations",[]);
             } else {
-                this.model.spec.setLocationAtIndex($(event.currentTarget).parent().attr('rowId'), loc_id); 
+                var index = $(event.currentTarget).parent().attr('rowId');
+                this.model.spec.setLocationAtIndex(index, isNoneLocation ? undefined : loc_id);
             }
         },
         updateName:function () {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/30aad627/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/deploy.html
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/deploy.html b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/deploy.html
index 36271d7..3d79241 100644
--- a/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/deploy.html
+++ b/usage/jsgui/src/main/webapp/assets/tpl/app-add-wizard/deploy.html
@@ -25,10 +25,6 @@ under the License.
         <!-- placeholder, details filled in later -->
         <span class="label-important">Important</span> More information required 
     </div>
-    <div class="info-nolocs-message label-message hide">
-        <!-- shown if no locations are configured -->
-        <span class="label-important">Important</span> Missing or unconfigured locations
-    </div>
     <div class="error-message label-message hide">
         <!-- placeholder, details usually filled in later -->
         <div class="label-important">ERROR</div>  <span class="error-message-text">Failure performing specified action</span>


[2/3] incubator-brooklyn git commit: Typos and extra comments

Posted by al...@apache.org.
Typos and extra comments


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

Branch: refs/heads/master
Commit: c0c935e31f76f2b1095795174af49af6760c3a69
Parents: 30aad62
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Fri Feb 6 15:55:19 2015 +0000
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Fri Feb 6 15:55:19 2015 +0000

----------------------------------------------------------------------
 core/src/main/java/brooklyn/config/render/RendererHints.java    | 5 ++++-
 core/src/main/java/brooklyn/util/task/DynamicTasks.java         | 2 +-
 .../brooklyn/entity/software/MachineLifecycleEffectorTasks.java | 3 +--
 .../brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java | 4 ++--
 usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java   | 2 +-
 5 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c0c935e3/core/src/main/java/brooklyn/config/render/RendererHints.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/config/render/RendererHints.java b/core/src/main/java/brooklyn/config/render/RendererHints.java
index 8bea13c..247b4f4 100644
--- a/core/src/main/java/brooklyn/config/render/RendererHints.java
+++ b/core/src/main/java/brooklyn/config/render/RendererHints.java
@@ -268,7 +268,10 @@ public class RendererHints {
         return new NamedActionWithUrl<T>("Open", transform);
     }
 
-    /** use with care as this makes REST access difficult */
+    /**
+     * Forces the given sensor or config key's value to be censored. It will be
+     * presented as <code>********</code>.
+     */
     @Beta
     public static <T> DisplayValue<T> censoredValue() {
         return new DisplayValue<T>(Functions.constant("********"));

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c0c935e3/core/src/main/java/brooklyn/util/task/DynamicTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/util/task/DynamicTasks.java b/core/src/main/java/brooklyn/util/task/DynamicTasks.java
index bb87676..0ef29c4 100644
--- a/core/src/main/java/brooklyn/util/task/DynamicTasks.java
+++ b/core/src/main/java/brooklyn/util/task/DynamicTasks.java
@@ -307,7 +307,7 @@ public class DynamicTasks {
         return q.isEmpty() ? null : Iterables.getLast(q);
     }
     
-    /** Calls {@link TaskQueueingContext#drain(Duration, boolean)} on the current task context */
+    /** Calls {@link TaskQueueingContext#drain(Duration, boolean, boolean)} on the current task context */
     public static TaskQueueingContext drain(Duration optionalTimeout, boolean throwFirstError) {
         TaskQueueingContext qc = DynamicTasks.getTaskQueuingContext();
         Preconditions.checkNotNull(qc, "Cannot drain when there is no queueing context");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c0c935e3/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
index 5288951..378e662 100644
--- a/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
+++ b/software/base/src/main/java/brooklyn/entity/software/MachineLifecycleEffectorTasks.java
@@ -78,7 +78,6 @@ import brooklyn.util.text.Strings;
 import brooklyn.util.time.Duration;
 
 import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
@@ -603,7 +602,7 @@ public abstract class MachineLifecycleEffectorTasks {
                     if (stoppingProcess == null) {
                         msg.append(". Process stop skipped, pre-stop not finished?");
                     } else {
-                        msg.append(" because process stop has "+
+                        msg.append(" because process stop has ").append(
                                 (stoppingProcess.isDone() ? "finished abnormally" : "not finished"));
                     }
                     log.warn(msg.toString());

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c0c935e3/software/nosql/src/main/java/brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java b/software/nosql/src/main/java/brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java
index aa417fe..8210c77 100644
--- a/software/nosql/src/main/java/brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java
+++ b/software/nosql/src/main/java/brooklyn/entity/nosql/mongodb/AbstractMongoDBSshDriver.java
@@ -103,8 +103,8 @@ public abstract class AbstractMongoDBSshDriver extends AbstractSoftwareProcessSs
         
         // We could also use SIGTERM (15)
         new ScriptHelper(this, "Send SIGINT to MongoDB server")
-        .body.append("kill -2 $(cat " + getPidFile() + ")")
-        .execute();
+                .body.append("kill -2 $(cat " + getPidFile() + ")")
+                .execute();
     }
 
     protected String getBaseName() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c0c935e3/usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java
----------------------------------------------------------------------
diff --git a/usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java b/usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java
index becba88..5794dba 100644
--- a/usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java
+++ b/usage/rest-api/src/main/java/brooklyn/rest/api/AccessApi.java
@@ -42,7 +42,7 @@ import com.wordnik.swagger.core.ApiParam;
 public interface AccessApi {
 
     // TODO First access use-case is to disable location-provisioning (for Citrix's Cloud Portal Business Manager (CPBM)).
-    // We rely on location implementations calling m`anagementContext.getAccessController().canProvisionLocation(parent)`,
+    // We rely on location implementations calling `managementContext.getAccessController().canProvisionLocation(parent)`,
     // which isn't ideal (because some impls might forget to do this). We can't just do it in the core management-context
     // because things like JcloudsLocation will provision the VM and only then create the JcloudsSshMachineLocation.
     


[3/3] incubator-brooklyn git commit: This closes #491

Posted by al...@apache.org.
This closes #491


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

Branch: refs/heads/master
Commit: 845afe382bf59386b8b6b564323546d39fcd6f10
Parents: bf18012 c0c935e
Author: Aled Sage <al...@gmail.com>
Authored: Mon Feb 9 14:57:07 2015 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Mon Feb 9 14:57:07 2015 +0000

----------------------------------------------------------------------
 .../brooklyn/config/render/RendererHints.java   |  5 +-
 .../java/brooklyn/util/task/DynamicTasks.java   |  2 +-
 .../software/MachineLifecycleEffectorTasks.java |  3 +-
 .../nosql/mongodb/AbstractMongoDBSshDriver.java |  4 +-
 .../main/webapp/assets/js/model/application.js  |  4 ++
 .../assets/js/view/application-add-wizard.js    | 76 ++++++++++++--------
 .../assets/tpl/app-add-wizard/deploy.html       |  4 --
 .../main/java/brooklyn/rest/api/AccessApi.java  |  2 +-
 8 files changed, 58 insertions(+), 42 deletions(-)
----------------------------------------------------------------------