Prevents Location Events being reported to metering for temporary locations


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

Branch: refs/heads/master
Commit: 40a2afc2ef7d03929b026f4bfc616c48e5c1ba9a
Parents: ae4c9d3
Author: Martin Harris <[email protected]>
Authored: Thu Jun 25 15:44:51 2015 +0100
Committer: Martin Harris <[email protected]>
Committed: Thu Jun 25 15:46:03 2015 +0100

----------------------------------------------------------------------
 .../main/java/brooklyn/location/basic/AbstractLocation.java   | 7 ++++++-
 .../brooklyn/management/internal/LocalLocationManager.java    | 2 +-
 .../java/brooklyn/management/internal/LocalUsageManager.java  | 6 ++++++
 .../main/java/brooklyn/location/jclouds/JcloudsLocation.java  | 4 +++-
 4 files changed, 16 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/40a2afc2/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java 
b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
index 8696378..80aa804 100644
--- a/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
+++ b/core/src/main/java/brooklyn/location/basic/AbstractLocation.java
@@ -36,6 +36,7 @@ import brooklyn.basic.AbstractBrooklynObject;
 import brooklyn.config.ConfigInheritance;
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;
+import brooklyn.entity.basic.ConfigKeys;
 import brooklyn.entity.rebind.BasicLocationRebindSupport;
 import brooklyn.entity.rebind.RebindSupport;
 import brooklyn.entity.trait.Configurable;
@@ -86,7 +87,11 @@ public abstract class AbstractLocation extends 
AbstractBrooklynObject implements
     public static final Logger LOG = 
LoggerFactory.getLogger(AbstractLocation.class);
 
     public static final ConfigKey<Location> PARENT_LOCATION = new 
BasicConfigKey<Location>(Location.class, "parentLocation");
-    
+
+    public static final ConfigKey<Boolean> TEMPORARY_LOCATION = 
ConfigKeys.newBooleanConfigKey("temporaryLocation",
+            "Indicates that the location is a temporary location that has been 
created to test connectivity, and that" +
+            "the location's events should not be recorded by usage listeners", 
false);
+
     private final AtomicBoolean configured = new AtomicBoolean();
     
     private Reference<Long> creationTimeUtc = new 
BasicReference<Long>(System.currentTimeMillis());

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/40a2afc2/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java 
b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
index 2f75120..7d179b6 100644
--- a/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
+++ b/core/src/main/java/brooklyn/management/internal/LocalLocationManager.java
@@ -98,7 +98,7 @@ public class LocalLocationManager implements 
LocationManagerInternal {
             if (createUnmanaged) {
                 spec.removeConfig(CREATE_UNMANAGED);
             }
-            
+
             T loc = locationFactory.createLocation(spec);
             if (!createUnmanaged) {
                 manage(loc);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/40a2afc2/core/src/main/java/brooklyn/management/internal/LocalUsageManager.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/management/internal/LocalUsageManager.java 
b/core/src/main/java/brooklyn/management/internal/LocalUsageManager.java
index 68f5088..305266f 100644
--- a/core/src/main/java/brooklyn/management/internal/LocalUsageManager.java
+++ b/core/src/main/java/brooklyn/management/internal/LocalUsageManager.java
@@ -41,6 +41,7 @@ import brooklyn.entity.basic.EntityInternal;
 import brooklyn.entity.basic.Lifecycle;
 import brooklyn.internal.storage.BrooklynStorage;
 import brooklyn.location.Location;
+import brooklyn.location.basic.AbstractLocation;
 import brooklyn.location.basic.LocationConfigKeys;
 import brooklyn.location.basic.LocationInternal;
 import brooklyn.management.ManagementContextInjectable;
@@ -284,6 +285,10 @@ public class LocalUsageManager implements UsageManager {
         // but no strong enough feelings yet...
         
         checkNotNull(loc, "location");
+        if (loc.getConfig(AbstractLocation.TEMPORARY_LOCATION)) {
+            log.info("Ignoring location lifecycle usage event for {} (state 
{}), because location is a temporary location", loc, state);
+            return;
+        }
         checkNotNull(state, "state of location %s", loc);
         if (loc.getId() == null) {
             log.error("Ignoring location lifecycle usage event for {} (state 
{}), because location has no id", loc, state);
@@ -302,6 +307,7 @@ public class LocalUsageManager implements UsageManager {
             Entity caller = (Entity) callerContext;
             String entityTypeName = caller.getEntityType().getName();
             String appId = caller.getApplicationId();
+
             final LocationUsage.LocationEvent event = new 
LocationUsage.LocationEvent(state, caller.getId(), entityTypeName, appId, 
getUser());
             
             ConcurrentMap<String, LocationUsage> usageMap = 
managementContext.getStorage().<String, 
LocationUsage>getMap(LOCATION_USAGE_KEY);

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/40a2afc2/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
----------------------------------------------------------------------
diff --git 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
index 02b7dde..214f946 100644
--- 
a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java
@@ -27,6 +27,7 @@ import static 
org.jclouds.compute.options.RunScriptOptions.Builder.overrideLogin
 import static org.jclouds.scriptbuilder.domain.Statements.exec;
 
 import brooklyn.util.flags.MethodCoercions;
+import brooklyn.location.basic.AbstractLocation;
 import io.cloudsoft.winrm4j.pywinrm.Session;
 import io.cloudsoft.winrm4j.pywinrm.WinRMFactory;
 
@@ -35,7 +36,6 @@ import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.lang.reflect.Type;
 import java.security.KeyPair;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -1479,6 +1479,7 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
         sshProps.put("user", initialUser);
         sshProps.put("address", hostAndPort.getHostText());
         sshProps.put("port", hostAndPort.getPort());
+        sshProps.put(AbstractLocation.TEMPORARY_LOCATION.getName(), true);
         if (initialPassword.isPresent()) sshProps.put("password", 
initialPassword.get());
         if (initialPrivateKey.isPresent()) sshProps.put("privateKeyData", 
initialPrivateKey.get());
         if (initialPrivateKey.isPresent()) sshProps.put("privateKeyData", 
initialPrivateKey.get());
@@ -1548,6 +1549,7 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
                 SshMachineLocation sshLoc = null;
                 try {
                     if (isManaged()) {
+                        
sshProps.put(AbstractLocation.TEMPORARY_LOCATION.getName(), true);
                         sshLoc = 
getManagementContext().getLocationManager().createLocation(sshProps, 
SshMachineLocation.class);
                     } else {
                         sshLoc = new SshMachineLocation(sshProps);

Reply via email to