You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/13 20:59:55 UTC

[8/9] incubator-brooklyn git commit: [BROOKLYN-162] Rename ./api/management; use the no split package convention

[BROOKLYN-162] Rename ./api/management; use the no split package convention


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

Branch: refs/heads/master
Commit: 2e2de8e473a22d2bee0f62fcdaec630f6df13bcc
Parents: b6ef453
Author: Hadrian Zbarcea <ha...@apache.org>
Authored: Wed Aug 12 23:50:34 2015 -0400
Committer: Hadrian Zbarcea <ha...@apache.org>
Committed: Wed Aug 12 23:50:34 2015 -0400

----------------------------------------------------------------------
 .../brooklyn/location/LocationDefinition.java   |   2 +-
 .../brooklyn/location/LocationResolver.java     |   2 +-
 .../java/brooklyn/location/LocationSpec.java    |   2 +-
 .../apache/brooklyn/api/entity/Application.java |   2 +-
 .../org/apache/brooklyn/api/entity/Entity.java  |   2 +-
 .../brooklyn/api/entity/basic/EntityLocal.java  |   8 +-
 .../api/entity/proxying/EntitySpec.java         |   2 +-
 .../api/entity/rebind/RebindManager.java        |   2 +-
 .../brooklyn/api/entity/trait/Configurable.java |   2 +-
 .../api/management/AccessController.java        |  66 +++++
 .../brooklyn/api/management/EntityManager.java  | 126 +++++++++
 .../api/management/ExecutionContext.java        |  67 +++++
 .../api/management/ExecutionManager.java        | 117 +++++++++
 .../api/management/HasTaskChildren.java         |  39 +++
 .../api/management/LocationManager.java         |  87 +++++++
 .../api/management/ManagementContext.java       | 255 +++++++++++++++++++
 .../api/management/SubscriptionContext.java     |  66 +++++
 .../api/management/SubscriptionHandle.java      |  27 ++
 .../api/management/SubscriptionManager.java     | 112 ++++++++
 .../apache/brooklyn/api/management/Task.java    | 128 ++++++++++
 .../brooklyn/api/management/TaskAdaptable.java  |  24 ++
 .../brooklyn/api/management/TaskFactory.java    |  25 ++
 .../api/management/TaskQueueingContext.java     |  62 +++++
 .../brooklyn/api/management/TaskWrapper.java    |  28 ++
 .../BrooklynClassLoadingContext.java            |  51 ++++
 .../entitlement/EntitlementClass.java           |  27 ++
 .../entitlement/EntitlementContext.java         |  24 ++
 .../entitlement/EntitlementManager.java         |  45 ++++
 .../management/ha/HighAvailabilityManager.java  | 129 ++++++++++
 .../api/management/ha/HighAvailabilityMode.java |  67 +++++
 .../api/management/ha/ManagementNodeState.java  |  72 ++++++
 .../management/ha/ManagementNodeSyncRecord.java |  62 +++++
 .../ha/ManagementPlaneSyncRecord.java           |  51 ++++
 .../ha/ManagementPlaneSyncRecordPersister.java  |  69 +++++
 .../api/management/ha/MementoCopyMode.java      |  29 +++
 .../brooklyn/management/AccessController.java   |  66 -----
 .../brooklyn/management/EntityManager.java      | 126 ---------
 .../brooklyn/management/ExecutionContext.java   |  67 -----
 .../brooklyn/management/ExecutionManager.java   | 117 ---------
 .../brooklyn/management/HasTaskChildren.java    |  39 ---
 .../brooklyn/management/LocationManager.java    |  87 -------
 .../brooklyn/management/ManagementContext.java  | 255 -------------------
 .../management/SubscriptionContext.java         |  66 -----
 .../brooklyn/management/SubscriptionHandle.java |  27 --
 .../management/SubscriptionManager.java         | 112 --------
 .../org/apache/brooklyn/management/Task.java    | 128 ----------
 .../brooklyn/management/TaskAdaptable.java      |  24 --
 .../apache/brooklyn/management/TaskFactory.java |  25 --
 .../management/TaskQueueingContext.java         |  62 -----
 .../apache/brooklyn/management/TaskWrapper.java |  28 --
 .../BrooklynClassLoadingContext.java            |  51 ----
 .../entitlement/EntitlementClass.java           |  27 --
 .../entitlement/EntitlementContext.java         |  24 --
 .../entitlement/EntitlementManager.java         |  45 ----
 .../management/ha/HighAvailabilityManager.java  | 129 ----------
 .../management/ha/HighAvailabilityMode.java     |  67 -----
 .../management/ha/ManagementNodeState.java      |  72 ------
 .../management/ha/ManagementNodeSyncRecord.java |  62 -----
 .../ha/ManagementPlaneSyncRecord.java           |  51 ----
 .../ha/ManagementPlaneSyncRecordPersister.java  |  69 -----
 .../brooklyn/management/ha/MementoCopyMode.java |  29 ---
 .../mementos/BrooklynMementoPersister.java      |   2 +-
 .../apache/brooklyn/policy/EnricherSpec.java    |   2 +-
 .../org/apache/brooklyn/policy/PolicySpec.java  |   2 +-
 .../src/main/java/brooklyn/BrooklynVersion.java |   2 +-
 .../brooklyn/basic/AbstractBrooklynObject.java  |   2 +-
 .../brooklyn/basic/BasicConfigurableObject.java |   4 +-
 .../basic/internal/ApiObjectsFactoryImpl.java   |   2 +-
 .../api/AssemblyTemplateSpecInstantiator.java   |   2 +-
 .../api/HasBrooklynManagementContext.java       |   2 +-
 .../brooklyn/catalog/CatalogPredicates.java     |   2 +-
 .../catalog/internal/BasicBrooklynCatalog.java  |   4 +-
 .../brooklyn/catalog/internal/CatalogDo.java    |   2 +-
 .../catalog/internal/CatalogInitialization.java |   4 +-
 .../catalog/internal/CatalogItemDo.java         |   2 +-
 .../brooklyn/catalog/internal/CatalogUtils.java |   4 +-
 .../brooklyn/config/BrooklynServerConfig.java   |   2 +-
 .../brooklyn/config/BrooklynServerPaths.java    |   2 +-
 .../config/BrooklynServiceAttributes.java       |   2 +-
 .../brooklyn/entity/basic/AbstractEffector.java |   2 +-
 .../brooklyn/entity/basic/AbstractEntity.java   |  12 +-
 .../entity/basic/ApplicationBuilder.java        |   4 +-
 .../java/brooklyn/entity/basic/Attributes.java  |   2 +-
 .../entity/basic/BasicStartableImpl.java        |   2 +-
 .../entity/basic/BrooklynShutdownHooks.java     |   4 +-
 .../brooklyn/entity/basic/BrooklynTaskTags.java |   6 +-
 .../brooklyn/entity/basic/DynamicGroupImpl.java |   2 +-
 .../java/brooklyn/entity/basic/Entities.java    |  12 +-
 .../brooklyn/entity/basic/EntityConfigMap.java  |   4 +-
 .../brooklyn/entity/basic/EntityFunctions.java  |   2 +-
 .../brooklyn/entity/basic/EntityInternal.java   |   6 +-
 .../java/brooklyn/entity/basic/EntityTasks.java |   2 +-
 .../basic/EntityTransientCopyInternal.java      |   4 +-
 .../brooklyn/entity/effector/EffectorBody.java  |   6 +-
 .../brooklyn/entity/effector/EffectorTasks.java |   4 +-
 .../brooklyn/entity/effector/Effectors.java     |   2 +-
 .../entity/group/DynamicClusterImpl.java        |   2 +-
 .../entity/group/DynamicFabricImpl.java         |   2 +-
 .../entity/group/DynamicRegionsFabricImpl.java  |   2 +-
 .../entity/group/QuarantineGroupImpl.java       |   2 +-
 .../entity/proxying/EntityProxyImpl.java        |   4 +-
 .../entity/proxying/InternalEntityFactory.java  |   2 +-
 .../proxying/InternalLocationFactory.java       |   2 +-
 .../entity/proxying/InternalPolicyFactory.java  |   2 +-
 .../rebind/ActivePartialRebindIteration.java    |   2 +-
 .../rebind/InitialFullRebindIteration.java      |   2 +-
 .../rebind/PeriodicDeltaChangeListener.java     |   4 +-
 .../entity/rebind/RebindContextImpl.java        |   2 +-
 .../rebind/RebindContextLookupContext.java      |   2 +-
 .../brooklyn/entity/rebind/RebindIteration.java |   4 +-
 .../entity/rebind/RebindManagerImpl.java        |   8 +-
 .../entity/rebind/dto/MementosGenerators.java   |   4 +-
 .../persister/BrooklynPersistenceUtils.java     |  10 +-
 .../rebind/persister/FileBasedObjectStore.java  |   4 +-
 .../rebind/persister/MementoSerializer.java     |   2 +-
 .../persister/PersistenceObjectStore.java       |   4 +-
 .../rebind/persister/XmlMementoSerializer.java  |   6 +-
 .../dto/BasicManagementNodeSyncRecord.java      |   4 +-
 .../dto/ManagementPlaneSyncRecordImpl.java      |   4 +-
 .../brooklyn/entity/trait/StartableMethods.java |   2 +-
 .../basic/AbstractCollectionConfigKey.java      |   4 +-
 .../basic/AbstractStructuredConfigKey.java      |   2 +-
 .../basic/AttributeSensorAndConfigKey.java      |   2 +-
 .../basic/BasicAttributeSensorAndConfigKey.java |   2 +-
 .../brooklyn/event/basic/BasicConfigKey.java    |   2 +-
 .../event/basic/DependentConfiguration.java     |  10 +-
 .../java/brooklyn/event/basic/MapConfigKey.java |   2 +-
 .../basic/PortAttributeSensorAndConfigKey.java  |   2 +-
 .../event/basic/SubElementConfigKey.java        |   2 +-
 ...platedStringAttributeSensorAndConfigKey.java |   2 +-
 .../brooklyn/event/feed/ConfigToAttributes.java |   2 +-
 .../main/java/brooklyn/event/feed/Poller.java   |   2 +-
 .../brooklyn/event/feed/shell/ShellFeed.java    |   2 +-
 .../windows/WindowsPerformanceCounterFeed.java  |   2 +-
 .../internal/BrooklynFeatureEnablement.java     |   2 +-
 .../location/basic/AbstractLocation.java        |   2 +-
 .../basic/AbstractLocationResolver.java         |   2 +-
 .../location/basic/BasicLocationRegistry.java   |   2 +-
 .../location/basic/BasicMachineDetails.java     |   2 +-
 .../location/basic/CatalogLocationResolver.java |   2 +-
 .../basic/DefinedLocationByIdResolver.java      |   2 +-
 .../FixedListMachineProvisioningLocation.java   |   2 +-
 .../location/basic/LocationConfigUtils.java     |   2 +-
 .../location/basic/LocationInternal.java        |   2 +-
 .../java/brooklyn/location/basic/Locations.java |   4 +-
 .../brooklyn/location/basic/MultiLocation.java  |   2 +-
 .../location/basic/MultiLocationResolver.java   |   2 +-
 .../location/basic/NamedLocationResolver.java   |   2 +-
 .../location/basic/SshMachineLocation.java      |   2 +-
 .../AbstractAvailabilityZoneExtension.java      |   2 +-
 .../management/ManagementContextInjectable.java |   2 +-
 .../AbstractBrooklynClassLoadingContext.java    |   4 +-
 .../BrooklynClassLoadingContextSequential.java  |   4 +-
 ...ssLoaderFromBrooklynClassLoadingContext.java |   2 +-
 .../JavaBrooklynClassLoadingContext.java        |   2 +-
 .../OsgiBrooklynClassLoadingContext.java        |   4 +-
 .../BasicEntitlementClassDefinition.java        |   2 +-
 .../entitlement/EntitlementManagerAdapter.java  |   6 +-
 .../entitlement/EntitlementPredicates.java      |   4 +-
 .../management/entitlement/Entitlements.java    |  10 +-
 .../entitlement/NotEntitledException.java       |   4 +-
 .../entitlement/PerUserEntitlementManager.java  |   6 +-
 .../PerUserEntitlementManagerWithDefault.java   |   2 +-
 .../entitlement/WebEntitlementContext.java      |   2 +-
 .../management/ha/BasicMasterChooser.java       |   6 +-
 .../ha/HighAvailabilityManagerImpl.java         |  18 +-
 .../ha/ManagementPlaneSyncRecordDeltaImpl.java  |   4 +-
 ...ntPlaneSyncRecordPersisterToObjectStore.java |  12 +-
 .../brooklyn/management/ha/MasterChooser.java   |   4 +-
 .../brooklyn/management/ha/OsgiManager.java     |   2 +-
 .../internal/AbstractManagementContext.java     |  14 +-
 .../internal/AbstractSubscriptionManager.java   |   4 +-
 .../management/internal/AccessManager.java      |   2 +-
 .../internal/AsyncCollectionChangeAdapter.java  |   2 +-
 .../internal/BasicSubscriptionContext.java      |   6 +-
 .../internal/BrooklynGarbageCollector.java      |   4 +-
 .../management/internal/EffectorUtils.java      |   2 +-
 .../internal/EntityManagementSupport.java       |   8 +-
 .../internal/EntityManagementUtils.java         |   6 +-
 .../internal/EntityManagerInternal.java         |   2 +-
 .../management/internal/LocalAccessManager.java |   2 +-
 .../management/internal/LocalEntityManager.java |   4 +-
 .../internal/LocalLocationManager.java          |   2 +-
 .../internal/LocalManagementContext.java        |  14 +-
 .../internal/LocalSubscriptionManager.java      |   6 +-
 .../management/internal/LocalUsageManager.java  |   2 +-
 .../internal/LocationManagerInternal.java       |   2 +-
 .../internal/ManagementContextInternal.java     |   4 +-
 .../internal/ManagementTransitionInfo.java      |   2 +-
 .../internal/NonDeploymentAccessManager.java    |   2 +-
 .../internal/NonDeploymentEntityManager.java    |   2 +-
 .../internal/NonDeploymentLocationManager.java  |   2 +-
 .../NonDeploymentManagementContext.java         |  26 +-
 .../internal/QueueingSubscriptionManager.java   |   2 +-
 .../management/internal/Subscription.java       |   2 +-
 .../internal/SubscriptionTracker.java           |   4 +-
 .../policy/basic/AbstractEntityAdjunct.java     |   8 +-
 .../brooklyn/policy/basic/ConfigMapImpl.java    |   2 +-
 .../main/java/brooklyn/util/ResourceUtils.java  |   4 +-
 .../java/brooklyn/util/file/ArchiveTasks.java   |   4 +-
 .../util/internal/ConfigKeySelfExtracting.java  |   2 +-
 .../brooklyn/util/mutex/SemaphoreForTasks.java  |   4 +-
 .../util/task/AbstractExecutionContext.java     |   8 +-
 .../util/task/BasicExecutionContext.java        |  12 +-
 .../util/task/BasicExecutionManager.java        |   8 +-
 .../main/java/brooklyn/util/task/BasicTask.java |   4 +-
 .../java/brooklyn/util/task/CompoundTask.java   |   6 +-
 .../util/task/DynamicSequentialTask.java        |   6 +-
 .../java/brooklyn/util/task/DynamicTasks.java   |  22 +-
 .../brooklyn/util/task/ExecutionListener.java   |   2 +-
 .../java/brooklyn/util/task/ForwardingTask.java |   2 +-
 .../java/brooklyn/util/task/ParallelTask.java   |   2 +-
 .../java/brooklyn/util/task/ScheduledTask.java  |   2 +-
 .../java/brooklyn/util/task/SequentialTask.java |   2 +-
 .../util/task/SingleThreadedScheduler.java      |   2 +-
 .../java/brooklyn/util/task/TaskBuilder.java    |   8 +-
 .../java/brooklyn/util/task/TaskInternal.java   |   4 +-
 .../java/brooklyn/util/task/TaskScheduler.java  |   2 +-
 .../main/java/brooklyn/util/task/TaskTags.java  |   4 +-
 .../src/main/java/brooklyn/util/task/Tasks.java |  12 +-
 .../java/brooklyn/util/task/ValueResolver.java  |   6 +-
 .../util/task/ssh/SshFetchTaskFactory.java      |   2 +-
 .../util/task/ssh/SshFetchTaskWrapper.java      |   4 +-
 .../util/task/ssh/SshPutTaskFactory.java        |   2 +-
 .../util/task/ssh/SshPutTaskWrapper.java        |   4 +-
 .../java/brooklyn/util/task/ssh/SshTasks.java   |  10 +-
 .../util/task/system/ProcessTaskFactory.java    |   2 +-
 .../util/task/system/ProcessTaskWrapper.java    |   4 +-
 .../brooklyn/util/text/TemplateProcessor.java   |   2 +-
 .../lite/CampPlatformWithJustBrooklynMgmt.java  |   2 +-
 .../brooklyn/camp/lite/CampYamlLiteTest.java    |   2 +-
 .../camp/lite/TestAppAssemblyInstantiator.java  |   4 +-
 .../catalog/internal/CatalogTestUtils.java      |   4 +-
 .../YamlRollingTimeWindowMeanEnricherTest.java  |   2 +-
 .../YamlTimeWeightedDeltaEnricherTest.java      |   2 +-
 .../entity/EffectorSayHiGroovyTest.groovy       |   4 +-
 .../java/brooklyn/entity/EffectorSayHiTest.java |   4 +-
 .../entity/EntityPreManagementTest.java         |   4 +-
 .../entity/basic/BasicStartableTest.java        |   2 +-
 .../brooklyn/entity/basic/ConfigMapTest.java    |   4 +-
 .../brooklyn/entity/basic/DataEntityTest.java   |   2 +-
 .../basic/DependentConfigurationTest.java       |   2 +-
 .../brooklyn/entity/basic/EntityConfigTest.java |   2 +-
 .../entity/basic/EntitySubscriptionTest.java    |   2 +-
 .../drivers/EntityDriverRegistryTest.java       |   2 +-
 .../entity/effector/EffectorBasicTest.java      |   4 +-
 .../effector/EffectorConcatenateTest.java       |   4 +-
 .../entity/effector/EffectorTaskTest.java       |   4 +-
 .../entity/group/DynamicClusterTest.java        |   2 +-
 ...DynamicClusterWithAvailabilityZonesTest.java |   2 +-
 .../entity/group/DynamicFabricTest.java         |   2 +-
 .../group/MembershipTrackingPolicyTest.java     |   2 +-
 .../entity/hello/LocalEntitiesTest.java         |   4 +-
 .../ApplicationBuilderOverridingTest.java       |   2 +-
 .../entity/proxying/EntityManagerTest.java      |   2 +-
 .../entity/proxying/EntityProxyTest.java        |   4 +-
 .../entity/rebind/RebindCatalogEntityTest.java  |   4 +-
 .../entity/rebind/RebindCatalogItemTest.java    |   2 +-
 .../entity/rebind/RebindEntityTest.java         |   2 +-
 .../entity/rebind/RebindFailuresTest.java       |   4 +-
 .../entity/rebind/RebindFeedWithHaTest.java     |   4 +-
 .../entity/rebind/RebindManagerSorterTest.java  |   2 +-
 .../entity/rebind/RebindManagerTest.java        |   2 +-
 .../brooklyn/entity/rebind/RebindOptions.java   |   2 +-
 .../entity/rebind/RebindTestFixture.java        |   6 +-
 .../brooklyn/entity/rebind/RebindTestUtils.java |   6 +-
 .../BrooklynMementoPersisterFileBasedTest.java  |   2 +-
 ...ntoPersisterInMemorySizeIntegrationTest.java |   2 +-
 .../BrooklynMementoPersisterInMemoryTest.java   |   2 +-
 .../BrooklynMementoPersisterTestFixture.java    |   2 +-
 .../persister/FileBasedObjectStoreTest.java     |   2 +-
 .../rebind/persister/InMemoryObjectStore.java   |   4 +-
 .../rebind/persister/ListeningObjectStore.java  |   4 +-
 .../persister/XmlMementoSerializerTest.java     |   2 +-
 .../transformer/CompoundTransformerTest.java    |   4 +-
 .../entity/trait/FailingEntityImpl.java         |   2 +-
 .../entity/trait/StartableMethodsTest.java      |   2 +-
 .../access/PortForwardManagerRebindTest.java    |   2 +-
 .../location/basic/AbstractLocationTest.java    |   2 +-
 ...stMachineProvisioningLocationRebindTest.java |   2 +-
 .../location/basic/LocationConfigTest.java      |   2 +-
 .../location/basic/LocationExtensionsTest.java  |   2 +-
 .../location/basic/LocationManagementTest.java  |   2 +-
 .../location/basic/MachineDetailsTest.java      |   4 +-
 .../location/basic/MultiLocationRebindTest.java |   2 +-
 .../SshMachineLocationIntegrationTest.java      |   2 +-
 .../location/basic/SshMachineLocationTest.java  |   2 +-
 .../entitlement/AcmeEntitlementManager.java     |   6 +-
 .../AcmeEntitlementManagerTestFixture.java      |   2 +-
 .../entitlement/EntitlementsTest.java           |   4 +-
 .../entitlement/EntityEntitlementTest.java      |   2 +-
 .../ha/HighAvailabilityManagerInMemoryTest.java |   2 +-
 .../HighAvailabilityManagerSplitBrainTest.java  |  10 +-
 .../ha/HighAvailabilityManagerTestFixture.java  |  10 +-
 .../brooklyn/management/ha/HotStandbyTest.java  |   6 +-
 .../ha/ImmutableManagementPlaneSyncRecord.java  |   4 +-
 ...agementPlaneSyncRecordPersisterInMemory.java |   6 +-
 .../management/ha/MasterChooserTest.java        |   4 +-
 .../ha/MutableManagementPlaneSyncRecord.java    |   4 +-
 .../brooklyn/management/ha/WarmStandbyTest.java |   6 +-
 .../internal/EntityExecutionManagerTest.java    |   4 +-
 .../internal/LocalManagementContextTest.java    |   2 +-
 .../internal/LocalSubscriptionManagerTest.java  |   4 +-
 .../osgi/OsgiVersionMoreEntityTest.java         |   4 +-
 .../policy/basic/PolicySubscriptionTest.java    |   2 +-
 .../qa/performance/AbstractPerformanceTest.java |   2 +-
 .../qa/performance/EntityPerformanceTest.java   |   2 +-
 .../SubscriptionPerformanceTest.java            |   2 +-
 .../brooklyn/util/internal/FlagUtilsTest.java   |   2 +-
 .../util/ssh/BashCommandsIntegrationTest.java   |   2 +-
 .../task/BasicTaskExecutionPerformanceTest.java |   2 +-
 .../util/task/BasicTaskExecutionTest.java       |   2 +-
 .../util/task/BasicTasksFutureTest.java         |   2 +-
 .../util/task/CompoundTaskExecutionTest.java    |   2 +-
 .../util/task/DynamicSequentialTaskTest.java    |   4 +-
 .../util/task/NonBasicTaskExecutionTest.java    |   2 +-
 .../util/task/ScheduledExecutionTest.java       |   2 +-
 .../util/task/TaskFinalizationTest.java         |   2 +-
 .../test/java/brooklyn/util/task/TasksTest.java |   4 +-
 .../brooklyn/util/task/ValueResolverTest.java   |   4 +-
 .../brooklyn/util/task/ssh/SshTasksTest.java    |   2 +-
 .../util/task/system/SystemTasksTest.java       |   2 +-
 .../brooklyn/test/entity/TestApplication.java   |   2 +-
 .../test/entity/TestApplicationImpl.java        |   2 +-
 .../JcloudsBlobStoreBasedObjectStore.java       |   4 +-
 .../location/jclouds/BrooklynMachinePool.java   |   2 +-
 .../jclouds/JcloudsByonLocationResolver.java    |   2 +-
 .../location/jclouds/JcloudsLocation.java       |   2 +-
 .../jclouds/JcloudsLocationResolver.java        |   2 +-
 .../zone/AwsAvailabilityZoneExtension.java      |   2 +-
 .../persister/jclouds/BlobStoreExpiryTest.java  |   2 +-
 .../BlobStorePersistencePerformanceTest.java    |   2 +-
 .../rebind/persister/jclouds/BlobStoreTest.java |   2 +-
 .../jclouds/JcloudsExpect100ContinueTest.java   |   2 +-
 .../JcloudsObjectStoreAccessorWriterTest.java   |   2 +-
 .../jclouds/BailOutJcloudsLocation.java         |   2 +-
 .../provider/AbstractJcloudsLocationTest.java   |   2 +-
 .../AwsEc2LocationWindowsLiveTest.groovy        |   2 +-
 .../entity/brooklyn/BrooklynMetricsImpl.java    |   2 +-
 .../policy/ha/AbstractFailureDetector.java      |   2 +-
 .../enricher/DeltaEnrichersTests.groovy         |   2 +-
 .../enricher/RollingMeanEnricherTest.groovy     |   2 +-
 .../RollingTimeWindowMeanEnricherTest.groovy    |   2 +-
 .../enricher/TimeFractionDeltaEnricherTest.java |   2 +-
 .../AbstractFollowTheSunPolicyTest.java         |   2 +-
 .../ha/ConnectionFailureDetectorTest.java       |   2 +-
 ...ServiceFailureDetectorStabilizationTest.java |   2 +-
 .../policy/ha/ServiceFailureDetectorTest.java   |   2 +-
 .../brooklyn/policy/ha/ServiceReplacerTest.java |   2 +-
 .../policy/ha/ServiceRestarterTest.java         |   2 +-
 .../SameServerDriverLifecycleEffectorTasks.java |   2 +-
 .../entity/basic/SameServerEntityImpl.java      |   2 +-
 ...wareProcessDriverLifecycleEffectorTasks.java |   2 +-
 .../entity/basic/SoftwareProcessImpl.java       |   2 +-
 .../entity/basic/lifecycle/ScriptHelper.java    |   6 +-
 .../brooklynnode/BrooklynClusterImpl.java       |   2 +-
 .../entity/brooklynnode/BrooklynNode.java       |   4 +-
 .../entity/brooklynnode/BrooklynNodeImpl.java   |   6 +-
 .../BrooklynClusterUpgradeEffectorBody.java     |   6 +-
 .../BrooklynNodeUpgradeEffectorBody.java        |   4 +-
 .../effector/SelectMasterEffectorBody.java      |   4 +-
 .../SetHighAvailabilityModeEffectorBody.java    |   4 +-
 .../brooklyn/entity/chef/ChefAttributeFeed.java |   2 +-
 .../brooklyn/entity/chef/ChefSoloDriver.java    |   4 +-
 .../brooklyn/entity/chef/ChefSoloTasks.java     |   2 +-
 .../java/brooklyn/entity/chef/ChefTasks.java    |   4 +-
 .../brooklyn/entity/pool/ServerPoolImpl.java    |   4 +-
 .../entity/pool/ServerPoolLocationResolver.java |   2 +-
 .../entity/service/EntityLaunchListener.java    |   4 +-
 .../entity/service/InitdServiceInstaller.java   |   2 +-
 .../entity/service/SystemServiceEnricher.java   |   4 +-
 .../entity/service/SystemServiceInstaller.java  |   2 +-
 .../entity/software/MachineInitTasks.java       |   2 +-
 .../software/MachineLifecycleEffectorTasks.java |   2 +-
 .../entity/software/SshEffectorTasks.java       |   2 +-
 .../brooklyn/entity/software/StaticSensor.java  |   2 +-
 .../software/java/JmxAttributeSensor.java       |   2 +-
 .../entity/AbstractGoogleComputeLiveTest.java   |   2 +-
 .../entity/AbstractSoftlayerLiveTest.java       |   2 +-
 .../entity/basic/SameServerEntityTest.java      |   2 +-
 .../basic/SoftwareProcessEntityLatchTest.java   |   2 +-
 .../basic/SoftwareProcessEntityRebindTest.java  |   2 +-
 .../entity/basic/SoftwareProcessEntityTest.java |   6 +-
 .../basic/lifecycle/NaiveScriptRunnerTest.java  |   2 +-
 .../brooklynnode/SelectMasterEffectorTest.java  |   2 +-
 .../entity/chef/ChefLiveTestSupport.java        |   2 +-
 .../chef/ChefServerTasksIntegrationTest.java    |   2 +-
 .../mysql/ChefSoloDriverToyMySqlEntity.java     |   4 +-
 .../entity/pool/AbstractServerPoolTest.java     |   2 +-
 .../entity/pool/ServerPoolLiveTest.java         |   2 +-
 .../entity/pool/ServerPoolRebindTest.java       |   2 +-
 .../entity/software/AbstractDockerLiveTest.java |   2 +-
 .../MachineLifecycleEffectorTasksTest.java      |   2 +-
 .../entity/software/SoftwareEffectorTest.java   |   4 +-
 .../entity/software/SshEffectorTasksTest.java   |   6 +-
 .../mariadb/MariaDbIntegrationTest.java         |   2 +-
 .../postgresql/PostgreSqlIntegrationTest.java   |   2 +-
 .../rubyrep/RubyRepIntegrationTest.java         |   2 +-
 .../nosql/cassandra/CassandraNodeSshDriver.java |   2 +-
 .../nosql/couchbase/CouchbaseNodeSshDriver.java |   2 +-
 .../entity/proxy/AbstractControllerImpl.java    |   2 +-
 .../entity/proxy/nginx/NginxControllerImpl.java |   2 +-
 .../entity/proxy/nginx/NginxSshDriver.java      |   2 +-
 .../entity/proxy/nginx/UrlMappingImpl.java      |   2 +-
 .../ControlledDynamicWebAppClusterImpl.java     |   2 +-
 .../entity/webapp/DynamicWebAppClusterImpl.java |   4 +-
 .../entity/dns/AbstractGeoDnsServiceTest.java   |   2 +-
 .../geoscaling/GeoscalingIntegrationTest.java   |   2 +-
 .../nginx/NginxClusterIntegrationTest.java      |   2 +-
 .../proxy/nginx/NginxRebindIntegrationTest.java |   2 +-
 .../nginx/NginxRebindWithHaIntegrationTest.java |   4 +-
 .../nginx/NginxUrlMappingIntegrationTest.java   |   2 +-
 .../proxy/nginx/NginxWebClusterEc2LiveTest.java |   2 +-
 .../AbstractWebAppFixtureIntegrationTest.java   |   6 +-
 .../webapp/TomcatAutoScalerPolicyTest.java      |   2 +-
 .../webapp/WebAppConcurrentDeployTest.java      |   2 +-
 .../NodeJsWebAppFixtureIntegrationTest.java     |   2 +-
 .../app/SampleLocalhostIntegrationTest.java     |   2 +-
 .../brooklyn/sample/app/SampleUnitTest.java     |   2 +-
 .../camp/brooklyn/BrooklynCampPlatform.java     |   4 +-
 .../BrooklynCampPlatformLauncherAbstract.java   |   2 +-
 .../camp/brooklyn/YamlLauncherAbstract.java     |   4 +-
 .../BrooklynAssemblyTemplateInstantiator.java   |   4 +-
 .../BrooklynComponentTemplateResolver.java      |   4 +-
 .../BrooklynEntityDecorationResolver.java       |   2 +-
 .../spi/creation/BrooklynEntityMatcher.java     |   4 +-
 .../creation/BrooklynYamlLocationResolver.java  |   2 +-
 .../creation/BrooklynYamlTypeInstantiator.java  |   2 +-
 .../spi/dsl/BrooklynDslDeferredSupplier.java    |   4 +-
 .../spi/dsl/methods/BrooklynDslCommon.java      |   6 +-
 .../brooklyn/spi/dsl/methods/DslComponent.java  |   2 +-
 .../lookup/AbstractBrooklynResourceLookup.java  |   2 +-
 .../lookup/AbstractTemplateBrooklynLookup.java  |   2 +-
 .../spi/lookup/AssemblyBrooklynLookup.java      |   2 +-
 .../lookup/AssemblyTemplateBrooklynLookup.java  |   2 +-
 .../brooklyn/spi/lookup/BrooklynUrlLookup.java  |   2 +-
 .../lookup/PlatformComponentBrooklynLookup.java |   2 +-
 ...PlatformComponentTemplateBrooklynLookup.java |   2 +-
 .../platform/BrooklynImmutableCampPlatform.java |   2 +-
 .../camp/brooklyn/AbstractYamlRebindTest.java   |   4 +-
 .../camp/brooklyn/AbstractYamlTest.java         |   4 +-
 .../BrooklynYamlTypeInstantiatorTest.java       |   2 +-
 .../camp/brooklyn/DslAndRebindYamlTest.java     |   2 +-
 .../camp/brooklyn/EntitiesYamlTest.java         |   2 +-
 ...aWebAppWithDslYamlRebindIntegrationTest.java |   4 +-
 .../brooklyn/JavaWebAppsIntegrationTest.java    |   4 +-
 .../camp/brooklyn/JavaWebAppsMatchingTest.java  |   2 +-
 .../brooklyn/camp/brooklyn/ObjectsYamlTest.java |   4 +-
 .../brooklyn/ReloadBrooklynPropertiesTest.java  |   2 +-
 .../brooklyn/VanillaBashNetcatYamlTest.java     |   2 +-
 .../main/java/org/apache/brooklyn/cli/Main.java |   6 +-
 .../BrooklynJavascriptGuiLauncherTest.java      |   2 +-
 .../brooklyn/launcher/BrooklynLauncher.java     |  12 +-
 .../launcher/BrooklynServerDetails.java         |   2 +-
 .../brooklyn/launcher/BrooklynWebServer.java    |   2 +-
 .../camp/BrooklynCampPlatformLauncher.java      |   2 +-
 .../BrooklynEntityMirrorIntegrationTest.java    |   4 +-
 .../brooklynnode/BrooklynNodeRestTest.java      |   2 +-
 .../BrooklynLauncherHighAvailabilityTest.java   |   6 +-
 .../BrooklynLauncherRebindTestFixture.java      |   4 +-
 .../BrooklynLauncherRebindTestToFiles.java      |   4 +-
 ...lynLauncherRebindToCloudObjectStoreTest.java |   2 +-
 .../brooklyn/launcher/BrooklynLauncherTest.java |   2 +-
 .../launcher/SimpleYamlLauncherForTests.java    |   2 +-
 .../blueprints/AbstractBlueprintTest.java       |   2 +-
 .../SoftlayerObtainPrivateLiveTest.java         |   2 +-
 .../org/apache/brooklyn/qa/load/LoadTest.java   |   4 +-
 .../org/apache/brooklyn/rest/api/ServerApi.java |   4 +-
 .../ApplicationResourceIntegrationTest.java     |   2 +-
 .../rest/client/BrooklynApiRestClientTest.java  |   2 +-
 .../BrooklynPropertiesSecurityFilter.java       |   2 +-
 .../rest/filter/HaHotCheckResourceFilter.java   |   4 +-
 .../rest/filter/HaMasterCheckFilter.java        |   4 +-
 .../resources/AbstractBrooklynRestResource.java |   2 +-
 .../rest/resources/ActivityResource.java        |   4 +-
 .../rest/resources/ApplicationResource.java     |   2 +-
 .../rest/resources/EffectorResource.java        |   2 +-
 .../brooklyn/rest/resources/EntityResource.java |   2 +-
 .../brooklyn/rest/resources/ServerResource.java |  16 +-
 ...nUserWithRandomPasswordSecurityProvider.java |   2 +-
 .../provider/DelegatingSecurityProvider.java    |   2 +-
 .../provider/ExplicitUsersSecurityProvider.java |   2 +-
 .../security/provider/LdapSecurityProvider.java |   2 +-
 .../transform/HighAvailabilityTransformer.java  |   4 +-
 .../rest/transform/LocationTransformer.java     |   2 +-
 .../rest/transform/TaskTransformer.java         |   4 +-
 .../rest/util/BrooklynRestResourceUtils.java    |   4 +-
 .../brooklyn/rest/util/EntityLocationUtils.java |   2 +-
 .../rest/util/ManagementContextProvider.java    |   2 +-
 .../rest/util/json/BidiSerialization.java       |   2 +-
 .../util/json/BrooklynJacksonJsonProvider.java  |   2 +-
 .../brooklynnode/DeployBlueprintTest.java       |   2 +-
 .../brooklyn/rest/BrooklynRestApiLauncher.java  |   2 +-
 .../BrooklynRestApiLauncherTestFixture.java     |   2 +-
 .../apache/brooklyn/rest/HaHotCheckTest.java    |   6 +-
 .../brooklyn/rest/HaMasterCheckFilterTest.java  |   8 +-
 .../brooklyn/rest/domain/ApplicationTest.java   |   2 +-
 .../brooklyn/rest/domain/SensorSummaryTest.java |   2 +-
 .../rest/resources/ScriptResourceTest.java      |   2 +-
 .../SensorResourceIntegrationTest.java          |   2 +-
 .../ServerResourceIntegrationTest.java          |   2 +-
 .../rest/resources/ServerResourceTest.java      |   2 +-
 .../rest/resources/ServerShutdownTest.java      |   4 +-
 .../rest/testing/BrooklynRestApiTest.java       |   2 +-
 .../json/BrooklynJacksonSerializerTest.java     |   2 +-
 .../apache/brooklyn/test/EntityTestUtils.java   |   2 +-
 506 files changed, 2599 insertions(+), 2599 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationDefinition.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationDefinition.java b/api/src/main/java/brooklyn/location/LocationDefinition.java
index 44296e4..3a20a24 100644
--- a/api/src/main/java/brooklyn/location/LocationDefinition.java
+++ b/api/src/main/java/brooklyn/location/LocationDefinition.java
@@ -20,7 +20,7 @@ package brooklyn.location;
 
 import java.util.Map;
 
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
 
 /**
  * Defines a location, where the {@link #getSpec()} is like a serialized representation

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationResolver.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationResolver.java b/api/src/main/java/brooklyn/location/LocationResolver.java
index 908936c..bcd32b6 100644
--- a/api/src/main/java/brooklyn/location/LocationResolver.java
+++ b/api/src/main/java/brooklyn/location/LocationResolver.java
@@ -20,7 +20,7 @@ package brooklyn.location;
 
 import java.util.Map;
 
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
 
 import com.google.common.annotations.Beta;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/brooklyn/location/LocationSpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/brooklyn/location/LocationSpec.java b/api/src/main/java/brooklyn/location/LocationSpec.java
index d13b7d1..d91ca93 100644
--- a/api/src/main/java/brooklyn/location/LocationSpec.java
+++ b/api/src/main/java/brooklyn/location/LocationSpec.java
@@ -24,7 +24,7 @@ import java.util.Collections;
 import java.util.Map;
 
 import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/Application.java b/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
index 21e0800..af71cf3 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/Application.java
@@ -18,7 +18,7 @@
  */
 package org.apache.brooklyn.api.entity;
 
-import org.apache.brooklyn.management.ManagementContext;
+import org.apache.brooklyn.api.management.ManagementContext;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
index 29a69f1..5f1b1aa 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/Entity.java
@@ -26,7 +26,7 @@ import javax.annotation.Nullable;
 import org.apache.brooklyn.api.basic.BrooklynObject;
 import org.apache.brooklyn.api.entity.proxying.EntitySpec;
 import org.apache.brooklyn.api.event.AttributeSensor;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.EnricherSpec;
 import org.apache.brooklyn.policy.Policy;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java b/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
index db0c813..f16d867 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/basic/EntityLocal.java
@@ -27,10 +27,10 @@ import org.apache.brooklyn.api.event.AttributeSensor;
 import org.apache.brooklyn.api.event.Sensor;
 import org.apache.brooklyn.api.event.SensorEvent;
 import org.apache.brooklyn.api.event.SensorEventListener;
-import org.apache.brooklyn.management.SubscriptionContext;
-import org.apache.brooklyn.management.SubscriptionHandle;
-import org.apache.brooklyn.management.SubscriptionManager;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.SubscriptionContext;
+import org.apache.brooklyn.api.management.SubscriptionHandle;
+import org.apache.brooklyn.api.management.SubscriptionManager;
+import org.apache.brooklyn.api.management.Task;
 
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java b/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
index 0d10956..b55a2d1 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/proxying/EntitySpec.java
@@ -30,7 +30,7 @@ import javax.annotation.Nullable;
 import org.apache.brooklyn.api.basic.AbstractBrooklynObjectSpec;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.Group;
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
 import org.apache.brooklyn.policy.Enricher;
 import org.apache.brooklyn.policy.EnricherSpec;
 import org.apache.brooklyn.policy.Policy;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java b/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
index 891a6e0..577fb58 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/rebind/RebindManager.java
@@ -25,7 +25,7 @@ import java.util.concurrent.TimeoutException;
 import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.management.ha.ManagementNodeState;
+import org.apache.brooklyn.api.management.ha.ManagementNodeState;
 import org.apache.brooklyn.mementos.BrooklynMementoPersister;
 import org.apache.brooklyn.mementos.BrooklynMementoRawData;
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java b/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
index aebb657..9a7680f 100644
--- a/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
+++ b/api/src/main/java/org/apache/brooklyn/api/entity/trait/Configurable.java
@@ -18,7 +18,7 @@
  */
 package org.apache.brooklyn.api.entity.trait;
 
-import org.apache.brooklyn.management.Task;
+import org.apache.brooklyn.api.management.Task;
 
 import brooklyn.config.ConfigKey;
 import brooklyn.config.ConfigKey.HasConfigKey;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java b/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
new file mode 100644
index 0000000..1342d3b
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/AccessController.java
@@ -0,0 +1,66 @@
+/*
+ * 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.api.management;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+import brooklyn.location.Location;
+
+import com.google.common.annotations.Beta;
+
+@Beta
+public interface AccessController {
+
+    // TODO Expect this class' methods to change, e.g. including the user doing the
+    // provisioning or the provisioning parameters such as jurisdiction
+    
+    public static class Response {
+        private static final Response ALLOWED = new Response(true, "");
+        
+        public static Response allowed() {
+            return ALLOWED;
+        }
+        
+        public static Response disallowed(String msg) {
+            return new Response(false, msg);
+        }
+        
+        private final boolean allowed;
+        private final String msg;
+
+        private Response(boolean allowed, String msg) {
+            this.allowed = allowed;
+            this.msg = msg;
+        }
+        
+        public boolean isAllowed() {
+            return allowed;
+        }
+        
+        public String getMsg() {
+            return msg;
+        }
+    }
+
+    public Response canProvisionLocation(Location provisioner);
+
+    public Response canManageLocation(Location loc);
+    
+    public Response canManageEntity(Entity entity);
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java b/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
new file mode 100644
index 0000000..4120587
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/EntityManager.java
@@ -0,0 +1,126 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+
+import javax.annotation.Nullable;
+
+import org.apache.brooklyn.api.entity.Application;
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.proxying.EntitySpec;
+import org.apache.brooklyn.api.entity.proxying.EntityTypeRegistry;
+import org.apache.brooklyn.policy.Enricher;
+import org.apache.brooklyn.policy.EnricherSpec;
+import org.apache.brooklyn.policy.Policy;
+import org.apache.brooklyn.policy.PolicySpec;
+
+import com.google.common.base.Predicate;
+
+/**
+ * For managing and querying entities.
+ */
+public interface EntityManager {
+
+    /**
+     * Returns the type registry, used to identify the entity implementation when instantiating an
+     * entity of a given type.
+     * 
+     * @see EntityManager.createEntity(EntitySpec)
+     */
+    EntityTypeRegistry getEntityTypeRegistry();
+    
+    /**
+     * Creates a new (unmanaged) entity.
+     * 
+     * @param spec
+     * @return A proxy to the created entity (rather than the actual entity itself).
+     */
+    <T extends Entity> T createEntity(EntitySpec<T> spec);
+    
+    /**
+     * Convenience (particularly for groovy code) to create an entity.
+     * Equivalent to {@code createEntity(EntitySpec.create(type).configure(config))}
+     * 
+     * @see createEntity(EntitySpec)
+     */
+    <T extends Entity> T createEntity(Map<?,?> config, Class<T> type);
+
+    /**
+     * Creates a new policy (not managed; not associated with any entity).
+     * 
+     * @param spec
+     */
+    <T extends Policy> T createPolicy(PolicySpec<T> spec);
+
+    /**
+     * Creates a new enricher (not managed; not associated with any entity).
+     * 
+     * @param spec
+     */
+    <T extends Enricher> T createEnricher(EnricherSpec<T> spec);
+
+    /**
+     * All entities under control of this management plane
+     */
+    Collection<Entity> getEntities();
+
+    /**
+     * All entities managed as part of the given application
+     */
+    Collection<Entity> getEntitiesInApplication(Application application);
+
+    /**
+     * All entities under control of this management plane that match the given filter
+     */
+    Collection<Entity> findEntities(Predicate<? super Entity> filter);
+
+    /**
+     * All entities managed as part of the given application that match the given filter
+     */
+    Collection<Entity> findEntitiesInApplication(Application application, Predicate<? super Entity> filter);
+
+    /**
+     * Returns the entity with the given identifier (may be a full instance, or a proxy to one which is remote),
+     * or null.
+     */
+    @Nullable Entity getEntity(String id);
+    
+    /** whether the entity is under management by this management context */
+    boolean isManaged(Entity entity);
+
+    /**
+     * Begins management for the given entity and its children, recursively.
+     *
+     * depending on the implementation of the management context,
+     * this might push it out to one or more remote management nodes.
+     * Manage an entity.
+     */
+    // TODO manage and unmanage without arguments should be changed to take an explicit ManagementTransitionMode
+    // (but that class is not currently in the API project)
+    void manage(Entity e);
+    
+    /**
+     * Causes the given entity and its children, recursively, to be removed from the management plane
+     * (for instance because the entity is no longer relevant)
+     */
+    void unmanage(Entity e);
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
new file mode 100644
index 0000000..0adb149
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionContext.java
@@ -0,0 +1,67 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+/**
+ * This is a Brooklyn extension to the Java {@link Executor}.
+ * 
+ * The "context" could, for example, be an {@link Entity} so that tasks executed 
+ * can be annotated as executing in that context.
+ */
+public interface ExecutionContext extends Executor {
+
+    /**
+     * Get the tasks executed through this context (returning an immutable set).
+     */
+    Set<Task<?>> getTasks();
+
+    /**
+     * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+     */
+    Task<?> submit(Map<?,?> properties, Runnable runnable);
+
+    /**
+     * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+     */
+    <T> Task<T> submit(Map<?,?> properties, Callable<T> callable);
+
+    /** {@link ExecutionManager#submit(Runnable) */
+    Task<?> submit(Runnable runnable);
+ 
+    /** {@link ExecutionManager#submit(Callable) */
+    <T> Task<T> submit(Callable<T> callable);
+
+    /** See {@link ExecutionManager#submit(Map, TaskAdaptable)}. */
+    <T> Task<T> submit(TaskAdaptable<T> task);
+    
+    /**
+     * See {@link ExecutionManager#submit(Map, TaskAdaptable)} for properties that can be passed in.
+     */
+    <T> Task<T> submit(Map<?,?> properties, TaskAdaptable<T> task);
+
+    boolean isShutdown();
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
new file mode 100644
index 0000000..3e192d2
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ExecutionManager.java
@@ -0,0 +1,117 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+
+import org.apache.brooklyn.api.entity.Entity;
+
+/** 
+ * This class manages the execution of a number of jobs with tags.
+ * 
+ * It is like an executor service (and it ends up delegating to one) but adds additional support
+ * where jobs can be:
+ * <ul>
+ * <li>Tracked with tags/buckets
+ * <li>Be {@link Runnable}s, {@link Callable}s, or {@link groovy.lang.Closure}s
+ * <li>Remembered after completion
+ * <li>Treated as {@link Task} instances (see below)
+ * <li>Given powerful synchronization capabilities
+ * </ul>
+ * <p>
+ * The advantage of treating them as {@link Task} instances include: 
+ * <ul>
+ * <li>Richer status information
+ * <li>Started-by, contained-by relationships automatically remembered
+ * <li>Runtime metadata (start, stop, etc)
+ * <li>Grid and multi-machine support) 
+ * </ul>
+ * <p>
+ * For usage instructions see {@link #submit(Map, TaskAdaptable)}, and for examples see the various
+ * {@code ExecutionTest} and {@code TaskTest} instances.
+ * <p>
+ * It has been developed for multi-location provisioning and management to track work being
+ * done by each {@link Entity}.
+ * <p>
+ * Note the use of the environment variable {@code THREAD_POOL_SIZE} which is used to size
+ * the {@link ExecutorService} thread pool. The default is calculated as twice the number
+ * of CPUs in the system plus two, giving 10 for a four core system, 18 for an eight CPU
+ * server and so on.
+ */
+public interface ExecutionManager {
+    public boolean isShutdown();
+    
+    /** returns the task with the given ID, or null if none */ 
+    public Task<?> getTask(String id);
+    
+    /** returns all tasks with the given tag (immutable) */
+    public Set<Task<?>> getTasksWithTag(Object tag);
+
+    /** returns all tasks that have any of the given tags (immutable) */
+    public Set<Task<?>> getTasksWithAnyTag(Iterable<?> tags);
+
+    /** returns all tasks that have all of the given tags (immutable) */
+    public Set<Task<?>> getTasksWithAllTags(Iterable<?> tags);
+
+    /** returns all tags known to this manager (immutable) */
+    public Set<Object> getTaskTags();
+
+//    /** returns all tasks known to this manager (immutable) */
+//    public Set<Task<?>> getAllTasks();
+
+    /** see {@link #submit(Map, TaskAdaptable)} */
+    public Task<?> submit(Runnable r);
+
+    /** see {@link #submit(Map, TaskAdaptable)} */
+    public <T> Task<T> submit(Callable<T> c);
+
+    /** see {@link #submit(Map, TaskAdaptable)} */
+    public <T> Task<T> submit(TaskAdaptable<T> task);
+    
+    /** see {@link #submit(Map, TaskAdaptable)} */
+    public Task<?> submit(Map<?, ?> flags, Runnable r);
+
+    /** see {@link #submit(Map, TaskAdaptable)} */
+    public <T> Task<T> submit(Map<?, ?> flags, Callable<T> c);
+
+    /**
+     * Submits the given {@link Task} for execution in the context associated with this manager.
+     *
+     * The following optional flags supported (in the optional map first arg):
+     * <ul>
+     * <li><em>tag</em> - A single object to be used as a tag for looking up the task
+     * <li><em>tags</em> - A {@link Collection} of object tags each of which the task should be associated,
+     *                      used for associating with contexts, mutex execution, and other purposes
+     * <li><em>synchId</em> - A string, or {@link Collection} of strings, representing a category on which an object should own a synch lock 
+     * <li><em>synchObj</em> - A string, or {@link Collection} of strings, representing a category on which an object should own a synch lock 
+     * <li><em>newTaskStartCallback</em> - A {@link groovy.lang.Closure} that will be invoked just before the task starts if it starts as a result of this call
+     * <li><em>newTaskEndCallback</em> - A {@link groovy.lang.Closure} that will be invoked when the task completes if it starts as a result of this call
+     * </ul>
+     * Callbacks run in the task's thread, and if the callback is a {@link groovy.lang.Closure} it is passed the task for convenience. The closure can be any of the
+     * following types; either a {@link groovy.lang.Closure}, {@link Runnable} or {@link Callable}.
+     * <p>
+     * If a Map is supplied it must be modifiable (currently; may allow immutable maps in future). 
+     */
+    public <T> Task<T> submit(Map<?, ?> flags, TaskAdaptable<T> task);
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java b/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
new file mode 100644
index 0000000..33e890e
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/HasTaskChildren.java
@@ -0,0 +1,39 @@
+/*
+ * 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.api.management;
+
+import com.google.common.annotations.Beta;
+
+/** 
+ * Interface marks tasks which have explicit children,
+ * typically where the task defines the ordering of running those children tasks
+ * <p>
+ * The {@link Task#getSubmittedByTask()} on the child will typically return the parent,
+ * but note there are other means of submitting tasks (e.g. background, in the same {@link ExecutionContext}),
+ * where the submitter has no API reference to the submitted tasks.
+ * <p>
+ * In general the children mechanism is preferred as it is easier to navigate
+ * (otherwise you have to scan the {@link ExecutionContext} to find tasks submitted by a task).  
+ */
+@Beta // in 0.6.0
+public interface HasTaskChildren {
+
+    public Iterable<Task<?>> getChildren();
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java b/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
new file mode 100644
index 0000000..a6fed43
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/LocationManager.java
@@ -0,0 +1,87 @@
+/*
+ * 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.api.management;
+
+import java.util.Collection;
+import java.util.Map;
+
+import brooklyn.location.Location;
+import brooklyn.location.LocationSpec;
+
+/**
+ * For managing and querying entities.
+ */
+public interface LocationManager {
+
+    /**
+     * Creates a new location, which is tracked by the management context.
+     * 
+     * @param spec
+     */
+    <T extends Location> T createLocation(LocationSpec<T> spec);
+
+    /**
+     * Convenience (particularly for groovy code) to create a location.
+     * Equivalent to {@code createLocation(LocationSpec.create(type).configure(config))}
+     * 
+     * @see #createLocation(LocationSpec)
+     */
+    <T extends Location> T createLocation(Map<?,?> config, Class<T> type);
+
+    /**
+     * All locations under control of this management plane.
+     * 
+     * This returns a snapshot of the current locations; it will not reflect future changes in the locations.
+     * If no locations are found, the collection will be empty (i.e. null is never returned).
+     */
+    Collection<Location> getLocations();
+
+    /**
+     * Returns the location under management (e.g. in use) with the given identifier 
+     * (e.g. random string; and different to the LocationDefinition id).
+     * May return a full instance, or a proxy to one which is remote.
+     * If no location found with that id, returns null.
+     */
+    Location getLocation(String id);
+    
+    /** whether the location is under management by this management context */
+    boolean isManaged(Location loc);
+
+    /**
+     * Begins management for the given location and its children, recursively.
+     *
+     * depending on the implementation of the management context,
+     * this might push it out to one or more remote management nodes.
+     * Manage a location.
+     * 
+     * @since 0.6.0 (added only for backwards compatibility, where locations are being created directly).
+     * @deprecated in 0.6.0; use {@link #createLocation(LocationSpec)} instead.
+     */
+    Location manage(Location loc);
+    
+    /**
+     * Causes the given location and its children, recursively, to be removed from the management plane
+     * (for instance because the location is no longer relevant).
+     * 
+     * If the given location is not managed (e.g. it has already been unmanaged) then this is a no-op 
+     * (though it may be logged so duplicate calls are best avoided).
+     */
+    void unmanage(Location loc);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java b/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
new file mode 100644
index 0000000..404aa56
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/ManagementContext.java
@@ -0,0 +1,255 @@
+/*
+ * 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.api.management;
+
+import java.io.Serializable;
+import java.net.URI;
+import java.util.Collection;
+
+import org.apache.brooklyn.api.basic.BrooklynObject;
+import org.apache.brooklyn.api.catalog.BrooklynCatalog;
+import org.apache.brooklyn.api.entity.Application;
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.drivers.DriverDependentEntity;
+import org.apache.brooklyn.api.entity.drivers.EntityDriverManager;
+import org.apache.brooklyn.api.entity.drivers.downloads.DownloadResolverManager;
+import org.apache.brooklyn.api.entity.rebind.RebindManager;
+import org.apache.brooklyn.api.management.entitlement.EntitlementManager;
+import org.apache.brooklyn.api.management.ha.HighAvailabilityManager;
+
+import brooklyn.config.StringConfigMap;
+import brooklyn.location.LocationRegistry;
+import brooklyn.util.guava.Maybe;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * This is the entry point for accessing and interacting with a realm of applications and their entities in Brooklyn.
+ *
+ * For example, policies and the management console(s) (web-app, etc) can use this to interact with entities; 
+ * policies, web-app, and entities share the realm for subscribing to events, executing tasks, and generally co-existing.      
+ * <p>
+ * It may refer to several applications, and it refers to all the entities descended from those applications.
+ */
+public interface ManagementContext {
+
+    // TODO Consider separating out into a ConfigManager for methods like:
+    //  - getConfig()
+    //  - reloadBrooklynProperties();
+    //  - addPropertiesReloadListener
+    //  - removePropertiesReloadListener
+    //  - interface PropertiesReloadListener
+    
+    /** 
+     * UID for the Brooklyn management plane which this {@link ManagementContext} node is a part of.
+     * <p>
+     * Each Brooklyn entity is actively managed by a unique management plane 
+     * whose ID which should not normally change for the duration of that entity, 
+     * even though the nodes in that plane might, and the plane may go down and come back up. 
+     * In other words the value of {@link Application#getManagementContext()#getManagementPlaneId()} 
+     * will generally be constant (in contrast to {@link #getManagementNodeId()}).
+     * <p>
+     * This value should not be null unless the management context is a non-functional
+     * (non-deployment) instance. */
+    String getManagementPlaneId();
+    
+    /** 
+     * UID for this {@link ManagementContext} node (as part of a single management plane).
+     * <p>
+     * No two instances of {@link ManagementContext} should ever have the same node UID. 
+     * The value of {@link Application#getManagementContext()#getManagementNodeId()} may
+     * change many times (in contrast to {@link #getManagementPlaneId()}). 
+     * <p>
+     * This value should not be null unless the management context is a non-functional
+     * (non-deployment) instance. */
+    String getManagementNodeId();
+
+    /**
+     * The URI that this management node's REST API is available at, or absent if the node's
+     * API is unavailable.
+     */
+    Maybe<URI> getManagementNodeUri();
+
+    /**
+     * All applications under control of this management plane
+     */
+    Collection<Application> getApplications();
+
+    /**
+     * Returns the {@link EntityManager} instance for managing/querying entities.
+     */
+    EntityManager getEntityManager();
+    
+    /**
+     * Returns the {@link ExecutionManager} instance for entities and users in this management realm 
+     * to submit tasks and to observe what tasks are occurring
+     */
+    ExecutionManager getExecutionManager();
+    
+    /** 
+     * Returns an {@link ExecutionContext} within the {@link ExecutionManager} for tasks
+     * associated to the Brooklyn node's operation (not any entities). 
+     **/
+    ExecutionContext getServerExecutionContext();
+
+    /**
+     * Returns the {@link EntityDriverManager} entities can use to create drivers. This
+     * manager can also be used to programmatically customize which driver type to use 
+     * for entities in different locations.
+     * 
+     * The default strategy for choosing a driver is to use a naming convention: 
+     * {@link DriverDependentEntity#getDriverInterface()} returns the interface that the
+     * driver must implement; its name should end in "Driver". For example, this suffix is 
+     * replaced with "SshDriver" for SshMachineLocation, for example.
+     */
+    EntityDriverManager getEntityDriverManager();
+
+    /**
+     * Returns the {@link DownloadResolverManager} for resolving things like which URL to download an installer from.
+     * 
+     * The default {@link DownloadResolverManager} will retrieve {@code entity.getAttribute(Attributes.DOWNLOAD_URL)},
+     * and substitute things like "${version}" etc.
+     * 
+     * However, additional resolvers can be registered to customize this behaviour (e.g. to always go to an 
+     * enterprise's repository).
+     */
+    DownloadResolverManager getEntityDownloadsManager();
+
+    /**
+     * Returns the {@link SubscriptionManager} instance for entities and users of this management realm
+     * to subscribe to sensor events (and, in the case of entities, to emit sensor events) 
+     */
+    SubscriptionManager getSubscriptionManager();
+
+    //TODO (Alex) I'm not sure the following two getXxxContext methods are needed on the interface;
+    //I expect they will only be called once, in AbstractEntity, and fully capable
+    //there of generating the respective contexts from the managers
+    //(Litmus test will be whether there is anything in FederatedManagementContext
+    //which requires a custom FederatedExecutionContext -- or whether BasicEC 
+    //works with FederatedExecutionManager)
+    /**
+     * Returns an {@link ExecutionContext} instance representing tasks 
+     * (from the {@link ExecutionManager}) associated with this entity, and capable 
+     * of conveniently running such tasks which will be associated with that entity  
+     */
+    ExecutionContext getExecutionContext(Entity entity);
+    
+    /**
+     * Returns a {@link SubscriptionContext} instance representing subscriptions
+     * (from the {@link SubscriptionManager}) associated with this entity, and capable 
+     * of conveniently subscribing on behalf of that entity  
+     */
+    SubscriptionContext getSubscriptionContext(Entity entity);
+
+    @Beta // method may move to an internal interface; brooklyn users should not need to call this directly
+    RebindManager getRebindManager();
+
+    /**
+     * @since 0.7.0
+     */
+    @Beta // method may move to an internal interface; brooklyn users should not need to call this directly
+    HighAvailabilityManager getHighAvailabilityManager();
+    
+    /**
+     * Returns the ConfigMap (e.g. BrooklynProperties) applicable to this management context.
+     * Defaults to reading ~/.brooklyn/brooklyn.properties but configurable in the management context.
+     */
+    StringConfigMap getConfig();
+    
+    /**
+     * Whether the management context has been initialized and not yet terminated.
+     * This does not mean startup is entirely completed. See also {@link #isStartupComplete()}.
+     */
+    // TODO should we replace this with isNotYetTerminated() ??
+    // and perhaps introduce isFullyRunning() which does (isStartupComplete() && isRunning()),
+    // and/or move to a MgmtContextStatus subclass where errors can also be stored?
+    public boolean isRunning();
+    
+    /**
+     * Whether all startup tasks have completed. Previous to this point the management context is still usable 
+     * (and hence {@link #isRunning()} returns true immediately after construction)
+     * but some subsystems (e.g. persistence, OSGi, webapps, entities started at startup)
+     * may not be available until this returns true.
+     * <p>
+     * Also see {@link #isStartupComplete()}.
+     */
+    @Beta  // see comment on isRunning() as items might move to a status handler
+    public boolean isStartupComplete();
+
+    /** Record of configured locations and location resolvers */
+    LocationRegistry getLocationRegistry();
+    
+    /** Record of configured Brooklyn entities (and templates and policies) which can be loaded */
+    BrooklynCatalog getCatalog();
+
+    /** Returns the class loader to be used to load items. 
+     * Temporary routine while catalog supports classloader-based and OSGi-based classloading. */
+    @Beta
+    ClassLoader getCatalogClassLoader();
+
+    LocationManager getLocationManager();
+
+    /**
+     * For controlling access to operations - can be queried to find if an operation is allowed.
+     * Callers should *not* cache the result of this method, but should instead always call
+     * again to get the {@link AccessController}.
+     */
+    AccessController getAccessController();
+
+    /**
+     * Reloads locations from {@code brooklyn.properties}. Any changes will apply only to newly created applications
+     */
+    void reloadBrooklynProperties();
+
+    /**
+     * Listener for {@code brooklyn.properties} reload events.
+     *
+     * @see {@link #raddPropertiesReloadListenerPropertiesReloadListener)}
+     * @see {@link #removePropertiesReloadListener(PropertiesReloadListener)}
+     */
+    interface PropertiesReloadListener extends Serializable {
+
+        /** Called when {@code brooklyn.properties} is reloaded. */
+        void reloaded();
+
+    }
+    
+    /**
+     * Registers a listener to be notified when brooklyn.properties is reloaded
+     */
+    void addPropertiesReloadListener(PropertiesReloadListener listener);
+    
+    /**
+     * Deregisters a listener from brooklyn.properties reload notifications 
+     */
+    void removePropertiesReloadListener(PropertiesReloadListener listener);
+
+    /**
+     * Active entitlements checker instance.
+     */
+    EntitlementManager getEntitlementManager();
+ 
+    /** As {@link #lookup(String, Class)} but not constraining the return type */
+    public BrooklynObject lookup(String id);
+    
+    /** Finds an entity with the given ID known at this management context */
+    // TODO in future support policies etc
+    public <T extends BrooklynObject> T lookup(String id, Class<T> type); 
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
new file mode 100644
index 0000000..04ccd12
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionContext.java
@@ -0,0 +1,66 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.Group;
+import org.apache.brooklyn.api.event.Sensor;
+import org.apache.brooklyn.api.event.SensorEvent;
+import org.apache.brooklyn.api.event.SensorEventListener;
+
+/**
+ * This is the context through which an {@link Entity} can manage its subscriptions.
+ */
+public interface SubscriptionContext {
+    /**
+     * As {@link SubscriptionManager#subscribe(Map, Entity, Sensor, SensorEventListener)} with default subscription parameters for this context
+     */
+    <T> SubscriptionHandle subscribe(Map<String, Object> flags, Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribe(Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+    
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToChildren(Map<String, Object> flags, Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToChildren(Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+    
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToMembers(Map<String, Object> flags, Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToMembers(Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+    
+    /** @see SubscriptionManager#unsubscribe(SubscriptionHandle) */
+    boolean unsubscribe(SubscriptionHandle subscriptionId);
+    
+    /** causes all subscriptions to be deregistered
+     * @return number of subscriptions removed */
+    int unsubscribeAll();
+
+    /** @see SubscriptionManager#publish(SensorEvent) */
+    <T> void publish(SensorEvent<T> event);
+
+    /** Return the subscriptions associated with this context */
+    Set<SubscriptionHandle> getSubscriptions();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
new file mode 100644
index 0000000..72a1609
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionHandle.java
@@ -0,0 +1,27 @@
+/*
+ * 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.api.management;
+
+/**
+ * A "receipt" returned by {@link SubscriptionContext} and {@link SubscriptionManager}'s {@code subscribe()} 
+ * methods. It can be used to unsubscribe - see {@link SubscriptionContext#unsubscribe(SubscriptionHandle)} 
+ * and {@link SubscriptionManager#unsubscribe(SubscriptionHandle)}.
+ */
+public interface SubscriptionHandle {
+}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2e2de8e4/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
new file mode 100644
index 0000000..520dbc9
--- /dev/null
+++ b/api/src/main/java/org/apache/brooklyn/api/management/SubscriptionManager.java
@@ -0,0 +1,112 @@
+/*
+ * 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.api.management;
+
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.Group;
+import org.apache.brooklyn.api.event.Sensor;
+import org.apache.brooklyn.api.event.SensorEvent;
+import org.apache.brooklyn.api.event.SensorEventListener;
+
+/**
+ * The management interface for subscriptions.
+ * 
+ * Different implementations will handle entities subscribing and unsubscribing to {@link SensorEvent}s
+ * and their delivery.
+ * 
+ * @see SubscriptionContext
+ */
+public interface SubscriptionManager {
+    /**
+     * Subscribe to {@link Sensor} data changes and events on a given {@link Entity}, supplying the {@link SensorEventListener}
+     * to invoke when they occur.
+     * 
+     * The method returns an id which can be used to {@link #unsubscribe(SubscriptionHandle)} later.
+     * <p>
+     * The listener callback is in-order single-threaded and synchronized on this object. The flags
+     * parameters can include the following:
+     * <ul>
+     * <li>subscriber - object to identify the subscriber (e.g. entity, or console session uid) 
+     * <li><i>in future</i> - control parameters for the subscription (period, minimum delta for updates, etc)
+     * </ul>
+     * 
+     * @param flags optional parameters to be associated with the subscription
+     * @param producer entity to listen to, or null to listen to all entities
+     * @param sensor sensor channel of events to listen to, or null for all sensors from the given producer(s)
+     * @param listener callback to invoke when an event occurs
+     * @return an id for this subscription
+     * 
+     * @see #unsubscribe(SubscriptionHandle)
+     */
+    <T> SubscriptionHandle subscribe(Map<String, Object> flags, Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribe(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribe(Entity producer, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+    /**
+     * Subscribe to {@link Sensor} data changes and events on all children of a given {@link Entity}, supplying the
+     * {@link SensorEventListener} to invoke when they occur.
+     * 
+     * The subscriptions will be created recursively for all children, and the same listener callback will be invoked for each
+     * sensor datum. The semantics are otherwise identical to the {@link #subscribe(Map, Entity, Sensor, SensorEventListener)} method.
+     *
+     * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+     */
+    <T> SubscriptionHandle subscribeToChildren(Map<String, Object> flags, Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribeToChildren(Map, Entity, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToChildren(Entity parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+    /**
+     * Subscribe to {@link Sensor} data changes and events on all members of a given {@link Group}, supplying the
+     * {@link SensorEventListener} to invoke when they occur.
+     * 
+     * The subscriptions will be created recursively for all children, and the same listener callback will be invoked for each
+     * sensor datum. The semantics are otherwise identical to the {@link #subscribe(Map, Entity, Sensor, SensorEventListener)} method.
+     *
+     * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+     */
+    <T> SubscriptionHandle subscribeToMembers(Map<String, Object> flags, Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+ 
+    /** @see #subscribeToMembers(Map, Group, Sensor, SensorEventListener) */
+    <T> SubscriptionHandle subscribeToMembers(Group parent, Sensor<T> sensor, SensorEventListener<? super T> listener);
+
+    /**
+     * Unsubscribe the given subscription id.
+     * 
+     * @return true if such a subscription was present (and it will now be removed)
+     * 
+     * @see #subscribe(Map, Entity, Sensor, SensorEventListener)
+     */
+    boolean unsubscribe(SubscriptionHandle subscriptionId);
+
+    /**
+     * Deliver a {@link SensorEvent} to all subscribed listeners.
+     */
+    <T> void publish(SensorEvent<T> event);
+
+    /** Return the subscriptions requested by a given subscriber */
+    Set<SubscriptionHandle> getSubscriptionsForSubscriber(Object subscriber);
+    
+    /** Return the subscriptions on a given source-sensor pair */
+    Set<SubscriptionHandle> getSubscriptionsForEntitySensor(Entity source, Sensor<?> sensor);
+}