[2/2] brooklyn-library git commit: This closes #21
This closes #21 Project: http://git-wip-us.apache.org/repos/asf/brooklyn-library/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-library/commit/be0d2324 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-library/tree/be0d2324 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-library/diff/be0d2324 Branch: refs/heads/master Commit: be0d23240d6c165b752f54985c4079c45a33dc48 Parents: d7d44f9 d645aa8 Author: Aled SageAuthored: Tue Mar 22 20:32:43 2016 + Committer: Aled Sage Committed: Tue Mar 22 20:32:43 2016 + -- .../database/mssql/Custom-Enable-CredSSP.ps1| 131 +++ .../entity/database/mssql/installmssql.ps1 | 33 +++-- .../brooklyn/entity/database/mssql/mssql.yaml | 9 +- 3 files changed, 152 insertions(+), 21 deletions(-) --
[10/10] brooklyn-server git commit: This closes #59
This closes #59 * github/pr/59: Clocker-testing: fix where we delete the location Fix XML serialiser for SpecConverter LocationFactorâs âspecial constructorâ for pre-existing loc Fix log.warn when calling Location.unmanage BROOKLYN-242: fix race in BasicTest.get() NotUpDiagnostics: donât collect if starting && !up ServerPool: creates/registers single ServerPoolLocation Clocker pattern: change how LocationRegistry used Test the Clocker pattern (of LocationOwner and DynamicLocation) Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b8211ed1 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b8211ed1 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b8211ed1 Branch: refs/heads/master Commit: b8211ed17c354dba49ad33d7bf6ee5db675ff6a9 Parents: 1e5f3b6 b59fda7 Author: Andrew Donald KennedyAuthored: Tue Mar 22 17:17:25 2016 + Committer: Andrew Donald Kennedy Committed: Tue Mar 22 17:17:25 2016 + -- .../core/location/AbstractLocation.java | 4 +- .../core/location/dynamic/DynamicLocation.java | 12 + .../core/location/dynamic/LocationOwner.java| 4 - .../core/mgmt/persist/XmlMementoSerializer.java | 14 +- .../objs/proxy/InternalLocationFactory.java | 13 ++ .../brooklyn/util/core/task/BasicTask.java | 11 +- .../core/effector/EffectorBasicTest.java| 29 +++ .../entity/machine/pool/ServerPool.java | 5 +- .../entity/machine/pool/ServerPoolImpl.java | 53 +++-- .../entity/machine/pool/ServerPoolLocation.java | 53 - .../pool/ServerPoolLocationResolver.java| 64 +++--- ...ClockerDynamicLocationPatternRebindTest.java | 136 +++ .../ClockerDynamicLocationPatternTest.java | 110 + .../dynamic/clocker/StubAttributes.java | 34 +++ .../location/dynamic/clocker/StubContainer.java | 33 +++ .../dynamic/clocker/StubContainerImpl.java | 131 +++ .../dynamic/clocker/StubContainerLocation.java | 52 + .../core/location/dynamic/clocker/StubHost.java | 38 .../location/dynamic/clocker/StubHostImpl.java | 141 .../dynamic/clocker/StubHostLocation.java | 171 ++ .../dynamic/clocker/StubInfrastructure.java | 95 .../dynamic/clocker/StubInfrastructureImpl.java | 224 +++ .../clocker/StubInfrastructureLocation.java | 139 .../location/dynamic/clocker/StubResolver.java | 159 + .../dynamic/clocker/StubResolverTest.java | 82 +++ .../location/dynamic/clocker/StubUtils.java | 95 .../machine/pool/AbstractServerPoolTest.java| 23 +- .../pool/ServerPoolLocationResolverTest.java| 65 ++ .../entity/machine/pool/ServerPoolTest.java | 8 +- 29 files changed, 1865 insertions(+), 133 deletions(-) --
[07/10] brooklyn-server git commit: LocationFactor’s “special constructor” for pre-existing loc
LocationFactorâs âspecial constructorâ for pre-existing loc If location already existed, then donât try to manage it and donât reset its config. Previously we got a log.warn about an attempt to manage the location when it was already managed. Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/89b3a663 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/89b3a663 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/89b3a663 Branch: refs/heads/master Commit: 89b3a663902fb6ecdfec641ce75ffca514e0 Parents: 3118f42 Author: Aled SageAuthored: Tue Mar 22 12:46:02 2016 + Committer: Aled Sage Committed: Tue Mar 22 12:46:02 2016 + -- .../core/objs/proxy/InternalLocationFactory.java | 13 + 1 file changed, 13 insertions(+) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/89b3a663/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java index baf0e5b..4ba0658 100644 --- a/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java +++ b/core/src/main/java/org/apache/brooklyn/core/objs/proxy/InternalLocationFactory.java @@ -27,12 +27,15 @@ import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.api.mgmt.ManagementContext; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.location.AbstractLocation; +import org.apache.brooklyn.core.location.Locations; import org.apache.brooklyn.core.location.internal.LocationInternal; import org.apache.brooklyn.core.mgmt.internal.LocalLocationManager; import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal; import org.apache.brooklyn.util.core.config.ConfigBag; import org.apache.brooklyn.util.core.flags.FlagUtils; import org.apache.brooklyn.util.exceptions.Exceptions; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableMap; @@ -46,6 +49,8 @@ import com.google.common.collect.ImmutableMap; */ public class InternalLocationFactory extends InternalFactory { +private static final Logger LOG = LoggerFactory.getLogger(InternalLocationFactory.class); + /** * Returns true if this is a "new-style" location (i.e. where not expected to call the constructor to instantiate it). * @@ -96,9 +101,17 @@ public class InternalLocationFactory extends InternalFactory { T loc = construct(clazz, spec, null); +if (Locations.isManaged(loc)) { +// Construct can return an existing instance, if using SpecialBrooklynObjectConstructor.Config.SPECIAL_CONSTRUCTOR. +// In which case, don't reconfigure it (don't change its parent, etc). +LOG.debug("Location-factory returning pre-existing location; skipping initialization of {}", loc); +return loc; +} + if (spec.getId() != null) { FlagUtils.setFieldsFromFlags(ImmutableMap.of("id", spec.getId()), loc); } + managementContext.prePreManage(loc); if (spec.getDisplayName()!=null)
[09/10] brooklyn-server git commit: Clocker-testing: fix where we delete the location
Clocker-testing: fix where we delete the location Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b59fda75 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b59fda75 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b59fda75 Branch: refs/heads/master Commit: b59fda75be280dee68e44115d9ca2112e8404658 Parents: b5dae5b Author: Aled SageAuthored: Tue Mar 22 12:48:01 2016 + Committer: Aled Sage Committed: Tue Mar 22 12:48:01 2016 + -- .../location/dynamic/clocker/StubContainerImpl.java | 8 .../core/location/dynamic/clocker/StubHostImpl.java | 16 .../dynamic/clocker/StubInfrastructureImpl.java | 6 -- 3 files changed, 28 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b59fda75/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubContainerImpl.java -- diff --git a/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubContainerImpl.java b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubContainerImpl.java index 45cf9d0..2ef9480 100644 --- a/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubContainerImpl.java +++ b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubContainerImpl.java @@ -27,11 +27,13 @@ import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.api.mgmt.LocationManager; import org.apache.brooklyn.core.entity.lifecycle.Lifecycle; import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic; +import org.apache.brooklyn.core.entity.trait.StartableMethods; import org.apache.brooklyn.core.feed.ConfigToAttributes; import org.apache.brooklyn.core.location.dynamic.DynamicLocation; import org.apache.brooklyn.entity.stock.BasicStartableImpl; import org.apache.brooklyn.location.ssh.SshMachineLocation; import org.apache.brooklyn.util.collections.MutableMap; +import org.apache.brooklyn.util.exceptions.Exceptions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -74,6 +76,12 @@ public class StubContainerImpl extends BasicStartableImpl implements StubContain } @Override +public void stop() { +super.stop(); +deleteLocation(); +} + +@Override public StubContainerLocation createLocation(Map flags) { StubHost dockerHost = getDockerHost(); StubHostLocation host = dockerHost.getDynamicLocation(); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b59fda75/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubHostImpl.java -- diff --git a/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubHostImpl.java b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubHostImpl.java index 3139d93..314ebda 100644 --- a/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubHostImpl.java +++ b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/StubHostImpl.java @@ -19,10 +19,15 @@ package org.apache.brooklyn.core.location.dynamic.clocker; import java.util.Map; +import java.util.Set; +import org.apache.brooklyn.api.entity.Application; +import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.location.LocationDefinition; import org.apache.brooklyn.api.location.LocationSpec; +import org.apache.brooklyn.core.entity.Entities; +import org.apache.brooklyn.core.entity.trait.Startable; import org.apache.brooklyn.core.feed.ConfigToAttributes; import org.apache.brooklyn.core.location.Locations; import org.apache.brooklyn.core.location.Machines; @@ -31,9 +36,14 @@ import org.apache.brooklyn.entity.group.DynamicCluster; import org.apache.brooklyn.entity.software.base.EmptySoftwareProcessImpl; import org.apache.brooklyn.location.ssh.SshMachineLocation; import org.apache.brooklyn.util.collections.QuorumCheck.QuorumChecks; +import org.apache.brooklyn.util.time.Duration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Function; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; + public class StubHostImpl extends EmptySoftwareProcessImpl implements StubHost { private static final Logger LOG = LoggerFactory.getLogger(StubHostImpl.class); @@ -83,6 +93,12 @@ public class StubHostImpl extends
[06/10] brooklyn-server git commit: Fix log.warn when calling Location.unmanage
Fix log.warn when calling Location.unmanage Previously, if a location being unmanaged had a parent, weâd try to unmanaged it twice - the second time would give a log.warn Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3118f427 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3118f427 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3118f427 Branch: refs/heads/master Commit: 3118f427b4bc8e95ce4c19a54f97325957687d61 Parents: 3df2b8b Author: Aled SageAuthored: Tue Mar 22 12:45:03 2016 + Committer: Aled Sage Committed: Tue Mar 22 12:45:03 2016 + -- .../java/org/apache/brooklyn/core/location/AbstractLocation.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3118f427/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java index dc48862..d4e565e 100644 --- a/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java +++ b/core/src/main/java/org/apache/brooklyn/core/location/AbstractLocation.java @@ -706,7 +706,9 @@ public abstract class AbstractLocation extends AbstractBrooklynObject implements } child.setParent(null); -if (isManaged()) { +if (isManaged() && Locations.isManaged(child)) { +// This is called as part of child's LocalLocationManager.unmanage; don't try to +// unmanage it yet again as then would get a log.warn! getManagementContext().getLocationManager().unmanage(child); } }
[04/10] brooklyn-server git commit: NotUpDiagnostics: don’t collect if starting && !up
NotUpDiagnostics: donât collect if starting && !up Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/0b9682b8 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/0b9682b8 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/0b9682b8 Branch: refs/heads/master Commit: 0b9682b8830df7715bb8b579cfc40a1734f03038 Parents: 9f1a120 Author: Aled SageAuthored: Fri Mar 18 23:09:04 2016 + Committer: Aled Sage Committed: Sat Mar 19 22:03:56 2016 + -- .../apache/brooklyn/entity/software/base/SoftwareProcessImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0b9682b8/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 ace4ebe..4bf6543 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 @@ -172,7 +172,7 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft Lifecycle state = entity.getAttribute(SERVICE_STATE_ACTUAL); if (up == null || up) { entity.sensors().set(ServiceStateLogic.SERVICE_NOT_UP_DIAGNOSTICS, ImmutableMap. of()); -} else if (state == null || state == Lifecycle.CREATED) { +} else if (state == null || state == Lifecycle.CREATED || state == Lifecycle.STARTING) { // not yet started; do nothing } else if (state == Lifecycle.STOPPING || state == Lifecycle.STOPPED || state == Lifecycle.DESTROYED) { // stopping/stopped, so expect not to be up; get rid of the diagnostics.
[05/10] brooklyn-server git commit: BROOKLYN-242: fix race in BasicTest.get()
BROOKLYN-242: fix race in BasicTest.get() Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/3df2b8b4 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/3df2b8b4 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/3df2b8b4 Branch: refs/heads/master Commit: 3df2b8b4c131eedd889a319a8ba1f03cfe32e547 Parents: 0b9682b Author: Aled SageAuthored: Tue Mar 22 12:44:11 2016 + Committer: Aled Sage Committed: Tue Mar 22 12:44:11 2016 + -- .../brooklyn/util/core/task/BasicTask.java | 11 +++- .../core/effector/EffectorBasicTest.java| 29 2 files changed, 39 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3df2b8b4/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 efd3001..410ba12 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 @@ -451,7 +451,16 @@ public class BasicTask implements TaskInternal { } Long remaining = end==null ? null : end - System.currentTimeMillis(); if (isDone()) { -return internalFuture.get(1, TimeUnit.MILLISECONDS); +// Don't just call internalFuture.get(1ms) - see comment in isDone() about setting of endTimeUtc, +// and see BROOKLYN-242. +if (internalFuture == null) { +assert cancelled: "task="+this+"; endTimeUtc="+endTimeUtc+"; cancelled="+cancelled+"; isDone=true; null internal future"; +throw new CancellationException(); +} else if (remaining == null) { +return internalFuture.get(); +} else { +return internalFuture.get(Math.max(remaining, 1000), TimeUnit.MILLISECONDS); +} } else if (remaining == null) { return internalFuture.get(); } else if (remaining > 0) { http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/3df2b8b4/core/src/test/java/org/apache/brooklyn/core/effector/EffectorBasicTest.java -- diff --git a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorBasicTest.java b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorBasicTest.java index 05b3a10..8af533f 100644 --- a/core/src/test/java/org/apache/brooklyn/core/effector/EffectorBasicTest.java +++ b/core/src/test/java/org/apache/brooklyn/core/effector/EffectorBasicTest.java @@ -18,6 +18,8 @@ */ package org.apache.brooklyn.core.effector; +import static org.testng.Assert.assertEquals; + import java.util.List; import java.util.concurrent.Callable; @@ -25,6 +27,7 @@ import org.apache.brooklyn.api.entity.EntitySpec; import org.apache.brooklyn.api.mgmt.HasTaskChildren; import org.apache.brooklyn.api.mgmt.Task; import org.apache.brooklyn.core.entity.Entities; +import org.apache.brooklyn.core.entity.StartableApplication; import org.apache.brooklyn.core.entity.trait.FailingEntity; import org.apache.brooklyn.core.entity.trait.Startable; import org.apache.brooklyn.core.location.SimulatedLocation; @@ -36,11 +39,13 @@ import org.apache.brooklyn.util.collections.MutableMap; import org.apache.brooklyn.util.core.task.Tasks; import org.apache.brooklyn.util.exceptions.Exceptions; import org.apache.brooklyn.util.text.Strings; +import org.apache.brooklyn.util.time.Duration; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; public class EffectorBasicTest extends BrooklynAppUnitTestSupport { @@ -92,6 +97,30 @@ public class EffectorBasicTest extends BrooklynAppUnitTestSupport { Assert.assertTrue(starting.getTags().contains(ManagementContextInternal.EFFECTOR_TAG)); } +@Test +public void testInvokeEffectorListWithEmpty() throws Exception{ +Entities.invokeEffectorList(app, ImmutableList.of(), Startable.STOP).get(Duration.THIRTY_SECONDS); +} + +@Test +public void testInvokeEffectorList() throws Exception{ +List entities = Lists.newArrayList(); +for (int i = 0; i < 10; i++) { +entities.add(app.addChild(EntitySpec.create(TestEntity.class))); +} +Entities.invokeEffectorList(app, entities, Startable.STOP).get(Duration.THIRTY_SECONDS); +for (TestEntity
[01/10] brooklyn-server git commit: Test the Clocker pattern (of LocationOwner and DynamicLocation)
Repository: brooklyn-server Updated Branches: refs/heads/master 1e5f3b608 -> b8211ed17 Test the Clocker pattern (of LocationOwner and DynamicLocation) Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/292b4cfb Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/292b4cfb Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/292b4cfb Branch: refs/heads/master Commit: 292b4cfb8d5b0bbff0f38eba5fc84a1fc9fe4eee Parents: d059088 Author: Aled SageAuthored: Fri Mar 11 19:37:13 2016 + Committer: Aled Sage Committed: Fri Mar 18 22:18:21 2016 + -- ...ClockerDynamicLocationPatternRebindTest.java | 113 + .../ClockerDynamicLocationPatternTest.java | 96 .../dynamic/clocker/StubAttributes.java | 34 +++ .../location/dynamic/clocker/StubContainer.java | 33 +++ .../dynamic/clocker/StubContainerImpl.java | 123 ++ .../dynamic/clocker/StubContainerLocation.java | 41 .../core/location/dynamic/clocker/StubHost.java | 38 +++ .../location/dynamic/clocker/StubHostImpl.java | 127 ++ .../dynamic/clocker/StubHostLocation.java | 109 .../dynamic/clocker/StubInfrastructure.java | 92 +++ .../dynamic/clocker/StubInfrastructureImpl.java | 246 +++ .../clocker/StubInfrastructureLocation.java | 83 +++ .../location/dynamic/clocker/StubResolver.java | 196 +++ .../location/dynamic/clocker/StubUtils.java | 95 +++ 14 files changed, 1426 insertions(+) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/292b4cfb/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/ClockerDynamicLocationPatternRebindTest.java -- diff --git a/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/ClockerDynamicLocationPatternRebindTest.java b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/ClockerDynamicLocationPatternRebindTest.java new file mode 100644 index 000..361ee95 --- /dev/null +++ b/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/ClockerDynamicLocationPatternRebindTest.java @@ -0,0 +1,113 @@ +/* + * 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.dynamic.clocker; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertNotNull; + +import java.io.File; +import java.util.List; +import java.util.Map; + +import org.apache.brooklyn.api.entity.Entity; +import org.apache.brooklyn.api.entity.EntitySpec; +import org.apache.brooklyn.api.location.Location; +import org.apache.brooklyn.core.entity.Entities; +import org.apache.brooklyn.core.location.BasicLocationRegistry; +import org.apache.brooklyn.core.location.Locations; +import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext; +import org.apache.brooklyn.core.mgmt.rebind.RebindTestFixtureWithApp; +import org.testng.annotations.Test; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; + +public class ClockerDynamicLocationPatternRebindTest extends RebindTestFixtureWithApp { + +@Override +protected LocalManagementContext createOrigManagementContext() { +LocalManagementContext result = super.createOrigManagementContext(); +StubResolver stubResolver = new StubResolver(); + ((BasicLocationRegistry)result.getLocationRegistry()).registerResolver(stubResolver); +return result; +} + +@Override +protected LocalManagementContext createNewManagementContext(File mementoDir) { +LocalManagementContext result = super.createNewManagementContext(mementoDir); +StubResolver stubResolver = new StubResolver();
[03/10] brooklyn-server git commit: ServerPool: creates/registers single ServerPoolLocation
ServerPool: creates/registers single ServerPoolLocation Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/9f1a1208 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/9f1a1208 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/9f1a1208 Branch: refs/heads/master Commit: 9f1a120812895a604f42df29f8e16ec4d4a1ed30 Parents: 453183f Author: Aled SageAuthored: Thu Mar 17 12:59:24 2016 + Committer: Aled Sage Committed: Sat Mar 19 22:03:55 2016 + -- .../entity/machine/pool/ServerPool.java | 5 +- .../entity/machine/pool/ServerPoolImpl.java | 53 +--- .../entity/machine/pool/ServerPoolLocation.java | 53 ++-- .../pool/ServerPoolLocationResolver.java| 64 +-- .../machine/pool/AbstractServerPoolTest.java| 23 --- .../pool/ServerPoolLocationResolverTest.java| 65 ++-- .../entity/machine/pool/ServerPoolTest.java | 8 +-- 7 files changed, 148 insertions(+), 123 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9f1a1208/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPool.java -- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPool.java b/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPool.java index 668a89e..4e42778 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPool.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPool.java @@ -21,8 +21,6 @@ package org.apache.brooklyn.entity.machine.pool; import java.util.Collection; import java.util.Map; -import com.google.common.annotations.Beta; - import org.apache.brooklyn.api.catalog.Catalog; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.entity.EntitySpec; @@ -41,6 +39,8 @@ import org.apache.brooklyn.core.sensor.Sensors; import org.apache.brooklyn.entity.group.DynamicCluster; import org.apache.brooklyn.entity.machine.MachineEntity; +import com.google.common.annotations.Beta; + /** * A preallocated server pool is an entity that other applications can deploy to. * Behaving as a cluster, the machines it creates for its members are reused. @@ -70,6 +70,7 @@ import org.apache.brooklyn.entity.machine.MachineEntity; @ImplementedBy(ServerPoolImpl.class) @Beta public interface ServerPool extends DynamicCluster, LocationOwner { +ConfigKey LOCATION_NAME_PREFIX = ConfigKeys.newConfigKeyWithDefault(LocationOwner.LOCATION_NAME_PREFIX, "server-pool"); ConfigKey INITIAL_SIZE = ConfigKeys.newConfigKeyWithDefault(DynamicCluster.INITIAL_SIZE, 2); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/9f1a1208/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPoolImpl.java -- diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPoolImpl.java b/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPoolImpl.java index 513ee29..e7ad6db 100644 --- a/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPoolImpl.java +++ b/software/base/src/main/java/org/apache/brooklyn/entity/machine/pool/ServerPoolImpl.java @@ -25,6 +25,8 @@ import java.util.Map; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.location.Location; import org.apache.brooklyn.api.location.LocationDefinition; +import org.apache.brooklyn.api.location.LocationRegistry; +import org.apache.brooklyn.api.location.LocationSpec; import org.apache.brooklyn.api.location.MachineLocation; import org.apache.brooklyn.api.location.NoMachinesAvailableException; import org.apache.brooklyn.api.mgmt.LocationManager; @@ -38,19 +40,19 @@ import org.apache.brooklyn.core.entity.Attributes; import org.apache.brooklyn.core.entity.EntityInternal; import org.apache.brooklyn.core.entity.lifecycle.Lifecycle; import org.apache.brooklyn.core.entity.trait.Startable; -import org.apache.brooklyn.core.location.BasicLocationDefinition; import org.apache.brooklyn.core.location.Machines; import org.apache.brooklyn.core.location.dynamic.DynamicLocation; import org.apache.brooklyn.core.location.internal.LocationInternal; import org.apache.brooklyn.core.mgmt.internal.LocalLocationManager; +import org.apache.brooklyn.core.location.dynamic.LocationOwner; import org.apache.brooklyn.core.sensor.Sensors; import org.apache.brooklyn.entity.group.AbstractMembershipTrackingPolicy; import
[02/10] brooklyn-server git commit: Clocker pattern: change how LocationRegistry used
Clocker pattern: change how LocationRegistry used Adds DynamicLocation.register() and .deregister() Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/453183f1 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/453183f1 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/453183f1 Branch: refs/heads/master Commit: 453183f1d89336ea793aab2edbe05c3b4070104b Parents: 292b4cf Author: Aled SageAuthored: Fri Mar 11 20:50:45 2016 + Committer: Aled Sage Committed: Sat Mar 19 21:35:41 2016 + -- .../core/location/dynamic/DynamicLocation.java | 12 ++ .../core/location/dynamic/LocationOwner.java| 4 - ...ClockerDynamicLocationPatternRebindTest.java | 35 - .../ClockerDynamicLocationPatternTest.java | 22 ++- .../dynamic/clocker/StubContainerLocation.java | 13 +- .../core/location/dynamic/clocker/StubHost.java | 4 +- .../location/dynamic/clocker/StubHostImpl.java | 38 +++-- .../dynamic/clocker/StubHostLocation.java | 70 - .../dynamic/clocker/StubInfrastructure.java | 7 +- .../dynamic/clocker/StubInfrastructureImpl.java | 66 +++- .../clocker/StubInfrastructureLocation.java | 62 +++- .../location/dynamic/clocker/StubResolver.java | 157 +++ .../dynamic/clocker/StubResolverTest.java | 82 ++ 13 files changed, 384 insertions(+), 188 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/453183f1/core/src/main/java/org/apache/brooklyn/core/location/dynamic/DynamicLocation.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/location/dynamic/DynamicLocation.java b/core/src/main/java/org/apache/brooklyn/core/location/dynamic/DynamicLocation.java index b04ebac..d961cdf 100644 --- a/core/src/main/java/org/apache/brooklyn/core/location/dynamic/DynamicLocation.java +++ b/core/src/main/java/org/apache/brooklyn/core/location/dynamic/DynamicLocation.java @@ -20,6 +20,8 @@ package org.apache.brooklyn.core.location.dynamic; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.location.Location; +import org.apache.brooklyn.api.location.LocationDefinition; +import org.apache.brooklyn.api.location.LocationRegistry; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.config.ConfigKeys; import org.apache.brooklyn.util.core.flags.SetFromFlag; @@ -47,4 +49,14 @@ public interface DynamicLocation, L exten E getOwner(); +/** + * An opportunity to register this location (e.g. with the {@link LocationRegistry} or the + * catalog, so that it will be persisted). + */ +LocationDefinition register(); + +/** + * The complement of {@link #register()}, to deregister this location. + */ +void deregister(); } http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/453183f1/core/src/main/java/org/apache/brooklyn/core/location/dynamic/LocationOwner.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/location/dynamic/LocationOwner.java b/core/src/main/java/org/apache/brooklyn/core/location/dynamic/LocationOwner.java index 718b97e..2c5a66c 100644 --- a/core/src/main/java/org/apache/brooklyn/core/location/dynamic/LocationOwner.java +++ b/core/src/main/java/org/apache/brooklyn/core/location/dynamic/LocationOwner.java @@ -22,7 +22,6 @@ import java.util.Map; import org.apache.brooklyn.api.entity.Entity; import org.apache.brooklyn.api.location.Location; -import org.apache.brooklyn.api.location.LocationDefinition; import org.apache.brooklyn.api.sensor.AttributeSensor; import org.apache.brooklyn.config.ConfigKey; import org.apache.brooklyn.core.config.ConfigKeys; @@ -71,9 +70,6 @@ public interface LocationOwner, E ext AttributeSensor DYNAMIC_LOCATION_STATUS = Sensors.newBooleanSensor( "entity.dynamicLocation.status", "The status of the location owned by this entity"); -AttributeSensor LOCATION_DEFINITION = Sensors.newSensor( -LocationDefinition.class, "entity.dynamicLocation.definition", "The location definition for the location owned by this entity"); - L getDynamicLocation(); L createLocation(Map flags); http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/453183f1/software/base/src/test/java/org/apache/brooklyn/core/location/dynamic/clocker/ClockerDynamicLocationPatternRebindTest.java -- diff --git
[08/10] brooklyn-server git commit: Fix XML serialiser for SpecConverter
Fix XML serialiser for SpecConverter It was not thread-safe. The XmlMementoSerializer uses a single instance of SpecConverter. If multiple threads tried to deserialise different objects at the same time, theyâd overwrite the âinstanceâ value and cause serious problems deserialising. Now use thread-local storage for the âinstanceâ cache. Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b5dae5b7 Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b5dae5b7 Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b5dae5b7 Branch: refs/heads/master Commit: b5dae5b7ad5b4d0919e00da1f02b5a54a1e4d3e1 Parents: 89b3a66 Author: Aled SageAuthored: Tue Mar 22 12:47:36 2016 + Committer: Aled Sage Committed: Tue Mar 22 12:47:36 2016 + -- .../core/mgmt/persist/XmlMementoSerializer.java | 14 ++ 1 file changed, 10 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5dae5b7/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java -- diff --git a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java index 588f8fd..0df2340 100644 --- a/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java +++ b/core/src/main/java/org/apache/brooklyn/core/mgmt/persist/XmlMementoSerializer.java @@ -393,6 +393,12 @@ public class XmlMementoSerializer extends XmlSerializer implements Memento } } +// Would prefer this as a field of SpecConverter, but can't do that because the class is not static. +// Must use thread-local storage because a single instance of the SpecConverter is used by this +// XmlMementoSerializer. In BrooklynMementoPersisterToObjectStore.visitMemento, it uses a thread-pool +// for concurrently deserializing multiple objects. +private static final ThreadLocal SpecConverterLocalInstance = new ThreadLocal(); + /** When reading/writing specs, it checks whether there is a catalog item id set and uses it to load */ public class SpecConverter extends ReflectionConverter { SpecConverter() { @@ -454,25 +460,25 @@ public class XmlMementoSerializer extends XmlSerializer implements Memento result.catalogItemId(catalogItemId); return result; } finally { -instance = null; +SpecConverterLocalInstance.remove(); if (customLoaderSet) { popXstreamCustomClassLoader(); } } } -Object instance; - @Override protected Object instantiateNewInstance(HierarchicalStreamReader reader, UnmarshallingContext context) { // the super calls getAttribute which requires that we have not yet done moveDown, // so we do this earlier and cache it for when we call super.unmarshal +Object instance = SpecConverterLocalInstance.get(); if (instance==null) throw new IllegalStateException("Instance should be created and cached"); return instance; } protected void instantiateNewInstanceSettingCache(HierarchicalStreamReader reader, UnmarshallingContext context) { -instance = super.instantiateNewInstance(reader, context); +Object instance = super.instantiateNewInstance(reader, context); +SpecConverterLocalInstance.set(instance); } }
[1/2] brooklyn-server git commit: NotUpDiagnostics: don’t collect if starting && !up
Repository: brooklyn-server Updated Branches: refs/heads/master 3767000c6 -> 1e5f3b608 NotUpDiagnostics: donât collect if starting && !up Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/13fe1c0d Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/13fe1c0d Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/13fe1c0d Branch: refs/heads/master Commit: 13fe1c0dc828e342f6482442cdc3aef55d8df8e3 Parents: d059088 Author: Aled SageAuthored: Fri Mar 18 23:09:04 2016 + Committer: Aled Sage Committed: Fri Mar 18 23:45:58 2016 + -- .../apache/brooklyn/entity/software/base/SoftwareProcessImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/13fe1c0d/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 ace4ebe..4bf6543 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 @@ -172,7 +172,7 @@ public abstract class SoftwareProcessImpl extends AbstractEntity implements Soft Lifecycle state = entity.getAttribute(SERVICE_STATE_ACTUAL); if (up == null || up) { entity.sensors().set(ServiceStateLogic.SERVICE_NOT_UP_DIAGNOSTICS, ImmutableMap. of()); -} else if (state == null || state == Lifecycle.CREATED) { +} else if (state == null || state == Lifecycle.CREATED || state == Lifecycle.STARTING) { // not yet started; do nothing } else if (state == Lifecycle.STOPPING || state == Lifecycle.STOPPED || state == Lifecycle.DESTROYED) { // stopping/stopped, so expect not to be up; get rid of the diagnostics.