You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2015/08/20 14:39:39 UTC
[01/16] incubator-brooklyn git commit: Move
HasBrooklynManagementContext to o.a.b.core.mgmt
Repository: incubator-brooklyn
Updated Branches:
refs/heads/master d70091b0c -> 0c2405808
Move HasBrooklynManagementContext to o.a.b.core.mgmt
- Was previously in o.a.b.camp.brooklyn.api, in the core module
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/8e439bdb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/8e439bdb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/8e439bdb
Branch: refs/heads/master
Commit: 8e439bdb398e12d12c4c7d5aeff31497207be742
Parents: 147f9ec
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 10:47:38 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 10:47:38 2015 +0100
----------------------------------------------------------------------
.../api/HasBrooklynManagementContext.java | 27 -----------------
.../core/mgmt/HasBrooklynManagementContext.java | 31 ++++++++++++++++++++
.../core/objs/BasicConfigurableObject.java | 2 +-
.../camp/brooklyn/BrooklynCampPlatform.java | 2 +-
.../BrooklynAssemblyTemplateInstantiator.java | 2 +-
.../platform/BrooklynImmutableCampPlatform.java | 2 +-
.../lite/CampPlatformWithJustBrooklynMgmt.java | 2 +-
.../test/lite/TestAppAssemblyInstantiator.java | 2 +-
8 files changed, 37 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/core/src/main/java/org/apache/brooklyn/camp/brooklyn/api/HasBrooklynManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/camp/brooklyn/api/HasBrooklynManagementContext.java b/core/src/main/java/org/apache/brooklyn/camp/brooklyn/api/HasBrooklynManagementContext.java
deleted file mode 100644
index 9523a16..0000000
--- a/core/src/main/java/org/apache/brooklyn/camp/brooklyn/api/HasBrooklynManagementContext.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.brooklyn.camp.brooklyn.api;
-
-import org.apache.brooklyn.api.mgmt.ManagementContext;
-
-public interface HasBrooklynManagementContext {
-
- public ManagementContext getBrooklynManagementContext();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/core/src/main/java/org/apache/brooklyn/core/mgmt/HasBrooklynManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/HasBrooklynManagementContext.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/HasBrooklynManagementContext.java
new file mode 100644
index 0000000..2048c9e
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/HasBrooklynManagementContext.java
@@ -0,0 +1,31 @@
+/*
+ * 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.brooklyn.core.mgmt;
+
+import org.apache.brooklyn.api.mgmt.ManagementContext;
+
+/**
+ * Provides a generic way to obtain a {@link ManagementContext}, which things can implement.
+ * The intent is to reduce coupling between components by only referring to this interface.
+ */
+public interface HasBrooklynManagementContext {
+
+ public ManagementContext getBrooklynManagementContext();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/core/src/main/java/org/apache/brooklyn/core/objs/BasicConfigurableObject.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/BasicConfigurableObject.java b/core/src/main/java/org/apache/brooklyn/core/objs/BasicConfigurableObject.java
index 5197be6..18b7d85 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/BasicConfigurableObject.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/BasicConfigurableObject.java
@@ -22,10 +22,10 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.Task;
import org.apache.brooklyn.api.objs.Configurable;
import org.apache.brooklyn.api.objs.Identifiable;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.config.ConfigMap;
import org.apache.brooklyn.config.ConfigKey.HasConfigKey;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
import org.apache.brooklyn.core.mgmt.ManagementContextInjectable;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.core.flags.SetFromFlag;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/BrooklynCampPlatform.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/BrooklynCampPlatform.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/BrooklynCampPlatform.java
index e774300..bc6a9fd 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/BrooklynCampPlatform.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/BrooklynCampPlatform.java
@@ -22,12 +22,12 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.api.mgmt.ManagementContext.PropertiesReloadListener;
import org.apache.brooklyn.camp.AggregatingCampPlatform;
import org.apache.brooklyn.camp.CampPlatform;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.camp.brooklyn.spi.creation.BrooklynEntityMatcher;
import org.apache.brooklyn.camp.brooklyn.spi.dsl.BrooklynDslInterpreter;
import org.apache.brooklyn.camp.brooklyn.spi.platform.BrooklynImmutableCampPlatform;
import org.apache.brooklyn.camp.spi.PlatformRootSummary;
import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
/** {@link CampPlatform} implementation which includes Brooklyn entities
* (via {@link BrooklynImmutableCampPlatform})
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
index eff9c4f..63fa664 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/creation/BrooklynAssemblyTemplateInstantiator.java
@@ -34,7 +34,6 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.camp.CampPlatform;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants;
import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.camp.spi.Assembly;
import org.apache.brooklyn.camp.spi.AssemblyTemplate;
import org.apache.brooklyn.camp.spi.AssemblyTemplate.Builder;
@@ -45,6 +44,7 @@ import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog.BrooklynLo
import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
import org.apache.brooklyn.core.mgmt.EntityManagementUtils;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
import org.apache.brooklyn.core.mgmt.EntityManagementUtils.CreationResult;
import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.core.mgmt.classloading.JavaBrooklynClassLoadingContext;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/platform/BrooklynImmutableCampPlatform.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/platform/BrooklynImmutableCampPlatform.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/platform/BrooklynImmutableCampPlatform.java
index ba3bd99..0d874bf 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/platform/BrooklynImmutableCampPlatform.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/platform/BrooklynImmutableCampPlatform.java
@@ -20,7 +20,6 @@ package org.apache.brooklyn.camp.brooklyn.spi.platform;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.camp.CampPlatform;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.camp.brooklyn.spi.lookup.AssemblyBrooklynLookup;
import org.apache.brooklyn.camp.brooklyn.spi.lookup.AssemblyTemplateBrooklynLookup;
import org.apache.brooklyn.camp.brooklyn.spi.lookup.PlatformComponentBrooklynLookup;
@@ -36,6 +35,7 @@ import org.apache.brooklyn.camp.spi.PlatformTransaction;
import org.apache.brooklyn.camp.spi.collection.BasicResourceLookup;
import org.apache.brooklyn.camp.spi.collection.ResourceLookup;
import org.apache.brooklyn.camp.spi.collection.ResourceLookup.EmptyResourceLookup;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
/** Immutable CAMP platform which reflects things in the underlying Brooklyn system */
public class BrooklynImmutableCampPlatform extends CampPlatform implements HasBrooklynManagementContext {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampPlatformWithJustBrooklynMgmt.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampPlatformWithJustBrooklynMgmt.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampPlatformWithJustBrooklynMgmt.java
index e65d49d..20681a6 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampPlatformWithJustBrooklynMgmt.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampPlatformWithJustBrooklynMgmt.java
@@ -21,8 +21,8 @@ package org.apache.brooklyn.camp.brooklyn.test.lite;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.camp.BasicCampPlatform;
import org.apache.brooklyn.camp.brooklyn.BrooklynCampConstants;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
public class CampPlatformWithJustBrooklynMgmt extends BasicCampPlatform implements HasBrooklynManagementContext {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/8e439bdb/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java
index b30d889..dc0c33d 100644
--- a/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java
+++ b/usage/camp/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/TestAppAssemblyInstantiator.java
@@ -25,13 +25,13 @@ import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.camp.CampPlatform;
import org.apache.brooklyn.camp.brooklyn.api.AssemblyTemplateSpecInstantiator;
-import org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext;
import org.apache.brooklyn.camp.spi.AbstractResource;
import org.apache.brooklyn.camp.spi.Assembly;
import org.apache.brooklyn.camp.spi.AssemblyTemplate;
import org.apache.brooklyn.camp.spi.PlatformComponentTemplate;
import org.apache.brooklyn.camp.spi.collection.ResolvableLink;
import org.apache.brooklyn.camp.spi.instantiate.BasicAssemblyTemplateInstantiator;
+import org.apache.brooklyn.core.mgmt.HasBrooklynManagementContext;
import org.apache.brooklyn.core.mgmt.classloading.BrooklynClassLoadingContext;
import org.apache.brooklyn.core.test.entity.TestApplication;
import org.apache.brooklyn.core.test.entity.TestEntity;
[13/16] incubator-brooklyn git commit: This closes #856
Posted by he...@apache.org.
This closes #856
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/50a19d3d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/50a19d3d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/50a19d3d
Branch: refs/heads/master
Commit: 50a19d3d8ecdb24a324b2c689aaaca6a0b5fde23
Parents: d70091b e7420b1
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 20 13:38:46 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 20 13:38:46 2015 +0100
----------------------------------------------------------------------
.../api/HasBrooklynManagementContext.java | 27 ----
.../core/effector/ssh/SshCommandEffector.java | 102 +++++++++++++
.../core/entity/BrooklynConfigKeys.java | 9 ++
.../core/mgmt/HasBrooklynManagementContext.java | 31 ++++
.../core/objs/BasicConfigurableObject.java | 2 +-
.../brooklyn/core/sensor/HttpRequestSensor.java | 96 -------------
.../core/sensor/http/HttpRequestSensor.java | 97 +++++++++++++
.../core/sensor/ssh/SshCommandSensor.java | 141 ++++++++++++++++++
.../WindowsPerformanceCounterSensors.java | 73 ++++++++++
.../ssh/SshCommandEffectorIntegrationTest.java | 94 ++++++++++++
.../core/sensor/HttpRequestSensorTest.java | 85 -----------
.../core/sensor/http/HttpRequestSensorTest.java | 85 +++++++++++
.../ssh/SshCommandSensorIntegrationTest.java | 89 ++++++++++++
.../entity/java/JmxAttributeSensor.java | 4 +-
.../entity/software/base/SoftwareProcess.java | 7 +-
.../brooklyn/sensor/ssh/SshCommandEffector.java | 103 --------------
.../brooklyn/sensor/ssh/SshCommandSensor.java | 142 -------------------
.../winrm/WindowsPerformanceCounterSensors.java | 73 ----------
.../test/ssh/SshCommandIntegrationTest.java | 126 ----------------
.../camp/brooklyn/BrooklynCampPlatform.java | 2 +-
.../BrooklynAssemblyTemplateInstantiator.java | 2 +-
.../platform/BrooklynImmutableCampPlatform.java | 2 +-
.../lite/CampPlatformWithJustBrooklynMgmt.java | 2 +-
.../test/lite/TestAppAssemblyInstantiator.java | 2 +-
24 files changed, 732 insertions(+), 664 deletions(-)
----------------------------------------------------------------------
[09/16] incubator-brooklyn git commit: Deleted deprecated
o.a.b.core.entity.lifecycle.QuorumCheck
Posted by he...@apache.org.
Deleted deprecated o.a.b.core.entity.lifecycle.QuorumCheck
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/b1322495
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/b1322495
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/b1322495
Branch: refs/heads/master
Commit: b1322495c762a9c43a3ba32d915e98512f0b4b71
Parents: 1ca4230
Author: Aled Sage <al...@gmail.com>
Authored: Wed Aug 19 18:43:38 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:04:13 2015 +0100
----------------------------------------------------------------------
.../core/entity/lifecycle/QuorumCheck.java | 108 -------------------
.../entity/group/DynamicClusterImpl.java | 2 +-
.../core/test/entity/TestClusterImpl.java | 4 +-
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
4 files changed, 4 insertions(+), 112 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b1322495/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/QuorumCheck.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/QuorumCheck.java b/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/QuorumCheck.java
deleted file mode 100644
index 29f8deb..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/entity/lifecycle/QuorumCheck.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.brooklyn.core.entity.lifecycle;
-
-import java.io.Serializable;
-
-/**
- * For checking if a group/cluster is quorate. That is, whether the group has sufficient
- * healthy members.
- * @deprecated since 0.7.0 use {@link org.apache.brooklyn.util.collections.QuorumCheck}.
- * but keep this for a while as old quorum checks might be persisted.
- */
-@Deprecated
-public interface QuorumCheck extends org.apache.brooklyn.util.collections.QuorumCheck {
-
- /**
- * @param sizeHealthy Number of healthy members
- * @param totalSize Total number of members one would expect to be healthy (i.e. ignoring stopped members)
- * @return Whether this group is healthy
- */
- public boolean isQuorate(int sizeHealthy, int totalSize);
-
- public static class QuorumChecks {
- /**
- * Checks that all members that should be up are up (i.e. ignores stopped nodes).
- */
- public static QuorumCheck all() {
- return new NumericQuorumCheck(0, 1.0, false);
- }
- /**
- * Checks all members that should be up are up, and that there is at least one such member.
- */
- public static QuorumCheck allAndAtLeastOne() {
- return new NumericQuorumCheck(1, 1.0, false);
- }
- /**
- * Requires at least one member that should be up is up.
- */
- public static QuorumCheck atLeastOne() {
- return new NumericQuorumCheck(1, 0.0, false);
- }
- /**
- * Requires at least one member to be up if the total size is non-zero.
- * i.e. okay if empty, or if non-empty and something is healthy, but not okay if not-empty and nothing is healthy.
- * "Empty" means that no members are supposed to be up (e.g. there may be stopped members).
- */
- public static QuorumCheck atLeastOneUnlessEmpty() {
- return new NumericQuorumCheck(1, 0.0, true);
- }
- /**
- * Always "healthy"
- */
- public static QuorumCheck alwaysTrue() {
- return new NumericQuorumCheck(0, 0.0, true);
- }
- public static QuorumCheck newInstance(int minRequiredSize, double minRequiredRatio, boolean allowEmpty) {
- return new NumericQuorumCheck(minRequiredSize, minRequiredRatio, allowEmpty);
- }
- }
-
- /** @deprecated since 0.7.0 use {@link org.apache.brooklyn.util.collections.QuorumCheck}.
- * but keep this until we have a transition defined.
- */
- @Deprecated
- public static class NumericQuorumCheck implements QuorumCheck, Serializable {
- private static final long serialVersionUID = -5090669237460159621L;
-
- protected final int minRequiredSize;
- protected final double minRequiredRatio;
- protected final boolean allowEmpty;
-
- public NumericQuorumCheck(int minRequiredSize, double minRequiredRatio, boolean allowEmpty) {
- this.minRequiredSize = minRequiredSize;
- this.minRequiredRatio = minRequiredRatio;
- this.allowEmpty = allowEmpty;
- }
-
- @Override
- public boolean isQuorate(int sizeHealthy, int totalSize) {
- if (allowEmpty && totalSize==0) return true;
- if (sizeHealthy < minRequiredSize) return false;
- if (sizeHealthy < totalSize*minRequiredRatio-0.000000001) return false;
- return true;
- }
-
- @Override
- public String toString() {
- return "QuorumCheck[require="+minRequiredSize+","+((int)100*minRequiredRatio)+"%"+(allowEmpty ? "|0" : "")+"]";
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b1322495/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index b330675..e335fd0 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -45,7 +45,6 @@ import org.apache.brooklyn.core.entity.factory.EntityFactory;
import org.apache.brooklyn.core.entity.factory.EntityFactoryForLocation;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
-import org.apache.brooklyn.core.entity.lifecycle.QuorumCheck.QuorumChecks;
import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic.ServiceProblemsLogic;
import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.core.entity.trait.StartableMethods;
@@ -56,6 +55,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks;
import org.apache.brooklyn.util.core.flags.TypeCoercions;
import org.apache.brooklyn.util.core.task.DynamicTasks;
import org.apache.brooklyn.util.core.task.TaskTags;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b1322495/core/src/test/java/org/apache/brooklyn/core/test/entity/TestClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestClusterImpl.java b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestClusterImpl.java
index 0bc9e32..debe110 100644
--- a/core/src/test/java/org/apache/brooklyn/core/test/entity/TestClusterImpl.java
+++ b/core/src/test/java/org/apache/brooklyn/core/test/entity/TestClusterImpl.java
@@ -18,9 +18,9 @@
*/
package org.apache.brooklyn.core.test.entity;
-import org.apache.brooklyn.core.entity.lifecycle.QuorumCheck.QuorumChecks;
import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.entity.group.DynamicClusterImpl;
+import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks;
/**
* Mock cluster entity for testing.
@@ -41,7 +41,7 @@ public class TestClusterImpl extends DynamicClusterImpl implements TestCluster {
@Override
protected void initEnrichers() {
// say this is up if it has no children
- setConfig(UP_QUORUM_CHECK, QuorumChecks.atLeastOneUnlessEmpty());
+ config().set(UP_QUORUM_CHECK, QuorumChecks.atLeastOneUnlessEmpty());
super.initEnrichers();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/b1322495/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
----------------------------------------------------------------------
diff --git a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
index d984b0e..ba08666 100644
--- a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
+++ b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
@@ -40,7 +40,6 @@ import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.entity.EntityInternal;
import org.apache.brooklyn.core.entity.factory.ApplicationBuilder;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
-import org.apache.brooklyn.core.entity.lifecycle.QuorumCheck;
import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic.ComputeServiceIndicatorsFromChildrenAndMembers;
import org.apache.brooklyn.core.entity.trait.FailingEntity;
import org.apache.brooklyn.core.location.SimulatedLocation;
@@ -50,6 +49,7 @@ import org.apache.brooklyn.core.test.entity.TestEntity;
import org.apache.brooklyn.entity.group.DynamicCluster;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.util.collections.QuorumCheck;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.javalang.JavaClassNames;
import org.slf4j.Logger;
[04/16] incubator-brooklyn git commit: move
WindowsPerformanceCounterSensors to o.a.b.core.sensor.windows
Posted by he...@apache.org.
move WindowsPerformanceCounterSensors to o.a.b.core.sensor.windows
- Was previously in software-base, in o.a.b.sensor.winrm.
- Renamed to .windows to be consistent with .feed.windows
- Moved to core to be consistent with .sensor.ssh and .sensor.http
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/e7420b1e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/e7420b1e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/e7420b1e
Branch: refs/heads/master
Commit: e7420b1e4194cbe597a9d467bddc1a197804af50
Parents: 1dde632
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 11:32:42 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 11:32:42 2015 +0100
----------------------------------------------------------------------
.../WindowsPerformanceCounterSensors.java | 73 ++++++++++++++++++++
.../winrm/WindowsPerformanceCounterSensors.java | 73 --------------------
2 files changed, 73 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e7420b1e/core/src/main/java/org/apache/brooklyn/core/sensor/windows/WindowsPerformanceCounterSensors.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/windows/WindowsPerformanceCounterSensors.java b/core/src/main/java/org/apache/brooklyn/core/sensor/windows/WindowsPerformanceCounterSensors.java
new file mode 100644
index 0000000..f5c2271
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/windows/WindowsPerformanceCounterSensors.java
@@ -0,0 +1,73 @@
+/*
+ * 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.brooklyn.core.sensor.windows;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.EntityInitializer;
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.entity.EntityInternal;
+import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.feed.windows.WindowsPerformanceCounterFeed;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.reflect.TypeToken;
+
+public class WindowsPerformanceCounterSensors implements EntityInitializer {
+
+ private static final Logger LOG = LoggerFactory.getLogger(WindowsPerformanceCounterSensors.class);
+
+ public final static ConfigKey<Set<Map<String, String>>> PERFORMANCE_COUNTERS = ConfigKeys.newConfigKey(new TypeToken<Set<Map<String, String>>>(){}, "performance.counters");
+
+ protected final Set<Map<String, String>> sensors;
+
+ public WindowsPerformanceCounterSensors(ConfigBag params) {
+ sensors = params.get(PERFORMANCE_COUNTERS);
+ }
+
+ public WindowsPerformanceCounterSensors(Map<String, String> params) {
+ this(ConfigBag.newInstance(params));
+ }
+
+ @Override
+ public void apply(EntityLocal entity) {
+ WindowsPerformanceCounterFeed.Builder builder = WindowsPerformanceCounterFeed.builder()
+ .entity(entity);
+ for (Map<String, String> sensorConfig : sensors) {
+ String name = sensorConfig.get("name");
+ String sensorType = sensorConfig.get("sensorType");
+ Class<?> clazz;
+ try {
+ clazz = Strings.isNonEmpty(sensorType)
+ ? ((EntityInternal)entity).getManagementContext().getCatalog().getRootClassLoader().loadClass(sensorType)
+ : String.class;
+ } catch (ClassNotFoundException e) {
+ throw new IllegalStateException("Could not load type "+sensorType+" for sensor "+name, e);
+ }
+ builder.addSensor(sensorConfig.get("counter"), Sensors.newSensor(clazz, name, sensorConfig.get("description")));
+ }
+ builder.build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/e7420b1e/software/base/src/main/java/org/apache/brooklyn/sensor/winrm/WindowsPerformanceCounterSensors.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/sensor/winrm/WindowsPerformanceCounterSensors.java b/software/base/src/main/java/org/apache/brooklyn/sensor/winrm/WindowsPerformanceCounterSensors.java
deleted file mode 100644
index 3e0e4c6..0000000
--- a/software/base/src/main/java/org/apache/brooklyn/sensor/winrm/WindowsPerformanceCounterSensors.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.brooklyn.sensor.winrm;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.brooklyn.api.entity.EntityInitializer;
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.feed.windows.WindowsPerformanceCounterFeed;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.text.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.reflect.TypeToken;
-
-public class WindowsPerformanceCounterSensors implements EntityInitializer {
-
- private static final Logger LOG = LoggerFactory.getLogger(WindowsPerformanceCounterSensors.class);
-
- public final static ConfigKey<Set<Map<String, String>>> PERFORMANCE_COUNTERS = ConfigKeys.newConfigKey(new TypeToken<Set<Map<String, String>>>(){}, "performance.counters");
-
- protected final Set<Map<String, String>> sensors;
-
- public WindowsPerformanceCounterSensors(ConfigBag params) {
- sensors = params.get(PERFORMANCE_COUNTERS);
- }
-
- public WindowsPerformanceCounterSensors(Map<String, String> params) {
- this(ConfigBag.newInstance(params));
- }
-
- @Override
- public void apply(EntityLocal entity) {
- WindowsPerformanceCounterFeed.Builder builder = WindowsPerformanceCounterFeed.builder()
- .entity(entity);
- for (Map<String, String> sensorConfig : sensors) {
- String name = sensorConfig.get("name");
- String sensorType = sensorConfig.get("sensorType");
- Class<?> clazz;
- try {
- clazz = Strings.isNonEmpty(sensorType)
- ? ((EntityInternal)entity).getManagementContext().getCatalog().getRootClassLoader().loadClass(sensorType)
- : String.class;
- } catch (ClassNotFoundException e) {
- throw new IllegalStateException("Could not load type "+sensorType+" for sensor "+name, e);
- }
- builder.addSensor(sensorConfig.get("counter"), Sensors.newSensor(clazz, name, sensorConfig.get("description")));
- }
- builder.build();
- }
-}
[08/16] incubator-brooklyn git commit: Delete deprecated MachinePool
and BrooklynMachinePool
Posted by he...@apache.org.
Delete deprecated MachinePool and BrooklynMachinePool
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/7d072fde
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/7d072fde
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/7d072fde
Branch: refs/heads/master
Commit: 7d072fded80e796a6afe9820bf821e4dce1dd976
Parents: b132249
Author: Aled Sage <al...@gmail.com>
Authored: Wed Aug 19 18:49:07 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:04:13 2015 +0100
----------------------------------------------------------------------
.../location/jclouds/BrooklynMachinePool.java | 218 ----------
.../location/jclouds/pool/MachinePool.java | 395 -------------------
.../jclouds/BrooklynMachinePoolLiveTest.java | 102 -----
.../pool/JcloudsMachinePoolLiveTest.java | 120 ------
4 files changed, 835 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d072fde/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePool.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePool.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePool.java
deleted file mode 100644
index 3b53139..0000000
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePool.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * 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.brooklyn.location.jclouds;
-
-import static org.apache.brooklyn.location.jclouds.pool.MachinePoolPredicates.matching;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.api.location.MachineLocation;
-import org.apache.brooklyn.api.mgmt.Task;
-import org.apache.brooklyn.core.entity.trait.Startable;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.brooklyn.location.jclouds.pool.MachinePool;
-import org.apache.brooklyn.location.jclouds.pool.MachineSet;
-import org.apache.brooklyn.location.jclouds.pool.ReusableMachineTemplate;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.task.BasicExecutionContext;
-
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-
-/**
- * @deprecated since 0.6.0; never used in production setting, and thus of dubious value; best avoided as unlikely to be supported in future versions
- */
-@Deprecated
-public class BrooklynMachinePool extends MachinePool {
-
- private static final Logger log = LoggerFactory.getLogger(BrooklynMachinePool.class);
-
- protected final JcloudsLocation location;
- final List<Task<?>> activeTasks = new ArrayList<Task<?>>();
- final String providerLocationId;
-
- public BrooklynMachinePool(JcloudsLocation l) {
- super(l.getComputeService());
- providerLocationId = l.getRegion();
- this.location = l;
- }
-
- /** claims a machine with the indicated spec, creating if necessary */
- public SshMachineLocation obtain(ReusableMachineTemplate t) {
- MachineSet previous = unclaimed(matching(t));
-
- while (true) {
- NodeMetadata m = claim(1, t).iterator().next();
- // TODO ideally shouldn't have to rebind
- SshMachineLocation result = null;
- try {
- result = toSshMachineLocation( m );
- } catch (Exception e) {
- if (previous.contains(m)) {
- log.debug("attempt to bind to previous existing machine "+m+" failed (will blacklist and retry another): "+e);
- } else {
- log.warn("attempt to bind to machine "+m+" failed: "+e);
- throw Throwables.propagate(e);
- }
- }
- if (result!=null) return result;
- if (previous.contains(m)) {
- log.debug("could not bind to previous existing machine "+m+"; blacklisting and trying a new one");
- addToBlacklist(new MachineSet(m));
- } else {
- throw new IllegalStateException("cannot bind/connect to newly created machine; error in configuration");
- }
- }
- }
-
- protected MachineSet filterForAllowedMachines(MachineSet input) {
- MachineSet result = super.filterForAllowedMachines(input);
- if (providerLocationId!=null) {
- result = result.filtered(matching( new ReusableMachineTemplate().locationId(providerLocationId).strict(false) ));
- }
- return result;
- }
-
- /** returns an SshMachineLocation, if one can be created and accessed; returns null if it cannot be created */
- protected SshMachineLocation toSshMachineLocation(NodeMetadata m) {
- try {
- JcloudsSshMachineLocation sshM = location.rebindMachine(m);
- if (sshM.execCommands("check-reachable", Arrays.asList("whoami")) != 0) {
- log.warn("cannot bind to machine "+m);
- return null;
- }
- return sshM;
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public MachineSet create(int count, ReusableMachineTemplate template) {
- List<NodeMetadata> nodes = new ArrayList<NodeMetadata>();
- for (int i=0; i<count; i++) {
- // TODO this in parallel
- JcloudsSshMachineLocation m;
- try {
- MachineLocation machineLocation = location.obtain(MutableMap.of("callerContext", ""+this+"("+template+")"), template);
- // Class has been deprecated since 0.6.0, and prior to that, obtain would have returned a JcloudsSshMachineLocation
- if (machineLocation instanceof JcloudsSshMachineLocation) {
- m = (JcloudsSshMachineLocation) machineLocation;
- } else {
- throw new UnsupportedOperationException("Cannot create WinRmMachineLocation");
- }
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- nodes.add(m.getNode());
- }
- MachineSet result = new MachineSet(nodes);
- registerNewNodes(result, template);
- return result;
- }
-
- public boolean unclaim(SshMachineLocation location) {
- init();
- if (location instanceof JcloudsSshMachineLocation)
- return unclaim(new MachineSet( ((JcloudsSshMachineLocation)location).getNode()) ) > 0;
- return false;
- }
- public boolean destroy(SshMachineLocation location) {
- init();
- if (location instanceof JcloudsSshMachineLocation)
- return destroy(new MachineSet( ((JcloudsSshMachineLocation)location).getNode()) ) > 0;
- return false;
- }
-
- // TODO we need to remove stale tasks somewhere
- protected <T> Task<T> addTask(Task<T> t) {
- synchronized (activeTasks) { activeTasks.add(t); }
- return t;
- }
-
- public List<Task<?>> getActiveTasks() {
- List<Task<?>> result;
- synchronized (activeTasks) { result = ImmutableList.<Task<?>>copyOf(activeTasks); }
- return result;
- }
-
- public void blockUntilTasksEnded() {
- while (true) {
- boolean allDone = true;
- List<Task<?>> tt = getActiveTasks();
- for (Task<?> t: tt) {
- if (!t.isDone()) {
- allDone = false;
- if (log.isDebugEnabled()) log.debug("Pool "+this+", blocking for completion of: "+t);
- t.blockUntilEnded();
- }
- }
- synchronized (activeTasks) {
- List<Task> newTT = new ArrayList<Task>(getActiveTasks());
- newTT.removeAll(tt);
- if (allDone && tt.isEmpty()) {
- //task list has stabilized, and there are no active tasks; clear and exit
- if (log.isDebugEnabled()) log.debug("Pool "+this+", all known tasks have completed, clearing list");
- activeTasks.clear();
- break;
- }
- if (log.isDebugEnabled()) log.debug("Pool "+this+", all previously known tasks have completed, but there are new tasks ("+newTT+") checking them");
- }
- }
- }
-
- /** starts the given template; for use only within a task (e.g. application's start effector).
- * returns a child task of the current task.
- * <p>
- * throws exception if not in a task. (you will have to claim, then invoke the effectors manually.) */
- public Task<?> start(final ReusableMachineTemplate template, final List<? extends Startable> entities) {
- BasicExecutionContext ctx = BasicExecutionContext.getCurrentExecutionContext();
- if (ctx==null) throw new IllegalStateException("Pool.start is only permitted within a task (effector)");
- final AtomicReference<Task<?>> t = new AtomicReference<Task<?>>();
- synchronized (t) {
- t.set(ctx.submit(new Runnable() {
- public void run() {
- synchronized (t) {
- if (log.isDebugEnabled()) log.debug("Pool "+this+", task "+t.get()+" claiming a "+template);
- SshMachineLocation m = obtain(template);
- if (log.isDebugEnabled()) log.debug("Pool "+this+", task "+t.get()+" got "+m+"; starting "+entities);
- for (Startable entity: entities)
- addTask( ((Entity)entity).invoke(Startable.START, MutableMap.of("locations", Arrays.asList(m))) );
- }
- }
- }));
- }
- addTask(t.get());
- return t.get();
- }
-
- /** @see #start(ReusableMachineTemplate, List) */
- public Task<?> start(ReusableMachineTemplate template, Startable ...entities) {
- return start(template, Arrays.asList(entities));
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d072fde/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/pool/MachinePool.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/pool/MachinePool.java b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/pool/MachinePool.java
deleted file mode 100644
index 79a3dc8..0000000
--- a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/pool/MachinePool.java
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * 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.brooklyn.location.jclouds.pool;
-
-import static org.apache.brooklyn.location.jclouds.pool.MachinePoolPredicates.compose;
-import static org.apache.brooklyn.location.jclouds.pool.MachinePoolPredicates.matching;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.RunNodesException;
-import org.jclouds.compute.domain.ComputeMetadata;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.Template;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Predicate;
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-
-/**
- * Contains details of machines detected at a given cloud (ComputeService),
- * and records claims made against those machines via this pool.
- * <p>
- * Machine instances themselves are persisted and rescanned as new instances of this class are created.
- * Claims however are specific to this instance of the class, i.e. <b>not</b> persisted.
- * <p>
- * This class is believed to be thread-safe.
- * Refreshes to the remote detected machines are synchronized on the pool instance.
- * Details of detected and claimed machines are also synchronized on the pool instance.
- * (If it is necessary to claim machines whilst the pool is being rescanned,
- * we can investigate a more sophisticated threading model.
- * Access to some fields is clearly independent and uses a tighter synchonization
- * strategy, e.g. templates.
- * Synchronization of fields within a synch block on the class instance
- * is permitted, but not the other way round,
- * and synching on multiple fields is also not permitted.)
- * <p>
- * Callers wishing to guarantee results of e.g. ensureUnclaimed remaining available
- * can synchronize on this class for the duration that they wish to have that guarantee
- * (at the cost, of course, of any other threads being able to access this pool).
- * <p>
- * If underlying provisioning/destroying operations fail, the pool
- * currently may be in an unknown state, currently.
- * If more robustness is needed this can be added.
- *
- * @deprecated since 0.6.0; never used in production setting, and thus of dubious value; best avoided as unlikely to be supported in future versions
- */
-@Deprecated
-public class MachinePool {
-
- private static final Logger log = LoggerFactory.getLogger(MachinePool.class);
-
- protected final ComputeService computeService;
- final AtomicBoolean refreshNeeded = new AtomicBoolean(true);
- final List<ReusableMachineTemplate> templates = new ArrayList<ReusableMachineTemplate>();
- String poolName = null;
-
- /** all machines detected, less those in the black list */
- volatile MachineSet detectedMachines = new MachineSet();
- volatile MachineSet matchedMachines = new MachineSet();
- volatile MachineSet claimedMachines = new MachineSet();
- volatile MachineSet blacklistedMachines = new MachineSet();
-
- public MachinePool(ComputeService computeService) {
- this.computeService = computeService;
- }
-
- protected synchronized void init() {
- if (!refreshNeeded.get()) return;
- refresh();
- }
-
- public void setPoolName(String poolName) {
- if (poolName!=null)
- log.warn("Changing pool name of "+this+" (from "+this.poolName+" to "+poolName+") is discouraged.");
- this.poolName = poolName;
- }
- /** pool name is used as a group/label by jclouds, for convenience only;
- * it has no special properties for detecting matching instances
- * (use explicit tags on the templates, for that).
- * defaults to name of pool class and user name.
- * callers should set pool name before getting, if using a custom name. */
- public synchronized String getPoolName() {
- if (poolName==null)
- poolName = getClass().getSimpleName()+"-"+System.getProperty("user.name");
- return poolName;
- }
-
- /** refreshes the pool of machines from the server (finding all instances matching the registered templates) */
- public synchronized void refresh() {
- refreshNeeded.set(false);
- Set<? extends ComputeMetadata> computes = computeService.listNodes();
- Set<NodeMetadata> nodes = new LinkedHashSet<NodeMetadata>();
- for (ComputeMetadata c: computes) {
- if (c instanceof NodeMetadata) {
- nodes.add((NodeMetadata)c);
- } else {
- // TODO should we try to fetch more info?
- log.warn("MachinePool "+this+" ignoring non-Node record for remote machine: "+c);
- }
- }
-
- MachineSet allNewDetectedMachines = new MachineSet(nodes);
- MachineSet newDetectedMachines = filterForAllowedMachines(allNewDetectedMachines);
- MachineSet oldDetectedMachines = detectedMachines;
- MachineSet newMatchedMachines = new MachineSet();
- detectedMachines = newDetectedMachines;
-
- MachineSet appearedMachinesIncludingBlacklist = allNewDetectedMachines.removed(oldDetectedMachines);
- MachineSet appearedMachines = filterForAllowedMachines(appearedMachinesIncludingBlacklist);
- if (appearedMachinesIncludingBlacklist.size()>appearedMachines.size())
- if (log.isDebugEnabled()) log.debug("Pool "+this+", ignoring "+(appearedMachinesIncludingBlacklist.size()-appearedMachines.size())+" disallowed");
- int matchedAppeared = 0;
- for (NodeMetadata m: appearedMachines) {
- if (m.getStatus() != NodeMetadata.Status.RUNNING) {
- if (log.isDebugEnabled())
- log.debug("Pool "+this+", newly detected machine "+m+", not running ("+m.getStatus()+")");
- } else {
- Set<ReusableMachineTemplate> ts = getTemplatesMatchingInstance(m);
- if (!ts.isEmpty()) {
- matchedAppeared++;
- newMatchedMachines = newMatchedMachines.added(new MachineSet(m));
- if (log.isDebugEnabled())
- log.debug("Pool "+this+", newly detected machine "+m+", matches pool templates "+ts);
- } else {
- if (log.isDebugEnabled())
- log.debug("Pool "+this+", newly detected machine "+m+", does not match any pool templates");
- }
- }
- }
- if (matchedAppeared>0) {
- log.info("Pool "+this+" discovered "+matchedAppeared+" matching machines (of "+appearedMachines.size()+" total new; "+newDetectedMachines.size()+" total including claimed and unmatched)");
- } else {
- if (log.isDebugEnabled())
- log.debug("Pool "+this+" discovered "+matchedAppeared+" matching machines (of "+appearedMachines.size()+" total new; "+newDetectedMachines.size()+" total including claimed and unmatched)");
- }
- matchedMachines = newMatchedMachines;
- }
-
- protected MachineSet filterForAllowedMachines(MachineSet input) {
- return input.removed(blacklistedMachines);
- }
-
- // TODO template registry and claiming from a template could be a separate responsibility
-
- protected ReusableMachineTemplate registerTemplate(ReusableMachineTemplate template) {
- registerTemplates(template);
- return template;
- }
- protected void registerTemplates(ReusableMachineTemplate ...templatesToReg) {
- synchronized (templates) {
- for (ReusableMachineTemplate template: templatesToReg)
- templates.add(template);
- }
- }
-
- protected ReusableMachineTemplate newTemplate(String name) {
- return registerTemplate(new ReusableMachineTemplate(name));
- }
-
-
- public List<ReusableMachineTemplate> getTemplates() {
- List<ReusableMachineTemplate> result;
- synchronized (templates) { result = ImmutableList.copyOf(templates); }
- return result;
- }
-
- /** all machines matching any templates */
- public MachineSet all() {
- init();
- return matchedMachines;
- }
-
- /** machines matching any templates which have not been claimed */
- public MachineSet unclaimed() {
- init();
- synchronized (this) {
- return matchedMachines.removed(claimedMachines);
- }
- }
-
- /** returns all machines matching the given criteria (may be claimed) */
- @SuppressWarnings("unchecked")
- public MachineSet all(Predicate<NodeMetadata> criterion) {
- // To avoid generics complaints in callers caused by varargs, overload here
- return all(new Predicate[] {criterion});
- }
-
- /** returns all machines matching the given criteria (may be claimed) */
- public MachineSet all(Predicate<NodeMetadata> ...ops) {
- return new MachineSet(Iterables.filter(all(), compose(ops)));
- }
-
- /** returns unclaimed machines matching the given criteria */
- @SuppressWarnings("unchecked")
- public MachineSet unclaimed(Predicate<NodeMetadata> criterion) {
- // To avoid generics complaints in callers caused by varargs, overload here
- return unclaimed(new Predicate[] {criterion});
- }
-
- /** returns unclaimed machines matching the given criteria */
- public MachineSet unclaimed(Predicate<NodeMetadata> ...criteria) {
- return new MachineSet(Iterables.filter(unclaimed(), compose(criteria)));
- }
-
- /** creates machines if necessary so that this spec exists (may already be claimed however)
- * returns a set of all matching machines, guaranteed non-empty
- * (but possibly some are already claimed) */
- public MachineSet ensureExists(ReusableMachineTemplate template) {
- return ensureExists(1, template);
- }
-
- public synchronized void addToBlacklist(MachineSet newToBlacklist) {
- setBlacklist(blacklistedMachines.added(newToBlacklist));
- }
-
- /** replaces the blacklist set; callers should generally perform a refresh()
- * afterwards, to trigger re-detection of blacklisted machines
- */
- public synchronized void setBlacklist(MachineSet newBlacklist) {
- blacklistedMachines = newBlacklist;
- detectedMachines = detectedMachines.removed(blacklistedMachines);
- matchedMachines = matchedMachines.removed(blacklistedMachines);
- }
-
- /** creates machines if necessary so that this spec exists (may already be claimed however);
- * returns a set of all matching machines, of size at least count (but possibly some are already claimed).
- * (the pool can change at any point, so this set is a best-effort but may be out of date.
- * see javadoc comments on this class.) */
- public MachineSet ensureExists(int count, ReusableMachineTemplate template) {
- MachineSet current;
- current = all(matching(template));
- if (current.size() >= count)
- return current;
- //have to create more
- MachineSet moreNeeded = create(count-current.size(), template);
- return current.added(moreNeeded);
- }
-
- /** creates machines if necessary so that this spec can subsequently be claimed;
- * returns all such unclaimed machines, guaranteed to be non-empty.
- * (the pool can change at any point, so this set is a best-effort but may be out of date.
- * see javadoc comments on this class.) */
- public MachineSet ensureUnclaimed(ReusableMachineTemplate template) {
- return ensureUnclaimed(1, template);
- }
-
- /** creates machines if necessary so that this spec can subsequently be claimed;
- * returns a set of at least count unclaimed machines */
- public MachineSet ensureUnclaimed(int count, ReusableMachineTemplate template) {
- MachineSet current;
- current = unclaimed(matching(template));
- if (current.size() >= count)
- return current;
- //have to create more
- MachineSet moreNeeded = create(count-current.size(), template);
- return current.added(moreNeeded);
- }
-
- public Set<ReusableMachineTemplate> getTemplatesMatchingInstance(NodeMetadata nm) {
- Set<ReusableMachineTemplate> result = new LinkedHashSet<ReusableMachineTemplate>();
- for (ReusableMachineTemplate t: getTemplates()) {
- if (matching(t).apply(nm)) {
- result.add(t);
- }
- }
- return result;
- }
-
- /** creates the given number of machines of the indicated template */
- public MachineSet create(int count, ReusableMachineTemplate template) {
- Set<? extends NodeMetadata> nodes;
- try {
- Template t = template.newJcloudsTemplate(computeService);
- if (log.isDebugEnabled()) log.debug("Creating "+count+" new instances of "+t);
- nodes = computeService.createNodesInGroup(getPoolName(), count, t);
- } catch (RunNodesException e) {
- throw Throwables.propagate(e);
- }
- MachineSet result = new MachineSet(nodes);
- registerNewNodes(result, template);
- return result;
- }
- protected void registerNewNodes(MachineSet result, ReusableMachineTemplate template) {
- for (NodeMetadata m: result) {
- Set<ReusableMachineTemplate> ts = getTemplatesMatchingInstance(m);
- if (ts.isEmpty()) {
- log.error("Pool "+this+", created machine "+m+" from template "+template+", but no pool templates match!");
- } else {
- if (log.isDebugEnabled())
- log.debug("Pool "+this+", created machine "+m+" from template "+template+", matching templates "+ts);
- }
- }
- synchronized (this) {
- detectedMachines = detectedMachines.added(result);
- matchedMachines = matchedMachines.added(result);
- }
- }
-
- /** claims the indicated number of machines with the indicated spec, creating if necessary */
- public MachineSet claim(int count, ReusableMachineTemplate t) {
- init();
- Set<NodeMetadata> claiming = new LinkedHashSet<NodeMetadata>();
- while (claiming.size() < count) {
- MachineSet mm = ensureUnclaimed(count - claiming.size(), t);
- for (NodeMetadata m : mm) {
- synchronized (this) {
- if (claiming.size() < count && !claimedMachines.contains(m)) {
- claiming.add(m);
- claimedMachines = claimedMachines.added(new MachineSet(m));
- }
- }
- }
- }
- MachineSet result = new MachineSet(claiming);
- return result;
- }
-
-
- /** claims the indicated set of machines;
- * throws exception if cannot all be claimed;
- * returns the set passed in if successful */
- public MachineSet claim(MachineSet set) {
- init();
- synchronized (this) {
- MachineSet originalClaimed = claimedMachines;
- claimedMachines = claimedMachines.added(set);
- MachineSet newlyClaimed = claimedMachines.removed(originalClaimed);
- if (newlyClaimed.size() != set.size()) {
- //did not claim all; unclaim and fail
- claimedMachines = originalClaimed;
- MachineSet unavailable = set.removed(newlyClaimed);
- throw new IllegalArgumentException("Could not claim all requested machines; failed to claim "+unavailable);
- }
- return newlyClaimed;
- }
- }
-
- public int unclaim(MachineSet set) {
- init();
- synchronized (this) {
- MachineSet originalClaimed = claimedMachines;
- claimedMachines = claimedMachines.removed(set);
- return originalClaimed.size() - claimedMachines.size();
- }
- }
-
-
- public int destroy(final MachineSet set) {
- init();
- synchronized (this) {
- detectedMachines = detectedMachines.removed(set);
- matchedMachines = matchedMachines.removed(set);
- claimedMachines = claimedMachines.removed(set);
- }
- Set<? extends NodeMetadata> destroyed = computeService.destroyNodesMatching(new Predicate<NodeMetadata>() {
- @Override
- public boolean apply(NodeMetadata input) {
- return set.contains(input);
- }
- });
- synchronized (this) {
- //in case a rescan happened while we were destroying
- detectedMachines = detectedMachines.removed(set);
- matchedMachines = matchedMachines.removed(set);
- claimedMachines = claimedMachines.removed(set);
- }
- return destroyed.size();
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d072fde/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
deleted file mode 100644
index 2f6afcb..0000000
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/BrooklynMachinePoolLiveTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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.brooklyn.location.jclouds;
-
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.location.jclouds.pool.MachineSet;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.jclouds.pool.MachinePoolPredicates;
-import org.apache.brooklyn.location.jclouds.pool.ReusableMachineTemplate;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-
-public class BrooklynMachinePoolLiveTest {
-
- public static final Logger log = LoggerFactory.getLogger(BrooklynMachinePoolLiveTest.class);
-
- public static class SamplePool extends BrooklynMachinePool {
- public SamplePool(JcloudsLocation l) {
- super(l);
- }
-
- public final static ReusableMachineTemplate
- USUAL_VM =
- new ReusableMachineTemplate("usual").templateOwnedByMe().
- tagOptional("tagForUsualVm").
- metadataOptional("metadataForUsualVm", "12345").
- minRam(1024).minCores(2);
-
- public final static ReusableMachineTemplate
- ANYONE_NOT_TINY_VM =
- new ReusableMachineTemplate("anyone").
- minRam(512).minCores(1).strict(false);
-
- public static final ReusableMachineTemplate
- VM_LARGE1 =
- new ReusableMachineTemplate("vm.large1").templateOwnedByMe().
- minRam(16384).minCores(4),
- VM_SMALL1 =
- new ReusableMachineTemplate("vm.small1").templateOwnedByMe().smallest();
-
- { registerTemplates(USUAL_VM, ANYONE_NOT_TINY_VM, VM_LARGE1, VM_SMALL1); }
- }
-
-
- private LocalManagementContext managementContext;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- managementContext = new LocalManagementContext();
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (managementContext != null) managementContext.terminate();
- }
-
- @Test(groups="Live")
- public void buildClaimAndDestroy() {
- SamplePool p = new SamplePool(resolve("aws-ec2:us-west-1"));
- log.info("buildClaimAndDestroy: created pool");
- p.refresh();
- log.info("buildClaimAndDestroy: refreshed pool");
- p.ensureExists(2, SamplePool.USUAL_VM);
- log.info("buildClaimAndDestroy: ensure have 2");
- SshMachineLocation l = p.obtain(SamplePool.USUAL_VM);
- Assert.assertNotNull(l);
- log.info("buildClaimAndDestroy: claimed 1");
- MachineSet unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: unclaimed now "+unclaimedUsual);
- Assert.assertTrue(!unclaimedUsual.isEmpty(), "should have been unclaimed machines (can fail if there are some we cannot connect to, ie blacklisted)");
- p.destroy(unclaimedUsual);
- p.destroy(l);
- unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: destroyed, unclaimed now "+unclaimedUsual);
- log.info("end");
- }
-
-
- private JcloudsLocation resolve(String spec) {
- return (JcloudsLocation) managementContext.getLocationRegistry().resolve(new JcloudsLocationResolver().getPrefix() + ":" + spec);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/7d072fde/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
----------------------------------------------------------------------
diff --git a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
deleted file mode 100644
index 4d30c80..0000000
--- a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/pool/JcloudsMachinePoolLiveTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.brooklyn.location.jclouds.pool;
-
-import java.util.Arrays;
-
-import org.apache.brooklyn.location.jclouds.AbstractJcloudsLiveTest;
-import org.jclouds.ContextBuilder;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.ComputeServiceContext;
-import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
-import org.jclouds.sshj.config.SshjSshClientModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import org.apache.brooklyn.location.jclouds.JcloudsLocation;
-
-public class JcloudsMachinePoolLiveTest extends AbstractJcloudsLiveTest {
-
- public static final Logger log = LoggerFactory.getLogger(JcloudsMachinePoolLiveTest.class);
-
- private static final String PROVIDER = AWS_EC2_PROVIDER;
- private static final String LOCATION_SPEC = PROVIDER + ":" + AWS_EC2_EUWEST_REGION_NAME;
-
- public static class SamplePool extends MachinePool {
- public SamplePool(ComputeService svc) {
- super(svc);
- }
-
- public final static ReusableMachineTemplate
- USUAL_VM =
- new ReusableMachineTemplate("usual").templateOwnedByMe().
- tagOptional("tagForUsualVm").
- metadataOptional("metadataForUsualVm", "12345").
- minRam(1024).minCores(2);
-
- public final static ReusableMachineTemplate
- ANYONE_NOT_TINY_VM =
- new ReusableMachineTemplate("anyone").
- minRam(512).minCores(1).strict(false);
-
- public static final ReusableMachineTemplate
- VM_LARGE1 =
- new ReusableMachineTemplate("vm.large1").templateOwnedByMe().
- minRam(16384).minCores(4),
- VM_SMALL1 =
- new ReusableMachineTemplate("vm.small1").templateOwnedByMe().smallest();
-
- { registerTemplates(USUAL_VM, ANYONE_NOT_TINY_VM, VM_LARGE1, VM_SMALL1); }
- }
-
- private ComputeServiceContext context;
-
- @BeforeMethod(alwaysRun=true)
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- jcloudsLocation = (JcloudsLocation) managementContext.getLocationRegistry().resolve(LOCATION_SPEC);
-
- context = ContextBuilder.newBuilder(PROVIDER)
- .modules(Arrays.asList(new SshjSshClientModule(), new SLF4JLoggingModule()))
- .credentials(jcloudsLocation.getIdentity(), jcloudsLocation.getCredential())
- .build(ComputeServiceContext.class);
- }
-
- @AfterMethod(alwaysRun=true)
- @Override
- public void tearDown() throws Exception {
- try {
- super.tearDown();
- } finally {
- if (context != null) context.close();
- }
- }
-
- @Test(groups={"Live","WIP"})
- public void buildClaimAndDestroy() {
- ComputeService svc = context.getComputeService();
- SamplePool p = new SamplePool(svc);
- log.info("buildClaimAndDestroy: created pool");
- p.refresh();
- log.info("buildClaimAndDestroy: refreshed pool");
- p.ensureExists(2, SamplePool.USUAL_VM);
- log.info("buildClaimAndDestroy: ensure have 2");
- MachineSet l = p.claim(1, SamplePool.USUAL_VM);
- Assert.assertEquals(l.size(), 1);
- log.info("buildClaimAndDestroy: claimed 1");
- MachineSet unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: unclaimed now "+unclaimedUsual);
- Assert.assertTrue(!unclaimedUsual.isEmpty());
- p.destroy(unclaimedUsual);
- unclaimedUsual = p.unclaimed(MachinePoolPredicates.matching(SamplePool.USUAL_VM));
- log.info("buildClaimAndDestroy: destroyed, unclaimed now "+unclaimedUsual);
- log.info("end");
- }
-
-
-
-}
[12/16] incubator-brooklyn git commit: Adds
VanillaSoftwareProcessStreamsIntegrationTest
Posted by he...@apache.org.
Adds VanillaSoftwareProcessStreamsIntegrationTest
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/ce8e69d0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/ce8e69d0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/ce8e69d0
Branch: refs/heads/master
Commit: ce8e69d026bd15718bcebde94c0d95666e90b823
Parents: 3385e7b
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 12:33:33 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:34:21 2015 +0100
----------------------------------------------------------------------
...laSoftwareProcessStreamsIntegrationTest.java | 131 +++++++++++++++++++
1 file changed, 131 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/ce8e69d0/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
new file mode 100644
index 0000000..9467cad
--- /dev/null
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/VanillaSoftwareProcessStreamsIntegrationTest.java
@@ -0,0 +1,131 @@
+/*
+ * 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.brooklyn.entity.software.base;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.testng.Assert.assertTrue;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.mgmt.HasTaskChildren;
+import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
+import org.apache.brooklyn.core.mgmt.BrooklynTaskTags.WrappedStream;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.util.core.task.TaskPredicates;
+import org.apache.brooklyn.util.text.StringPredicates;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+
+public class VanillaSoftwareProcessStreamsIntegrationTest extends BrooklynAppUnitTestSupport {
+
+ private static final Logger log = LoggerFactory.getLogger(VanillaSoftwareProcessStreamsIntegrationTest.class);
+
+ private Location localhost;
+
+ @BeforeMethod(alwaysRun=true)
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ localhost = app.getManagementContext().getLocationRegistry().resolve("localhost");
+ }
+
+ @Test(groups = "Integration")
+ public void testGetsStreams() {
+ Map<String, String> cmds = ImmutableMap.<String, String>builder()
+ .put("pre-install-command", "myPreInstall")
+ .put("ssh: installing.*", "myInstall")
+ .put("post-install-command", "myPostInstall")
+ .put("ssh: customizing.*", "myCustomizing")
+ .put("pre-launch-command", "myPreLaunch")
+ .put("ssh: launching.*", "myLaunch")
+ .put("post-launch-command", "myPostLaunch")
+ .build();
+ VanillaSoftwareProcess entity = app.createAndManageChild(EntitySpec.create(VanillaSoftwareProcess.class)
+ .configure(VanillaSoftwareProcess.PRE_INSTALL_COMMAND, "echo "+cmds.get("pre-install-command"))
+ .configure(VanillaSoftwareProcess.INSTALL_COMMAND, "echo "+cmds.get("ssh: installing.*"))
+ .configure(VanillaSoftwareProcess.POST_INSTALL_COMMAND, "echo "+cmds.get("post-install-command"))
+ .configure(VanillaSoftwareProcess.CUSTOMIZE_COMMAND, "echo "+cmds.get("ssh: customizing.*"))
+ .configure(VanillaSoftwareProcess.PRE_LAUNCH_COMMAND, "echo "+cmds.get("pre-launch-command"))
+ .configure(VanillaSoftwareProcess.LAUNCH_COMMAND, "echo "+cmds.get("ssh: launching.*"))
+ .configure(VanillaSoftwareProcess.POST_LAUNCH_COMMAND, "echo "+cmds.get("post-launch-command"))
+ .configure(VanillaSoftwareProcess.CHECK_RUNNING_COMMAND, "true"));
+ app.start(ImmutableList.of(localhost));
+
+ Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt.getExecutionManager(), entity);
+
+ for (Map.Entry<String, String> entry : cmds.entrySet()) {
+ String taskNameRegex = entry.getKey();
+ String echoed = entry.getValue();
+
+ Task<?> subTask = findTaskOrSubTask(tasks, TaskPredicates.displayNameMatches(StringPredicates.matchesRegex(taskNameRegex))).get();
+
+ String stdin = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDIN);
+ String stdout = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDOUT);
+ String stderr = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDERR);
+ String env = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_ENV);
+ String msg = "stdin="+stdin+"; stdout="+stdout+"; stderr="+stderr+"; env="+env;
+
+ assertTrue(stdin.contains("echo "+echoed), msg);
+ assertTrue(stdout.contains(echoed), msg);
+ }
+ }
+
+ protected String getStreamOrFail(Task<?> task, String streamType) {
+ String msg = "task="+task+"; stream="+streamType;
+ WrappedStream stream = checkNotNull(BrooklynTaskTags.stream(task, BrooklynTaskTags.STREAM_STDIN), "Stream null: "+msg);
+ return checkNotNull(stream.streamContents.get(), "Contents null: "+msg);
+ }
+
+ protected Optional<Task<?>> findTaskOrSubTask(Iterable<? extends Task<?>> tasks, Predicate<? super Task<?>> matcher) {
+ List<String> taskNames = Lists.newArrayList();
+ Optional<Task<?>> result = findTaskOrSubTaskImpl(tasks, matcher, taskNames);
+ if (!result.isPresent()) {
+ log.info("Task not found matching "+matcher+"; contender names were "+taskNames);
+ }
+ return result;
+ }
+
+ protected Optional<Task<?>> findTaskOrSubTaskImpl(Iterable<? extends Task<?>> tasks, Predicate<? super Task<?>> matcher, List<String> taskNames) {
+ for (Task<?> task : tasks) {
+ if (matcher.apply(task)) return Optional.<Task<?>>of(task);
+
+ if (!(task instanceof HasTaskChildren)) {
+ return Optional.absent();
+ } else {
+ Optional<Task<?>> subResult = findTaskOrSubTask(((HasTaskChildren) task).getChildren(), matcher);
+ if (subResult.isPresent()) return subResult;
+ }
+ }
+
+ return Optional.<Task<?>>absent();
+ }
+}
[07/16] incubator-brooklyn git commit: Delete deprecated
RegistryLocationResolver
Posted by he...@apache.org.
Delete deprecated RegistryLocationResolver
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/5c8ff2a9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/5c8ff2a9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/5c8ff2a9
Branch: refs/heads/master
Commit: 5c8ff2a9d52f9abdce7d0f408d3f69ff950d3f39
Parents: 1ffacc6
Author: Aled Sage <al...@gmail.com>
Authored: Wed Aug 19 18:39:04 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:04:12 2015 +0100
----------------------------------------------------------------------
.../core/location/BasicLocationRegistry.java | 2 +-
.../core/location/RegistryLocationResolver.java | 42 --------------------
2 files changed, 1 insertion(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5c8ff2a9/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java b/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
index b6319b4..f8b7c73 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/BasicLocationRegistry.java
@@ -400,7 +400,7 @@ public class BasicLocationRegistry implements LocationRegistry {
return null;
}
- /** providers default impl for RegistryLocationResolver.accepts */
+ /** providers default impl for {@link LocationResolver#accepts(String, LocationRegistry)} */
public static boolean isResolverPrefixForSpec(LocationResolver resolver, String spec, boolean argumentRequired) {
if (spec==null) return false;
if (spec.startsWith(resolver.getPrefix()+":")) return true;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/5c8ff2a9/core/src/main/java/org/apache/brooklyn/core/location/RegistryLocationResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/RegistryLocationResolver.java b/core/src/main/java/org/apache/brooklyn/core/location/RegistryLocationResolver.java
deleted file mode 100644
index a2cf5fa..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/location/RegistryLocationResolver.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.brooklyn.core.location;
-
-import java.util.Map;
-
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.location.LocationRegistry;
-import org.apache.brooklyn.api.location.LocationResolver;
-
-/**
- * Extension to LocationResolver which can take a registry.
- *
- * @deprecated since 0.6; the LocationResolver always takes the LocationRegistry now
- */
-@Deprecated
-public interface RegistryLocationResolver extends LocationResolver {
-
- @Override
- @SuppressWarnings("rawtypes")
- Location newLocationFromString(Map locationFlags, String spec, LocationRegistry registry);
-
- @Override
- boolean accepts(String spec, LocationRegistry registry);
-
-}
[15/16] incubator-brooklyn git commit: This closes #858
Posted by he...@apache.org.
This closes #858
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/c8fd8fbb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/c8fd8fbb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/c8fd8fbb
Branch: refs/heads/master
Commit: c8fd8fbb8f079ebb4938232a1994b95eb1036aa2
Parents: 5146682 ce8e69d
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 20 13:39:00 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 20 13:39:00 2015 +0100
----------------------------------------------------------------------
.../brooklyn/core/effector/EffectorTasks.java | 4 +-
.../org/apache/brooklyn/core/feed/Poller.java | 2 +-
.../core/mgmt/EntityManagementUtils.java | 6 +-
.../mgmt/ha/HighAvailabilityManagerImpl.java | 2 +-
.../mgmt/internal/BrooklynShutdownHooks.java | 2 +-
.../rebind/PeriodicDeltaChangeListener.java | 2 +-
.../core/mgmt/rebind/RebindManagerImpl.java | 2 +-
.../core/objs/proxy/InternalEntityFactory.java | 2 +-
.../core/sensor/DependentConfiguration.java | 8 +-
.../brooklyn/entity/group/DynamicGroupImpl.java | 2 +-
.../location/ssh/SshMachineLocation.java | 2 +-
.../brooklyn/util/core/file/ArchiveTasks.java | 2 +-
.../util/core/task/BasicExecutionContext.java | 4 +-
.../brooklyn/util/core/task/BasicTask.java | 2 +-
.../util/core/task/DynamicSequentialTask.java | 2 +-
.../brooklyn/util/core/task/DynamicTasks.java | 4 +-
.../brooklyn/util/core/task/TaskBuilder.java | 18 ++-
.../brooklyn/util/core/task/TaskPredicates.java | 55 ++++++++
.../apache/brooklyn/util/core/task/Tasks.java | 12 +-
.../brooklyn/util/core/task/ValueResolver.java | 2 +-
.../util/core/task/ssh/SshFetchTaskWrapper.java | 2 +-
.../util/core/task/ssh/SshPutTaskWrapper.java | 2 +-
.../brooklyn/util/core/task/ssh/SshTasks.java | 2 +-
.../internal/AbstractProcessTaskFactory.java | 2 +-
.../core/effector/EffectorTaskTest.java | 12 +-
.../core/entity/trait/FailingEntityImpl.java | 2 +-
.../core/entity/trait/StartableMethodsTest.java | 2 +-
.../internal/EntityExecutionManagerTest.java | 8 +-
.../util/core/task/TaskPredicatesTest.java | 45 +++++++
.../policy/autoscaling/AutoScalerPolicy.java | 2 +-
.../apache/brooklyn/entity/salt/SaltTasks.java | 4 +-
.../brooklynnode/BrooklynEntityMirrorImpl.java | 2 +-
.../entity/brooklynnode/BrooklynNodeImpl.java | 2 +-
.../BrooklynClusterUpgradeEffectorBody.java | 2 +-
.../BrooklynNodeUpgradeEffectorBody.java | 10 +-
.../apache/brooklyn/entity/chef/ChefTasks.java | 4 +-
.../software/base/SameServerEntityImpl.java | 6 +-
.../software/base/SoftwareProcessImpl.java | 6 +-
.../MachineLifecycleEffectorTasks.java | 2 +-
.../software/base/lifecycle/ScriptHelper.java | 2 +-
.../system_service/InitdServiceInstaller.java | 2 +-
.../system_service/SystemServiceEnricher.java | 6 +-
...laSoftwareProcessStreamsIntegrationTest.java | 131 +++++++++++++++++++
.../entity/database/mysql/MySqlClusterImpl.java | 4 +-
.../nosql/couchbase/CouchbaseClusterImpl.java | 2 +-
.../nosql/couchbase/CouchbaseNodeSshDriver.java | 2 +-
.../entity/proxy/AbstractControllerImpl.java | 2 +-
.../entity/webapp/DynamicWebAppClusterImpl.java | 10 +-
.../brooklyn/spi/dsl/methods/DslComponent.java | 6 +-
49 files changed, 329 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
[05/16] incubator-brooklyn git commit: Delete deprecated
DynamicClusterImpl.createNode(Map)
Posted by he...@apache.org.
Delete deprecated DynamicClusterImpl.createNode(Map)
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1ca4230e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1ca4230e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1ca4230e
Branch: refs/heads/master
Commit: 1ca4230e4879231dd3e5da6479492f4d131a6979
Parents: 5c8ff2a
Author: Aled Sage <al...@gmail.com>
Authored: Wed Aug 19 18:40:55 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:04:12 2015 +0100
----------------------------------------------------------------------
.../org/apache/brooklyn/entity/group/DynamicClusterImpl.java | 6 ------
1 file changed, 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ca4230e/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
index a8c63ef..b330675 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicClusterImpl.java
@@ -803,12 +803,6 @@ public class DynamicClusterImpl extends AbstractGroupImpl implements DynamicClus
return entity;
}
- /** @deprecated since 0.6; use {@link #createNode(Location, Map)}, so can take that location into account when configuring node */
- @Deprecated
- protected Entity createNode(Map<?,?> flags) {
- return createNode(getLocation(), flags);
- }
-
protected List<Entity> pickAndRemoveMembers(int delta) {
if (delta==0)
return Lists.newArrayList();
[11/16] incubator-brooklyn git commit: Adds TaskPredicates
Posted by he...@apache.org.
Adds TaskPredicates
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/3385e7b3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/3385e7b3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/3385e7b3
Branch: refs/heads/master
Commit: 3385e7b3edebc05a6eab5229d4208226790b520f
Parents: f4533ed
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 12:33:20 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:34:20 2015 +0100
----------------------------------------------------------------------
.../brooklyn/util/core/task/TaskPredicates.java | 55 ++++++++++++++++++++
.../util/core/task/TaskPredicatesTest.java | 45 ++++++++++++++++
2 files changed, 100 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3385e7b3/core/src/main/java/org/apache/brooklyn/util/core/task/TaskPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/TaskPredicates.java b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskPredicates.java
new file mode 100644
index 0000000..3e42760
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskPredicates.java
@@ -0,0 +1,55 @@
+/*
+ * 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.brooklyn.util.core.task;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import org.apache.brooklyn.api.mgmt.Task;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+
+public class TaskPredicates {
+
+ public static Predicate<Task<?>> displayNameMatches(Predicate<? super String> matcher) {
+ return new DisplayNameMatches(matcher);
+ }
+
+ public static Predicate<Task<?>> displayNameEqualTo(String name) {
+ return displayNameMatches(Predicates.equalTo(name));
+ }
+
+ private static class DisplayNameMatches implements Predicate<Task<?>> {
+ private final Predicate<? super String> matcher;
+
+ public DisplayNameMatches(Predicate<? super String> matcher) {
+ this.matcher = checkNotNull(matcher, "matcher");
+ }
+
+ @Override
+ public boolean apply(Task<?> input) {
+ return input != null && matcher.apply(input.getDisplayName());
+ }
+
+ @Override
+ public String toString() {
+ return "displayNameMatches("+matcher+")";
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3385e7b3/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java b/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
new file mode 100644
index 0000000..d87dbb5
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
@@ -0,0 +1,45 @@
+package org.apache.brooklyn.util.core.task;
+
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.apache.brooklyn.api.mgmt.ExecutionManager;
+import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicates;
+import com.google.common.util.concurrent.Callables;
+
+public class TaskPredicatesTest extends BrooklynAppUnitTestSupport {
+
+ private ExecutionManager execManager;
+
+ @BeforeMethod(alwaysRun=true)
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ execManager = mgmt.getExecutionManager();
+ }
+
+ @Test
+ public void testDisplayNameEqualTo() throws Exception {
+ Task<Object> task = execManager.submit(TaskBuilder.builder()
+ .body(Callables.<Object>returning("val"))
+ .displayName("myname")
+ .build());
+ assertTrue(TaskPredicates.displayNameEqualTo("myname").apply(task));
+ assertFalse(TaskPredicates.displayNameEqualTo("wrong").apply(task));
+ }
+
+ @Test
+ public void testDisplayNameMatches() throws Exception {
+ Task<Object> task = execManager.submit(TaskBuilder.builder()
+ .body(Callables.<Object>returning("val"))
+ .displayName("myname")
+ .build());
+ assertTrue(TaskPredicates.displayNameMatches(Predicates.equalTo("myname")).apply(task));
+ assertFalse(TaskPredicates.displayNameMatches(Predicates.equalTo("wrong")).apply(task));
+ }
+}
[10/16] incubator-brooklyn git commit: Add TaskBuilder.displayName;
deprecate TaskBuilder.name
Posted by he...@apache.org.
Add TaskBuilder.displayName; deprecate TaskBuilder.name
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/f4533edb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/f4533edb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/f4533edb
Branch: refs/heads/master
Commit: f4533edb6bc17de165813192c063d7b5c27f02d3
Parents: 147f9ec
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 12:27:43 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:32:18 2015 +0100
----------------------------------------------------------------------
.../brooklyn/core/effector/EffectorTasks.java | 4 ++--
.../org/apache/brooklyn/core/feed/Poller.java | 2 +-
.../brooklyn/core/mgmt/EntityManagementUtils.java | 6 +++---
.../core/mgmt/ha/HighAvailabilityManagerImpl.java | 2 +-
.../core/mgmt/internal/BrooklynShutdownHooks.java | 2 +-
.../mgmt/rebind/PeriodicDeltaChangeListener.java | 2 +-
.../core/mgmt/rebind/RebindManagerImpl.java | 2 +-
.../core/objs/proxy/InternalEntityFactory.java | 2 +-
.../core/sensor/DependentConfiguration.java | 8 ++++----
.../brooklyn/entity/group/DynamicGroupImpl.java | 2 +-
.../brooklyn/location/ssh/SshMachineLocation.java | 2 +-
.../brooklyn/util/core/file/ArchiveTasks.java | 2 +-
.../util/core/task/BasicExecutionContext.java | 4 ++--
.../apache/brooklyn/util/core/task/BasicTask.java | 2 +-
.../util/core/task/DynamicSequentialTask.java | 2 +-
.../brooklyn/util/core/task/DynamicTasks.java | 4 ++--
.../brooklyn/util/core/task/TaskBuilder.java | 18 +++++++++++++-----
.../org/apache/brooklyn/util/core/task/Tasks.java | 12 ++++++------
.../brooklyn/util/core/task/ValueResolver.java | 2 +-
.../util/core/task/ssh/SshFetchTaskWrapper.java | 2 +-
.../util/core/task/ssh/SshPutTaskWrapper.java | 2 +-
.../brooklyn/util/core/task/ssh/SshTasks.java | 2 +-
.../internal/AbstractProcessTaskFactory.java | 2 +-
.../brooklyn/core/effector/EffectorTaskTest.java | 12 ++++++------
.../core/entity/trait/FailingEntityImpl.java | 2 +-
.../core/entity/trait/StartableMethodsTest.java | 2 +-
.../mgmt/internal/EntityExecutionManagerTest.java | 8 ++++----
.../policy/autoscaling/AutoScalerPolicy.java | 2 +-
.../apache/brooklyn/entity/salt/SaltTasks.java | 4 ++--
.../brooklynnode/BrooklynEntityMirrorImpl.java | 2 +-
.../entity/brooklynnode/BrooklynNodeImpl.java | 2 +-
.../BrooklynClusterUpgradeEffectorBody.java | 2 +-
.../effector/BrooklynNodeUpgradeEffectorBody.java | 10 +++++-----
.../apache/brooklyn/entity/chef/ChefTasks.java | 4 ++--
.../software/base/SameServerEntityImpl.java | 6 +++---
.../entity/software/base/SoftwareProcessImpl.java | 6 +++---
.../lifecycle/MachineLifecycleEffectorTasks.java | 2 +-
.../software/base/lifecycle/ScriptHelper.java | 2 +-
.../system_service/InitdServiceInstaller.java | 2 +-
.../system_service/SystemServiceEnricher.java | 6 +++---
.../entity/database/mysql/MySqlClusterImpl.java | 4 ++--
.../nosql/couchbase/CouchbaseClusterImpl.java | 2 +-
.../nosql/couchbase/CouchbaseNodeSshDriver.java | 2 +-
.../entity/proxy/AbstractControllerImpl.java | 2 +-
.../entity/webapp/DynamicWebAppClusterImpl.java | 10 +++++-----
.../brooklyn/spi/dsl/methods/DslComponent.java | 6 +++---
46 files changed, 98 insertions(+), 90 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/effector/EffectorTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/effector/EffectorTasks.java b/core/src/main/java/org/apache/brooklyn/core/effector/EffectorTasks.java
index 39eb79b..e990bac 100644
--- a/core/src/main/java/org/apache/brooklyn/core/effector/EffectorTasks.java
+++ b/core/src/main/java/org/apache/brooklyn/core/effector/EffectorTasks.java
@@ -155,10 +155,10 @@ public class EffectorTasks {
private TaskBuilder<T> builder;
public ParameterTask(ConfigKey<T> p) {
this.p = p;
- this.builder = Tasks.<T>builder().name("parameter "+p);
+ this.builder = Tasks.<T>builder().displayName("parameter "+p);
}
public ParameterTask<T> name(String taskName) {
- builder.name(taskName);
+ builder.displayName(taskName);
return this;
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/feed/Poller.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/feed/Poller.java b/core/src/main/java/org/apache/brooklyn/core/feed/Poller.java
index fd50ebd..d57f826 100644
--- a/core/src/main/java/org/apache/brooklyn/core/feed/Poller.java
+++ b/core/src/main/java/org/apache/brooklyn/core/feed/Poller.java
@@ -134,7 +134,7 @@ public class Poller<V> {
started = true;
for (final Callable<?> oneOffJob : oneOffJobs) {
- Task<?> task = Tasks.builder().dynamic(false).body((Callable<Object>) oneOffJob).name("Poll").description("One-time poll job "+oneOffJob).build();
+ Task<?> task = Tasks.builder().dynamic(false).body((Callable<Object>) oneOffJob).displayName("Poll").description("One-time poll job "+oneOffJob).build();
oneOffTasks.add(((EntityInternal)entity).getExecutionContext().submit(task));
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
index 49e1c1c..1391dc4 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/EntityManagementUtils.java
@@ -196,7 +196,7 @@ public class EntityManagementUtils {
int size = children.size();
childrenCountString = size+" "+(size!=1 ? "children" : "child");
- TaskBuilder<List<String>> taskM = Tasks.<List<String>>builder().name("add children")
+ TaskBuilder<List<String>> taskM = Tasks.<List<String>>builder().displayName("add children")
.dynamic(true)
.tag(BrooklynTaskTags.NON_TRANSIENT_TASK_TAG)
.body(new Callable<List<String>>() {
@@ -205,7 +205,7 @@ public class EntityManagementUtils {
}})
.description("Add and start "+childrenCountString);
- TaskBuilder<?> taskS = Tasks.builder().parallel(true).name("add (parallel)").description("Start each new entity");
+ TaskBuilder<?> taskS = Tasks.builder().parallel(true).displayName("add (parallel)").description("Start each new entity");
// autostart if requested
for (Entity child: children) {
@@ -213,7 +213,7 @@ public class EntityManagementUtils {
taskS.add(Effectors.invocation(child, Startable.START, ImmutableMap.of("locations", ImmutableList.of())));
} else {
// include a task, just to give feedback in the GUI
- taskS.add(Tasks.builder().name("create").description("Skipping start (not a Startable Entity)")
+ taskS.add(Tasks.builder().displayName("create").description("Skipping start (not a Startable Entity)")
.body(new Runnable() { public void run() {} })
.tag(BrooklynTaskTags.tagForTargetEntity(child))
.build());
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
index 95e5ef1..0d8de30 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
@@ -557,7 +557,7 @@ public class HighAvailabilityManagerImpl implements HighAvailabilityManager {
};
Callable<Task<?>> taskFactory = new Callable<Task<?>>() {
@Override public Task<?> call() {
- return Tasks.builder().dynamic(false).body(job).name("HA poller task").tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
+ return Tasks.builder().dynamic(false).body(job).displayName("HA poller task").tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
.description("polls HA status to see whether this node should promote").build();
}
};
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
index eaebcfb..677a4f6 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/BrooklynShutdownHooks.java
@@ -216,7 +216,7 @@ public class BrooklynShutdownHooks {
for (Entity entityToStop: entitiesToStop) {
final Entity entity = entityToStop;
if (!Entities.isManaged(entity)) continue;
- Task<Object> t = Tasks.builder().dynamic(false).name("destroying "+entity).body(new Runnable() {
+ Task<Object> t = Tasks.builder().dynamic(false).displayName("destroying "+entity).body(new Runnable() {
@Override public void run() { Entities.destroy(entity); }
}).build();
stops.add( ((EntityInternal)entity).getExecutionContext().submit(t) );
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
index 78e668a..21f7719 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/PeriodicDeltaChangeListener.java
@@ -207,7 +207,7 @@ public class PeriodicDeltaChangeListener implements ChangeListener {
Callable<Task<?>> taskFactory = new Callable<Task<?>>() {
@Override public Task<Void> call() {
- return Tasks.<Void>builder().dynamic(false).name("periodic-persister").body(new Callable<Void>() {
+ return Tasks.<Void>builder().dynamic(false).displayName("periodic-persister").body(new Callable<Void>() {
public Void call() {
persistNowSafely();
return null;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
index 52b984a..dccd91a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java
@@ -302,7 +302,7 @@ public class RebindManagerImpl implements RebindManager {
Callable<Task<?>> taskFactory = new Callable<Task<?>>() {
@Override public Task<Void> call() {
- return Tasks.<Void>builder().dynamic(false).name("rebind (periodic run").body(new Callable<Void>() {
+ return Tasks.<Void>builder().dynamic(false).displayName("rebind (periodic run").body(new Callable<Void>() {
public Void call() {
try {
rebind(null, null, mode);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
index c5d1c80..9547c9d 100644
--- a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
+++ b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalEntityFactory.java
@@ -279,7 +279,7 @@ public class InternalEntityFactory extends InternalFactory {
* of the parent entity creating this child entity
* (note however such subtasks are currently filtered based on parent entity so is excluded).
*/
- ((EntityInternal)entity).getExecutionContext().submit(Tasks.builder().dynamic(false).name("Entity initialization")
+ ((EntityInternal)entity).getExecutionContext().submit(Tasks.builder().dynamic(false).displayName("Entity initialization")
.tag(BrooklynTaskTags.tagForContextEntity(entity))
.tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
.body(new Runnable() {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java b/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
index b909856..d4f32d8 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
@@ -676,7 +676,7 @@ public class DependentConfiguration {
validate();
return Tasks.<V>builder().dynamic(false)
- .name("waiting on "+sensor.getName())
+ .displayName("waiting on "+sensor.getName())
.description("Waiting on sensor "+sensor.getName()+" from "+source)
.tag("attributeWhenReady")
.body(new WaitInTaskForAttributeReady<T,V>(this))
@@ -795,7 +795,7 @@ public class DependentConfiguration {
tasks.add(builder.build());
}
final Task<List<V>> parallelTask = Tasks.<List<V>>builder().parallel(true).addAll(tasks)
- .name(name)
+ .displayName(name)
.description(descriptionBase+
(builder.timeout!=null ? ", timeout "+builder.timeout : ""))
.build();
@@ -804,13 +804,13 @@ public class DependentConfiguration {
// V2 should be the right type in normal operations
return (Task<V2>) parallelTask;
} else {
- return Tasks.<V2>builder().name(name).description(descriptionBase)
+ return Tasks.<V2>builder().displayName(name).description(descriptionBase)
.tag("attributeWhenReady")
.body(new Callable<V2>() {
@Override public V2 call() throws Exception {
List<V> prePostProgress = DynamicTasks.queue(parallelTask).get();
return DynamicTasks.queue(
- Tasks.<V2>builder().name("post-processing").description("Applying "+postProcessFromMultiple)
+ Tasks.<V2>builder().displayName("post-processing").description("Applying "+postProcessFromMultiple)
.body(Functionals.callable(postProcessFromMultiple, prePostProgress))
.build()).get();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
index 5e7e166..61f1437 100644
--- a/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
+++ b/core/src/main/java/org/apache/brooklyn/entity/group/DynamicGroupImpl.java
@@ -164,7 +164,7 @@ public class DynamicGroupImpl extends AbstractGroupImpl implements DynamicGroup
}
setChangeListener = new MyEntitySetChangeListener();
((ManagementContextInternal) getManagementContext()).addEntitySetListener(setChangeListener);
- Task<Object> rescan = Tasks.builder().name("rescan entities").body(
+ Task<Object> rescan = Tasks.builder().displayName("rescan entities").body(
new Runnable() {
@Override
public void run() {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
index ddcfcac..27f87f9 100644
--- a/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
+++ b/core/src/main/java/org/apache/brooklyn/location/ssh/SshMachineLocation.java
@@ -425,7 +425,7 @@ public class SshMachineLocation extends AbstractLocation implements MachineLocat
Callable<Task<?>> cleanupTaskFactory = new Callable<Task<?>>() {
@Override public Task<Void> call() {
return Tasks.<Void>builder().dynamic(false).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
- .name("ssh-location cache cleaner").body(new Callable<Void>() {
+ .displayName("ssh-location cache cleaner").body(new Callable<Void>() {
@Override public Void call() {
try {
if (sshPoolCacheOrNull != null) sshPoolCacheOrNull.cleanUp();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveTasks.java b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveTasks.java
index d73526e..51f38e7 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveTasks.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveTasks.java
@@ -41,7 +41,7 @@ public class ArchiveTasks {
return new TaskFactory<TaskAdaptable<?>>() {
@Override
public TaskAdaptable<?> newTask() {
- return Tasks.<Void>builder().name("deploying "+Urls.getBasename(archiveUrl)).description("installing "+archiveUrl+" and unpacking to "+destDir).body(new Runnable() {
+ return Tasks.<Void>builder().displayName("deploying "+Urls.getBasename(archiveUrl)).description("installing "+archiveUrl+" and unpacking to "+destDir).body(new Runnable() {
@Override
public void run() {
boolean unpacked = ArchiveUtils.deploy(resolver, props, archiveUrl, machine, destDir, allowNonarchivesOrKeepArchiveAfterDeploy, optionalTmpDir, optionalDestFile);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java
index 74d4ac3..13dda46 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicExecutionContext.java
@@ -133,7 +133,7 @@ public class BasicExecutionContext extends AbstractExecutionContext {
// so wrap it in a task running in this context to keep a reference to the child
// (this matters when we are navigating in the GUI; without it we lose the reference to the child
// when browsing in the context of the parent)
- return submit(Tasks.<T>builder().name("Cross-context execution: "+t.getDescription()).dynamic(true).body(new Callable<T>() {
+ return submit(Tasks.<T>builder().displayName("Cross-context execution: "+t.getDescription()).dynamic(true).body(new Callable<T>() {
public T call() {
return DynamicTasks.get(t);
}
@@ -145,7 +145,7 @@ public class BasicExecutionContext extends AbstractExecutionContext {
} else {
// as above, but here we are definitely not a child (what we are submitting isn't even a task)
// (will only come here if properties defines tags including a target entity, which probably never happens)
- submit(Tasks.<T>builder().name("Cross-context execution").dynamic(true).body(new Callable<T>() {
+ submit(Tasks.<T>builder().displayName("Cross-context execution").dynamic(true).body(new Callable<T>() {
public T call() {
if (task instanceof Callable) {
return DynamicTasks.queue( Tasks.<T>builder().dynamic(false).body((Callable<T>)task).build() ).getUnchecked();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
index 365ce3a..0c26dd1 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/BasicTask.java
@@ -856,7 +856,7 @@ public class BasicTask<T> implements TaskInternal<T> {
}
private static <T> Task<T> newGoneTaskFor(Task<?> task) {
- Task<T> t = Tasks.<T>builder().dynamic(false).name(task.getDisplayName())
+ Task<T> t = Tasks.<T>builder().dynamic(false).displayName(task.getDisplayName())
.description("Details of the original task "+task+" have been forgotten.")
.body(Callables.returning((T)null)).build();
((BasicTask<T>)t).ignoreIfNotRun();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicSequentialTask.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicSequentialTask.java b/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicSequentialTask.java
index d649f3c..b7985c8 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicSequentialTask.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicSequentialTask.java
@@ -257,7 +257,7 @@ public class DynamicSequentialTask<T> extends BasicTask<T> implements HasTaskChi
// optimisation would either use newTaskEndCallback property on task to submit
// or use some kind of single threaded executor for the queued tasks
Task<List<Object>> secondaryJobMaster = Tasks.<List<Object>>builder().dynamic(false)
- .name("DST manager (internal)")
+ .displayName("DST manager (internal)")
// TODO marking it transient helps it be GC'd sooner,
// but ideally we wouldn't have this,
// or else it would be a child
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicTasks.java b/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicTasks.java
index b2791b3..52ec88d 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicTasks.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/DynamicTasks.java
@@ -264,12 +264,12 @@ public class DynamicTasks {
/** @see #queue(org.apache.brooklyn.api.mgmt.TaskAdaptable) */
public static <T> Task<T> queue(String name, Callable<T> job) {
- return DynamicTasks.queue(Tasks.<T>builder().name(name).body(job).build());
+ return DynamicTasks.queue(Tasks.<T>builder().displayName(name).body(job).build());
}
/** @see #queue(org.apache.brooklyn.api.mgmt.TaskAdaptable) */
public static <T> Task<T> queue(String name, Runnable job) {
- return DynamicTasks.queue(Tasks.<T>builder().name(name).body(job).build());
+ return DynamicTasks.queue(Tasks.<T>builder().displayName(name).body(job).build());
}
/** queues the task if needed, i.e. if it is not yet submitted (so it will run),
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/TaskBuilder.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/TaskBuilder.java b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskBuilder.java
index 93b6a54..1a60212 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/TaskBuilder.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/TaskBuilder.java
@@ -38,7 +38,7 @@ import com.google.common.collect.Iterables;
/** Convenience for creating tasks; note that DynamicSequentialTask is the default */
public class TaskBuilder<T> {
- String name = null;
+ String displayName = null;
String description = null;
Callable<T> body = null;
Boolean swallowChildrenFailures = null;
@@ -51,9 +51,17 @@ public class TaskBuilder<T> {
public static <T> TaskBuilder<T> builder() {
return new TaskBuilder<T>();
}
-
+
+ /**
+ * @deprecated since 0.8.0; use {@link #displayName(String)}
+ */
+ @Deprecated
public TaskBuilder<T> name(String name) {
- this.name = name;
+ return displayName(name);
+ }
+
+ public TaskBuilder<T> displayName(String displayName) {
+ this.displayName = displayName;
return this;
}
@@ -130,7 +138,7 @@ public class TaskBuilder<T> {
@SuppressWarnings({ "unchecked", "rawtypes" })
public Task<T> build() {
MutableMap<String, Object> taskFlags = MutableMap.copyOf(flags);
- if (name!=null) taskFlags.put("displayName", name);
+ if (displayName!=null) taskFlags.put("displayName", displayName);
if (description!=null) taskFlags.put("description", description);
if (!tags.isEmpty()) taskFlags.put("tags", tags);
@@ -178,6 +186,6 @@ public class TaskBuilder<T> {
@Override
public String toString() {
- return super.toString()+"["+name+"]";
+ return super.toString()+"["+displayName+"]";
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/Tasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/Tasks.java b/core/src/main/java/org/apache/brooklyn/util/core/task/Tasks.java
index 8152adf..3dae7ab 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/Tasks.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/Tasks.java
@@ -195,7 +195,7 @@ public class Tasks {
return parallelInternal(name, asTasks(Iterables.toArray(tasks, TaskAdaptable.class)));
}
private static Task<List<?>> parallelInternal(String name, Task<?>[] tasks) {
- return Tasks.<List<?>>builder().name(name).parallel(true).add(tasks).build();
+ return Tasks.<List<?>>builder().displayName(name).parallel(true).add(tasks).build();
}
public static Task<List<?>> sequential(TaskAdaptable<?> ...tasks) {
@@ -217,13 +217,13 @@ public class Tasks {
return sequential(name, asTasks(Iterables.toArray(tasks, TaskAdaptable.class)));
}
private static Task<List<?>> sequentialInternal(String name, Task<?>[] tasks) {
- return Tasks.<List<?>>builder().name(name).parallel(false).add(tasks).build();
+ return Tasks.<List<?>>builder().displayName(name).parallel(false).add(tasks).build();
}
private static TaskFactory<?> sequentialInternal(final String name, final TaskFactory<?> ...taskFactories) {
return new TaskFactory<TaskAdaptable<?>>() {
@Override
public TaskAdaptable<?> newTask() {
- TaskBuilder<List<?>> tb = Tasks.<List<?>>builder().name(name).parallel(false);
+ TaskBuilder<List<?>> tb = Tasks.<List<?>>builder().displayName(name).parallel(false);
for (TaskFactory<?> tf: taskFactories)
tb.add(tf.newTask().asTask());
return tb.build();
@@ -334,7 +334,7 @@ public class Tasks {
}
}
public static Task<Void> fail(final String name, final Throwable optionalError) {
- return Tasks.<Void>builder().dynamic(false).name(name).body(new Runnable() { public void run() {
+ return Tasks.<Void>builder().dynamic(false).displayName(name).body(new Runnable() { public void run() {
if (optionalError!=null) throw Exceptions.propagate(optionalError); else throw new RuntimeException("Failed: "+name);
} }).build();
}
@@ -465,7 +465,7 @@ public class Tasks {
* returning true or false depending on whether repeater succeed */
public static TaskBuilder<Boolean> testing(Repeater repeater) {
return Tasks.<Boolean>builder().body(new WaitForRepeaterCallable(repeater, false))
- .name("waiting for condition")
+ .displayName("waiting for condition")
.description("Testing whether " + getTimeoutString(repeater) + ": "+repeater.getDescription());
}
@@ -473,7 +473,7 @@ public class Tasks {
* throwing if it does not */
public static TaskBuilder<?> requiring(Repeater repeater) {
return Tasks.<Boolean>builder().body(new WaitForRepeaterCallable(repeater, true))
- .name("waiting for condition")
+ .displayName("waiting for condition")
.description("Requiring " + getTimeoutString(repeater) + ": " + repeater.getDescription());
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
index 35cae91..4a1d030 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
@@ -325,7 +325,7 @@ public class ValueResolver<T> implements DeferredSupplier<T> {
}
} };
String description = getDescription();
- TaskBuilder<Object> vb = Tasks.<Object>builder().body(callable).name("Resolving dependent value").description(description);
+ TaskBuilder<Object> vb = Tasks.<Object>builder().body(callable).displayName("Resolving dependent value").description(description);
if (isTransientTask) vb.tag(BrooklynTaskTags.TRANSIENT_TASK_TAG);
Task<Object> vt = exec.submit(vb.build());
// TODO to handle immediate resolution, it would be nice to be able to submit
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshFetchTaskWrapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshFetchTaskWrapper.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshFetchTaskWrapper.java
index c667d03..5e8e4fc 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshFetchTaskWrapper.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshFetchTaskWrapper.java
@@ -57,7 +57,7 @@ public class SshFetchTaskWrapper implements TaskWrapper<String> {
SshFetchTaskWrapper(SshFetchTaskFactory factory) {
this.remoteFile = Preconditions.checkNotNull(factory.remoteFile, "remoteFile");
this.machine = Preconditions.checkNotNull(factory.machine, "machine");
- TaskBuilder<String> tb = TaskBuilder.<String>builder().dynamic(false).name("ssh fetch "+factory.remoteFile);
+ TaskBuilder<String> tb = TaskBuilder.<String>builder().dynamic(false).displayName("ssh fetch "+factory.remoteFile);
task = tb.body(new SshFetchJob()).build();
config = factory.getConfig();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshPutTaskWrapper.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshPutTaskWrapper.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshPutTaskWrapper.java
index 78aa3ab..f15e06f 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshPutTaskWrapper.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshPutTaskWrapper.java
@@ -49,7 +49,7 @@ public class SshPutTaskWrapper extends SshPutTaskStub implements TaskWrapper<Voi
// package private as only AbstractSshTaskFactory should invoke
SshPutTaskWrapper(SshPutTaskFactory constructor) {
super(constructor);
- TaskBuilder<Void> tb = TaskBuilder.<Void>builder().dynamic(false).name(getSummary());
+ TaskBuilder<Void> tb = TaskBuilder.<Void>builder().dynamic(false).displayName(getSummary());
task = tb.body(new SshPutJob()).build();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshTasks.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshTasks.java b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshTasks.java
index 448cd61..e939ca8 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshTasks.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ssh/SshTasks.java
@@ -219,7 +219,7 @@ public class SshTasks {
return new TaskFactory<TaskAdaptable<?>>() {
@Override
public TaskAdaptable<?> newTask() {
- return Tasks.<Void>builder().name("installing "+Urls.getBasename(url)).description("installing "+url+" to "+destPath).body(new Runnable() {
+ return Tasks.<Void>builder().displayName("installing "+Urls.getBasename(url)).description("installing "+url+" to "+destPath).body(new Runnable() {
@Override
public void run() {
int result = location.installTo(utils, props, url, destPath);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/AbstractProcessTaskFactory.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/AbstractProcessTaskFactory.java b/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/AbstractProcessTaskFactory.java
index 6a98c4b..8d6a343 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/AbstractProcessTaskFactory.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/AbstractProcessTaskFactory.java
@@ -168,7 +168,7 @@ public abstract class AbstractProcessTaskFactory<T extends AbstractProcessTaskFa
/** creates the TaskBuilder which can be further customized; typically invoked by the initial {@link #newTask()} */
public TaskBuilder<Object> constructCustomizedTaskBuilder() {
- TaskBuilder<Object> tb = TaskBuilder.builder().dynamic(false).name("ssh: "+getSummary());
+ TaskBuilder<Object> tb = TaskBuilder.builder().dynamic(false).displayName("ssh: "+getSummary());
tb.tag(BrooklynTaskTags.tagForStream(BrooklynTaskTags.STREAM_STDIN,
Streams.byteArrayOfString(Strings.join(commands, "\n"))));
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
index 3e79aa9..427f22b 100644
--- a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorTaskTest.java
@@ -111,7 +111,7 @@ public class EffectorTaskTest extends BrooklynAppUnitTestSupport {
return new EffectorTaskFactory<Integer>() {
@Override
public Task<Integer> newTask(final Entity entity, final Effector<Integer> effector, final ConfigBag parameters) {
- return TaskBuilder.<Integer>builder().name("times").body(new Callable<Integer>() { public Integer call() {
+ return TaskBuilder.<Integer>builder().displayName("times").body(new Callable<Integer>() { public Integer call() {
return DynamicTasks.get( x.newTask(entity, effector, parameters) )*y;
} }).build();
}
@@ -200,26 +200,26 @@ public class EffectorTaskTest extends BrooklynAppUnitTestSupport {
// ----------------- syntax for more complex -- an effector using subtasks
public static Task<Integer> add(final int x, final int y) {
- return TaskBuilder.<Integer>builder().name("add").body(new Callable<Integer>() { public Integer call() { return x+y; } }).build();
+ return TaskBuilder.<Integer>builder().displayName("add").body(new Callable<Integer>() { public Integer call() { return x+y; } }).build();
}
public static Task<Integer> add(final Task<Integer> x, final int y) {
- return TaskBuilder.<Integer>builder().name("add").body(new Callable<Integer>() { public Integer call() { return DynamicTasks.get(x)+y; } }).build();
+ return TaskBuilder.<Integer>builder().displayName("add").body(new Callable<Integer>() { public Integer call() { return DynamicTasks.get(x)+y; } }).build();
}
public static Task<Integer> addBasic(final Task<Integer> x, final int y) {
- return TaskBuilder.<Integer>builder().name("add (not dynamic)").dynamic(false).body(new Callable<Integer>() { public Integer call() {
+ return TaskBuilder.<Integer>builder().displayName("add (not dynamic)").dynamic(false).body(new Callable<Integer>() { public Integer call() {
Preconditions.checkState(x.isSubmitted());
return x.getUnchecked()+y;
} }).build();
}
public static Task<Integer> times(final int x, final int y) {
- return TaskBuilder.<Integer>builder().name("times").body(new Callable<Integer>() { public Integer call() { return x*y; } }).build();
+ return TaskBuilder.<Integer>builder().displayName("times").body(new Callable<Integer>() { public Integer call() { return x*y; } }).build();
}
public static Task<Integer> times(final Task<Integer> x, final int y) {
- return TaskBuilder.<Integer>builder().name("times").body(new Callable<Integer>() { public Integer call() { return DynamicTasks.get(x)*y; } }).build();
+ return TaskBuilder.<Integer>builder().displayName("times").body(new Callable<Integer>() { public Integer call() { return DynamicTasks.get(x)*y; } }).build();
}
public static final Effector<Integer> TWO_X_PLUS_ONE = Effectors.effector(Integer.class, "twoXPlusOne")
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/test/java/org/apache/brooklyn/core/entity/trait/FailingEntityImpl.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/trait/FailingEntityImpl.java b/core/src/test/java/org/apache/brooklyn/core/entity/trait/FailingEntityImpl.java
index e6cf002..a675c78 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/trait/FailingEntityImpl.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/trait/FailingEntityImpl.java
@@ -68,7 +68,7 @@ public class FailingEntityImpl extends TestEntityImpl implements FailingEntity {
private RuntimeException fail(final String msg) {
if (getConfig(FAIL_IN_SUB_TASK)) {
- Task<?> task = Tasks.builder().name(msg).body(new Runnable() { public void run() { throw newException(msg); } }).build();
+ Task<?> task = Tasks.builder().displayName(msg).body(new Runnable() { public void run() { throw newException(msg); } }).build();
Entities.submit(this, task).getUnchecked();
Assert.fail("Should have thrown exception on task.getUnchecked");
throw new IllegalStateException("unreachable code");
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/test/java/org/apache/brooklyn/core/entity/trait/StartableMethodsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/entity/trait/StartableMethodsTest.java b/core/src/test/java/org/apache/brooklyn/core/entity/trait/StartableMethodsTest.java
index 131dafe..8092fd1 100644
--- a/core/src/test/java/org/apache/brooklyn/core/entity/trait/StartableMethodsTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/entity/trait/StartableMethodsTest.java
@@ -104,7 +104,7 @@ public class StartableMethodsTest extends BrooklynAppUnitTestSupport {
listener.events.clear();
try {
- Task<?> task = Tasks.builder().name("stopSequentially")
+ Task<?> task = Tasks.builder().displayName("stopSequentially")
.body(new Runnable() {
@Override public void run() {
StartableMethods.stopSequentially(ImmutableList.of(entity, entity2));
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
index 2bc73cb..590b8fb 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/internal/EntityExecutionManagerTest.java
@@ -113,9 +113,9 @@ public class EntityExecutionManagerTest {
sema4.release();
}
});
- Task<String> t1 = em.submit( Tasks.<String>builder().name("t1").dynamic(false).body(Callables.returning("foo")).build() );
+ Task<String> t1 = em.submit( Tasks.<String>builder().displayName("t1").dynamic(false).body(Callables.returning("foo")).build() );
t1.getUnchecked();
- Task<String> t2 = em.submit( Tasks.<String>builder().name("t2").dynamic(false).body(Callables.returning("foo")).build() );
+ Task<String> t2 = em.submit( Tasks.<String>builder().displayName("t2").dynamic(false).body(Callables.returning("foo")).build() );
sema4.acquire();
Assert.assertEquals(completedTasks.size(), 2, "completed tasks are: "+completedTasks);
completedTasks.get(t1).isShorterThan(Duration.TEN_SECONDS);
@@ -135,7 +135,7 @@ public class EntityExecutionManagerTest {
}
protected static TaskBuilder<Object> newEmptyTask(String name) {
- return Tasks.builder().name(name).dynamic(false).body(Callables.returning(null));
+ return Tasks.builder().displayName(name).dynamic(false).body(Callables.returning(null));
}
protected void assertTaskCountForEntitySoon(final Entity entity, final int expectedCount) {
@@ -247,7 +247,7 @@ public class EntityExecutionManagerTest {
BrooklynGarbageCollector.MAX_TASKS_PER_TAG, 2);
for (int count=0; count<5; count++) {
- TaskBuilder<Object> tb = Tasks.builder().name("task-"+count).dynamic(true).body(new Runnable() { @Override public void run() {}})
+ TaskBuilder<Object> tb = Tasks.builder().displayName("task-"+count).dynamic(true).body(new Runnable() { @Override public void run() {}})
.tag(ManagementContextInternal.NON_TRANSIENT_TASK_TAG).tag("foo");
((EntityInternal)e).getExecutionContext().submit(tb.build()).getUnchecked();
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
----------------------------------------------------------------------
diff --git a/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java b/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
index 274aa9a..ee2f5a9 100644
--- a/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
+++ b/policy/src/main/java/org/apache/brooklyn/policy/autoscaling/AutoScalerPolicy.java
@@ -1008,7 +1008,7 @@ public class AutoScalerPolicy extends AbstractPolicy {
if (LOG.isDebugEnabled()) LOG.debug("{} requesting resize to {}; current {}, min {}, max {}",
new Object[] {this, desiredPoolSize, currentPoolSize, getMinPoolSize(), getMaxPoolSize()});
- Entities.submit(entity, Tasks.<Void>builder().name("Auto-scaler")
+ Entities.submit(entity, Tasks.<Void>builder().displayName("Auto-scaler")
.description("Auto-scaler recommending resize from "+currentPoolSize+" to "+desiredPoolSize)
.tag(BrooklynTaskTags.NON_TRANSIENT_TASK_TAG)
.body(new Callable<Void>() {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/sandbox/extra/src/main/java/org/apache/brooklyn/entity/salt/SaltTasks.java
----------------------------------------------------------------------
diff --git a/sandbox/extra/src/main/java/org/apache/brooklyn/entity/salt/SaltTasks.java b/sandbox/extra/src/main/java/org/apache/brooklyn/entity/salt/SaltTasks.java
index d6bacfa..f969b44 100644
--- a/sandbox/extra/src/main/java/org/apache/brooklyn/entity/salt/SaltTasks.java
+++ b/sandbox/extra/src/main/java/org/apache/brooklyn/entity/salt/SaltTasks.java
@@ -59,7 +59,7 @@ public class SaltTasks {
}
public static TaskFactory<?> installSaltMinion(final Entity minion, final String runDir, final String installDir, final boolean force) {
- return Tasks.<Void>builder().name("install minion").body(
+ return Tasks.<Void>builder().displayName("install minion").body(
new Runnable() {
public void run() {
// Setup bootstrap installation command for minion
@@ -97,7 +97,7 @@ public class SaltTasks {
}
public static TaskFactory<?> installFormulas(final String installDir, final Map<String,String> formulasAndUrls, final boolean force) {
- return Tasks.<Void>builder().name("install formulas").body(
+ return Tasks.<Void>builder().displayName("install formulas").body(
new Runnable() {
public void run() {
Entity e = EffectorTasks.findEntity();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
index 538c170..11d3baf 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynEntityMirrorImpl.java
@@ -98,7 +98,7 @@ public class BrooklynEntityMirrorImpl extends AbstractEntity implements Brooklyn
DynamicTasks.queueIfPossible(
Tasks.<Void>builder()
- .name("Start entity mirror feed")
+ .displayName("Start entity mirror feed")
.body(asyncTask)
.build())
.orSubmitAsync(this);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
index df9651e..e21200d 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeImpl.java
@@ -198,7 +198,7 @@ public class BrooklynNodeImpl extends SoftwareProcessImpl implements BrooklynNod
private void queueWaitExitTask() {
//give time to the process to die gracefully after closing the shutdown call
- DynamicTasks.queue(Tasks.builder().name("wait for graceful stop").body(new Runnable() {
+ DynamicTasks.queue(Tasks.builder().displayName("wait for graceful stop").body(new Runnable() {
@Override
public void run() {
DynamicTasks.markInessential();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynClusterUpgradeEffectorBody.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynClusterUpgradeEffectorBody.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynClusterUpgradeEffectorBody.java
index 319d5ba..19b5ce2 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynClusterUpgradeEffectorBody.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynClusterUpgradeEffectorBody.java
@@ -157,7 +157,7 @@ public class BrooklynClusterUpgradeEffectorBody extends EffectorBody<Void> imple
}
private TaskAdaptable<Collection<Entity>> newCreateNodesTask(int size, String name) {
- return Tasks.<Collection<Entity>>builder().name(name).body(new CreateNodesCallable(size)).build();
+ return Tasks.<Collection<Entity>>builder().displayName(name).body(new CreateNodesCallable(size)).build();
}
protected class CreateNodesCallable implements Callable<Collection<Entity>> {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynNodeUpgradeEffectorBody.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynNodeUpgradeEffectorBody.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynNodeUpgradeEffectorBody.java
index c9f7dd7..12ca603 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynNodeUpgradeEffectorBody.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/effector/BrooklynNodeUpgradeEffectorBody.java
@@ -117,12 +117,12 @@ public class BrooklynNodeUpgradeEffectorBody extends EffectorBody<Void> {
}
// Stop running instance
- DynamicTasks.queue(Tasks.builder().name("shutdown node")
+ DynamicTasks.queue(Tasks.builder().displayName("shutdown node")
.add(Effectors.invocation(entity(), BrooklynNode.STOP_NODE_BUT_LEAVE_APPS, ImmutableMap.of(StopSoftwareParameters.STOP_MACHINE_MODE, StopMode.NEVER)))
.build());
// backup old files
- DynamicTasks.queue(Tasks.builder().name("backup old version").body(new Runnable() {
+ DynamicTasks.queue(Tasks.builder().displayName("backup old version").body(new Runnable() {
@Override
public void run() {
String runDir = entity().getAttribute(SoftwareProcess.RUN_DIR);
@@ -139,7 +139,7 @@ public class BrooklynNodeUpgradeEffectorBody extends EffectorBody<Void> {
}).build());
// Reconfigure entity
- DynamicTasks.queue(Tasks.builder().name("reconfigure").body(new Runnable() {
+ DynamicTasks.queue(Tasks.builder().displayName("reconfigure").body(new Runnable() {
@Override
public void run() {
DynamicTasks.waitForLast();
@@ -191,11 +191,11 @@ public class BrooklynNodeUpgradeEffectorBody extends EffectorBody<Void> {
Predicates.equalTo(ManagementNodeState.HOT_STANDBY), Duration.FIVE_MINUTES));
// 3 stop new version
- DynamicTasks.queue(Tasks.builder().name("shutdown transient node")
+ DynamicTasks.queue(Tasks.builder().displayName("shutdown transient node")
.add(Effectors.invocation(dryRunChild, BrooklynNode.STOP_NODE_BUT_LEAVE_APPS, ImmutableMap.of(StopSoftwareParameters.STOP_MACHINE_MODE, StopMode.NEVER)))
.build());
- DynamicTasks.queue(Tasks.<Void>builder().name("remove transient node").body(
+ DynamicTasks.queue(Tasks.<Void>builder().displayName("remove transient node").body(
new Runnable() {
@Override
public void run() {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/chef/ChefTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/chef/ChefTasks.java b/software/base/src/main/java/org/apache/brooklyn/entity/chef/ChefTasks.java
index c1efa55..ac12f00 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/chef/ChefTasks.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/chef/ChefTasks.java
@@ -56,7 +56,7 @@ public class ChefTasks {
}
public static TaskFactory<?> installCookbooks(final String chefDirectory, final Map<String,String> cookbooksAndUrls, final boolean force) {
- return Tasks.<Void>builder().name("install "+(cookbooksAndUrls==null ? "0" : cookbooksAndUrls.size())+" cookbook"+Strings.s(cookbooksAndUrls)).body(
+ return Tasks.<Void>builder().displayName("install "+(cookbooksAndUrls==null ? "0" : cookbooksAndUrls.size())+" cookbook"+Strings.s(cookbooksAndUrls)).body(
new Runnable() {
public void run() {
Entity e = EffectorTasks.findEntity();
@@ -72,7 +72,7 @@ public class ChefTasks {
return new TaskFactory<TaskAdaptable<?>>() {
@Override
public TaskAdaptable<?> newTask() {
- TaskBuilder<Void> tb = Tasks.<Void>builder().name("install cookbook "+cookbookName);
+ TaskBuilder<Void> tb = Tasks.<Void>builder().displayName("install cookbook "+cookbookName);
String cookbookDir = Urls.mergePaths(chefDirectory, cookbookName);
String privateTmpDirContainingUnpackedCookbook =
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SameServerEntityImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SameServerEntityImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SameServerEntityImpl.java
index ee9d711..600ab77 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SameServerEntityImpl.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SameServerEntityImpl.java
@@ -57,7 +57,7 @@ public class SameServerEntityImpl extends AbstractEntity implements SameServerEn
if (DynamicTasks.getTaskQueuingContext() != null) {
doRestart(ConfigBag.EMPTY);
} else {
- Task<?> task = Tasks.builder().name("restart").body(new Runnable() { public void run() { doRestart(ConfigBag.EMPTY); } }).build();
+ Task<?> task = Tasks.builder().displayName("restart").body(new Runnable() { public void run() { doRestart(ConfigBag.EMPTY); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
@@ -73,7 +73,7 @@ public class SameServerEntityImpl extends AbstractEntity implements SameServerEn
if (DynamicTasks.getTaskQueuingContext() != null) {
doStart(locations);
} else {
- Task<?> task = Tasks.builder().name("start").body(new Runnable() { public void run() { doStart(locations); } }).build();
+ Task<?> task = Tasks.builder().displayName("start").body(new Runnable() { public void run() { doStart(locations); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
@@ -88,7 +88,7 @@ public class SameServerEntityImpl extends AbstractEntity implements SameServerEn
if (DynamicTasks.getTaskQueuingContext() != null) {
doStop();
} else {
- Task<?> task = Tasks.builder().name("stop").body(new Runnable() { public void run() { doStop(); } }).build();
+ Task<?> task = Tasks.builder().displayName("stop").body(new Runnable() { public void run() { doStop(); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java
index f4e02c4..a777dcd 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessImpl.java
@@ -603,7 +603,7 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft
if (DynamicTasks.getTaskQueuingContext() != null) {
getLifecycleEffectorTasks().start(locations);
} else {
- Task<?> task = Tasks.builder().name("start (sequential)").body(new Runnable() { public void run() { getLifecycleEffectorTasks().start(locations); } }).build();
+ Task<?> task = Tasks.builder().displayName("start (sequential)").body(new Runnable() { public void run() { getLifecycleEffectorTasks().start(locations); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
@@ -625,7 +625,7 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft
if (DynamicTasks.getTaskQueuingContext() != null) {
getLifecycleEffectorTasks().stop(ConfigBag.EMPTY);
} else {
- Task<?> task = Tasks.builder().name("stop").body(new Runnable() { public void run() { getLifecycleEffectorTasks().stop(ConfigBag.EMPTY); } }).build();
+ Task<?> task = Tasks.builder().displayName("stop").body(new Runnable() { public void run() { getLifecycleEffectorTasks().stop(ConfigBag.EMPTY); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
@@ -639,7 +639,7 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft
if (DynamicTasks.getTaskQueuingContext() != null) {
getLifecycleEffectorTasks().restart(ConfigBag.EMPTY);
} else {
- Task<?> task = Tasks.builder().name("restart").body(new Runnable() { public void run() { getLifecycleEffectorTasks().restart(ConfigBag.EMPTY); } }).build();
+ Task<?> task = Tasks.builder().displayName("restart").body(new Runnable() { public void run() { getLifecycleEffectorTasks().restart(ConfigBag.EMPTY); } }).build();
Entities.submit(this, task).getUnchecked();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
index bd6f477..f57c6d3 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
@@ -355,7 +355,7 @@ public abstract class MachineLifecycleEffectorTasks {
* and returns that machine. The task can be used as a supplier to subsequent methods.
*/
protected Task<MachineLocation> provisionAsync(final MachineProvisioningLocation<?> location) {
- return DynamicTasks.queue(Tasks.<MachineLocation>builder().name("provisioning (" + location.getDisplayName() + ")").body(
+ return DynamicTasks.queue(Tasks.<MachineLocation>builder().displayName("provisioning (" + location.getDisplayName() + ")").body(
new ProvisionMachineTask(location)).build());
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelper.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelper.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelper.java
index a397477..27d94cf 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelper.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelper.java
@@ -281,7 +281,7 @@ public class ScriptHelper {
/** creates a task which will execute this script; note this can only be run once per instance of this class */
public synchronized Task<Integer> newTask() {
if (task!=null) throw new IllegalStateException("task can only be generated once");
- TaskBuilder<Integer> tb = Tasks.<Integer>builder().name("ssh: "+summary).body(
+ TaskBuilder<Integer> tb = Tasks.<Integer>builder().displayName("ssh: "+summary).body(
new Callable<Integer>() {
public Integer call() throws Exception {
return executeInternal();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/system_service/InitdServiceInstaller.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/system_service/InitdServiceInstaller.java b/software/base/src/main/java/org/apache/brooklyn/entity/system_service/InitdServiceInstaller.java
index c0de92d..4922351 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/system_service/InitdServiceInstaller.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/system_service/InitdServiceInstaller.java
@@ -89,7 +89,7 @@ public class InitdServiceInstaller implements SystemServiceInstaller {
.newTask();
return Tasks.<Void>builder()
- .name("install (init.d)")
+ .displayName("install (init.d)")
.description("Install init.d service")
.add(putServiceTask)
.add(installServiceTask)
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/base/src/main/java/org/apache/brooklyn/entity/system_service/SystemServiceEnricher.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/system_service/SystemServiceEnricher.java b/software/base/src/main/java/org/apache/brooklyn/entity/system_service/SystemServiceEnricher.java
index 4b8c5f5..6d6acf7 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/system_service/SystemServiceEnricher.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/system_service/SystemServiceEnricher.java
@@ -77,7 +77,7 @@ public class SystemServiceEnricher extends AbstractEnricher implements Enricher
final String launchScriptPath = Urls.mergePaths(getRunDir(), getStartScriptName());
Task<Void> installerTask = TaskBuilder.<Void>builder()
- .name("install (service)")
+ .displayName("install (service)")
.description("Install as a system service")
.body(new Runnable() {
@Override
@@ -99,14 +99,14 @@ public class SystemServiceEnricher extends AbstractEnricher implements Enricher
.requiringExitCodeZero()
.newTask();
Task<Void> udpateTask = TaskBuilder.<Void>builder()
- .name("update-launch")
+ .displayName("update-launch")
.description("Update launch script used by the system service")
.add(updateLaunchScriptTask)
.add(makeExecutableTask)
.build();
Task<Void> updateService = TaskBuilder.<Void>builder()
- .name("update-system-service")
+ .displayName("update-system-service")
.description("Update system service")
.add(installerTask)
.add(udpateTask)
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlClusterImpl.java
----------------------------------------------------------------------
diff --git a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlClusterImpl.java b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlClusterImpl.java
index 9a444fd..ae75254 100644
--- a/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlClusterImpl.java
+++ b/software/database/src/main/java/org/apache/brooklyn/entity/database/mysql/MySqlClusterImpl.java
@@ -381,7 +381,7 @@ public class MySqlClusterImpl extends DynamicClusterImpl implements MySqlCluster
((EntityLocal)node).setAttribute(NODE_REPLICATION_INITIALIZED, Boolean.TRUE);
DynamicTasks.queueIfPossible(TaskBuilder.builder()
- .name("Configure master-slave replication on node")
+ .displayName("Configure master-slave replication on node")
.body(new InitReplicationTask(cluster, node))
.build())
.orSubmitAsync(node);
@@ -400,7 +400,7 @@ public class MySqlClusterImpl extends DynamicClusterImpl implements MySqlCluster
String slaveAddress = cluster.getAttribute(SLAVE_ID_ADDRESS_MAPPING).remove(node.getId());
if (slaveAddress != null) {
DynamicTasks.queueIfPossible(TaskBuilder.builder()
- .name("Remove slave access")
+ .displayName("Remove slave access")
.body(new RemoveSlaveConfigTask(cluster, slaveAddress))
.build())
.orSubmitAsync(cluster);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
index 3ae6fe9..eaa7b7a 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseClusterImpl.java
@@ -525,7 +525,7 @@ public class CouchbaseClusterImpl extends DynamicClusterImpl implements Couchbas
}
public void createBucket(final Entity primaryNode, final String bucketName, final String bucketType, final Integer bucketPort, final Integer bucketRamSize, final Integer bucketReplica) {
- DynamicTasks.queueIfPossible(TaskBuilder.<Void>builder().name("Creating bucket " + bucketName).body(
+ DynamicTasks.queueIfPossible(TaskBuilder.<Void>builder().displayName("Creating bucket " + bucketName).body(
new Callable<Void>() {
@Override
public Void call() throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeSshDriver.java
----------------------------------------------------------------------
diff --git a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeSshDriver.java b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeSshDriver.java
index cc21867..3774ddb 100644
--- a/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeSshDriver.java
+++ b/software/nosql/src/main/java/org/apache/brooklyn/entity/nosql/couchbase/CouchbaseNodeSshDriver.java
@@ -361,7 +361,7 @@ public class CouchbaseNodeSshDriver extends AbstractSoftwareProcessSshDriver imp
entity.setAttribute(CouchbaseNode.REBALANCE_STATUS, "waiting for completion");
// Wait until the Couchbase node finishes the re-balancing
Task<Boolean> reBalance = TaskBuilder.<Boolean>builder()
- .name("Waiting until node is rebalancing")
+ .displayName("Waiting until node is rebalancing")
.body(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/AbstractControllerImpl.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/AbstractControllerImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/AbstractControllerImpl.java
index ec3e714..a4c04b6 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/AbstractControllerImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/proxy/AbstractControllerImpl.java
@@ -361,7 +361,7 @@ public abstract class AbstractControllerImpl extends SoftwareProcessImpl impleme
if (updateNeeded) return;
updateNeeded = true;
LOG.debug("queueing an update-needed task for "+this+"; update will occur shortly");
- Entities.submit(this, Tasks.builder().name("update-needed").body(new Runnable() {
+ Entities.submit(this, Tasks.builder().displayName("update-needed").body(new Runnable() {
@Override
public void run() {
if (updateNeeded)
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
----------------------------------------------------------------------
diff --git a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
index 4bc1fd3..81f72f9 100644
--- a/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
+++ b/software/webapp/src/main/java/org/apache/brooklyn/entity/webapp/DynamicWebAppClusterImpl.java
@@ -128,7 +128,7 @@ public class DynamicWebAppClusterImpl extends DynamicClusterImpl implements Dyna
* If the target goes away, this task marks itself inessential
* before failing so as not to cause a parent task to fail. */
static <T> Task<T> whenServiceUp(final Entity target, final TaskAdaptable<T> task, String name) {
- return Tasks.<T>builder().name(name).dynamic(true).body(new Callable<T>() {
+ return Tasks.<T>builder().displayName(name).dynamic(true).body(new Callable<T>() {
@Override
public T call() {
try {
@@ -176,7 +176,7 @@ public class DynamicWebAppClusterImpl extends DynamicClusterImpl implements Dyna
log.debug("Deploying "+targetName+"->"+url+" across cluster "+this+"; WARs now "+getConfig(WARS_BY_CONTEXT));
Iterable<CanDeployAndUndeploy> targets = Iterables.filter(getChildren(), CanDeployAndUndeploy.class);
- TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).name("Deploy "+targetName+" to cluster (size "+Iterables.size(targets)+")");
+ TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).displayName("Deploy "+targetName+" to cluster (size "+Iterables.size(targets)+")");
for (Entity target: targets) {
tb.add(whenServiceUp(target, Effectors.invocation(target, DEPLOY, MutableMap.of("url", url, "targetName", targetName)),
"Deploy "+targetName+" to "+target+" when ready"));
@@ -203,7 +203,7 @@ public class DynamicWebAppClusterImpl extends DynamicClusterImpl implements Dyna
log.debug("Undeploying "+targetName+" across cluster "+this+"; WARs now "+getConfig(WARS_BY_CONTEXT));
Iterable<CanDeployAndUndeploy> targets = Iterables.filter(getChildren(), CanDeployAndUndeploy.class);
- TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).name("Undeploy "+targetName+" across cluster (size "+Iterables.size(targets)+")");
+ TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).displayName("Undeploy "+targetName+" across cluster (size "+Iterables.size(targets)+")");
for (Entity target: targets) {
tb.add(whenServiceUp(target, Effectors.invocation(target, UNDEPLOY, MutableMap.of("targetName", targetName)),
"Undeploy "+targetName+" at "+target+" when ready"));
@@ -248,9 +248,9 @@ public class DynamicWebAppClusterImpl extends DynamicClusterImpl implements Dyna
log.debug("Redeplying all WARs across cluster "+this+": "+getConfig(WARS_BY_CONTEXT));
Iterable<CanDeployAndUndeploy> targetEntities = Iterables.filter(getChildren(), CanDeployAndUndeploy.class);
- TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).name(redeployPrefix+" across cluster (size "+Iterables.size(targetEntities)+")");
+ TaskBuilder<Void> tb = Tasks.<Void>builder().parallel(true).displayName(redeployPrefix+" across cluster (size "+Iterables.size(targetEntities)+")");
for (Entity targetEntity: targetEntities) {
- TaskBuilder<Void> redeployAllToTarget = Tasks.<Void>builder().name(redeployPrefix+" at "+targetEntity+" (after ready check)");
+ TaskBuilder<Void> redeployAllToTarget = Tasks.<Void>builder().displayName(redeployPrefix+" at "+targetEntity+" (after ready check)");
for (String warContextPath: wars.keySet()) {
redeployAllToTarget.add(Effectors.invocation(targetEntity, DEPLOY, MutableMap.of("url", wars.get(warContextPath), "targetName", warContextPath)));
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/f4533edb/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
----------------------------------------------------------------------
diff --git a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
index eebc628..149a88a 100644
--- a/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
+++ b/usage/camp/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/methods/DslComponent.java
@@ -73,7 +73,7 @@ public class DslComponent extends BrooklynDslDeferredSupplier<Entity> {
@Override
public Task<Entity> newTask() {
- return TaskBuilder.<Entity>builder().name(toString()).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
+ return TaskBuilder.<Entity>builder().displayName(toString()).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG)
.body(new EntityInScopeFinder(scopeComponent, scope, componentId)).build();
}
@@ -218,7 +218,7 @@ public class DslComponent extends BrooklynDslDeferredSupplier<Entity> {
@Override
public Task<Object> newTask() {
- return Tasks.builder().name("retrieving config for "+keyName).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG).dynamic(false).body(new Callable<Object>() {
+ return Tasks.builder().displayName("retrieving config for "+keyName).tag(BrooklynTaskTags.TRANSIENT_TASK_TAG).dynamic(false).body(new Callable<Object>() {
@Override
public Object call() throws Exception {
Entity targetEntity = component.get();
@@ -249,7 +249,7 @@ public class DslComponent extends BrooklynDslDeferredSupplier<Entity> {
@Override
public Task<Sensor<?>> newTask() {
- return Tasks.<Sensor<?>>builder().name("looking up sensor for "+sensorName).dynamic(false).body(new Callable<Sensor<?>>() {
+ return Tasks.<Sensor<?>>builder().displayName("looking up sensor for "+sensorName).dynamic(false).body(new Callable<Sensor<?>>() {
@Override
public Sensor<?> call() throws Exception {
Entity targetEntity = component.get();
[14/16] incubator-brooklyn git commit: This closes #857
Posted by he...@apache.org.
This closes #857
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/51466823
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/51466823
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/51466823
Branch: refs/heads/master
Commit: 51466823e393a96d6a15805977a5a9f7faf9de0f
Parents: 50a19d3 7d072fd
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 20 13:38:50 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 20 13:38:50 2015 +0100
----------------------------------------------------------------------
.../core/entity/lifecycle/QuorumCheck.java | 108 -----
.../core/location/BasicLocationRegistry.java | 2 +-
.../core/location/RegistryLocationResolver.java | 42 --
.../core/mgmt/internal/LocalUsageManager.java | 55 +--
.../internal/NonDeploymentUsageManager.java | 17 +-
.../brooklyn/core/mgmt/usage/UsageManager.java | 77 +---
.../entity/group/DynamicClusterImpl.java | 8 +-
.../core/test/entity/TestClusterImpl.java | 4 +-
.../location/jclouds/BrooklynMachinePool.java | 218 ----------
.../location/jclouds/pool/MachinePool.java | 395 -------------------
.../jclouds/BrooklynMachinePoolLiveTest.java | 102 -----
.../pool/JcloudsMachinePoolLiveTest.java | 120 ------
.../brooklyn/policy/ha/ServiceReplacerTest.java | 2 +-
.../usage/ApplicationUsageTrackingTest.java | 44 ---
.../mgmt/usage/LocationUsageTrackingTest.java | 42 +-
.../usage/RecordingLegacyUsageListener.java | 70 ----
.../core/mgmt/usage/RecordingUsageListener.java | 3 +-
.../test/core/mgmt/usage/UsageListenerTest.java | 39 +-
18 files changed, 39 insertions(+), 1309 deletions(-)
----------------------------------------------------------------------
[03/16] incubator-brooklyn git commit: Move HttpRequestSensor to
o.a.b.core.sensor.http
Posted by he...@apache.org.
Move HttpRequestSensor to o.a.b.core.sensor.http
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1dde632f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1dde632f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1dde632f
Branch: refs/heads/master
Commit: 1dde632fe624e1efec91573715c9470e12fd18e9
Parents: 080d2de
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 11:27:20 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 11:27:20 2015 +0100
----------------------------------------------------------------------
.../brooklyn/core/sensor/HttpRequestSensor.java | 96 -------------------
.../core/sensor/http/HttpRequestSensor.java | 97 ++++++++++++++++++++
.../core/sensor/ssh/SshCommandSensor.java | 2 +-
.../core/sensor/HttpRequestSensorTest.java | 85 -----------------
.../core/sensor/http/HttpRequestSensorTest.java | 85 +++++++++++++++++
.../entity/java/JmxAttributeSensor.java | 2 +-
6 files changed, 184 insertions(+), 183 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/core/src/main/java/org/apache/brooklyn/core/sensor/HttpRequestSensor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/HttpRequestSensor.java b/core/src/main/java/org/apache/brooklyn/core/sensor/HttpRequestSensor.java
deleted file mode 100644
index 542fc01..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/HttpRequestSensor.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.brooklyn.core.sensor;
-
-import java.net.URI;
-
-import net.minidev.json.JSONObject;
-
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.effector.AddSensor;
-import org.apache.brooklyn.feed.http.HttpFeed;
-import org.apache.brooklyn.feed.http.HttpPollConfig;
-import org.apache.brooklyn.feed.http.HttpValueFunctions;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Functions;
-import com.google.common.base.Supplier;
-
-/**
- * Configurable {@link org.apache.brooklyn.api.entity.EntityInitializer} which adds an HTTP sensor feed to retrieve the
- * {@link JSONObject} from a JSON response in order to populate the sensor with the data at the {@code jsonPath}.
- *
- * @see SshCommandSensor
- * @see JmxAttributeSensor
- */
-@Beta
-public final class HttpRequestSensor<T> extends AddSensor<T> {
-
- private static final Logger LOG = LoggerFactory.getLogger(HttpRequestSensor.class);
-
- public static final ConfigKey<String> SENSOR_URI = ConfigKeys.newStringConfigKey("uri", "HTTP URI to poll for JSON");
- public static final ConfigKey<String> JSON_PATH = ConfigKeys.newStringConfigKey("jsonPath", "JSON path to select in HTTP response; default $", "$");
- public static final ConfigKey<String> USERNAME = ConfigKeys.newStringConfigKey("username", "Username for HTTP request, if required");
- public static final ConfigKey<String> PASSWORD = ConfigKeys.newStringConfigKey("password", "Password for HTTP request, if required");
-
- protected final Supplier<URI> uri;
- protected final String jsonPath;
- protected final String username;
- protected final String password;
-
- public HttpRequestSensor(final ConfigBag params) {
- super(params);
-
- uri = new Supplier<URI>() {
- @Override
- public URI get() {
- return URI.create(params.get(SENSOR_URI));
- }
- };
- jsonPath = params.get(JSON_PATH);
- username = params.get(USERNAME);
- password = params.get(PASSWORD);
- }
-
- @Override
- public void apply(final EntityLocal entity) {
- super.apply(entity);
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("Adding HTTP JSON sensor {} to {}", name, entity);
- }
-
- HttpPollConfig<T> pollConfig = new HttpPollConfig<T>(sensor)
- .checkSuccess(HttpValueFunctions.responseCodeEquals(200))
- .onFailureOrException(Functions.constant((T) null))
- .onSuccess(HttpValueFunctions.<T>jsonContentsFromPath(jsonPath))
- .period(period);
-
- HttpFeed.builder().entity(entity)
- .baseUri(uri)
- .credentialsIfNotNull(username, password)
- .poll(pollConfig)
- .build();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/core/src/main/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensor.java b/core/src/main/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensor.java
new file mode 100644
index 0000000..8541fd1
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensor.java
@@ -0,0 +1,97 @@
+/*
+ * 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.brooklyn.core.sensor.http;
+
+import java.net.URI;
+
+import net.minidev.json.JSONObject;
+
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.effector.AddSensor;
+import org.apache.brooklyn.core.sensor.ssh.SshCommandSensor;
+import org.apache.brooklyn.feed.http.HttpFeed;
+import org.apache.brooklyn.feed.http.HttpPollConfig;
+import org.apache.brooklyn.feed.http.HttpValueFunctions;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Functions;
+import com.google.common.base.Supplier;
+
+/**
+ * Configurable {@link org.apache.brooklyn.api.entity.EntityInitializer} which adds an HTTP sensor feed to retrieve the
+ * {@link JSONObject} from a JSON response in order to populate the sensor with the data at the {@code jsonPath}.
+ *
+ * @see SshCommandSensor
+ * @see JmxAttributeSensor
+ */
+@Beta
+public final class HttpRequestSensor<T> extends AddSensor<T> {
+
+ private static final Logger LOG = LoggerFactory.getLogger(HttpRequestSensor.class);
+
+ public static final ConfigKey<String> SENSOR_URI = ConfigKeys.newStringConfigKey("uri", "HTTP URI to poll for JSON");
+ public static final ConfigKey<String> JSON_PATH = ConfigKeys.newStringConfigKey("jsonPath", "JSON path to select in HTTP response; default $", "$");
+ public static final ConfigKey<String> USERNAME = ConfigKeys.newStringConfigKey("username", "Username for HTTP request, if required");
+ public static final ConfigKey<String> PASSWORD = ConfigKeys.newStringConfigKey("password", "Password for HTTP request, if required");
+
+ protected final Supplier<URI> uri;
+ protected final String jsonPath;
+ protected final String username;
+ protected final String password;
+
+ public HttpRequestSensor(final ConfigBag params) {
+ super(params);
+
+ uri = new Supplier<URI>() {
+ @Override
+ public URI get() {
+ return URI.create(params.get(SENSOR_URI));
+ }
+ };
+ jsonPath = params.get(JSON_PATH);
+ username = params.get(USERNAME);
+ password = params.get(PASSWORD);
+ }
+
+ @Override
+ public void apply(final EntityLocal entity) {
+ super.apply(entity);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding HTTP JSON sensor {} to {}", name, entity);
+ }
+
+ HttpPollConfig<T> pollConfig = new HttpPollConfig<T>(sensor)
+ .checkSuccess(HttpValueFunctions.responseCodeEquals(200))
+ .onFailureOrException(Functions.constant((T) null))
+ .onSuccess(HttpValueFunctions.<T>jsonContentsFromPath(jsonPath))
+ .period(period);
+
+ HttpFeed.builder().entity(entity)
+ .baseUri(uri)
+ .credentialsIfNotNull(username, password)
+ .poll(pollConfig)
+ .build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
index c418f93..0218a99 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
@@ -26,7 +26,7 @@ import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.effector.AddSensor;
import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
-import org.apache.brooklyn.core.sensor.HttpRequestSensor;
+import org.apache.brooklyn.core.sensor.http.HttpRequestSensor;
import org.apache.brooklyn.feed.ssh.SshFeed;
import org.apache.brooklyn.feed.ssh.SshPollConfig;
import org.apache.brooklyn.feed.ssh.SshValueFunctions;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/core/src/test/java/org/apache/brooklyn/core/sensor/HttpRequestSensorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/sensor/HttpRequestSensorTest.java b/core/src/test/java/org/apache/brooklyn/core/sensor/HttpRequestSensorTest.java
deleted file mode 100644
index 4715594..0000000
--- a/core/src/test/java/org/apache/brooklyn/core/sensor/HttpRequestSensorTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * 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.brooklyn.core.sensor;
-
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.sensor.HttpRequestSensor;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.TestHttpRequestHandler;
-import org.apache.brooklyn.core.test.TestHttpServer;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.test.EntityTestUtils;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.time.Duration;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-
-public class HttpRequestSensorTest {
- final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString");
- final static String TARGET_TYPE = "java.lang.String";
-
- private TestApplication app;
- private EntityLocal entity;
-
- private TestHttpServer server;
- private String serverUrl;
-
- @BeforeClass(alwaysRun=true)
- public void setUp() throws Exception {
- server = new TestHttpServer()
- .handler("/myKey/myValue", new TestHttpRequestHandler().header("Content-Type", "application/json").response("{\"myKey\":\"myValue\"}"))
- .start();
- serverUrl = server.getUrl();
-
- app = TestApplication.Factory.newManagedInstanceForTests();
- entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
- .location(app.newLocalhostProvisioningLocation().obtain()));
- app.start(ImmutableList.<Location>of());
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- server.stop();
- }
-
- @Test
- public void testHttpSensor() throws Exception {
- HttpRequestSensor<Integer> sensor = new HttpRequestSensor<Integer>(ConfigBag.newInstance()
- .configure(HttpRequestSensor.SENSOR_PERIOD, Duration.millis(100))
- .configure(HttpRequestSensor.SENSOR_NAME, SENSOR_STRING.getName())
- .configure(HttpRequestSensor.SENSOR_TYPE, TARGET_TYPE)
- .configure(HttpRequestSensor.JSON_PATH, "$.myKey")
- .configure(HttpRequestSensor.SENSOR_URI, serverUrl + "/myKey/myValue"));
- sensor.apply(entity);
- entity.setAttribute(Attributes.SERVICE_UP, true);
-
- EntityTestUtils.assertAttributeEqualsEventually(entity, SENSOR_STRING, "myValue");
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/core/src/test/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensorTest.java b/core/src/test/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensorTest.java
new file mode 100644
index 0000000..2fda742
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/sensor/http/HttpRequestSensorTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.brooklyn.core.sensor.http;
+
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.sensor.AttributeSensor;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.core.sensor.http.HttpRequestSensor;
+import org.apache.brooklyn.core.test.TestHttpRequestHandler;
+import org.apache.brooklyn.core.test.TestHttpServer;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.time.Duration;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class HttpRequestSensorTest {
+ final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString");
+ final static String TARGET_TYPE = "java.lang.String";
+
+ private TestApplication app;
+ private EntityLocal entity;
+
+ private TestHttpServer server;
+ private String serverUrl;
+
+ @BeforeClass(alwaysRun=true)
+ public void setUp() throws Exception {
+ server = new TestHttpServer()
+ .handler("/myKey/myValue", new TestHttpRequestHandler().header("Content-Type", "application/json").response("{\"myKey\":\"myValue\"}"))
+ .start();
+ serverUrl = server.getUrl();
+
+ app = TestApplication.Factory.newManagedInstanceForTests();
+ entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)
+ .location(app.newLocalhostProvisioningLocation().obtain()));
+ app.start(ImmutableList.<Location>of());
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ if (app != null) Entities.destroyAll(app.getManagementContext());
+ server.stop();
+ }
+
+ @Test
+ public void testHttpSensor() throws Exception {
+ HttpRequestSensor<Integer> sensor = new HttpRequestSensor<Integer>(ConfigBag.newInstance()
+ .configure(HttpRequestSensor.SENSOR_PERIOD, Duration.millis(100))
+ .configure(HttpRequestSensor.SENSOR_NAME, SENSOR_STRING.getName())
+ .configure(HttpRequestSensor.SENSOR_TYPE, TARGET_TYPE)
+ .configure(HttpRequestSensor.JSON_PATH, "$.myKey")
+ .configure(HttpRequestSensor.SENSOR_URI, serverUrl + "/myKey/myValue"));
+ sensor.apply(entity);
+ entity.setAttribute(Attributes.SERVICE_UP, true);
+
+ EntityTestUtils.assertAttributeEqualsEventually(entity, SENSOR_STRING, "myValue");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1dde632f/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java b/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
index 595547e..a629779 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
@@ -29,7 +29,7 @@ import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.effector.AddSensor;
import org.apache.brooklyn.core.sensor.DependentConfiguration;
-import org.apache.brooklyn.core.sensor.HttpRequestSensor;
+import org.apache.brooklyn.core.sensor.http.HttpRequestSensor;
import org.apache.brooklyn.core.sensor.ssh.SshCommandSensor;
import org.apache.brooklyn.feed.jmx.JmxAttributePollConfig;
import org.apache.brooklyn.feed.jmx.JmxFeed;
[02/16] incubator-brooklyn git commit: Move o.a.b.sensor.ssh contents
to core
Posted by he...@apache.org.
Move o.a.b.sensor.ssh contents to core
- Moved SshCommandEffector (which strangely was in .sensor.ssh) to
o.a.b.core.effector.ssh
- Moved SshCommandSensor (which strangely was in .sensor.ssh) to
o.a.b.core.sensor.ssh
- Changed these classes to reference config in BrooklynConfigKeys,
rather than in SoftwareProcess.*
- Added BrooklynConfigKeys.SHELL_ENVIRONMENT, which SoftwareProcess
now uses.
- Made SshCommandSensor.makeCommandExecutingInDirectory public and
marked as @Beta (was previously static package-private, for use
by SshCommandEffector as well).
- Split SshCommandIntegrationTest into two:
- SshCommandEffectorIntegrationTest (and removed unnecessary tempFile
creation)
- SshCommandSensorIntegrationTest (and moved tempFile creation/deletion
into setUp/tearDown)
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/080d2de0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/080d2de0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/080d2de0
Branch: refs/heads/master
Commit: 080d2de0806f5524886b4d6d8bfea7c71a45dbc7
Parents: 8e439bd
Author: Aled Sage <al...@gmail.com>
Authored: Thu Aug 20 11:24:20 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 11:24:20 2015 +0100
----------------------------------------------------------------------
.../core/effector/ssh/SshCommandEffector.java | 102 +++++++++++++
.../core/entity/BrooklynConfigKeys.java | 9 ++
.../core/sensor/ssh/SshCommandSensor.java | 141 ++++++++++++++++++
.../ssh/SshCommandEffectorIntegrationTest.java | 94 ++++++++++++
.../ssh/SshCommandSensorIntegrationTest.java | 89 ++++++++++++
.../entity/java/JmxAttributeSensor.java | 2 +-
.../entity/software/base/SoftwareProcess.java | 7 +-
.../brooklyn/sensor/ssh/SshCommandEffector.java | 103 --------------
.../brooklyn/sensor/ssh/SshCommandSensor.java | 142 -------------------
.../test/ssh/SshCommandIntegrationTest.java | 126 ----------------
10 files changed, 439 insertions(+), 376 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java b/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
new file mode 100644
index 0000000..b22f717
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffector.java
@@ -0,0 +1,102 @@
+/*
+ * 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.brooklyn.core.effector.ssh;
+
+import java.util.Map;
+
+import org.apache.brooklyn.api.effector.Effector;
+import org.apache.brooklyn.api.effector.ParameterType;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.effector.AddEffector;
+import org.apache.brooklyn.core.effector.EffectorBody;
+import org.apache.brooklyn.core.effector.Effectors;
+import org.apache.brooklyn.core.effector.Effectors.EffectorBuilder;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
+import org.apache.brooklyn.core.sensor.ssh.SshCommandSensor;
+import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.text.Strings;
+
+import com.google.common.base.Preconditions;
+
+public final class SshCommandEffector extends AddEffector {
+
+ public static final ConfigKey<String> EFFECTOR_COMMAND = ConfigKeys.newStringConfigKey("command");
+ public static final ConfigKey<String> EFFECTOR_EXECUTION_DIR = SshCommandSensor.SENSOR_EXECUTION_DIR;
+
+ public SshCommandEffector(ConfigBag params) {
+ super(newEffectorBuilder(params).build());
+ }
+
+ public SshCommandEffector(Map<String,String> params) {
+ this(ConfigBag.newInstance(params));
+ }
+
+ public static EffectorBuilder<String> newEffectorBuilder(ConfigBag params) {
+ EffectorBuilder<String> eff = AddEffector.newEffectorBuilder(String.class, params);
+ eff.impl(new Body(eff.buildAbstract(), params));
+ return eff;
+ }
+
+
+ protected static class Body extends EffectorBody<String> {
+ private final Effector<?> effector;
+ private final String command;
+ private final String executionDir;
+
+ public Body(Effector<?> eff, ConfigBag params) {
+ this.effector = eff;
+ this.command = Preconditions.checkNotNull(params.get(EFFECTOR_COMMAND), "command must be supplied when defining this effector");
+ this.executionDir = params.get(EFFECTOR_EXECUTION_DIR);
+ // TODO could take a custom "env" aka effectorShellEnv
+ }
+
+ @Override
+ public String call(ConfigBag params) {
+ String command = this.command;
+
+ command = SshCommandSensor.makeCommandExecutingInDirectory(command, executionDir, entity());
+
+ MutableMap<String, String> env = MutableMap.of();
+ // first set all declared parameters, including default values
+ for (ParameterType<?> param: effector.getParameters()) {
+ env.addIfNotNull(param.getName(), Strings.toString( params.get(Effectors.asConfigKey(param)) ));
+ }
+
+ // then set things from the entities defined shell environment, if applicable
+ env.putAll(Strings.toStringMap(entity().getConfig(BrooklynConfigKeys.SHELL_ENVIRONMENT), ""));
+
+ // if we wanted to resolve the surrounding environment in real time -- see above
+// Map<String,Object> paramsResolved = (Map<String, Object>) Tasks.resolveDeepValue(effectorShellEnv, Map.class, entity().getExecutionContext());
+
+ // finally set the parameters we've been passed; this will repeat declared parameters but to no harm,
+ // it may pick up additional values (could be a flag defining whether this is permitted or not)
+ env.putAll(Strings.toStringMap(params.getAllConfig()));
+
+ SshEffectorTasks.SshEffectorTaskFactory<String> t = SshEffectorTasks.ssh(command)
+ .requiringZeroAndReturningStdout()
+ .summary("effector "+effector.getName())
+ .environmentVariables(env);
+ return queue(t).get();
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java b/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
index cedccb8..c1ad143 100644
--- a/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
+++ b/core/src/main/java/org/apache/brooklyn/core/entity/BrooklynConfigKeys.java
@@ -26,15 +26,18 @@ import static org.apache.brooklyn.core.config.ConfigKeys.newStringConfigKey;
import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.config.MapConfigKey;
import org.apache.brooklyn.core.entity.trait.Startable;
import org.apache.brooklyn.core.sensor.AttributeSensorAndConfigKey;
import org.apache.brooklyn.core.sensor.TemplatedStringAttributeSensorAndConfigKey;
import org.apache.brooklyn.core.server.BrooklynServerConfig;
+import org.apache.brooklyn.util.core.flags.SetFromFlag;
import org.apache.brooklyn.util.core.internal.ssh.ShellTool;
import org.apache.brooklyn.util.core.internal.ssh.SshTool;
import org.apache.brooklyn.util.time.Duration;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableMap;
/** Commonly used config keys, for use in entities. Similar to {@link Attributes}.
* See also {@link BrooklynServerConfig} for config keys for controlling the server. */
@@ -103,6 +106,12 @@ public class BrooklynConfigKeys {
public static final ConfigKey<String> POST_LAUNCH_COMMAND = ConfigKeys.newStringConfigKey("post.launch.command",
"Command to be run after the launch method being called on the driver");
+ public static final MapConfigKey<Object> SHELL_ENVIRONMENT = new MapConfigKey<Object>(
+ Object.class,
+ "shell.env",
+ "Map of environment variables to pass to the runtime shell",
+ ImmutableMap.<String,Object>of());
+
public static final AttributeSensorAndConfigKey<String, String> INSTALL_DIR = new TemplatedStringAttributeSensorAndConfigKey("install.dir", "Directory for this software to be installed in",
"${" +
"config['"+ONBOX_BASE_DIR.getName()+"']!" +
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
new file mode 100644
index 0000000..c418f93
--- /dev/null
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensor.java
@@ -0,0 +1,141 @@
+/*
+ * 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.brooklyn.core.sensor.ssh;
+
+import java.util.Map;
+
+import org.apache.brooklyn.api.entity.EntityInitializer;
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.config.ConfigKeys;
+import org.apache.brooklyn.core.effector.AddSensor;
+import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
+import org.apache.brooklyn.core.sensor.HttpRequestSensor;
+import org.apache.brooklyn.feed.ssh.SshFeed;
+import org.apache.brooklyn.feed.ssh.SshPollConfig;
+import org.apache.brooklyn.feed.ssh.SshValueFunctions;
+import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
+import org.apache.brooklyn.util.os.Os;
+import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Function;
+import com.google.common.base.Functions;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Supplier;
+
+/**
+ * Configurable {@link EntityInitializer} which adds an SSH sensor feed running the <code>command</code> supplied
+ * in order to populate the sensor with the indicated <code>name</code>. Note that the <code>targetType</code> is ignored,
+ * and always set to {@link String}.
+ *
+ * @see HttpRequestSensor
+ */
+@Beta
+public final class SshCommandSensor<T> extends AddSensor<T> {
+
+ private static final Logger LOG = LoggerFactory.getLogger(SshCommandSensor.class);
+
+ public static final ConfigKey<String> SENSOR_COMMAND = ConfigKeys.newStringConfigKey("command", "SSH command to execute for sensor");
+ public static final ConfigKey<String> SENSOR_EXECUTION_DIR = ConfigKeys.newStringConfigKey("executionDir", "Directory where the command should run; "
+ + "if not supplied, executes in the entity's run dir (or home dir if no run dir is defined); "
+ + "use '~' to always execute in the home dir, or 'custom-feed/' to execute in a custom-feed dir relative to the run dir");
+
+ protected final String command;
+ protected final String executionDir;
+
+ public SshCommandSensor(final ConfigBag params) {
+ super(params);
+
+ // TODO create a supplier for the command string to support attribute embedding
+ command = Preconditions.checkNotNull(params.get(SENSOR_COMMAND), "command");
+
+ executionDir = params.get(SENSOR_EXECUTION_DIR);
+ }
+
+ @Override
+ public void apply(final EntityLocal entity) {
+ super.apply(entity);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding SSH sensor {} to {}", name, entity);
+ }
+
+ Supplier<Map<String,String>> envSupplier = new Supplier<Map<String,String>>() {
+ @Override
+ public Map<String, String> get() {
+ return MutableMap.copyOf(Strings.toStringMap(entity.getConfig(BrooklynConfigKeys.SHELL_ENVIRONMENT), ""));
+ }
+ };
+
+ Supplier<String> commandSupplier = new Supplier<String>() {
+ @Override
+ public String get() {
+ return makeCommandExecutingInDirectory(command, executionDir, entity);
+ }
+ };
+
+ SshPollConfig<T> pollConfig = new SshPollConfig<T>(sensor)
+ .period(period)
+ .env(envSupplier)
+ .command(commandSupplier)
+ .checkSuccess(SshValueFunctions.exitStatusEquals(0))
+ .onFailureOrException(Functions.constant((T) null))
+ .onSuccess(Functions.compose(new Function<String, T>() {
+ @Override
+ public T apply(String input) {
+ return TypeCoercions.coerce(input, getType(type));
+ }}, SshValueFunctions.stdout()));
+
+ SshFeed.builder()
+ .entity(entity)
+ .onlyIfServiceUp()
+ .poll(pollConfig)
+ .build();
+ }
+
+ @Beta
+ public static String makeCommandExecutingInDirectory(String command, String executionDir, EntityLocal entity) {
+ String finalCommand = command;
+ String execDir = executionDir;
+ if (Strings.isBlank(execDir)) {
+ // default to run dir
+ execDir = entity.getAttribute(BrooklynConfigKeys.RUN_DIR);
+ // if no run dir, default to home
+ if (Strings.isBlank(execDir)) {
+ execDir = "~";
+ }
+ } else if (!Os.isAbsolutish(execDir)) {
+ // relative paths taken wrt run dir
+ String runDir = entity.getAttribute(BrooklynConfigKeys.RUN_DIR);
+ if (!Strings.isBlank(runDir)) {
+ execDir = Os.mergePaths(runDir, execDir);
+ }
+ }
+ if (!"~".equals(execDir)) {
+ finalCommand = "mkdir -p '"+execDir+"' && cd '"+execDir+"' && "+finalCommand;
+ }
+ return finalCommand;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/core/src/test/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffectorIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffectorIntegrationTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffectorIntegrationTest.java
new file mode 100644
index 0000000..7b5dd9a
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/effector/ssh/SshCommandEffectorIntegrationTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.brooklyn.core.effector.ssh;
+
+import org.apache.brooklyn.api.effector.Effector;
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.sensor.AttributeSensor;
+import org.apache.brooklyn.core.effector.Effectors;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class SshCommandEffectorIntegrationTest {
+
+ final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString", "");
+ final static AttributeSensor<Integer> SENSOR_INT = Sensors.newIntegerSensor("aLong", "");
+ final static Effector<String> EFFECTOR_SAY_HI = Effectors.effector(String.class, "sayHi").buildAbstract();
+
+ private TestApplication app;
+ private SshMachineLocation machine;
+ private EntityLocal entity;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ app = TestApplication.Factory.newManagedInstanceForTests();
+ machine = app.newLocalhostProvisioningLocation().obtain();
+ entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).location(machine));
+ app.start(ImmutableList.<Location>of());
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ if (app != null) Entities.destroyAll(app.getManagementContext());
+ }
+
+ @Test(groups="Integration")
+ public void testSshEffector() throws Exception {
+ new SshCommandEffector(ConfigBag.newInstance()
+ .configure(SshCommandEffector.EFFECTOR_NAME, "sayHi")
+ .configure(SshCommandEffector.EFFECTOR_COMMAND, "echo hi"))
+ .apply(entity);
+
+ String val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of()).get();
+ Assert.assertEquals(val.trim(), "hi", "val="+val);
+ }
+
+ @Test(groups="Integration")
+ public void testSshEffectorWithParameters() throws Exception {
+ new SshCommandEffector(ConfigBag.newInstance()
+ .configure(SshCommandEffector.EFFECTOR_NAME, "sayHi")
+ .configure(SshCommandEffector.EFFECTOR_COMMAND, "echo $foo")
+ .configure(SshCommandEffector.EFFECTOR_PARAMETER_DEFS,
+ MutableMap.<String,Object>of("foo", MutableMap.of("defaultValue", "hi"))))
+ .apply(entity);
+
+ String val;
+ // explicit value
+ val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of("foo", "bar")).get();
+ Assert.assertEquals(val.trim(), "bar", "val="+val);
+
+ // default value
+ val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of()).get();
+ Assert.assertEquals(val.trim(), "hi", "val="+val);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/core/src/test/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensorIntegrationTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensorIntegrationTest.java b/core/src/test/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensorIntegrationTest.java
new file mode 100644
index 0000000..bdb4a81
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/sensor/ssh/SshCommandSensorIntegrationTest.java
@@ -0,0 +1,89 @@
+/*
+ * 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.brooklyn.core.sensor.ssh;
+
+import static org.testng.Assert.assertTrue;
+
+import java.io.File;
+
+import org.apache.brooklyn.api.effector.Effector;
+import org.apache.brooklyn.api.entity.EntityLocal;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.location.Location;
+import org.apache.brooklyn.api.sensor.AttributeSensor;
+import org.apache.brooklyn.core.effector.Effectors;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.sensor.Sensors;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.location.ssh.SshMachineLocation;
+import org.apache.brooklyn.test.EntityTestUtils;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.time.Duration;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+
+public class SshCommandSensorIntegrationTest {
+
+ final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString", "");
+ final static AttributeSensor<Integer> SENSOR_INT = Sensors.newIntegerSensor("aLong", "");
+ final static Effector<String> EFFECTOR_SAY_HI = Effectors.effector(String.class, "sayHi").buildAbstract();
+
+ private TestApplication app;
+ private SshMachineLocation machine;
+ private EntityLocal entity;
+ private File tempFile;
+
+ @BeforeMethod(alwaysRun=true)
+ public void setUp() throws Exception {
+ app = TestApplication.Factory.newManagedInstanceForTests();
+ machine = app.newLocalhostProvisioningLocation().obtain();
+ entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).location(machine));
+ app.start(ImmutableList.<Location>of());
+ tempFile = File.createTempFile("testSshCommand", ".txt");
+ }
+
+ @AfterMethod(alwaysRun=true)
+ public void tearDown() throws Exception {
+ if (app != null) Entities.destroyAll(app.getManagementContext());
+ if (tempFile != null) tempFile.delete();
+ }
+
+ @Test(groups="Integration")
+ public void testSshSensor() throws Exception {
+ new SshCommandSensor<String>(ConfigBag.newInstance()
+ .configure(SshCommandSensor.SENSOR_PERIOD, Duration.millis(100))
+ .configure(SshCommandSensor.SENSOR_NAME, SENSOR_STRING.getName())
+ .configure(SshCommandSensor.SENSOR_COMMAND, "echo foo > "+tempFile.getAbsolutePath()+"\n"
+ + "wc "+tempFile.getAbsolutePath()))
+ .apply(entity);
+ entity.setAttribute(Attributes.SERVICE_UP, true);
+
+ String val = EntityTestUtils.assertAttributeEventuallyNonNull(entity, SENSOR_STRING);
+ assertTrue(val.contains("1"), "val="+val);
+ String[] counts = val.trim().split("\\s+");
+ Assert.assertEquals(counts.length, 4, "val="+val);
+ Assert.assertEquals(counts[0], "1", "val="+val);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java b/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
index ae80754..595547e 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/java/JmxAttributeSensor.java
@@ -30,10 +30,10 @@ import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.effector.AddSensor;
import org.apache.brooklyn.core.sensor.DependentConfiguration;
import org.apache.brooklyn.core.sensor.HttpRequestSensor;
+import org.apache.brooklyn.core.sensor.ssh.SshCommandSensor;
import org.apache.brooklyn.feed.jmx.JmxAttributePollConfig;
import org.apache.brooklyn.feed.jmx.JmxFeed;
import org.apache.brooklyn.feed.jmx.JmxHelper;
-import org.apache.brooklyn.sensor.ssh.SshCommandSensor;
import org.apache.brooklyn.util.core.config.ConfigBag;
import org.apache.brooklyn.util.core.task.DynamicTasks;
import org.apache.brooklyn.util.core.task.Tasks;
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcess.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcess.java b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcess.java
index cee2d40..b14d6d8 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcess.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcess.java
@@ -102,6 +102,9 @@ public interface SoftwareProcess extends Entity, Startable {
@SetFromFlag("postLaunchCommand")
ConfigKey<String> POST_LAUNCH_COMMAND = BrooklynConfigKeys.POST_LAUNCH_COMMAND;
+ @SetFromFlag("env")
+ MapConfigKey<Object> SHELL_ENVIRONMENT = BrooklynConfigKeys.SHELL_ENVIRONMENT;
+
@SetFromFlag("version")
ConfigKey<String> SUGGESTED_VERSION = BrooklynConfigKeys.SUGGESTED_VERSION;
@@ -218,10 +221,6 @@ public interface SoftwareProcess extends Entity, Startable {
ConfigKey<Map<String, String>> RUNTIME_TEMPLATES = ConfigKeys.newConfigKey(new TypeToken<Map<String, String>>() { },
"templates.runtime", "Mapping of templates, to be filled in and copied before customisation, to destination name relative to runDir");
- @SetFromFlag("env")
- MapConfigKey<Object> SHELL_ENVIRONMENT = new MapConfigKey<Object>(Object.class,
- "shell.env", "Map of environment variables to pass to the runtime shell", MutableMap.<String,Object>of());
-
@SetFromFlag("provisioningProperties")
MapConfigKey<Object> PROVISIONING_PROPERTIES = new MapConfigKey<Object>(Object.class,
"provisioning.properties", "Custom properties to be passed in when provisioning a new machine", MutableMap.<String,Object>of());
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandEffector.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandEffector.java b/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandEffector.java
deleted file mode 100644
index 9e3d885..0000000
--- a/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandEffector.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.brooklyn.sensor.ssh;
-
-import java.util.Map;
-
-import org.apache.brooklyn.api.effector.Effector;
-import org.apache.brooklyn.api.effector.ParameterType;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.effector.AddEffector;
-import org.apache.brooklyn.core.effector.EffectorBody;
-import org.apache.brooklyn.core.effector.Effectors;
-import org.apache.brooklyn.core.effector.Effectors.EffectorBuilder;
-import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks;
-import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks.SshEffectorTaskFactory;
-import org.apache.brooklyn.entity.software.base.SoftwareProcess;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.text.Strings;
-
-import com.google.common.base.Preconditions;
-
-public final class SshCommandEffector extends AddEffector {
-
- public static final ConfigKey<String> EFFECTOR_COMMAND = ConfigKeys.newStringConfigKey("command");
- public static final ConfigKey<String> EFFECTOR_EXECUTION_DIR = SshCommandSensor.SENSOR_EXECUTION_DIR;
-
- public SshCommandEffector(ConfigBag params) {
- super(newEffectorBuilder(params).build());
- }
-
- public SshCommandEffector(Map<String,String> params) {
- this(ConfigBag.newInstance(params));
- }
-
- public static EffectorBuilder<String> newEffectorBuilder(ConfigBag params) {
- EffectorBuilder<String> eff = AddEffector.newEffectorBuilder(String.class, params);
- eff.impl(new Body(eff.buildAbstract(), params));
- return eff;
- }
-
-
- protected static class Body extends EffectorBody<String> {
- private final Effector<?> effector;
- private final String command;
- private final String executionDir;
-
- public Body(Effector<?> eff, ConfigBag params) {
- this.effector = eff;
- this.command = Preconditions.checkNotNull(params.get(EFFECTOR_COMMAND), "command must be supplied when defining this effector");
- this.executionDir = params.get(EFFECTOR_EXECUTION_DIR);
- // TODO could take a custom "env" aka effectorShellEnv
- }
-
- @Override
- public String call(ConfigBag params) {
- String command = this.command;
-
- command = SshCommandSensor.makeCommandExecutingInDirectory(command, executionDir, entity());
-
- MutableMap<String, String> env = MutableMap.of();
- // first set all declared parameters, including default values
- for (ParameterType<?> param: effector.getParameters()) {
- env.addIfNotNull(param.getName(), Strings.toString( params.get(Effectors.asConfigKey(param)) ));
- }
-
- // then set things from the entities defined shell environment, if applicable
- env.putAll(Strings.toStringMap(entity().getConfig(SoftwareProcess.SHELL_ENVIRONMENT), ""));
-
- // if we wanted to resolve the surrounding environment in real time -- see above
-// Map<String,Object> paramsResolved = (Map<String, Object>) Tasks.resolveDeepValue(effectorShellEnv, Map.class, entity().getExecutionContext());
-
- // finally set the parameters we've been passed; this will repeat declared parameters but to no harm,
- // it may pick up additional values (could be a flag defining whether this is permitted or not)
- env.putAll(Strings.toStringMap(params.getAllConfig()));
-
- SshEffectorTaskFactory<String> t = SshEffectorTasks.ssh(command)
- .requiringZeroAndReturningStdout()
- .summary("effector "+effector.getName())
- .environmentVariables(env);
- return queue(t).get();
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandSensor.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandSensor.java b/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandSensor.java
deleted file mode 100644
index 31c116f..0000000
--- a/software/base/src/main/java/org/apache/brooklyn/sensor/ssh/SshCommandSensor.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.brooklyn.sensor.ssh;
-
-import java.util.Map;
-
-import org.apache.brooklyn.api.entity.EntityInitializer;
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.config.ConfigKeys;
-import org.apache.brooklyn.core.effector.AddSensor;
-import org.apache.brooklyn.core.sensor.HttpRequestSensor;
-import org.apache.brooklyn.entity.java.JmxAttributeSensor;
-import org.apache.brooklyn.entity.software.base.SoftwareProcess;
-import org.apache.brooklyn.feed.ssh.SshFeed;
-import org.apache.brooklyn.feed.ssh.SshPollConfig;
-import org.apache.brooklyn.feed.ssh.SshValueFunctions;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
-import org.apache.brooklyn.util.os.Os;
-import org.apache.brooklyn.util.text.Strings;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.annotations.Beta;
-import com.google.common.base.Function;
-import com.google.common.base.Functions;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
-
-/**
- * Configurable {@link EntityInitializer} which adds an SSH sensor feed running the <code>command</code> supplied
- * in order to populate the sensor with the indicated <code>name</code>. Note that the <code>targetType</code> is ignored,
- * and always set to {@link String}.
- *
- * @see HttpRequestSensor
- * @see JmxAttributeSensor
- */
-@Beta
-public final class SshCommandSensor<T> extends AddSensor<T> {
-
- private static final Logger LOG = LoggerFactory.getLogger(SshCommandSensor.class);
-
- public static final ConfigKey<String> SENSOR_COMMAND = ConfigKeys.newStringConfigKey("command", "SSH command to execute for sensor");
- public static final ConfigKey<String> SENSOR_EXECUTION_DIR = ConfigKeys.newStringConfigKey("executionDir", "Directory where the command should run; "
- + "if not supplied, executes in the entity's run dir (or home dir if no run dir is defined); "
- + "use '~' to always execute in the home dir, or 'custom-feed/' to execute in a custom-feed dir relative to the run dir");
-
- protected final String command;
- protected final String executionDir;
-
- public SshCommandSensor(final ConfigBag params) {
- super(params);
-
- // TODO create a supplier for the command string to support attribute embedding
- command = Preconditions.checkNotNull(params.get(SENSOR_COMMAND), "command");
-
- executionDir = params.get(SENSOR_EXECUTION_DIR);
- }
-
- @Override
- public void apply(final EntityLocal entity) {
- super.apply(entity);
-
- if (LOG.isDebugEnabled()) {
- LOG.debug("Adding SSH sensor {} to {}", name, entity);
- }
-
- Supplier<Map<String,String>> envSupplier = new Supplier<Map<String,String>>() {
- @Override
- public Map<String, String> get() {
- return MutableMap.copyOf(Strings.toStringMap(entity.getConfig(SoftwareProcess.SHELL_ENVIRONMENT), ""));
- }
- };
-
- Supplier<String> commandSupplier = new Supplier<String>() {
- @Override
- public String get() {
- return makeCommandExecutingInDirectory(command, executionDir, entity);
- }
- };
-
- SshPollConfig<T> pollConfig = new SshPollConfig<T>(sensor)
- .period(period)
- .env(envSupplier)
- .command(commandSupplier)
- .checkSuccess(SshValueFunctions.exitStatusEquals(0))
- .onFailureOrException(Functions.constant((T) null))
- .onSuccess(Functions.compose(new Function<String, T>() {
- @Override
- public T apply(String input) {
- return TypeCoercions.coerce(input, getType(type));
- }}, SshValueFunctions.stdout()));
-
- SshFeed.builder()
- .entity(entity)
- .onlyIfServiceUp()
- .poll(pollConfig)
- .build();
- }
-
- static String makeCommandExecutingInDirectory(String command, String executionDir, EntityLocal entity) {
- String finalCommand = command;
- String execDir = executionDir;
- if (Strings.isBlank(execDir)) {
- // default to run dir
- execDir = entity.getAttribute(SoftwareProcess.RUN_DIR);
- // if no run dir, default to home
- if (Strings.isBlank(execDir)) {
- execDir = "~";
- }
- } else if (!Os.isAbsolutish(execDir)) {
- // relative paths taken wrt run dir
- String runDir = entity.getAttribute(SoftwareProcess.RUN_DIR);
- if (!Strings.isBlank(runDir)) {
- execDir = Os.mergePaths(runDir, execDir);
- }
- }
- if (!"~".equals(execDir)) {
- finalCommand = "mkdir -p '"+execDir+"' && cd '"+execDir+"' && "+finalCommand;
- }
- return finalCommand;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/080d2de0/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/ssh/SshCommandIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/ssh/SshCommandIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/ssh/SshCommandIntegrationTest.java
deleted file mode 100644
index c57711f..0000000
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/ssh/SshCommandIntegrationTest.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.brooklyn.entity.software.base.test.ssh;
-
-import static org.testng.Assert.assertTrue;
-
-import java.io.File;
-
-import org.apache.brooklyn.api.effector.Effector;
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.Location;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.core.effector.Effectors;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.sensor.ssh.SshCommandEffector;
-import org.apache.brooklyn.sensor.ssh.SshCommandSensor;
-import org.apache.brooklyn.test.EntityTestUtils;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.config.ConfigBag;
-import org.apache.brooklyn.util.time.Duration;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.location.ssh.SshMachineLocation;
-
-import com.google.common.collect.ImmutableList;
-
-public class SshCommandIntegrationTest {
-
- final static AttributeSensor<String> SENSOR_STRING = Sensors.newStringSensor("aString", "");
- final static AttributeSensor<Integer> SENSOR_INT = Sensors.newIntegerSensor("aLong", "");
- final static Effector<String> EFFECTOR_SAY_HI = Effectors.effector(String.class, "sayHi").buildAbstract();
-
- private TestApplication app;
- private SshMachineLocation machine;
- private EntityLocal entity;
-
- @BeforeMethod(alwaysRun=true)
- public void setUp() throws Exception {
- app = TestApplication.Factory.newManagedInstanceForTests();
- machine = app.newLocalhostProvisioningLocation().obtain();
- entity = app.createAndManageChild(EntitySpec.create(TestEntity.class).location(machine));
- app.start(ImmutableList.<Location>of());
- }
-
- @AfterMethod(alwaysRun=true)
- public void tearDown() throws Exception {
- if (app != null) Entities.destroyAll(app.getManagementContext());
- }
-
- @Test(groups="Integration")
- public void testSshSensor() throws Exception {
- File tempFile = File.createTempFile("testSshCommand", "txt");
- tempFile.deleteOnExit();
- new SshCommandSensor<String>(ConfigBag.newInstance()
- .configure(SshCommandSensor.SENSOR_PERIOD, Duration.millis(100))
- .configure(SshCommandSensor.SENSOR_NAME, SENSOR_STRING.getName())
- .configure(SshCommandSensor.SENSOR_COMMAND, "echo foo > "+tempFile.getAbsolutePath()+"\n"
- + "wc "+tempFile.getAbsolutePath()))
- .apply(entity);
- entity.setAttribute(Attributes.SERVICE_UP, true);
-
- String val = EntityTestUtils.assertAttributeEventuallyNonNull(entity, SENSOR_STRING);
- assertTrue(val.contains("1"), "val="+val);
- String[] counts = val.trim().split("\\s+");
- Assert.assertEquals(counts.length, 4, "val="+val);
- Assert.assertEquals(counts[0], "1", "val="+val);
- }
-
- @Test(groups="Integration")
- public void testSshEffector() throws Exception {
- File tempFile = File.createTempFile("testSshCommand", "txt");
- tempFile.deleteOnExit();
- new SshCommandEffector(ConfigBag.newInstance()
- .configure(SshCommandEffector.EFFECTOR_NAME, "sayHi")
- .configure(SshCommandEffector.EFFECTOR_COMMAND, "echo hi"))
- .apply(entity);
-
- String val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of()).get();
- Assert.assertEquals(val.trim(), "hi", "val="+val);
- }
-
- @Test(groups="Integration")
- public void testSshEffectorWithParameters() throws Exception {
- File tempFile = File.createTempFile("testSshCommand", "txt");
- tempFile.deleteOnExit();
- new SshCommandEffector(ConfigBag.newInstance()
- .configure(SshCommandEffector.EFFECTOR_NAME, "sayHi")
- .configure(SshCommandEffector.EFFECTOR_COMMAND, "echo $foo")
- .configure(SshCommandEffector.EFFECTOR_PARAMETER_DEFS,
- MutableMap.<String,Object>of("foo", MutableMap.of("defaultValue", "hi"))))
- .apply(entity);
-
- String val;
- // explicit value
- val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of("foo", "bar")).get();
- Assert.assertEquals(val.trim(), "bar", "val="+val);
-
- // default value
- val = entity.invoke(EFFECTOR_SAY_HI, MutableMap.<String,String>of()).get();
- Assert.assertEquals(val.trim(), "hi", "val="+val);
- }
-
-}
[16/16] incubator-brooklyn git commit: add RAT header for
TaskPredicatesTest, as per #858
Posted by he...@apache.org.
add RAT header for TaskPredicatesTest, as per #858
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/0c240580
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/0c240580
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/0c240580
Branch: refs/heads/master
Commit: 0c24058088967d1928708d38c9c8c1658c923b99
Parents: c8fd8fb
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Thu Aug 20 13:26:59 2015 +0100
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Thu Aug 20 13:39:01 2015 +0100
----------------------------------------------------------------------
.../util/core/task/TaskPredicatesTest.java | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/0c240580/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java b/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
index d87dbb5..f2709f2 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/task/TaskPredicatesTest.java
@@ -1,3 +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.
+ */
package org.apache.brooklyn.util.core.task;
import static org.testng.Assert.assertFalse;
[06/16] incubator-brooklyn git commit: Delete deprecated
UsageManager.UsageListener
Posted by he...@apache.org.
Delete deprecated UsageManager.UsageListener
- Instead, use org.apache.brooklyn.core.mgmt.usage.UsageListener
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1ffacc62
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1ffacc62
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1ffacc62
Branch: refs/heads/master
Commit: 1ffacc629fa1725121ee3d7d57f2d349d2aede4f
Parents: 147f9ec
Author: Aled Sage <al...@gmail.com>
Authored: Wed Aug 19 18:35:05 2015 +0100
Committer: Aled Sage <al...@gmail.com>
Committed: Thu Aug 20 12:04:12 2015 +0100
----------------------------------------------------------------------
.../core/mgmt/internal/LocalUsageManager.java | 55 +++++---------
.../internal/NonDeploymentUsageManager.java | 17 +----
.../brooklyn/core/mgmt/usage/UsageManager.java | 77 ++------------------
.../usage/ApplicationUsageTrackingTest.java | 44 -----------
.../mgmt/usage/LocationUsageTrackingTest.java | 42 +----------
.../usage/RecordingLegacyUsageListener.java | 70 ------------------
.../core/mgmt/usage/RecordingUsageListener.java | 3 +-
.../test/core/mgmt/usage/UsageListenerTest.java | 39 +---------
8 files changed, 34 insertions(+), 313 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalUsageManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalUsageManager.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalUsageManager.java
index ba47c02..6793bfc 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalUsageManager.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/LocalUsageManager.java
@@ -46,6 +46,7 @@ import org.apache.brooklyn.core.mgmt.ManagementContextInjectable;
import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage;
import org.apache.brooklyn.core.mgmt.usage.LocationUsage;
+import org.apache.brooklyn.core.mgmt.usage.UsageListener;
import org.apache.brooklyn.core.mgmt.usage.UsageManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -77,7 +78,7 @@ public class LocalUsageManager implements UsageManager {
private static final Logger log = LoggerFactory.getLogger(LocalUsageManager.class);
- private static class ApplicationMetadataImpl implements org.apache.brooklyn.core.mgmt.usage.UsageListener.ApplicationMetadata {
+ private static class ApplicationMetadataImpl implements UsageListener.ApplicationMetadata {
private final Application app;
private String applicationId;
private String applicationName;
@@ -113,7 +114,7 @@ public class LocalUsageManager implements UsageManager {
}
}
- private static class LocationMetadataImpl implements org.apache.brooklyn.core.mgmt.usage.UsageListener.LocationMetadata {
+ private static class LocationMetadataImpl implements UsageListener.LocationMetadata {
private final Location loc;
private String locationId;
private Map<String, String> metadata;
@@ -137,17 +138,13 @@ public class LocalUsageManager implements UsageManager {
// Register a coercion from String->UsageListener, so that USAGE_LISTENERS defined in brooklyn.properties
// will be instantiated, given their class names.
static {
- TypeCoercions.registerAdapter(String.class, org.apache.brooklyn.core.mgmt.usage.UsageListener.class, new Function<String, org.apache.brooklyn.core.mgmt.usage.UsageListener>() {
- @Override public org.apache.brooklyn.core.mgmt.usage.UsageListener apply(String input) {
+ TypeCoercions.registerAdapter(String.class, UsageListener.class, new Function<String, UsageListener>() {
+ @Override public UsageListener apply(String input) {
// TODO Want to use classLoader = mgmt.getCatalog().getRootClassLoader();
ClassLoader classLoader = LocalUsageManager.class.getClassLoader();
Optional<Object> result = Reflections.invokeConstructorWithArgs(classLoader, input);
if (result.isPresent()) {
- if (result.get() instanceof org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener) {
- return new org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener.UsageListenerAdapter((org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener) result.get());
- } else {
- return (org.apache.brooklyn.core.mgmt.usage.UsageListener) result.get();
- }
+ return (UsageListener) result.get();
} else {
throw new IllegalStateException("Failed to create UsageListener from class name '"+input+"' using no-arg constructor");
}
@@ -165,7 +162,7 @@ public class LocalUsageManager implements UsageManager {
private final Object mutex = new Object();
- private final List<org.apache.brooklyn.core.mgmt.usage.UsageListener> listeners = Lists.newCopyOnWriteArrayList();
+ private final List<UsageListener> listeners = Lists.newCopyOnWriteArrayList();
private final AtomicInteger listenerQueueSize = new AtomicInteger();
@@ -184,14 +181,12 @@ public class LocalUsageManager implements UsageManager {
if (listener instanceof ManagementContextInjectable) {
((ManagementContextInjectable)listener).injectManagementContext(managementContext);
}
- if (listener instanceof org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener) {
- addUsageListener((org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener)listener);
- } else if (listener instanceof org.apache.brooklyn.core.mgmt.usage.UsageListener) {
- addUsageListener((org.apache.brooklyn.core.mgmt.usage.UsageListener)listener);
+ if (listener instanceof UsageListener) {
+ addUsageListener((UsageListener)listener);
} else if (listener == null) {
throw new NullPointerException("null listener in config "+UsageManager.USAGE_LISTENERS);
} else {
- throw new ClassCastException("listener "+listener+" of type "+listener.getClass()+" is not of type "+org.apache.brooklyn.core.mgmt.usage.UsageListener.class.getName());
+ throw new ClassCastException("listener "+listener+" of type "+listener.getClass()+" is not of type "+UsageListener.class.getName());
}
}
}
@@ -204,7 +199,7 @@ public class LocalUsageManager implements UsageManager {
log.info("Usage manager waiting for "+listenerQueueSize+" listener events for up to "+timeout);
}
List<ListenableFuture<?>> futures = Lists.newArrayList();
- for (final org.apache.brooklyn.core.mgmt.usage.UsageListener listener : listeners) {
+ for (final UsageListener listener : listeners) {
ListenableFuture<?> future = listenerExecutor.submit(new Runnable() {
public void run() {
if (listener instanceof Closeable) {
@@ -227,8 +222,8 @@ public class LocalUsageManager implements UsageManager {
}
}
- private void execOnListeners(final Function<org.apache.brooklyn.core.mgmt.usage.UsageListener, Void> job) {
- for (final org.apache.brooklyn.core.mgmt.usage.UsageListener listener : listeners) {
+ private void execOnListeners(final Function<UsageListener, Void> job) {
+ for (final UsageListener listener : listeners) {
listenerQueueSize.incrementAndGet();
listenerExecutor.execute(new Runnable() {
public void run() {
@@ -257,8 +252,8 @@ public class LocalUsageManager implements UsageManager {
usage.addEvent(event);
eventMap.put(app.getId(), usage);
- execOnListeners(new Function<org.apache.brooklyn.core.mgmt.usage.UsageListener, Void>() {
- public Void apply(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ execOnListeners(new Function<UsageListener, Void>() {
+ public Void apply(UsageListener listener) {
listener.onApplicationEvent(new ApplicationMetadataImpl(Entities.proxy(app)), event);
return null;
}
@@ -319,8 +314,8 @@ public class LocalUsageManager implements UsageManager {
usage.addEvent(event);
usageMap.put(loc.getId(), usage);
- execOnListeners(new Function<org.apache.brooklyn.core.mgmt.usage.UsageListener, Void>() {
- public Void apply(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ execOnListeners(new Function<UsageListener, Void>() {
+ public Void apply(UsageListener listener) {
listener.onLocationEvent(new LocationMetadataImpl(loc), event);
return null;
}
@@ -397,24 +392,12 @@ public class LocalUsageManager implements UsageManager {
}
@Override
- @Deprecated
- public void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener) {
- addUsageListener(new org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener.UsageListenerAdapter(listener));
- }
-
- @Override
- @Deprecated
- public void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener) {
- removeUsageListener(new org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener.UsageListenerAdapter(listener));
- }
-
- @Override
- public void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ public void addUsageListener(UsageListener listener) {
listeners.add(listener);
}
@Override
- public void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ public void removeUsageListener(UsageListener listener) {
listeners.remove(listener);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentUsageManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentUsageManager.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentUsageManager.java
index df28363..abf602c 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentUsageManager.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/NonDeploymentUsageManager.java
@@ -25,6 +25,7 @@ import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage;
import org.apache.brooklyn.core.mgmt.usage.LocationUsage;
+import org.apache.brooklyn.core.mgmt.usage.UsageListener;
import org.apache.brooklyn.core.mgmt.usage.UsageManager;
import com.google.common.base.Predicate;
@@ -101,19 +102,7 @@ public class NonDeploymentUsageManager implements UsageManager {
}
@Override
- @Deprecated
- public void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener) {
- addUsageListener(new org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener.UsageListenerAdapter(listener));
- }
-
- @Override
- @Deprecated
- public void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener) {
- removeUsageListener(new org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener.UsageListenerAdapter(listener));
- }
-
- @Override
- public void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ public void addUsageListener(UsageListener listener) {
if (isInitialManagementContextReal()) {
initialManagementContext.getUsageManager().addUsageListener(listener);
} else {
@@ -122,7 +111,7 @@ public class NonDeploymentUsageManager implements UsageManager {
}
@Override
- public void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener) {
+ public void removeUsageListener(UsageListener listener) {
if (isInitialManagementContextReal()) {
initialManagementContext.getUsageManager().removeUsageListener(listener);
} else {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/core/src/main/java/org/apache/brooklyn/core/mgmt/usage/UsageManager.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/usage/UsageManager.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/usage/UsageManager.java
index 919c867..1bc7d78 100644
--- a/core/src/main/java/org/apache/brooklyn/core/mgmt/usage/UsageManager.java
+++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/usage/UsageManager.java
@@ -18,10 +18,7 @@
*/
package org.apache.brooklyn.core.mgmt.usage;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.brooklyn.api.entity.Application;
@@ -29,14 +26,9 @@ import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.config.ConfigKey;
import org.apache.brooklyn.core.config.ConfigKeys;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
-import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage;
-import org.apache.brooklyn.core.mgmt.usage.LocationUsage;
-import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage.ApplicationEvent;
-import org.apache.brooklyn.core.mgmt.usage.LocationUsage.LocationEvent;
import org.apache.brooklyn.util.time.Duration;
import com.google.common.annotations.Beta;
-import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.reflect.TypeToken;
@@ -45,10 +37,10 @@ import com.google.common.reflect.TypeToken;
public interface UsageManager {
@SuppressWarnings("serial")
- public static final ConfigKey<List<org.apache.brooklyn.core.mgmt.usage.UsageListener>> USAGE_LISTENERS = ConfigKeys.newConfigKey(
- new TypeToken<List<org.apache.brooklyn.core.mgmt.usage.UsageListener>>() {},
+ public static final ConfigKey<List<UsageListener>> USAGE_LISTENERS = ConfigKeys.newConfigKey(
+ new TypeToken<List<UsageListener>>() {},
"brooklyn.usageManager.listeners", "Optional usage listeners (i.e. for metering)",
- ImmutableList.<org.apache.brooklyn.core.mgmt.usage.UsageListener>of());
+ ImmutableList.<UsageListener>of());
public static final ConfigKey<Duration> USAGE_LISTENER_TERMINATION_TIMEOUT = ConfigKeys.newConfigKey(
Duration.class,
@@ -57,51 +49,6 @@ public interface UsageManager {
Duration.TEN_SECONDS);
/**
- * @since 0.7.0
- * @deprecated since 0.7.0; use {@link org.apache.brooklyn.core.mgmt.internal.UsageListener}; see {@link UsageListenerAdapter}
- */
- public interface UsageListener {
- public static final UsageListener NOOP = new UsageListener() {
- @Override public void onApplicationEvent(String applicationId, String applicationName, String entityType,
- String catalogItemId, Map<String, String> metadata, ApplicationEvent event) {}
- @Override public void onLocationEvent(String locationId, Map<String, String> metadata, LocationEvent event) {}
- };
-
- public static class UsageListenerAdapter implements org.apache.brooklyn.core.mgmt.usage.UsageListener {
- private final UsageListener listener;
-
- public UsageListenerAdapter(UsageListener listener) {
- this.listener = checkNotNull(listener, "listener");
- }
-
- @Override
- public void onApplicationEvent(ApplicationMetadata app, ApplicationEvent event) {
- listener.onApplicationEvent(app.getApplicationId(), app.getApplicationName(), app.getEntityType(), app.getCatalogItemId(), app.getMetadata(), event);
- }
-
- @Override
- public void onLocationEvent(LocationMetadata loc, LocationEvent event) {
- listener.onLocationEvent(loc.getLocationId(), loc.getMetadata(), event);
- }
-
- @Override
- public boolean equals(Object obj) {
- return (obj instanceof UsageListenerAdapter) && listener.equals(((UsageListenerAdapter)obj).listener);
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(listener);
- }
- }
-
- void onApplicationEvent(String applicationId, String applicationName, String entityType, String catalogItemId,
- Map<String, String> metadata, ApplicationEvent event);
-
- void onLocationEvent(String locationId, Map<String, String> metadata, LocationEvent event);
- }
-
- /**
* Adds this application event to the usage record for the given app (creating the usage
* record if one does not already exist).
*/
@@ -136,30 +83,16 @@ public interface UsageManager {
Set<ApplicationUsage> getApplicationUsage(Predicate<? super ApplicationUsage> filter);
/**
- * @since 0.7.0
- * @deprecated since 0.7.0; use {@link #removeUsageListener(org.apache.brooklyn.core.mgmt.internal.UsageListener)};
- * see {@link org.apache.brooklyn.core.mgmt.internal.UsageManager.UsageListener.UsageListenerAdapter}
- */
- void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener);
-
- /**
- * @since 0.7.0
- * @deprecated since 0.7.0; use {@link #removeUsageListener(org.apache.brooklyn.core.mgmt.internal.UsageListener)}
- */
- @Deprecated
- void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener listener);
-
- /**
* Adds the given listener, to be notified on recording of application/location events.
* The listener notifications may be asynchronous.
*
* As of 0.7.0, the listener is not persisted so will be lost on restart/rebind. This
* behaviour may change in a subsequent release.
*/
- void addUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener);
+ void addUsageListener(UsageListener listener);
/**
* Removes the given listener.
*/
- void removeUsageListener(org.apache.brooklyn.core.mgmt.usage.UsageListener listener);
+ void removeUsageListener(UsageListener listener);
}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/ApplicationUsageTrackingTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/ApplicationUsageTrackingTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/ApplicationUsageTrackingTest.java
index e727891..6f11431 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/ApplicationUsageTrackingTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/ApplicationUsageTrackingTest.java
@@ -25,7 +25,6 @@ import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import org.apache.brooklyn.api.entity.Application;
@@ -86,49 +85,6 @@ public class ApplicationUsageTrackingTest {
}
@Test
- @SuppressWarnings("deprecation")
- public void testAddAndRemoveLegacyUsageListener() throws Exception {
- final RecordingLegacyUsageListener listener = new RecordingLegacyUsageListener();
- mgmt.getUsageManager().addUsageListener(listener);
-
- app = TestApplication.Factory.newManagedInstanceForTests(mgmt);
- app.setCatalogItemId("testCatalogItem");
- app.start(ImmutableList.<Location>of());
-
- Asserts.succeedsEventually(new Runnable() {
- @Override public void run() {
- List<List<?>> events = listener.getApplicationEvents();
- assertEquals(events.size(), 2, "events="+events); // expect STARTING and RUNNING
-
- String appId = (String) events.get(0).get(1);
- String appName = (String) events.get(0).get(2);
- String entityType = (String) events.get(0).get(3);
- String catalogItemId = (String) events.get(0).get(4);
- Map<?,?> metadata = (Map<?, ?>) events.get(0).get(5);
- ApplicationEvent appEvent = (ApplicationEvent) events.get(0).get(6);
-
- assertEquals(appId, app.getId(), "events="+events);
- assertNotNull(appName, "events="+events);
- assertEquals(catalogItemId, app.getCatalogItemId(), "events="+events);
- assertNotNull(entityType, "events="+events);
- assertNotNull(metadata, "events="+events);
- assertEquals(appEvent.getState(), Lifecycle.STARTING, "events="+events);
- }});
-
-
- // Remove the listener; will get no more notifications
- listener.clearEvents();
- mgmt.getUsageManager().removeUsageListener(listener);
-
- app.start(ImmutableList.<Location>of());
- Asserts.succeedsContinually(new Runnable() {
- @Override public void run() {
- List<List<?>> events = listener.getLocationEvents();
- assertEquals(events.size(), 0, "events="+events);
- }});
- }
-
- @Test
public void testAddAndRemoveUsageListener() throws Exception {
final RecordingUsageListener listener = new RecordingUsageListener();
mgmt.getUsageManager().addUsageListener(listener);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/LocationUsageTrackingTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/LocationUsageTrackingTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/LocationUsageTrackingTest.java
index bb8b597..13b1c54 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/LocationUsageTrackingTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/LocationUsageTrackingTest.java
@@ -31,18 +31,18 @@ import org.apache.brooklyn.api.entity.EntitySpec;
import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.api.location.LocationSpec;
import org.apache.brooklyn.api.location.NoMachinesAvailableException;
-import org.apache.brooklyn.core.mgmt.usage.UsageListener.LocationMetadata;
import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
import org.apache.brooklyn.core.mgmt.usage.LocationUsage;
import org.apache.brooklyn.core.mgmt.usage.LocationUsage.LocationEvent;
+import org.apache.brooklyn.core.mgmt.usage.UsageListener.LocationMetadata;
import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
import org.apache.brooklyn.entity.software.base.SoftwareProcessEntityTest;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
import org.apache.brooklyn.location.localhost.LocalhostMachineProvisioningLocation;
import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.test.Asserts;
import org.apache.brooklyn.util.time.Time;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
@@ -67,42 +67,6 @@ public class LocationUsageTrackingTest extends BrooklynAppUnitTestSupport {
}
@Test
- @SuppressWarnings("deprecation")
- public void testAddAndRemoveLegacyUsageListener() throws Exception {
- final RecordingLegacyUsageListener listener = new RecordingLegacyUsageListener();
- mgmt.getUsageManager().addUsageListener(listener);
-
- app.createAndManageChild(EntitySpec.create(SoftwareProcessEntityTest.MyService.class));
- app.start(ImmutableList.of(loc));
- final SshMachineLocation machine = Iterables.getOnlyElement(loc.getAllMachines());
-
- Asserts.succeedsEventually(new Runnable() {
- @Override public void run() {
- List<List<?>> events = listener.getLocationEvents();
- String locId = (String) events.get(0).get(1);
- LocationEvent locEvent = (LocationEvent) events.get(0).get(3);
- Map<?,?> metadata = (Map<?, ?>) events.get(0).get(2);
-
- assertEquals(events.size(), 1, "events="+events);
- assertEquals(locId, machine.getId(), "events="+events);
- assertNotNull(metadata, "events="+events);
- assertEquals(locEvent.getApplicationId(), app.getId(), "events="+events);
- assertEquals(locEvent.getState(), Lifecycle.CREATED, "events="+events);
- }});
-
- // Remove the listener; will get no more notifications
- listener.clearEvents();
- mgmt.getUsageManager().removeUsageListener(listener);
-
- app.stop();
- Asserts.succeedsContinually(new Runnable() {
- @Override public void run() {
- List<List<?>> events = listener.getLocationEvents();
- assertEquals(events.size(), 0, "events="+events);
- }});
- }
-
- @Test
public void testAddAndRemoveUsageListener() throws Exception {
final RecordingUsageListener listener = new RecordingUsageListener();
mgmt.getUsageManager().addUsageListener(listener);
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingLegacyUsageListener.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingLegacyUsageListener.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingLegacyUsageListener.java
deleted file mode 100644
index 3a3d95b..0000000
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingLegacyUsageListener.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.brooklyn.entity.software.base.test.core.mgmt.usage;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage.ApplicationEvent;
-import org.apache.brooklyn.core.mgmt.usage.LocationUsage.LocationEvent;
-import org.apache.brooklyn.util.collections.MutableList;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
-
-@Deprecated
-public class RecordingLegacyUsageListener implements org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener {
-
- private final List<List<?>> events = Lists.newCopyOnWriteArrayList();
-
- @Override
- public void onApplicationEvent(String applicationId, String applicationName, String entityType,
- String catalogItemId, Map<String, String> metadata, ApplicationEvent event) {
- events.add(MutableList.of("application", applicationId, applicationName, entityType, catalogItemId, metadata, event));
- }
-
- @Override
- public void onLocationEvent(String locationId, Map<String, String> metadata, LocationEvent event) {
- events.add(MutableList.of("location", locationId, metadata, event));
- }
-
- public void clearEvents() {
- events.clear();
- }
-
- public List<List<?>> getEvents() {
- return ImmutableList.copyOf(events);
- }
-
- public List<List<?>> getLocationEvents() {
- List<List<?>> result = Lists.newArrayList();
- for (List<?> event : events) {
- if (event.get(0).equals("location")) result.add(event);
- }
- return ImmutableList.copyOf(result);
- }
-
- public List<List<?>> getApplicationEvents() {
- List<List<?>> result = Lists.newArrayList();
- for (List<?> event : events) {
- if (event.get(0).equals("application")) result.add(event);
- }
- return ImmutableList.copyOf(result);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingUsageListener.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingUsageListener.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingUsageListener.java
index 539d204..3a54178 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingUsageListener.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/RecordingUsageListener.java
@@ -22,12 +22,13 @@ import java.util.List;
import org.apache.brooklyn.core.mgmt.usage.ApplicationUsage.ApplicationEvent;
import org.apache.brooklyn.core.mgmt.usage.LocationUsage.LocationEvent;
+import org.apache.brooklyn.core.mgmt.usage.UsageListener;
import org.apache.brooklyn.util.collections.MutableList;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-public class RecordingUsageListener implements org.apache.brooklyn.core.mgmt.usage.UsageListener {
+public class RecordingUsageListener implements UsageListener {
private final List<List<?>> events = Lists.newCopyOnWriteArrayList();
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1ffacc62/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/UsageListenerTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/UsageListenerTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/UsageListenerTest.java
index 7a55018..b517920 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/UsageListenerTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/test/core/mgmt/usage/UsageListenerTest.java
@@ -32,6 +32,7 @@ import org.apache.brooklyn.api.location.Location;
import org.apache.brooklyn.core.entity.Entities;
import org.apache.brooklyn.core.internal.BrooklynProperties;
import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
+import org.apache.brooklyn.core.mgmt.usage.UsageListener;
import org.apache.brooklyn.core.mgmt.usage.UsageManager;
import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
import org.apache.brooklyn.core.test.entity.TestApplication;
@@ -55,7 +56,6 @@ public class UsageListenerTest {
@BeforeMethod(alwaysRun=true)
public void setUp() throws Exception {
- RecordingStaticLegacyUsageListener.clearInstances();
RecordingStaticUsageListener.clearInstances();
}
@@ -67,28 +67,11 @@ public class UsageListenerTest {
LOG.error("Caught exception in tearDown method", t);
} finally {
mgmt = null;
- RecordingStaticLegacyUsageListener.clearInstances();
RecordingStaticUsageListener.clearInstances();
}
}
@Test
- public void testAddLegacyUsageListenerViaProperties() throws Exception {
- BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
- brooklynProperties.put(UsageManager.USAGE_LISTENERS, RecordingStaticLegacyUsageListener.class.getName());
- mgmt = LocalManagementContextForTests.newInstance(brooklynProperties);
-
- app = TestApplication.Factory.newManagedInstanceForTests(mgmt);
- app.start(ImmutableList.<Location>of());
-
- Asserts.succeedsEventually(new Runnable() {
- @Override public void run() {
- List<List<?>> events = RecordingStaticLegacyUsageListener.getInstance().getApplicationEvents();
- assertTrue(events.size() > 0, "events="+events); // expect some events
- }});
- }
-
- @Test
public void testAddUsageListenerViaProperties() throws Exception {
BrooklynProperties brooklynProperties = BrooklynProperties.Factory.newEmpty();
brooklynProperties.put(UsageManager.USAGE_LISTENERS, RecordingStaticUsageListener.class.getName());
@@ -104,25 +87,7 @@ public class UsageListenerTest {
}});
}
- public static class RecordingStaticLegacyUsageListener extends RecordingLegacyUsageListener implements org.apache.brooklyn.core.mgmt.usage.UsageManager.UsageListener {
- private static final List<RecordingStaticLegacyUsageListener> STATIC_INSTANCES = Lists.newCopyOnWriteArrayList();
-
- public static RecordingStaticLegacyUsageListener getInstance() {
- return Iterables.getOnlyElement(STATIC_INSTANCES);
- }
-
- public static void clearInstances() {
- STATIC_INSTANCES.clear();
- }
-
- public RecordingStaticLegacyUsageListener() {
- // Bad to leak a ref to this before constructor finished, but we'll live with it because
- // it's just test code!
- STATIC_INSTANCES.add(this);
- }
- }
-
- public static class RecordingStaticUsageListener extends RecordingUsageListener implements org.apache.brooklyn.core.mgmt.usage.UsageListener {
+ public static class RecordingStaticUsageListener extends RecordingUsageListener implements UsageListener {
private static final List<RecordingStaticUsageListener> STATIC_INSTANCES = Lists.newCopyOnWriteArrayList();
public static RecordingStaticUsageListener getInstance() {