[1/2] brooklyn-server git commit: Improve JcloudsWinrmingLiveTest coverage

2018-02-28 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master cd2652459 -> 12e6b0045


Improve JcloudsWinrmingLiveTest coverage

- add Azure ARM
- improve error message for DefaultConnectivityResolver


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

Branch: refs/heads/master
Commit: 639e3d809b850879db29f6dd532f5653f22df62f
Parents: cd26524
Author: andreaturli 
Authored: Wed Feb 21 12:10:32 2018 +0100
Committer: andreaturli 
Committed: Mon Feb 26 20:42:12 2018 +0100

--
 .../jclouds/DefaultConnectivityResolver.java| 40 
 .../jclouds/AbstractJcloudsLiveTest.java|  5 ++-
 .../jclouds/JcloudsWinrmingLiveTest.java| 19 ++
 3 files changed, 47 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/639e3d80/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/DefaultConnectivityResolver.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/DefaultConnectivityResolver.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/DefaultConnectivityResolver.java
index d58660a..9434a22 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/DefaultConnectivityResolver.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/DefaultConnectivityResolver.java
@@ -19,11 +19,14 @@
 
 package org.apache.brooklyn.location.jclouds;
 
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.Map;
 
 import javax.annotation.Nullable;
 
+import com.google.common.base.Predicates;
+import com.google.common.collect.Lists;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntityInitializer;
 import org.apache.brooklyn.api.entity.EntityLocal;
@@ -181,24 +184,27 @@ public class DefaultConnectivityResolver extends 
BasicConfigurableObject impleme
 LoginCredentials credChoice = null;
 
 final Iterable managementCandidates = 
getManagementCandidates(location, node, config, options);
-final Iterable credentialCandidates = 
getCredentialCandidates(location, node, options, config);
-
-// Try each pair of address and credential until one succeeds.
-if (shouldCheckCredentials() && options.pollForReachableAddresses()) {
-for (HostAndPort hap : managementCandidates) {
-for (LoginCredentials cred : credentialCandidates) {
-LOG.trace("Testing host={} with credential={}", hap, cred);
-if (checkCredential(location, hap, cred, config, 
options.isWindows())) {
-hapChoice = hap;
-credChoice = cred;
-break;
+Iterable credentialCandidates = 
Collections.emptyList();
+if (!Iterables.isEmpty(managementCandidates)) {
+credentialCandidates = getCredentialCandidates(location, node, 
options, config);
+
+// Try each pair of address and credential until one succeeds.
+if (shouldCheckCredentials() && 
options.pollForReachableAddresses()) {
+for (HostAndPort hap : managementCandidates) {
+for (LoginCredentials cred : credentialCandidates) {
+LOG.trace("Testing host={} with credential={}", hap, 
cred);
+if (checkCredential(location, hap, cred, config, 
options.isWindows())) {
+hapChoice = hap;
+credChoice = cred;
+break;
+}
 }
+if (hapChoice != null) break;
 }
-if (hapChoice != null) break;
+} else if (shouldCheckCredentials()) {
+LOG.debug("{} set on {} but pollForFirstReachableAddress={}",
+new Object[]{CHECK_CREDENTIALS.getName(), this, 
options.pollForReachableAddresses()});
 }
-} else if (shouldCheckCredentials()) {
-LOG.debug("{} set on {} but pollForFirstReachableAddress={}",
-new Object[]{CHECK_CREDENTIALS.getName(), this, 
options.pollForReachableAddresses()});
 }
 
 if (hapChoice == null) {
@@ -212,8 +218,10 @@ public class DefaultConnectivityResolver extends 
BasicConfigurableObject impleme
 }
 
 if (hapChoice == null) {
-throw new IllegalStateException("jclouds 

[2/2] brooklyn-server git commit: This closes #949

2018-02-28 Thread sjcorbett
This closes #949

Improve JcloudsWinrmingLiveTest coverage


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

Branch: refs/heads/master
Commit: 12e6b0045c05c5a56b2efa078171c69669b1
Parents: cd26524 639e3d8
Author: Sam Corbett 
Authored: Wed Feb 28 10:30:45 2018 +
Committer: Sam Corbett 
Committed: Wed Feb 28 10:30:45 2018 +

--
 .../jclouds/DefaultConnectivityResolver.java| 40 
 .../jclouds/AbstractJcloudsLiveTest.java|  5 ++-
 .../jclouds/JcloudsWinrmingLiveTest.java| 19 ++
 3 files changed, 47 insertions(+), 17 deletions(-)
--




[02/18] brooklyn-client git commit: Improve error message when not logged in.

2017-07-17 Thread sjcorbett
Improve error message when not logged in.


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

Branch: refs/heads/master
Commit: 653e4f4416748bf53c7c0d7a9d20b00a5cd83124
Parents: 2bea036
Author: Geoff Macartney 
Authored: Wed May 24 16:13:42 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/io/config.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/653e4f44/cli/io/config.go
--
diff --git a/cli/io/config.go b/cli/io/config.go
index 2c77602..8478d4c 100644
--- a/cli/io/config.go
+++ b/cli/io/config.go
@@ -190,7 +190,7 @@ func (config *Config) GetNetworkCredentials() (target 
string, username string, p
username, password, err = 
config.getCredentialsOldStyle(target)
}
} else {
-   err = errors.New("No target defined in config file")
+   err = errors.New("Not logged in")
}
return target, username, password, err
 }



[13/18] brooklyn-client git commit: Don't panic on failure to connect to host

2017-07-17 Thread sjcorbett
Don't panic on failure to connect to host


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

Branch: refs/heads/master
Commit: fffaec0635c2f0549b07c2237360a110834241ca
Parents: 749057b
Author: Geoff Macartney 
Authored: Tue May 23 16:48:35 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/net/net.go | 6 ++
 1 file changed, 6 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/fffaec06/cli/net/net.go
--
diff --git a/cli/net/net.go b/cli/net/net.go
index b8d8f40..5415a68 100644
--- a/cli/net/net.go
+++ b/cli/net/net.go
@@ -29,6 +29,8 @@ import (
"os"
"path/filepath"
"crypto/tls"
+   "net"
+   "time"
 )
 
 type Network struct {
@@ -238,5 +240,9 @@ func VerifyLoginURL(network *Network) error {
if url.Host == "" {
return errors.New("Use login command to set Brooklyn URL with a 
valid host[:port]")
}
+   _, err = net.DialTimeout("tcp", url.Host, time.Duration(30) * 
time.Second)
+   if err != nil {
+   return errors.New("Could not connect to " + url.Host)
+   }
return nil
 }



[10/18] brooklyn-client git commit: base64 encode passwords and simplify .brooklyn_cli structure

2017-07-17 Thread sjcorbett
base64 encode passwords and simplify .brooklyn_cli structure

Includes support for old style .brooklyn_cli format such that it will
read credentials from the old style and use them, but overwrite with
the new style on next login.

New style looks like:
{
  "credentials": {
"password": "cGFzc3dvcmQ=",
"username": "geoff"
  },
  "skipSslChecks": false,
  "target": "http://geoffs-macbook-pro.local:8081;
}


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

Branch: refs/heads/master
Commit: 2ec78dd09b5b342a219bc085028ae78c5bcfc73c
Parents: 6b7970e
Author: Geoff Macartney 
Authored: Wed May 24 12:49:56 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/br/brooklyn.go|  25 +++--
 cli/commands/login.go |  59 ++---
 cli/io/config.go  | 124 +
 3 files changed, 158 insertions(+), 50 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/2ec78dd0/cli/br/brooklyn.go
--
diff --git a/cli/br/brooklyn.go b/cli/br/brooklyn.go
index 1ffb765..3250a8f 100644
--- a/cli/br/brooklyn.go
+++ b/cli/br/brooklyn.go
@@ -30,27 +30,14 @@ import (
"path/filepath"
 )
 
-func getNetworkCredentialsFromConfig(yamlMap map[string]interface{}) (string, 
string, string, bool) {
-   var target, username, password string
-   var skipSslChecks bool
-   target, found := yamlMap["target"].(string)
-   if found {
-   auth, found := yamlMap["auth"].(map[string]interface{})
-   if found {
-   creds := auth[target].(map[string]interface{})
-   username, found = creds["username"].(string)
-   if found {
-   password, found = creds["password"].(string)
-   }
-   }
-   skipSslChecks, _ = yamlMap["skipSslChecks"].(bool)
-   }
-   return target, username, password, skipSslChecks
-}
-
 func main() {
config := io.GetConfig()
-   target, username, password, skipSslChecks := 
getNetworkCredentialsFromConfig(config.Map)
+   skipSslChecks := config.GetSkipSslChecks()
+   target, username, password, err := config.GetNetworkCredentials()
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+
//target, username, password := "http://192.168.50.101:8081;, 
"brooklyn", "Sns4Hh9j7l"
network := net.NewNetwork(target, username, password, skipSslChecks)
cmdFactory := command_factory.NewFactory(network, config)

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/2ec78dd0/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index d7ddb7e..a0459ca 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -58,6 +58,30 @@ func (cmd *Login) Metadata() 
command_metadata.CommandMetadata {
}
 }
 
+
+func (cmd *Login) promptAndReadUsername() (username string) {
+   for username == "" {
+   reader := bufio.NewReader(os.Stdin)
+   fmt.Print("Enter Username: ")
+   user, err := reader.ReadString('\n')
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+   username = strings.TrimSpace(user)
+   }
+   return username
+}
+
+func (cmd *Login) promptAndReadPassword() (password string) {
+   fmt.Print("Enter Password: ")
+   bytePassword, err := terminal.ReadPassword(int(syscall.Stdin))
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+   fmt.Printf("\n")
+   return string(bytePassword)
+}
+
 func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
if !c.Args().Present() {
error_handler.ErrorExit("A URL must be provided as the first 
argument", error_handler.CLIUsageErrorExitCode)
@@ -83,44 +107,17 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
 
// Prompt for username if not supplied
if cmd.network.BrooklynUser == "" {
-   var userName string
-   for userName == "" {
-   reader := bufio.NewReader(os.Stdin)
-   fmt.Print("Enter Username: ")
-   user, err := reader.ReadString('\n')
-   if err != nil {
-   

[12/18] brooklyn-client git commit: Improve login handling.

2017-07-17 Thread sjcorbett
Improve login handling.

See https://issues.apache.org/jira/browse/BROOKLYN-463.

Prompt for user name if not supplied.
Check for 401 Unauthorized and give tidier output.


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

Branch: refs/heads/master
Commit: 4d6b4fdf57088150b33bf14f642a2cce203ff82f
Parents: 052d3bd
Author: Geoff Macartney 
Authored: Tue Apr 4 14:08:18 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/api/version/version.go |  9 +
 cli/commands/login.go  | 24 ++--
 cli/commands/version.go|  2 +-
 cli/net/net.go |  4 ++--
 4 files changed, 30 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/4d6b4fdf/cli/api/version/version.go
--
diff --git a/cli/api/version/version.go b/cli/api/version/version.go
index 622068d..243cf5e 100644
--- a/cli/api/version/version.go
+++ b/cli/api/version/version.go
@@ -24,13 +24,14 @@ import (
"github.com/apache/brooklyn-client/cli/net"
 )
 
-func Version(network *net.Network) (models.VersionSummary, error) {
+func Version(network *net.Network) (models.VersionSummary, int, error) {
url := "/v1/server/version"
var versionSummary models.VersionSummary
-   body, err := network.SendGetRequest(url)
+   req := network.NewGetRequest(url)
+   body, code, err := network.SendRequestGetStatusCode(req)
if err != nil {
-   return versionSummary, err
+   return versionSummary, code, err
}
err = json.Unmarshal(body, )
-   return versionSummary, err
+   return versionSummary, code, err
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/4d6b4fdf/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index b0413ce..b264fb0 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -21,6 +21,11 @@ package commands
 import (
"fmt"
"syscall"
+   "bufio"
+   "os"
+   "strings"
+   "net/http"
+   "errors"
 
"github.com/apache/brooklyn-client/cli/api/version"
"github.com/apache/brooklyn-client/cli/command_metadata"
@@ -76,6 +81,17 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
cmd.network.BrooklynUrl = cmd.network.BrooklynUrl[0 : 
len(cmd.network.BrooklynUrl)-1]
}
 
+   // Prompt for username if not supplied
+   if cmd.network.BrooklynUser == "" {
+   reader := bufio.NewReader(os.Stdin)
+   fmt.Print("Enter Username: ")
+   user, err := reader.ReadString('\n')
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+   cmd.network.BrooklynUser = strings.TrimSpace(user)
+   }
+
// Prompt for password if not supplied (password is not echoed to screen
if cmd.network.BrooklynUser != "" && cmd.network.BrooklynPass == "" {
fmt.Print("Enter Password: ")
@@ -84,7 +100,8 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
error_handler.ErrorExit(err)
}
fmt.Printf("\n")
-   cmd.network.BrooklynPass = string(bytePassword)
+   password := string(bytePassword)
+   cmd.network.BrooklynPass = strings.TrimSpace(password)
}
 
if cmd.config.Map == nil {
@@ -106,8 +123,11 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
cmd.config.Map["skipSslChecks"] = cmd.network.SkipSslChecks
cmd.config.Write()
 
-   loginVersion, err := version.Version(cmd.network)
+   loginVersion, code, err := version.Version(cmd.network)
if nil != err {
+   if code == http.StatusUnauthorized {
+   err = errors.New("Unauthorized")
+   }
error_handler.ErrorExit(err)
}
fmt.Printf("Connected to Brooklyn version %s at %s\n", 
loginVersion.Version, cmd.network.BrooklynUrl)

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/4d6b4fdf/cli/commands/version.go
--
diff --git a/cli/commands/version.go b/cli/commands/version.go
index 6cbdf1d..dae6074 100644
--- a/cli/commands/version.go
+++ b/cli/commands/version.go
@@ -51,7 +51,7 @@ func (cmd *Version) Run(scope 

[09/18] brooklyn-client git commit: Rename method to private

2017-07-17 Thread sjcorbett
Rename method to private


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

Branch: refs/heads/master
Commit: 25704c5e4e5e25abacf1b14962bce6b22536e54c
Parents: 2ec78dd
Author: Geoff Macartney 
Authored: Wed May 24 12:51:46 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/io/config.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/25704c5e/cli/io/config.go
--
diff --git a/cli/io/config.go b/cli/io/config.go
index 372c59c..23312f8 100644
--- a/cli/io/config.go
+++ b/cli/io/config.go
@@ -55,7 +55,7 @@ func GetConfig() (config *Config) {
config.Map = make(map[string]interface{})
config.Write()
}
-   config.Read()
+   config.read()
return
 }
 
@@ -79,7 +79,7 @@ func (config *Config) Write() {
enc.Encode(config.Map)
 }
 
-func (config *Config) Read() {
+func (config *Config) read() {
fileToRead, err := os.Open(config.FilePath)
if err != nil {
error_handler.ErrorExit(err)



[16/18] brooklyn-client git commit: Add licence header to config_test.go

2017-07-17 Thread sjcorbett
Add licence header to config_test.go


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

Branch: refs/heads/master
Commit: b5e51e420aab89ad34cbf5581f3de520220263c7
Parents: 92de0b6
Author: Geoff Macartney 
Authored: Tue Jul 4 16:08:35 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 16:08:35 2017 +0100

--
 cli/io/config_test.go | 18 ++
 1 file changed, 18 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/b5e51e42/cli/io/config_test.go
--
diff --git a/cli/io/config_test.go b/cli/io/config_test.go
index 860dcc4..9f14c19 100644
--- a/cli/io/config_test.go
+++ b/cli/io/config_test.go
@@ -1,3 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
 package io
 
 import (



[06/18] brooklyn-client git commit: Add logout command

2017-07-17 Thread sjcorbett
Add logout command


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

Branch: refs/heads/master
Commit: 6b7970e1459b10770a8a528e498f6515892b18b8
Parents: 2ac0e7a
Author: Geoff Macartney 
Authored: Tue May 23 19:34:23 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/command_factory/factory.go |  1 +
 cli/commands/logout.go | 57 +
 cli/io/config.go   |  8 ++
 3 files changed, 66 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/6b7970e1/cli/command_factory/factory.go
--
diff --git a/cli/command_factory/factory.go b/cli/command_factory/factory.go
index 399014f..4112a53 100644
--- a/cli/command_factory/factory.go
+++ b/cli/command_factory/factory.go
@@ -70,6 +70,7 @@ func NewFactory(network *net.Network, config *io.Config) 
(factory concreteFactor
//  factory.superCommand(commands.NewList(network))
factory.simpleCommand(commands.NewLocations(network))
factory.simpleCommand(commands.NewLogin(network, config))
+   factory.simpleCommand(commands.NewLogout(network, config))
factory.simpleCommand(commands.NewPolicy(network))
factory.simpleCommand(commands.NewRename(network))
factory.simpleCommand(commands.NewSensor(network))

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/6b7970e1/cli/commands/logout.go
--
diff --git a/cli/commands/logout.go b/cli/commands/logout.go
new file mode 100644
index 000..a86eb20
--- /dev/null
+++ b/cli/commands/logout.go
@@ -0,0 +1,57 @@
+/*
+ * 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 commands
+
+import (
+   "github.com/apache/brooklyn-client/cli/command_metadata"
+   "github.com/apache/brooklyn-client/cli/error_handler"
+   "github.com/apache/brooklyn-client/cli/io"
+   "github.com/apache/brooklyn-client/cli/net"
+   "github.com/apache/brooklyn-client/cli/scope"
+   "github.com/urfave/cli"
+)
+
+type Logout struct {
+   network *net.Network
+   config  *io.Config
+}
+
+func NewLogout(network *net.Network, config *io.Config) (cmd *Logout) {
+   cmd = new(Logout)
+   cmd.network = network
+   cmd.config = config
+   return
+}
+
+func (cmd *Logout) Metadata() command_metadata.CommandMetadata {
+   return command_metadata.CommandMetadata{
+   Name:"logout",
+   Description: "Logout of brooklyn",
+   Usage:   "BROOKLYN_NAME logout",
+   Flags:   []cli.Flag{},
+   }
+}
+
+func (cmd *Logout) Run(scope scope.Scope, c *cli.Context) {
+   config := io.GetConfig()
+   err := config.Delete()
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/6b7970e1/cli/io/config.go
--
diff --git a/cli/io/config.go b/cli/io/config.go
index 12d2803..662ae24 100644
--- a/cli/io/config.go
+++ b/cli/io/config.go
@@ -48,6 +48,14 @@ func GetConfig() (config *Config) {
return
 }
 
+
+func (config *Config) Delete() (err error) {
+   if _, err := os.Stat(config.FilePath); err == nil {
+   err = os.Remove(config.FilePath)
+   }
+   return err
+}
+
 func (config *Config) Write() {
// Create file as read/write by user (but does not change perms of 
existing file)
fileToWrite, err := os.OpenFile(config.FilePath, 
os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)



[11/18] brooklyn-client git commit: Simply the format even more: encode username and password

2017-07-17 Thread sjcorbett
Simply the format even more: encode username and password


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

Branch: refs/heads/master
Commit: 86acc705958d916f27f6b1497bd98f24c98a1ed5
Parents: 25704c5
Author: Geoff Macartney 
Authored: Wed May 24 14:19:10 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/io/config.go | 46 +-
 1 file changed, 25 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/86acc705/cli/io/config.go
--
diff --git a/cli/io/config.go b/cli/io/config.go
index 23312f8..2c77602 100644
--- a/cli/io/config.go
+++ b/cli/io/config.go
@@ -26,6 +26,8 @@ import (
"github.com/apache/brooklyn-client/cli/error_handler"
"encoding/base64"
"errors"
+   "strings"
+   "bytes"
 )
 
 // Deprecated: support old style of .brooklyn_cli format for version <= 0.11.0
@@ -70,13 +72,20 @@ func (config *Config) Delete() (err error) {
 func (config *Config) Write() {
// Create file as read/write by user (but does not change perms of 
existing file)
fileToWrite, err := os.OpenFile(config.FilePath, 
os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
+   defer fileToWrite.Close()
if err != nil {
error_handler.ErrorExit(err)
}
-   defer fileToWrite.Close()
 
-   enc := json.NewEncoder(fileToWrite)
-   enc.Encode(config.Map)
+   marshalledMap, err := json.Marshal(config.Map)
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+   var formatted bytes.Buffer
+   if err = json.Indent(, marshalledMap, "", ""); err != nil 
{
+   error_handler.ErrorExit(err)
+   }
+   fileToWrite.Write(formatted.Bytes())
 }
 
 func (config *Config) read() {
@@ -102,26 +111,23 @@ func (config *Config) read() {
 //  "target": "http://geoffs-macbook-pro.local:8081;
 //}
 func (config *Config) getCredentials(target string) (username string, password 
string, err error) {
-   credentials, found := 
config.Map[credentialsKey].(map[string]interface{})
+   credentials, found := config.Map[credentialsKey].(string)
if !found {
err = errors.New("No credentials found for " + target)
return
}
 
-   if username, found = credentials["username"].(string); !found {
-   err = errors.New("No credentials for " + target)
-   return
-   }
-
-   if password, found = credentials["password"].(string); !found {
-   err = errors.New("No credentials for " + target)
+   if decoded, errd := base64.StdEncoding.DecodeString(credentials); errd 
!= nil {
+   err = errors.New("Could not decode credentials for " + target)
return
-   }
-
-   if decodedPassword, err := base64.StdEncoding.DecodeString(password); 
err != nil {
-   err = errors.New("Could not decode password for " + username)
} else {
-   password = string(decodedPassword)
+   userAndPassword := strings.SplitN(string(decoded), ":", 2)
+   if len(userAndPassword) != 2 {
+   err = errors.New("Invalid credentials for " + target)
+   return
+   }
+   username = userAndPassword[0]
+   password = userAndPassword[1]
}
return username, password, err
 }
@@ -168,11 +174,9 @@ func (config *Config) SetNetworkCredentials(target string, 
username string, pass
if config.Map == nil {
config.Map = make(map[string]interface{})
}
-   encodedPassword := base64.StdEncoding.EncodeToString([]byte(password))
-   config.Map[credentialsKey] = map[string]interface{}{
-   usernameKey: username,
-   secretKey: encodedPassword,
-   }
+   userAndPassword := username + ":" + password
+   encodedCredentials := 
base64.StdEncoding.EncodeToString([]byte(userAndPassword))
+   config.Map[credentialsKey] = encodedCredentials
config.Map[targetKey] = target
 
// Overwrite old style format from version <= 0.11.0



[08/18] brooklyn-client git commit: Add a br server command.

2017-07-17 Thread sjcorbett
Add a br server command.

Displays the URL of the connected Brooklyn.


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

Branch: refs/heads/master
Commit: 2bea03683699745933d2f37c7b41f1b7f69ec21e
Parents: 86acc70
Author: Geoff Macartney 
Authored: Wed May 24 15:15:25 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/command_factory/factory.go |  1 +
 cli/commands/server.go | 50 +
 2 files changed, 51 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/2bea0368/cli/command_factory/factory.go
--
diff --git a/cli/command_factory/factory.go b/cli/command_factory/factory.go
index 4112a53..65ed65e 100644
--- a/cli/command_factory/factory.go
+++ b/cli/command_factory/factory.go
@@ -74,6 +74,7 @@ func NewFactory(network *net.Network, config *io.Config) 
(factory concreteFactor
factory.simpleCommand(commands.NewPolicy(network))
factory.simpleCommand(commands.NewRename(network))
factory.simpleCommand(commands.NewSensor(network))
+   factory.simpleCommand(commands.NewServer(network))
factory.simpleCommand(commands.NewSetConfig(network))
factory.simpleCommand(commands.NewSpec(network))
factory.simpleCommand(commands.NewStartPolicy(network))

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/2bea0368/cli/commands/server.go
--
diff --git a/cli/commands/server.go b/cli/commands/server.go
new file mode 100644
index 000..553ce82
--- /dev/null
+++ b/cli/commands/server.go
@@ -0,0 +1,50 @@
+/*
+ * 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, Server 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 commands
+
+import (
+   "github.com/apache/brooklyn-client/cli/command_metadata"
+   "github.com/apache/brooklyn-client/cli/net"
+   "github.com/apache/brooklyn-client/cli/scope"
+   "github.com/urfave/cli"
+   "fmt"
+)
+
+type Server struct {
+   network *net.Network
+}
+
+func NewServer(network *net.Network) (cmd *Server) {
+   cmd = new(Server)
+   cmd.network = network
+   return
+}
+
+func (cmd *Server) Metadata() command_metadata.CommandMetadata {
+   return command_metadata.CommandMetadata{
+   Name:"server",
+   Description: "Display the URL of the connected Brooklyn",
+   Usage:   "BROOKLYN_NAME server",
+   Flags:   []cli.Flag{},
+   }
+}
+
+func (cmd *Server) Run(scope scope.Scope, c *cli.Context) {
+   fmt.Println(cmd.network.BrooklynUrl)
+}



[07/18] brooklyn-client git commit: Don't store all old logins in .brooklyn_cli

2017-07-17 Thread sjcorbett
Don't store all old logins in .brooklyn_cli


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

Branch: refs/heads/master
Commit: 2ac0e7a12e004c507203430a522cfd44b4a83227
Parents: 326459c
Author: Geoff Macartney 
Authored: Tue May 23 17:42:16 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/commands/login.go | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/2ac0e7a1/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index 84e13b3..d7ddb7e 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -111,11 +111,8 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
cmd.config.Map = make(map[string]interface{})
}
// now persist these credentials to the yaml file
-   auth, ok := cmd.config.Map["auth"].(map[string]interface{})
-   if !ok {
-   auth = make(map[string]interface{})
-   cmd.config.Map["auth"] = auth
-   }
+   auth := make(map[string]interface{})
+   cmd.config.Map["auth"] = auth
 
auth[cmd.network.BrooklynUrl] = map[string]string{
"username": cmd.network.BrooklynUser,



[04/18] brooklyn-client git commit: Handle newline/spaces in prompt for username

2017-07-17 Thread sjcorbett
Handle newline/spaces in prompt for username


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

Branch: refs/heads/master
Commit: b73bc2d5a7973aabe42422ba211036372e72e5db
Parents: fffaec0
Author: Geoff Macartney 
Authored: Tue May 23 17:08:15 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/commands/login.go | 16 ++--
 1 file changed, 10 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/b73bc2d5/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index b2ab208..84e13b3 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -83,13 +83,17 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
 
// Prompt for username if not supplied
if cmd.network.BrooklynUser == "" {
-   reader := bufio.NewReader(os.Stdin)
-   fmt.Print("Enter Username: ")
-   user, err := reader.ReadString('\n')
-   if err != nil {
-   error_handler.ErrorExit(err)
+   var userName string
+   for userName == "" {
+   reader := bufio.NewReader(os.Stdin)
+   fmt.Print("Enter Username: ")
+   user, err := reader.ReadString('\n')
+   if err != nil {
+   error_handler.ErrorExit(err)
+   }
+   userName = strings.TrimSpace(user)
}
-   cmd.network.BrooklynUser = strings.TrimSpace(user)
+   cmd.network.BrooklynUser = userName
}
 
// Prompt for password if not supplied (password is not echoed to screen



[18/18] brooklyn-client git commit: This closes #42

2017-07-17 Thread sjcorbett
This closes #42

Improve login handling.


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

Branch: refs/heads/master
Commit: be8051602b7bc2ad7bf0c1975aad55d7f354048a
Parents: 052d3bd 6abe8d1
Author: Sam Corbett 
Authored: Mon Jul 17 13:03:05 2017 +0100
Committer: Sam Corbett 
Committed: Mon Jul 17 13:03:05 2017 +0100

--
 cli/api/version/version.go |   9 +-
 cli/br/brooklyn.go |  55 +++
 cli/command_factory/factory.go |   2 +
 cli/commands/login.go  |  80 ++-
 cli/commands/logout.go |  57 +++
 cli/commands/server.go |  50 ++
 cli/commands/version.go|   2 +-
 cli/io/config.go   | 189 +++-
 cli/io/config_test.go  |  63 
 cli/io/legacyConfig.json   |  14 +++
 cli/io/testconfig.json |   8 ++
 cli/net/net.go |   8 +-
 12 files changed, 482 insertions(+), 55 deletions(-)
--




[14/18] brooklyn-client git commit: Revert to keeping multiple credentials in the config file

2017-07-17 Thread sjcorbett
Revert to keeping multiple credentials in the config file

per https://github.com/apache/brooklyn-client/pull/42#issuecomment-303995483


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

Branch: refs/heads/master
Commit: 61df6a2f2464aa5bf1bac4ec656b25c95f8f9eed
Parents: bca4c07
Author: Geoff Macartney 
Authored: Tue Jul 4 14:20:46 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 14:20:46 2017 +0100

--
 cli/io/config.go | 63 ---
 1 file changed, 50 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/61df6a2f/cli/io/config.go
--
diff --git a/cli/io/config.go b/cli/io/config.go
index 8478d4c..6b3aecd 100644
--- a/cli/io/config.go
+++ b/cli/io/config.go
@@ -35,7 +35,7 @@ const authKey = "auth"
 
 const credentialsKey = "credentials"
 const usernameKey = "username"
-const secretKey = "password"
+const passwordKey = "password"
 const targetKey = "target"
 const skipSslChecksKey = "skipSslChecks"
 
@@ -103,21 +103,27 @@ func (config *Config) read() {
 // getCredentials reads credentials from .brooklyn_cli data formatted for 
versions > 0.11.0
 // Note that the password is base64 encoded to avoid json formatting problems
 //{
-//  "credentials": {
-//  "password": "cGFzc3dvcmQ=",
-//  "username": "geoff"
-//  },
-//  "skipSslChecks": false,
-//  "target": "http://geoffs-macbook-pro.local:8081;
+//"credentials": {
+//"http://geoffs-macbook-pro.local:8081": "Z2VvZmY6cGFzc3dvcmQ="
+//},
+//"skipSslChecks": false,
+//"target": "http://geoffs-macbook-pro.local:8081;
 //}
+
 func (config *Config) getCredentials(target string) (username string, password 
string, err error) {
-   credentials, found := config.Map[credentialsKey].(string)
+   credentials, found := 
config.Map[credentialsKey].(map[string]interface{})
if !found {
-   err = errors.New("No credentials found for " + target)
+   err = errors.New("No credentials found in configuration")
return
}
 
-   if decoded, errd := base64.StdEncoding.DecodeString(credentials); errd 
!= nil {
+   creds, found := credentials[target].(string)
+   if !found {
+   err = errors.New("No credentials found in configuration for " + 
target)
+   return
+   }
+
+   if decoded, errd := base64.StdEncoding.DecodeString(creds); errd != nil 
{
err = errors.New("Could not decode credentials for " + target)
return
} else {
@@ -162,7 +168,7 @@ func (config *Config) getCredentialsOldStyle(target string) 
(username string, pa
return
}
 
-   if password, found = creds[secretKey].(string); !found {
+   if password, found = creds[passwordKey].(string); !found {
err = errors.New("No credentials for " + username)
return
}
@@ -170,19 +176,50 @@ func (config *Config) getCredentialsOldStyle(target 
string) (username string, pa
return username, password, err
 }
 
-func (config *Config) SetNetworkCredentials(target string, username string, 
password string) {
+func (config *Config) initialize() {
if config.Map == nil {
config.Map = make(map[string]interface{})
}
+   if _, found := config.Map[credentialsKey]; !found {
+   config.Map[credentialsKey] = make(map[string]interface{})
+   }
+}
+
+func (config *Config) setCredential(target string, username string, password 
string) {
+   credentialsMap := config.Map[credentialsKey].(map[string]interface{})
userAndPassword := username + ":" + password
encodedCredentials := 
base64.StdEncoding.EncodeToString([]byte(userAndPassword))
-   config.Map[credentialsKey] = encodedCredentials
+   credentialsMap[target] = encodedCredentials
+}
+
+func (config *Config) SetNetworkCredentials(target string, username string, 
password string) {
+   config.initialize()
+   config.adaptLegacyCredentialFormat()
+   config.setCredential(target, username, password)
config.Map[targetKey] = target
 
// Overwrite old style format from version <= 0.11.0
delete(config.Map, authKey)
 }
 
+func (config *Config) adaptLegacyCredentialFormat() {
+   auth, found := config.Map[authKey].(map[string]interface{})
+   if !found {
+   return
+   }
+   for url, credMap := range auth {
+

[03/18] brooklyn-client git commit: Don't use resp if there was an error

2017-07-17 Thread sjcorbett
Don't use resp if there was an error


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

Branch: refs/heads/master
Commit: 326459c4f80ddcbb7998f2f34fc7b6d6f0512e99
Parents: b73bc2d
Author: Geoff Macartney 
Authored: Tue May 23 17:08:45 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/net/net.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/326459c4/cli/net/net.go
--
diff --git a/cli/net/net.go b/cli/net/net.go
index 5415a68..38f050e 100644
--- a/cli/net/net.go
+++ b/cli/net/net.go
@@ -123,7 +123,7 @@ func (net *Network) SendRequestGetStatusCode(req 
*http.Request) ([]byte, int, er
 client := net.makeClient()
resp, err := client.Do(req)
if err != nil {
-   return nil, resp.StatusCode, err
+   return nil, 0, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)



[01/18] brooklyn-client git commit: Ignore invalid config during login and remove config upon failure

2017-07-17 Thread sjcorbett
Repository: brooklyn-client
Updated Branches:
  refs/heads/master 052d3bdae -> be8051602


Ignore invalid config during login and remove config upon failure


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

Branch: refs/heads/master
Commit: bca4c0729b2a41c88ffe814c28da63d2dffca147
Parents: 653e4f4
Author: Geoff Macartney 
Authored: Wed May 24 20:43:08 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/br/brooklyn.go| 6 +-
 cli/commands/login.go | 4 
 2 files changed, 9 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/bca4c072/cli/br/brooklyn.go
--
diff --git a/cli/br/brooklyn.go b/cli/br/brooklyn.go
index 3250a8f..b753d42 100644
--- a/cli/br/brooklyn.go
+++ b/cli/br/brooklyn.go
@@ -34,7 +34,7 @@ func main() {
config := io.GetConfig()
skipSslChecks := config.GetSkipSslChecks()
target, username, password, err := config.GetNetworkCredentials()
-   if err != nil {
+   if err != nil && !isLogin(os.Args) {
error_handler.ErrorExit(err)
}
 
@@ -50,3 +50,7 @@ func main() {
error_handler.ErrorExit(err)
}
 }
+
+func isLogin(args []string) bool {
+   return len(args) > 1 && args[1] == "login"
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/bca4c072/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index a0459ca..78f8852 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -93,6 +93,9 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
cmd.network.BrooklynPass = c.Args().Get(2)
cmd.network.SkipSslChecks = c.Bool("skipSslChecks")
 
+   // invalidate current credentials record
+   io.GetConfig().Delete()
+
if err := net.VerifyLoginURL(cmd.network); err != nil {
error_handler.ErrorExit(err)
}
@@ -125,6 +128,7 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
if code == http.StatusUnauthorized {
err = errors.New("Unauthorized")
}
+   cmd.config.Delete()
error_handler.ErrorExit(err)
}
fmt.Printf("Connected to Brooklyn version %s at %s\n", 
loginVersion.Version, cmd.network.BrooklynUrl)



[05/18] brooklyn-client git commit: Don't trim password.

2017-07-17 Thread sjcorbett
Don't trim password.


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

Branch: refs/heads/master
Commit: 749057bb61a6bb409a7f81cd584a17a1d831d2cb
Parents: 4d6b4fd
Author: Geoff Macartney 
Authored: Tue Apr 4 15:26:31 2017 +0100
Committer: Geoff Macartney 
Committed: Tue Jul 4 11:06:00 2017 +0100

--
 cli/commands/login.go | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/749057bb/cli/commands/login.go
--
diff --git a/cli/commands/login.go b/cli/commands/login.go
index b264fb0..b2ab208 100644
--- a/cli/commands/login.go
+++ b/cli/commands/login.go
@@ -100,8 +100,7 @@ func (cmd *Login) Run(scope scope.Scope, c *cli.Context) {
error_handler.ErrorExit(err)
}
fmt.Printf("\n")
-   password := string(bytePassword)
-   cmd.network.BrooklynPass = strings.TrimSpace(password)
+   cmd.network.BrooklynPass = string(bytePassword)
}
 
if cmd.config.Map == nil {



[17/18] brooklyn-client git commit: Ensure logout does not prevent help being displayed

2017-07-17 Thread sjcorbett
Ensure logout does not prevent help being displayed


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

Branch: refs/heads/master
Commit: 6abe8d11ad76827fb25fb6d9a011e96d13c5d9a2
Parents: b5e51e4
Author: Geoff Macartney 
Authored: Thu Jul 13 17:07:32 2017 +0100
Committer: Geoff Macartney 
Committed: Mon Jul 17 12:56:24 2017 +0100

--
 cli/br/brooklyn.go| 32 +---
 cli/io/config_test.go |  4 ++--
 2 files changed, 31 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/6abe8d11/cli/br/brooklyn.go
--
diff --git a/cli/br/brooklyn.go b/cli/br/brooklyn.go
index b753d42..08c4473 100644
--- a/cli/br/brooklyn.go
+++ b/cli/br/brooklyn.go
@@ -34,7 +34,7 @@ func main() {
config := io.GetConfig()
skipSslChecks := config.GetSkipSslChecks()
target, username, password, err := config.GetNetworkCredentials()
-   if err != nil && !isLogin(os.Args) {
+   if err != nil && requiresLogin(os.Args) {
error_handler.ErrorExit(err)
}
 
@@ -51,6 +51,32 @@ func main() {
}
 }
 
-func isLogin(args []string) bool {
-   return len(args) > 1 && args[1] == "login"
+func requiresLogin(args []string) bool {
+   // global help or version commands
+   if (contains(args, "-h") ||
+   contains(args, "--help") ||
+   contains(args, "-v") ||
+   contains(args, "--version")) {
+   return false
+   }
+   // br on its own
+   if (len(args) == 1) {
+   return false
+   }
+   //
+   if (len(args) > 1) {
+   if (args[1] == "login" || args[1] == "help") {
+   return false
+   }
+   }
+   return true
 }
+
+func contains(slice []string, val string) bool {
+   for _, a := range slice {
+   if a == val {
+   return true
+   }
+   }
+   return false
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/6abe8d11/cli/io/config_test.go
--
diff --git a/cli/io/config_test.go b/cli/io/config_test.go
index 9f14c19..3d547af 100644
--- a/cli/io/config_test.go
+++ b/cli/io/config_test.go
@@ -19,8 +19,8 @@
 package io
 
 import (
-   "testing"
"path/filepath"
+   "testing"
 )
 
 func TestConfig(t *testing.T) {
@@ -60,4 +60,4 @@ func assertUserPassword(err error, t *testing.T, username 
string, expectedUser s
if password != expectedPassword {
t.Errorf("password != %s: %s", expectedPassword, username)
}
-}
\ No newline at end of file
+}



[3/4] brooklyn-server git commit: Upgrade to jclouds 2.1.0-SNAPSHOT

2017-05-24 Thread sjcorbett
Upgrade to jclouds 2.1.0-SNAPSHOT


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

Branch: refs/heads/master
Commit: 1259e2832829d67148a42cbbb07400cc94a06587
Parents: 757a38c
Author: Svetoslav Neykov 
Authored: Mon May 8 19:40:14 2017 +0300
Committer: Sam Corbett 
Committed: Wed May 24 15:40:49 2017 +0100

--
 karaf/features/src/main/feature/feature.xml | 3 ++-
 pom.xml | 6 --
 2 files changed, 6 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1259e283/karaf/features/src/main/feature/feature.xml
--
diff --git a/karaf/features/src/main/feature/feature.xml 
b/karaf/features/src/main/feature/feature.xml
index d4d348e..c88673d 100644
--- a/karaf/features/src/main/feature/feature.xml
+++ b/karaf/features/src/main/feature/feature.xml
@@ -145,7 +145,8 @@
 mvn:com.thoughtworks.xstream/xstream/${xstream.version}
 mvn:org.freemarker/freemarker/${freemarker.version}
 mvn:com.hierynomus/sshj/${sshj.version}
-mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/1.1.3_2
 
+mvn:net.i2p.crypto/eddsa/${eddsa.version}
+mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jzlib/${jzlib.servicemix.version}
 mvn:org.bouncycastle/bcprov-ext-jdk15on/${bouncycastle.version}
 mvn:org.bouncycastle/bcpkix-jdk15on/${bouncycastle.version}
 mvn:commons-codec/commons-codec/${commons-codec.version}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1259e283/pom.xml
--
diff --git a/pom.xml b/pom.xml
index 1055245..a9b43b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -101,7 +101,7 @@
 
false
 
 
-2.0.1 
+2.1.0-SNAPSHOT 
 1.0.7
 1.6.6  
 
@@ -115,6 +115,8 @@
 1.4.8
 1.1.4c_7
 2.3.0_3
+1.1.3_2
+0.1.0
 
 2.7.5
 3.1.10
@@ -133,7 +135,7 @@
 2.2.0
 3.0.1
 1.51
-0.12.0
+0.20.0
 5.6.1
 0.9.9-RC1
 9.2.13.v20150730



[4/4] brooklyn-server git commit: This closes #696

2017-05-24 Thread sjcorbett
This closes #696

Fix DslYamlTest


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

Branch: refs/heads/master
Commit: b84ec0231bdc305a87bf771fa6c43e6ebf0d1d25
Parents: 1259e28 3200ee8
Author: Sam Corbett 
Authored: Wed May 24 15:44:35 2017 +0100
Committer: Sam Corbett 
Committed: Wed May 24 15:44:35 2017 +0100

--
 .../camp/brooklyn/spi/dsl/DslYamlTest.java  | 31 
 1 file changed, 18 insertions(+), 13 deletions(-)
--




[1/4] brooklyn-server git commit: Fix DslYamlTest’s getConfigEventually

2017-05-24 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 757a38cc4 -> b84ec0231


Fix DslYamlTest’s getConfigEventually 

Call config().get(), and then config.getNonBlocking().
Previously did it the other way around, so the getNonBlocking could
return absent if the value was not yet available.

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

Branch: refs/heads/master
Commit: a4b137730c9f08a61cb82aafacaea2fd1dc3ada7
Parents: 757a38c
Author: Aled Sage 
Authored: Wed May 24 12:43:35 2017 +0100
Committer: Aled Sage 
Committed: Wed May 24 12:43:35 2017 +0100

--
 .../org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a4b13773/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java
index 5eba70a..c8463e6 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslYamlTest.java
@@ -763,8 +763,8 @@ public class DslYamlTest extends AbstractYamlTest {
 public T call() throws Exception {
 // TODO Move the getNonBlocking call out of the task after 
#480 is merged.
 // Currently doesn't work because no execution context 
available.
-Maybe immediateValue = 
((EntityInternal)entity).config().getNonBlocking(configKey);
 T blockingValue = entity.config().get(configKey);
+Maybe immediateValue = 
((EntityInternal)entity).config().getNonBlocking(configKey);
 assertEquals(immediateValue.get(), blockingValue);
 return blockingValue;
 }



[4/4] brooklyn-server git commit: This closes #602

2017-03-24 Thread sjcorbett
This closes #602

Add test illustrating SNI connection problem.


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

Branch: refs/heads/master
Commit: b7fef0f7051860d1005b71653522417cb23fdbd1
Parents: 8dfd4f0 c541ebe
Author: Sam Corbett 
Authored: Fri Mar 24 18:47:43 2017 +
Committer: Sam Corbett 
Committed: Fri Mar 24 18:47:43 2017 +

--
 .../util/core/http/HttpToolSNITest.java | 70 
 1 file changed, 70 insertions(+)
--




[2/4] brooklyn-server git commit: Improve test location rebind stub

2017-03-24 Thread sjcorbett
Improve test location rebind stub

* Makes the stubbed location more functional by implementing the 
getNodeMetadata, setting the location field on the NodeMetadata;
* Disabled aws hostname lookup - nothing to ssh into;
* Sets the HA manager for the new rebind management context to disabled. This 
fixes it to return MASTER state. That's what the launcher does when no HA 
configured.


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

Branch: refs/heads/master
Commit: 7ce6f0d1fd229f6c31e99a89c98eb8c9f0f9fd73
Parents: 9d3780a
Author: Svetoslav Neykov 
Authored: Wed Mar 22 18:28:51 2017 +0200
Committer: Svetoslav Neykov 
Committed: Wed Mar 22 21:55:19 2017 +0200

--
 .../brooklyn/AbstractJcloudsStubYamlTest.java   |  1 +
 .../core/mgmt/rebind/RebindTestUtils.java   |  1 +
 .../jclouds/AbstractJcloudsStubbedUnitTest.java |  1 +
 .../jclouds/JcloudsRebindStubUnitTest.java  |  5 +++-
 .../jclouds/StubbedComputeServiceRegistry.java  | 26 
 5 files changed, 33 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7ce6f0d1/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
index fb3255f..380c132 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractJcloudsStubYamlTest.java
@@ -115,6 +115,7 @@ public abstract class AbstractJcloudsStubYamlTest extends 
AbstractJcloudsStubbed
 "brooklyn.config:",
 "  identity: myidentity",
 "  credential: mycredential",
+"  lookupAwsHostname: false",
 "  jclouds.computeServiceRegistry:",
 "$brooklyn:object:",
 "  type: " + 
ByonComputeServiceStaticRef.class.getName(),

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7ce6f0d1/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
index f274ad5..fa59b5a 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindTestUtils.java
@@ -238,6 +238,7 @@ public class RebindTestUtils {
 classLoader);
 ((RebindManagerImpl) 
unstarted.getRebindManager()).setPeriodicPersistPeriod(persistPeriod);
 unstarted.getRebindManager().setPersister(newPersister, 
PersistenceExceptionHandlerImpl.builder().build());
+unstarted.getHighAvailabilityManager().disabled();
 // set the HA persister, in case any children want to use HA
 unstarted.getHighAvailabilityManager().setPersister(new 
ManagementPlaneSyncRecordPersisterToObjectStore(unstarted, objectStore, 
classLoader));
 return unstarted;

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7ce6f0d1/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
--
diff --git 
a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
 
b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
index 0eef3a6..37231be 100644
--- 
a/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
+++ 
b/locations/jclouds/src/test/java/org/apache/brooklyn/location/jclouds/AbstractJcloudsStubbedUnitTest.java
@@ -100,6 +100,7 @@ public abstract class AbstractJcloudsStubbedUnitTest 
extends AbstractJcloudsLive
 .put(SshMachineLocation.SSH_TOOL_CLASS, 
RecordingSshTool.class.getName())
 .put(WinRmMachineLocation.WINRM_TOOL_CLASS, 
RecordingWinRmTool.class.getName())
 
.put(JcloudsLocation.POLL_FOR_FIRST_REACHABLE_ADDRESS_PREDICATE, 

[1/4] brooklyn-server git commit: Add test illustrating SNI connection problem.

2017-03-24 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 05a86be47 -> b7fef0f70


Add test illustrating SNI connection problem.

See https://issues.apache.org/jira/browse/BROOKLYN-456.


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

Branch: refs/heads/master
Commit: c541ebe7a748d8a6e244c4ee07eabb08abfae9d7
Parents: b34e256
Author: Geoff Macartney 
Authored: Mon Mar 20 21:05:55 2017 +
Committer: Geoff Macartney 
Committed: Mon Mar 20 21:05:55 2017 +

--
 .../util/core/http/HttpToolSNITest.java | 70 
 1 file changed, 70 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c541ebe7/core/src/test/java/org/apache/brooklyn/util/core/http/HttpToolSNITest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/http/HttpToolSNITest.java 
b/core/src/test/java/org/apache/brooklyn/util/core/http/HttpToolSNITest.java
new file mode 100644
index 000..a8ffefb
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/util/core/http/HttpToolSNITest.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.util.core.http;
+
+import static org.testng.Assert.assertEquals;
+
+import java.net.URI;
+
+import org.apache.brooklyn.util.http.HttpTool;
+import org.apache.http.client.HttpClient;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+
+/*
+  A test illustrating failure to connect to a site (https://httpbin.org) that 
requires SSL SNI (Server Naming
+  Indication), see https://issues.apache.org/jira/browse/BROOKLYN-456.
+
+  setup() adds debug output, look for the following lines in the output:
+
+  *** ClientHello, TLSv1.2
+RandomCookie:  GMT: 1473261907 bytes = { 196, 87, 35, 69, 71, 71, 215, 
118, 246, 113, 0, 129, 18, 108, 212, 242, 67, 91, 158, 8, 78, 208, 233, 111, 
82, 140, 106, 17 }
+Session ID:  {}
+Cipher Suites: [... blabla lots of suites... ]
+Compression Methods:  { 0 }
+Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1, 
sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, secp256k1}
+Extension ec_point_formats, formats: [uncompressed]
+Extension signature_algorithms, signature_algorithms: SHA512withECDSA, 
SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, 
SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA, SHA1withECDSA, 
SHA1withRSA, SHA1withDSA
+***
+
+  Note above that there are three "extension" items, ("elliptic_curves", 
"ec_point_formats", "signature_algorithms"),
+  but among them there is no "server_name" extension.
+
+  The result is that the initial SSL handshake fails with "SSLException: 
Received fatal alert: internal_error".
+
+ */
+public class HttpToolSNITest {
+@BeforeMethod(alwaysRun=true)
+public void setUp() throws Exception {
+System.setProperty("javax.net.debug", "ssl:handshake");
+}
+
+
+@Test(groups = {"Integration", "Broken"})
+public void testHttpGetRequiringSNI() throws Exception {
+URI baseUri = new URI("https://httpbin.org/get?id=myId;);
+
+HttpClient client = 
org.apache.brooklyn.util.http.HttpTool.httpClientBuilder().build();
+org.apache.brooklyn.util.http.HttpToolResponse result = 
HttpTool.httpGet(client, baseUri, ImmutableMap.of());
+assertEquals(result.getResponseCode(), 200);
+}
+}



[3/4] brooklyn-server git commit: This closes #607

2017-03-24 Thread sjcorbett
This closes #607

Improve test location rebind stub


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

Branch: refs/heads/master
Commit: 8dfd4f01686a87b4f0e9c0af081d1be33b6b2876
Parents: 05a86be 7ce6f0d
Author: Sam Corbett 
Authored: Fri Mar 24 18:47:29 2017 +
Committer: Sam Corbett 
Committed: Fri Mar 24 18:47:29 2017 +

--
 .../brooklyn/AbstractJcloudsStubYamlTest.java   |  1 +
 .../core/mgmt/rebind/RebindTestUtils.java   |  1 +
 .../jclouds/AbstractJcloudsStubbedUnitTest.java |  1 +
 .../jclouds/JcloudsRebindStubUnitTest.java  |  5 +++-
 .../jclouds/StubbedComputeServiceRegistry.java  | 26 
 5 files changed, 33 insertions(+), 1 deletion(-)
--




[6/6] brooklyn-server git commit: This closes #610

2017-03-24 Thread sjcorbett
This closes #610

Various integration test fixes


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

Branch: refs/heads/master
Commit: 05a86be471ea7776b62999b004b61eb69cefd2ca
Parents: 23cb3a0 dc2eb15
Author: Sam Corbett 
Authored: Fri Mar 24 18:43:23 2017 +
Committer: Sam Corbett 
Committed: Fri Mar 24 18:43:23 2017 +

--
 .../CompositeEffectorYamlRebindTest.java|  29 +-
 .../brooklyn/CompositeEffectorYamlTest.java |  27 +-
 .../HttpCommandEffectorYamlRebindTest.java  |  29 +-
 .../brooklyn/HttpCommandEffectorYamlTest.java   |  29 +-
 .../geo/external-ip-address-resolvers.txt   |   5 +-
 .../http/HttpCommandEffectorHttpBinTest.java| 192 ++
 .../HttpCommandEffectorIntegrationTest.java | 125 -
 .../brooklyn/policy/ha/ServiceReplacerTest.java |  16 +-
 ...rooklynJacksonSerializerIntegrationTest.java |   4 +-
 .../base/SoftwareProcessEntityTest.java |  10 +-
 .../lifecycle/ScriptHelperIntegrationTest.java  |  53 +++-
 .../feed/windows/WinRmFeedIntegrationTest.java  | 262 --
 .../feed/windows/WinRmFeedLiveTest.java | 263 +++
 13 files changed, 624 insertions(+), 420 deletions(-)
--




[3/6] brooklyn-server git commit: WinRmFeedIntegrationTest relies on an external resource, mark as Live

2017-03-24 Thread sjcorbett
WinRmFeedIntegrationTest relies on an external resource, mark as Live

Requires that the user spins up a windows machine and configures its location 
in his local brooklyn.properties.


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

Branch: refs/heads/master
Commit: f74ce8fc7c80d6cc3f2d2d97878d5faf4da7761d
Parents: a682daa
Author: Svetoslav Neykov 
Authored: Fri Mar 24 12:17:04 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 12:56:14 2017 +0200

--
 .../feed/windows/WinRmFeedIntegrationTest.java  | 262 --
 .../feed/windows/WinRmFeedLiveTest.java | 263 +++
 2 files changed, 263 insertions(+), 262 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f74ce8fc/software/winrm/src/test/java/org/apache/brooklyn/feed/windows/WinRmFeedIntegrationTest.java
--
diff --git 
a/software/winrm/src/test/java/org/apache/brooklyn/feed/windows/WinRmFeedIntegrationTest.java
 
b/software/winrm/src/test/java/org/apache/brooklyn/feed/windows/WinRmFeedIntegrationTest.java
deleted file mode 100644
index afaedb4..000
--- 
a/software/winrm/src/test/java/org/apache/brooklyn/feed/windows/WinRmFeedIntegrationTest.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.feed.windows;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import org.apache.brooklyn.api.entity.EntityInitializer;
-import org.apache.brooklyn.api.entity.EntityLocal;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.api.location.MachineProvisioningLocation;
-import org.apache.brooklyn.api.sensor.AttributeSensor;
-import org.apache.brooklyn.core.entity.Attributes;
-import org.apache.brooklyn.core.entity.EntityAsserts;
-import org.apache.brooklyn.core.entity.EntityInternal;
-import org.apache.brooklyn.core.entity.EntityInternal.FeedSupport;
-import org.apache.brooklyn.core.sensor.Sensors;
-import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport;
-import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.feed.CommandPollConfig;
-import org.apache.brooklyn.feed.ssh.SshPollValue;
-import org.apache.brooklyn.feed.ssh.SshValueFunctions;
-import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
-import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.text.StringFunctions;
-import org.apache.brooklyn.util.text.StringPredicates;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * Test is almost identical to {@link 
org.apache.brooklyn.feed.ssh.SshFeedIntegrationTest}.
- * To launch the test I put in ~/.brooklyn/brooklyn.properties
- *   
brooklyn.location.named.WindowsLiveTest=byon:(hosts=192.168.1.2,osFamily=windows,user=winUser,password=p0ssw0rd)
- */
-public class WinRmFeedIntegrationTest extends BrooklynAppLiveTestSupport {
-
-private static final Logger log = 
LoggerFactory.getLogger(WinRmFeedIntegrationTest.class);
-
-private static final String LOCATION_SPEC = "named:WindowsLiveTest";
-
-final static AttributeSensor SENSOR_STRING = 
Sensors.newStringSensor("aString", "");
-final static AttributeSensor SENSOR_INT = 
Sensors.newIntegerSensor("aLong", "");
-
-  

[5/6] brooklyn-server git commit: SoftwareProcessEntityTest.testDoubleStopEntity - add some troubleshooting checks

2017-03-24 Thread sjcorbett
SoftwareProcessEntityTest.testDoubleStopEntity - add some troubleshooting checks

Failed with the following exception, but not obvious why:

java.lang.AssertionError: entity=EmptySoftwareProcessImpl{id=i5jf7l77wu}; 
attribute=Sensor: service.state 
(org.apache.brooklyn.core.entity.lifecycle.Lifecycle) expected [stopped] but 
found [stopping]
at org.apache.brooklyn.test.Asserts.fail(Asserts.java:758)
at org.apache.brooklyn.test.Asserts.failNotEquals(Asserts.java:148)
at org.apache.brooklyn.test.Asserts.assertEquals(Asserts.java:470)
at 
org.apache.brooklyn.core.entity.EntityAsserts.assertAttributeEquals(EntityAsserts.java:58)
at 
org.apache.brooklyn.entity.software.base.SoftwareProcessEntityTest.testDoubleStopEntity(SoftwareProcessEntityTest.java:496)


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

Branch: refs/heads/master
Commit: dc2eb153488bb3974db7f7707db2de69089c5c36
Parents: 363874e
Author: Svetoslav Neykov 
Authored: Fri Mar 24 17:19:55 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 17:19:55 2017 +0200

--
 .../entity/software/base/SoftwareProcessEntityTest.java   | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/dc2eb153/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java
--
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java
 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java
index b1564e9..3fa464c 100644
--- 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java
+++ 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/SoftwareProcessEntityTest.java
@@ -481,7 +481,10 @@ public class SoftwareProcessEntityTest extends 
BrooklynAppUnitTestSupport {
 assertTrue(loc.isBlocked());
 }
 });
-
+
+assertEquals(ServiceStateLogic.getExpectedState(entity), 
Lifecycle.STOPPING);
+EntityAsserts.assertAttributeEquals(entity, 
Attributes.SERVICE_STATE_ACTUAL, Lifecycle.STOPPING);
+
 // Subsequent stops will end quickly - no location to release,
 // while the first one is still releasing the machine.
 final Task secondStop = entity.invoke(Startable.STOP, 
ImmutableMap.of());;
@@ -492,7 +495,10 @@ public class SoftwareProcessEntityTest extends 
BrooklynAppUnitTestSupport {
 }
 });
 
-// Entity state is STOPPED even though first location is still 
releasing
+// Entity state is supposed to be STOPPED even though first 
location is still releasing. This is because the second
+// release completed successfully. It's debatable whether this is 
the right behaviour - we could be calling the STOP
+// effector exactly because the first call is blocked. The test is 
asserting the current behaviour.
+assertEquals(ServiceStateLogic.getExpectedState(entity), 
Lifecycle.STOPPED);
 EntityAsserts.assertAttributeEquals(entity, 
Attributes.SERVICE_STATE_ACTUAL, Lifecycle.STOPPED);
 Asserts.succeedsContinually(new Runnable() {
 @Override



[1/6] brooklyn-server git commit: Replace http(s)://httpbin.org with a local server

2017-03-24 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 23cb3a080 -> 05a86be47


Replace http(s)://httpbin.org with a local server


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

Branch: refs/heads/master
Commit: a682daa65333587ac365dfa1d4a988d77bfbf5e4
Parents: 23cb3a0
Author: Svetoslav Neykov 
Authored: Fri Mar 24 12:15:47 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 12:56:13 2017 +0200

--
 .../CompositeEffectorYamlRebindTest.java|  29 ++-
 .../brooklyn/CompositeEffectorYamlTest.java |  27 ++-
 .../HttpCommandEffectorYamlRebindTest.java  |  29 ++-
 .../brooklyn/HttpCommandEffectorYamlTest.java   |  29 ++-
 .../http/HttpCommandEffectorHttpBinTest.java| 192 +++
 .../HttpCommandEffectorIntegrationTest.java | 125 
 6 files changed, 295 insertions(+), 136 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a682daa6/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlRebindTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlRebindTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlRebindTest.java
index 530abf6..1f33c78 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlRebindTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlRebindTest.java
@@ -27,10 +27,14 @@ import org.apache.brooklyn.api.effector.Effector;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.core.effector.CompositeEffector;
 import org.apache.brooklyn.core.effector.http.HttpCommandEffector;
+import org.apache.brooklyn.core.effector.http.HttpCommandEffectorHttpBinTest;
 import org.apache.brooklyn.core.entity.EntityPredicates;
 import org.apache.brooklyn.core.entity.StartableApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.test.http.TestHttpServer;
 import org.apache.brooklyn.util.guava.Maybe;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Joiner;
@@ -57,7 +61,7 @@ public class CompositeEffectorYamlRebindTest extends 
AbstractYamlRebindTest {
"  brooklyn.config:",
"name: myEffector",
"description: myDescription",
-   "uri: http://httpbin.org/get?id=myId;,
+   "uri: ${serverUrl}/get?id=myId",
"httpVerb: GET",
"jsonPath: $.args.id",
"publishSensor: results",
@@ -69,9 +73,28 @@ public class CompositeEffectorYamlRebindTest extends 
AbstractYamlRebindTest {
"- myEffector"
);
 
-@Test(groups="Integration")
+   private TestHttpServer server;
+   private String serverUrl;
+
+   @Override
+   @BeforeMethod(alwaysRun = true)
+   public void setUp() throws Exception {
+   super.setUp();
+   server = HttpCommandEffectorHttpBinTest.createHttpBinServer();
+   serverUrl = server.getUrl();
+   }
+
+   @Override
+   @AfterMethod(alwaysRun = true)
+   public void tearDown() throws Exception {
+   super.tearDown();
+   server.stop();
+   }
+
+
+   @Test
public void testRebindWhenHealthy() throws Exception {
-  runRebindWhenIsUp(catalogYamlSimple, appVersionedId);
+  runRebindWhenIsUp(catalogYamlSimple.replace("${serverUrl}", serverUrl), 
appVersionedId);
}
 
protected void runRebindWhenIsUp(String catalogYaml, String appId) throws 
Exception {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a682daa6/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlTest.java
index 8d1ff0b..8833507 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/CompositeEffectorYamlTest.java
@@ -26,9 +26,13 @@ import org.apache.brooklyn.api.effector.Effector;
 

[4/6] brooklyn-server git commit: Fixes integration tests

2017-03-24 Thread sjcorbett
Fixes integration tests

* One is a real problem - http://jsonip.com redirects to https://jsonip.com, 
which is signed by a certificate issued by "Let's Encrypt", not supported by 
java
* The other changes the incorrect expectation in the test


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

Branch: refs/heads/master
Commit: 363874e6f8a2d0d25930f4bf00038d8fbad15a94
Parents: 32ccd24
Author: Svetoslav Neykov 
Authored: Fri Mar 24 12:50:35 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 12:56:15 2017 +0200

--
 .../brooklyn/location/geo/external-ip-address-resolvers.txt | 5 +++--
 .../util/json/BrooklynJacksonSerializerIntegrationTest.java | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/363874e6/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
--
diff --git 
a/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
 
b/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
index c51b394..f1cd8ab 100644
--- 
a/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
+++ 
b/core/src/main/resources/org/apache/brooklyn/location/geo/external-ip-address-resolvers.txt
@@ -15,10 +15,11 @@
 # specific language governing permissions and limitations
 # under the License.
 
-http://jsonip.com/
+# Uses Let's Encrypt certificate, not supported by current JRE (1.8.0_121-b13)
+# https://jsonip.com/
 http://myip.dnsomatic.com/
 http://checkip.dyndns.org/
-# Uses Let's Encrypt certificate supported only in Java 8u101+
+# Uses Let's Encrypt certificate, not supported by current JRE (1.8.0_121-b13)
 # https://wtfismyip.com/text
 http://whatismyip.akamai.com/
 http://myip.wampdeveloper.com/

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/363874e6/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
index edad261..4b016ed 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
+++ 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
@@ -25,8 +25,8 @@ import java.util.Map;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.rest.BrooklynRestApiLauncher;
@@ -103,7 +103,7 @@ public class BrooklynJacksonSerializerIntegrationTest 
extends BrooklynAppUnitTes
 public void testWithMgmt() throws Exception {
 setConfig(mgmt);
 Map values = getConfigValueAsJson();
-Assert.assertEquals(values, ImmutableMap.of("type", 
LocalManagementContextForTests.class.getCanonicalName()), "values="+values);
+Assert.assertEquals(values, ImmutableMap.of("type", 
ManagementContext.class.getCanonicalName()), "values="+values);
 
 // assert normal API returns the same, containing links
 values = getRestValueAsJson(entityUrl);



[2/6] brooklyn-server git commit: Mark failing integration tests as Broken

2017-03-24 Thread sjcorbett
Mark failing integration tests as Broken


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

Branch: refs/heads/master
Commit: 32ccd248988c1f90cdde26aa23e6d8597c14a33d
Parents: f74ce8f
Author: Svetoslav Neykov 
Authored: Fri Mar 24 12:49:25 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 12:56:14 2017 +0200

--
 .../brooklyn/policy/ha/ServiceReplacerTest.java | 16 +-
 .../lifecycle/ScriptHelperIntegrationTest.java  | 53 ++--
 2 files changed, 53 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/32ccd248/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
--
diff --git 
a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java 
b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
index 4aead1a..9c17614 100644
--- 
a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
+++ 
b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceReplacerTest.java
@@ -177,7 +177,19 @@ public class ServiceReplacerTest {
 assertEventuallyHasEntityReplacementFailedEvent(cluster);
 }
 
-@Test(groups="Integration") // has a 1 second wait
+
+//Fails with:
+//java.lang.AssertionError: Unexpected ON_FIRE state
+//at org.testng.Assert.fail(Assert.java:94)
+//at org.testng.Assert.assertNotEquals(Assert.java:832)
+//at 
org.apache.brooklyn.policy.ha.ServiceReplacerTest$3.run(ServiceReplacerTest.java:204)
+//at 
org.apache.brooklyn.test.Asserts$RunnableAdapter.call(Asserts.java:1359)
+//at 
org.apache.brooklyn.test.Asserts.succeedsContinually(Asserts.java:1039)
+//at 
org.apache.brooklyn.test.Asserts.succeedsContinually(Asserts.java:1018)
+//at 
org.apache.brooklyn.test.Asserts.succeedsContinually(Asserts.java:1014)
+//at 
org.apache.brooklyn.policy.ha.ServiceReplacerTest.testDoesNotOnFireWhenFailToReplaceMember(ServiceReplacerTest.java:214)
+//
+@Test(groups={"Integration", "Broken"}) // has a 1 second wait
 public void testDoesNotOnFireWhenFailToReplaceMember() throws Exception {
 app.subscriptions().subscribe(null, 
ServiceReplacer.ENTITY_REPLACEMENT_FAILED, eventListener);
 
@@ -201,7 +213,7 @@ public class ServiceReplacerTest {
 // Configured to not mark cluster as on fire
 Asserts.succeedsContinually(new Runnable() {
 @Override public void run() {
-
assertNotEquals(cluster.getAttribute(Attributes.SERVICE_STATE_ACTUAL), 
Lifecycle.ON_FIRE);
+
assertNotEquals(cluster.getAttribute(Attributes.SERVICE_STATE_ACTUAL), 
Lifecycle.ON_FIRE, "Unexpected ON_FIRE state");
 }});
 
 // And will have received notification event about it

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/32ccd248/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelperIntegrationTest.java
--
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelperIntegrationTest.java
 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelperIntegrationTest.java
index 0566f39..0a1d4b2 100644
--- 
a/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelperIntegrationTest.java
+++ 
b/software/base/src/test/java/org/apache/brooklyn/entity/software/base/lifecycle/ScriptHelperIntegrationTest.java
@@ -18,11 +18,13 @@
  */
 package org.apache.brooklyn.entity.software.base.lifecycle;
 
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-import org.apache.brooklyn.api.entity.EntityLocal;
+import static java.lang.String.format;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotEquals;
+
+import java.io.StringReader;
+
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.core.test.BrooklynAppLiveTestSupport;
@@ -42,10 +44,10 @@ import org.slf4j.LoggerFactory;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import java.io.StringReader;
-
-import static 

[1/2] brooklyn-dist git commit: docker-itest: java version to 8, add chef package

2017-03-24 Thread sjcorbett
Repository: brooklyn-dist
Updated Branches:
  refs/heads/master bd2e59174 -> d2cd2df96


docker-itest: java version to 8, add chef package

Bump the java version to 8 in light of the projecft's decision to phase away 
Java 7 support.
Install the chef package, needed by integration tests for the knife executable.


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

Branch: refs/heads/master
Commit: 0426c1eb21c74a9ffd594c7672d5964ceebc2746
Parents: bd2e591
Author: Svetoslav Neykov 
Authored: Fri Mar 24 19:41:06 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Mar 24 19:41:06 2017 +0200

--
 docker-itest/Dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-dist/blob/0426c1eb/docker-itest/Dockerfile
--
diff --git a/docker-itest/Dockerfile b/docker-itest/Dockerfile
index b8bfbe9..d50d7fa 100644
--- a/docker-itest/Dockerfile
+++ b/docker-itest/Dockerfile
@@ -16,7 +16,7 @@
 # under the License.
 #
 
-FROM maven:3.3.9-jdk-7
+FROM maven:3.3-jdk-8
 MAINTAINER Svetoslav Neykov "svetoslav.ney...@cloudsoft.io"
 
 # For Alpine:
@@ -28,7 +28,7 @@ MAINTAINER Svetoslav Neykov "svetoslav.ney...@cloudsoft.io"
 # because of differences in the accepted arguments of the busybox provided 
tools.
 
 RUN apt-get update && \
-apt-get install -y --no-install-recommends net-tools ssh sudo wget && \
+DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends 
net-tools ssh sudo wget chef && \
 rm -rf /var/lib/apt/lists/*
 RUN mkdir /etc/skel/.m2 && \
 echo "" > 
/etc/skel/.m2/settings.xml && \



[2/2] brooklyn-dist git commit: This closes #88

2017-03-24 Thread sjcorbett
This closes #88

docker-itest: java version to 8, add chef package


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

Branch: refs/heads/master
Commit: d2cd2df967bfa6b0f6b24ff1ee63c90e80168e68
Parents: bd2e591 0426c1e
Author: Sam Corbett 
Authored: Fri Mar 24 18:40:16 2017 +
Committer: Sam Corbett 
Committed: Fri Mar 24 18:40:16 2017 +

--
 docker-itest/Dockerfile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--




[1/2] brooklyn-library git commit: Add entity/config test via REST using redis as an example

2017-03-21 Thread sjcorbett
Repository: brooklyn-library
Updated Branches:
  refs/heads/master d7bf15951 -> 3715b9904


Add entity/config test via REST using redis as an example

Move the test by @sjcorbett added to brooklyn-server in 
d7cbaeed46d7fedf8e49df015baa812352060f45
here so it can use library items, as discussed in 
https://github.com/apache/brooklyn-server/pull/594


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

Branch: refs/heads/master
Commit: 4a31ea74f15cd191359d326e1440b5f3b55349ca
Parents: d7bf159
Author: Alex Heneveld <alex.henev...@cloudsoftcorp.com>
Authored: Fri Mar 17 10:52:05 2017 +
Committer: Alex Heneveld <alex.henev...@cloudsoftcorp.com>
Committed: Fri Mar 17 11:05:43 2017 +

--
 qa/pom.xml  |  13 +++
 .../RedisClusterViaRestIntegrationTest.java | 111 +++
 2 files changed, 124 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/4a31ea74/qa/pom.xml
--
diff --git a/qa/pom.xml b/qa/pom.xml
index cbef5e6..f79e530 100644
--- a/qa/pom.xml
+++ b/qa/pom.xml
@@ -55,6 +55,19 @@
 ${project.version}
 
 
+org.apache.brooklyn
+brooklyn-rest-server
+${project.version}
+tests
+test
+
+
+org.apache.brooklyn
+brooklyn-software-nosql
+${project.version}
+test
+
+
 net.sf.jopt-simple
 jopt-simple
 

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/4a31ea74/qa/src/test/java/org/apache/brooklyn/qa/nosql/RedisClusterViaRestIntegrationTest.java
--
diff --git 
a/qa/src/test/java/org/apache/brooklyn/qa/nosql/RedisClusterViaRestIntegrationTest.java
 
b/qa/src/test/java/org/apache/brooklyn/qa/nosql/RedisClusterViaRestIntegrationTest.java
new file mode 100644
index 000..6b75bde
--- /dev/null
+++ 
b/qa/src/test/java/org/apache/brooklyn/qa/nosql/RedisClusterViaRestIntegrationTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.qa.nosql;
+
+import static org.apache.brooklyn.test.Asserts.assertTrue;
+import static org.testng.Assert.assertNotNull;
+
+import java.net.URI;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.core.entity.Attributes;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.entity.EntityAsserts;
+import org.apache.brooklyn.entity.brooklynnode.BrooklynNode;
+import org.apache.brooklyn.entity.nosql.redis.RedisCluster;
+import org.apache.brooklyn.entity.nosql.redis.RedisStore;
+import org.apache.brooklyn.entity.software.base.SoftwareProcess;
+import org.apache.brooklyn.rest.BrooklynRestApiLauncherTestFixture;
+import org.apache.brooklyn.util.http.HttpAsserts;
+import org.apache.brooklyn.util.http.HttpToolResponse;
+import org.apache.brooklyn.util.text.Strings;
+import org.apache.brooklyn.util.time.Duration;
+import org.apache.brooklyn.util.yaml.Yamls;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+public class RedisClusterViaRestIntegrationTest extends 
BrooklynRestApiLauncherTestFixture {
+
+@BeforeMethod(alwaysRun=true)
+public void setUp() throws Exception {
+useServerForTest(newServer());
+   

[2/2] brooklyn-library git commit: This closes #94

2017-03-21 Thread sjcorbett
This closes #94

Add entity/config test via REST using redis as an example


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

Branch: refs/heads/master
Commit: 3715b990448b07899e2f0da2f153b2253de10b61
Parents: d7bf159 4a31ea7
Author: Sam Corbett 
Authored: Tue Mar 21 17:47:05 2017 +
Committer: Sam Corbett 
Committed: Tue Mar 21 17:47:05 2017 +

--
 qa/pom.xml  |  13 +++
 .../RedisClusterViaRestIntegrationTest.java | 111 +++
 2 files changed, 124 insertions(+)
--




[3/3] brooklyn-server git commit: This closes #582

2017-03-13 Thread sjcorbett
This closes #582

Fix Integration tests


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

Branch: refs/heads/master
Commit: f218966fef0f7964df4e2e6ce873df7243f309e4
Parents: ea18d9a 3cef896
Author: Sam Corbett 
Authored: Mon Mar 13 11:30:33 2017 +
Committer: Sam Corbett 
Committed: Mon Mar 13 11:30:33 2017 +

--
 .../location/jclouds/BailOutJcloudsLocation.java| 12 +---
 .../entitlement/AbstractRestApiEntitlementsTest.java|  7 +++
 .../lifecycle/MachineLifecycleEffectorTasksTest.java| 11 ---
 3 files changed, 20 insertions(+), 10 deletions(-)
--




[1/3] brooklyn-server git commit: Fix Entitlements Integration tests

2017-03-13 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master ea18d9ab0 -> f218966fe


Fix Entitlements Integration tests


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

Branch: refs/heads/master
Commit: 09f8332fe5c496e7194ff59e2c77bc0870a2fe74
Parents: 2fe2ba0
Author: Svetoslav Neykov 
Authored: Tue Mar 7 19:22:12 2017 +0200
Committer: Svetoslav Neykov 
Committed: Tue Mar 7 23:30:41 2017 +0200

--
 .../rest/entitlement/AbstractRestApiEntitlementsTest.java | 7 +++
 1 file changed, 7 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/09f8332f/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
index 7e11474..67b0e8b 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
+++ 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
@@ -19,6 +19,7 @@
 package org.apache.brooklyn.rest.entitlement;
 
 import static org.testng.Assert.assertEquals;
+
 import java.net.URI;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
@@ -30,6 +31,7 @@ import 
org.apache.brooklyn.core.mgmt.entitlement.PerUserEntitlementManager;
 import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.apache.brooklyn.rest.BrooklynRestApiLauncher;
 import org.apache.brooklyn.rest.BrooklynRestApiLauncherTestFixture;
 import org.apache.brooklyn.rest.BrooklynWebConfig;
 import org.apache.brooklyn.util.http.HttpTool;
@@ -72,6 +74,11 @@ public abstract class AbstractRestApiEntitlementsTest 
extends BrooklynRestApiLau
 .start());
 }
 
+@Override
+protected BrooklynRestApiLauncher baseLauncher() {
+return BrooklynRestApiLauncher.launcher();
+}
+
 @AfterMethod(alwaysRun=true)
 public void tearDown() throws Exception {
 if (mgmt != null) Entities.destroyAll(mgmt);



[2/2] brooklyn-ui git commit: This closes #36

2017-03-06 Thread sjcorbett
This closes #36

Updated logout step to work in karaf mode


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

Branch: refs/heads/master
Commit: d9b82dffbb6457fb38e276129db6227e7576
Parents: 9c2d7f7 f79b98a
Author: Sam Corbett 
Authored: Mon Mar 6 14:11:16 2017 +
Committer: Sam Corbett 
Committed: Mon Mar 6 14:11:16 2017 +

--
 src/main/webapp/assets/html/swagger-ui.html | 18 +++--
 src/main/webapp/assets/js/logout.js | 79 
 .../webapp/assets/js/util/brooklyn-utils.js | 13 +---
 src/main/webapp/logout.html | 55 ++
 src/main/webapp/logout_redirect.html| 33 
 5 files changed, 146 insertions(+), 52 deletions(-)
--




[1/2] brooklyn-ui git commit: Updated logout step to work in karaf mode

2017-03-06 Thread sjcorbett
Repository: brooklyn-ui
Updated Branches:
  refs/heads/master 9c2d7f706 -> d9b82dffb


Updated logout step to work in karaf mode

- BROOKLYN-323: Simplify LogoutApi
- relative urls for swagger html


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

Branch: refs/heads/master
Commit: f79b98a368016a1b8d1fd5bae6be46e8c3cb64a8
Parents: 9c2d7f7
Author: Valentin Aitken 
Authored: Wed Nov 9 13:15:40 2016 +0200
Committer: Valentin Aitken 
Committed: Fri Mar 3 19:16:27 2017 +0200

--
 src/main/webapp/assets/html/swagger-ui.html | 18 +++--
 src/main/webapp/assets/js/logout.js | 79 
 .../webapp/assets/js/util/brooklyn-utils.js | 13 +---
 src/main/webapp/logout.html | 55 ++
 src/main/webapp/logout_redirect.html| 33 
 5 files changed, 146 insertions(+), 52 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/f79b98a3/src/main/webapp/assets/html/swagger-ui.html
--
diff --git a/src/main/webapp/assets/html/swagger-ui.html 
b/src/main/webapp/assets/html/swagger-ui.html
index e3f307f..79bd073 100644
--- a/src/main/webapp/assets/html/swagger-ui.html
+++ b/src/main/webapp/assets/html/swagger-ui.html
@@ -40,6 +40,8 @@
 
 
 
+
+
 
 
 $(function () {
@@ -86,20 +88,20 @@
 
 

[2/2] brooklyn-server git commit: This closes #580

2017-03-02 Thread sjcorbett
This closes #580

Set the username for Windows locations correctly


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

Branch: refs/heads/master
Commit: 1aa222a97279418993e36af0f8e4efa802abbd5e
Parents: 3a6a2ee 90d9137
Author: Sam Corbett 
Authored: Thu Mar 2 17:43:18 2017 +
Committer: Sam Corbett 
Committed: Thu Mar 2 17:43:18 2017 +

--
 .../apache/brooklyn/location/jclouds/JcloudsLocation.java | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)
--




[1/2] brooklyn-server git commit: Set the username for Windows locations correctly

2017-03-02 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 3a6a2ee83 -> 1aa222a97


Set the username for Windows locations correctly

The username when deploying to a winrm target is always empty. Fix it by 
following the same approach the SSH branch takes to populate the username.


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

Branch: refs/heads/master
Commit: 90d9137acf640d4bf53bc46a6f86898894d45a3d
Parents: b3397aa
Author: Svetoslav Neykov 
Authored: Thu Mar 2 18:53:36 2017 +0200
Committer: Svetoslav Neykov 
Committed: Thu Mar 2 18:53:36 2017 +0200

--
 .../apache/brooklyn/location/jclouds/JcloudsLocation.java | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/90d9137a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index 8e25d64..600a710 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -2051,6 +2051,9 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 String address = winrmHostAndPort.getHostText();
 String displayName = getPublicHostnameGeneric(node, setup, 
Optional.of(address));
 
+final Object password = 
winrmConfig.get(WinRmMachineLocation.PASSWORD.getName()) != null
+? winrmConfig.get(WinRmMachineLocation.PASSWORD.getName())
+: userCredentials.getOptionalPassword().orNull();
 if (isManaged()) {
 final LocationSpec spec = 
LocationSpec.create(JcloudsWinRmMachineLocation.class)
 .configure(winrmConfig)
@@ -2058,11 +2061,8 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 .configure("displayName", displayName)
 .configure("address", address)
 .configure(WinRmMachineLocation.WINRM_CONFIG_PORT, 
winrmHostAndPort.getPort())
-.configure("user", getUser(setup))
-.configure(WinRmMachineLocation.USER, setup.get(USER))
-.configure(SshMachineLocation.PASSWORD.getName(), 
winrmConfig.get(WinRmMachineLocation.PASSWORD.getName()) != null ?
-
winrmConfig.get(WinRmMachineLocation.PASSWORD.getName()) :
-userCredentials.getOptionalPassword().orNull())
+.configure(WinRmMachineLocation.USER.getName(), 
userCredentials.getUser())
+.configure(WinRmMachineLocation.PASSWORD.getName(), 
password)
 .configure("node", node)
 .configureIfNotNull(CLOUD_AVAILABILITY_ZONE_ID, 
nodeAvailabilityZone)
 .configureIfNotNull(CLOUD_REGION_ID, nodeRegion)



[1/4] brooklyn-server git commit: Machines.findUniqueElement returns absent when items is null

2017-02-08 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 984a1e18f -> 6571bab4a


Machines.findUniqueElement returns absent when items is null


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

Branch: refs/heads/master
Commit: 79977e768a88e6e3b36d59adb63c0ca32ad6ebcc
Parents: 15d6c98
Author: Sam Corbett 
Authored: Wed Feb 8 12:22:57 2017 +
Committer: Sam Corbett 
Committed: Wed Feb 8 12:29:31 2017 +

--
 .../main/java/org/apache/brooklyn/core/location/Machines.java | 7 ++-
 .../java/org/apache/brooklyn/core/location/MachinesTest.java  | 5 +
 2 files changed, 11 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/79977e76/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
--
diff --git a/core/src/main/java/org/apache/brooklyn/core/location/Machines.java 
b/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
index 9163694..2a2ccba 100644
--- a/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
+++ b/core/src/main/java/org/apache/brooklyn/core/location/Machines.java
@@ -23,6 +23,8 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.Set;
 
+import javax.annotation.Nonnull;
+
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.location.MachineLocation;
@@ -83,9 +85,12 @@ public class Machines {
 return Maybe.fromNullable(result);
 }
 
+@Nonnull
 @SuppressWarnings("unchecked")
 public static  Maybe findUniqueElement(Iterable items, Class 
type) {
-if (items==null) return null;
+if (items == null) {
+return Maybe.absent(new NullPointerException("Null iterable"));
+}
 Iterator i = items.iterator();
 T result = null;
 while (i.hasNext()) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/79977e76/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java 
b/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
index bc578bd..3e36f7a 100644
--- a/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/location/MachinesTest.java
@@ -90,6 +90,11 @@ public class MachinesTest extends BrooklynAppUnitTestSupport 
{
 }
 
 @Test
+public void testFindUniqueElementAbsentWhenItemsNull() throws Exception {
+assertTrue(Machines.findUniqueElement(null, 
SshMachineLocation.class).isAbsent());
+}
+
+@Test
 public void testFindSubnetIpFromAttribute() throws Exception {
 TestEntity entity = app.addChild(EntitySpec.create(TestEntity.class)
 .location(sshMachineSpec));



[4/4] brooklyn-server git commit: This closes #553

2017-02-08 Thread sjcorbett
This closes #553

MultimapSerializer works with non-String keys


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

Branch: refs/heads/master
Commit: 6571bab4a91c6a038c5bb564173e9a8101d417a3
Parents: 984a1e1 148ac04
Author: Sam Corbett 
Authored: Wed Feb 8 15:21:45 2017 +
Committer: Sam Corbett 
Committed: Wed Feb 8 15:21:45 2017 +

--
 .../apache/brooklyn/core/location/Machines.java |  7 +-
 .../util/core/json/MultimapSerializer.java  |  2 +-
 .../brooklyn/core/location/MachinesTest.java|  5 ++
 .../util/core/json/MultimapSerializerTest.java  | 72 
 .../jclouds/networking/SecurityGroupEditor.java | 18 ++---
 5 files changed, 90 insertions(+), 14 deletions(-)
--




[3/4] brooklyn-server git commit: MultimapSerializer works with non-String keys

2017-02-08 Thread sjcorbett
MultimapSerializer works with non-String keys


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

Branch: refs/heads/master
Commit: 148ac04c0655e2207171073f7bf4e5d1dba7e751
Parents: 79977e7
Author: Sam Corbett 
Authored: Wed Feb 8 12:22:28 2017 +
Committer: Sam Corbett 
Committed: Wed Feb 8 14:21:00 2017 +

--
 .../util/core/json/MultimapSerializer.java  |  2 +-
 .../util/core/json/MultimapSerializerTest.java  | 72 
 2 files changed, 73 insertions(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/148ac04c/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java 
b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
index 53ce3f5..a6522fa 100644
--- 
a/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
+++ 
b/core/src/main/java/org/apache/brooklyn/util/core/json/MultimapSerializer.java
@@ -56,7 +56,7 @@ public class MultimapSerializer extends 
StdSerializer {
 
 private void writeEntries(Multimap value, JsonGenerator jgen, 
SerializerProvider provider) throws IOException {
 for (Map.Entry> entry : 
value.asMap().entrySet()) {
-provider.findKeySerializer(provider.constructType(String.class), 
null)
+provider.findKeySerializer(provider.constructType(Object.class), 
null)
 .serialize(entry.getKey(), jgen, provider);
 
provider.defaultSerializeValue(Lists.newArrayList(entry.getValue()), jgen);
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/148ac04c/core/src/test/java/org/apache/brooklyn/util/core/json/MultimapSerializerTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/util/core/json/MultimapSerializerTest.java
 
b/core/src/test/java/org/apache/brooklyn/util/core/json/MultimapSerializerTest.java
new file mode 100644
index 000..902e377
--- /dev/null
+++ 
b/core/src/test/java/org/apache/brooklyn/util/core/json/MultimapSerializerTest.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.brooklyn.util.core.json;
+
+import static org.testng.Assert.assertEquals;
+
+import org.apache.brooklyn.api.entity.Entity;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.entity.stock.BasicEntity;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import com.fasterxml.jackson.core.Version;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.MultimapBuilder;
+
+public class MultimapSerializerTest extends BrooklynAppUnitTestSupport {
+
+ObjectMapper mapper;
+
+@Override
+@BeforeMethod(alwaysRun = true)
+public void setUp() throws Exception {
+super.setUp();
+mapper = new ObjectMapper();
+SimpleModule mapperModule = new SimpleModule("MultimapSerializerTest", 
new Version(0, 0, 0, "ignored", null, null));
+mapperModule.addSerializer(new MultimapSerializer());
+mapper.registerModule(mapperModule);
+}
+
+@Test
+public void testSerializeStringKey() throws Exception {
+Multimap map = 
MultimapBuilder.hashKeys().arrayListValues().build();
+map.put("a", 1);
+map.put("a", 2);
+map.put("a", 3);
+String json = 

[1/2] brooklyn-client git commit: Add missing @Override annotation to method signatures overriding interface methods

2017-02-06 Thread sjcorbett
Repository: brooklyn-client
Updated Branches:
  refs/heads/master 8ecbfe786 -> 88bb5e7bd


Add missing @Override annotation to method signatures overriding interface 
methods


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

Branch: refs/heads/master
Commit: ee59562307d9305b4c4d08b897285076c6d5ff7e
Parents: 8ecbfe7
Author: Svetoslav Neykov 
Authored: Fri Jan 20 16:07:33 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Feb 3 18:52:58 2017 +0200

--
 .../brooklyn/rest/client/ApplicationResourceIntegrationTest.java   | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-client/blob/ee595623/java/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
--
diff --git 
a/java/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
 
b/java/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
index 81d789f..df91ba8 100644
--- 
a/java/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
+++ 
b/java/src/test/java/org/apache/brooklyn/rest/client/ApplicationResourceIntegrationTest.java
@@ -162,6 +162,7 @@ public class ApplicationResourceIntegrationTest {
 Assert.assertNotNull(response);
 try {
 Asserts.succeedsEventually(ImmutableMap.of("timeout", 
Duration.minutes(1)), new Runnable() {
+@Override
 public void run() {
 try {
 ApplicationSummary summary = 
api.getApplicationApi().get("redis-app");
@@ -182,6 +183,7 @@ public class ApplicationResourceIntegrationTest {
 
 private void assertServiceStateEventually(final String app, final String 
entity, final Lifecycle state, Duration timeout) {
 Asserts.succeedsEventually(ImmutableMap.of("timeout", timeout), new 
Runnable() {
+@Override
 public void run() {
 Object status = api.getSensorApi().get(app, entity, 
"service.state", false);
 
assertTrue(state.toString().equalsIgnoreCase(status.toString()), 
"status="+status);



[2/2] brooklyn-client git commit: This closes #37

2017-02-06 Thread sjcorbett
This closes #37

Add missing @Override annotations and other cleanup


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

Branch: refs/heads/master
Commit: 88bb5e7bda81869ff4957e7f50ada7decbaf1dbe
Parents: 8ecbfe7 ee59562
Author: Sam Corbett 
Authored: Mon Feb 6 14:58:15 2017 +
Committer: Sam Corbett 
Committed: Mon Feb 6 14:58:15 2017 +

--
 .../brooklyn/rest/client/ApplicationResourceIntegrationTest.java   | 2 ++
 1 file changed, 2 insertions(+)
--




[2/2] brooklyn-library git commit: This closes #72

2017-02-06 Thread sjcorbett
This closes #72

Fix test to work on any combination of OS & eol type.


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

Branch: refs/heads/master
Commit: f3cbc42e7b87c12a56d158dcd52a531f0fd3943e
Parents: a72962b a59863f
Author: Sam Corbett 
Authored: Mon Feb 6 14:57:12 2017 +
Committer: Sam Corbett 
Committed: Mon Feb 6 14:57:12 2017 +

--
 .../dns/geoscaling/GeoscalingScriptGenerator.java | 14 +++---
 .../geoscaling/GeoscalingScriptGeneratorTest.java | 18 +++---
 2 files changed, 22 insertions(+), 10 deletions(-)
--




[1/2] brooklyn-library git commit: Fix test to work on any combination of OS & eol type.

2017-02-06 Thread sjcorbett
Repository: brooklyn-library
Updated Branches:
  refs/heads/master a72962bee -> f3cbc42e7


Fix test to work on any combination of OS & eol type.

Change line endings for generated script as it's most likely to run in a unix 
environment.
Normalize line endings when comparing scripts to work with any combination of 
OS & line endings (for tests running on Windows mostly). On Windows you can 
have both CRLF or LF line endings in the files (or even mixed), depending on 
how git is configured. That's out of our control so try to support any 
environment.

The recommended confgiuration is "git --global core.autocrlf true", but Apache 
Jenkins machines have "core.autocrlf" set to "input". The former will lead to 
CRLF line endings, the latter to LF line endings on checkout.


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

Branch: refs/heads/master
Commit: a59863f0a653840067ad6ab63d7475d4af1fa402
Parents: f1ff646
Author: Svetoslav Neykov 
Authored: Tue Nov 1 18:38:47 2016 +0200
Committer: Svetoslav Neykov 
Committed: Tue Nov 1 18:38:47 2016 +0200

--
 .../dns/geoscaling/GeoscalingScriptGenerator.java | 14 +++---
 .../geoscaling/GeoscalingScriptGeneratorTest.java | 18 +++---
 2 files changed, 22 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/a59863f0/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGenerator.java
--
diff --git 
a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGenerator.java
 
b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGenerator.java
index 1d1f4f5..367afbb 100644
--- 
a/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGenerator.java
+++ 
b/software/webapp/src/main/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGenerator.java
@@ -54,18 +54,18 @@ public class GeoscalingScriptGenerator {
 
 private static String getHostsDeclaration(Collection hosts) {
 StringBuffer sb = new StringBuffer();
-sb.append("$hosts = array(").append(Os.LINE_SEPARATOR);
+sb.append("$hosts = array(\n");
 Iterator iServer = hosts.iterator();
 while (iServer.hasNext()) {
 HostGeoInfo server = iServer.next();
-sb.append("array('name'  => 
'").append(escape(server.displayName)).append("',").append(Os.LINE_SEPARATOR);
-sb.append("  'latitude'  => 
").append(server.latitude).append(",").append(Os.LINE_SEPARATOR);
-sb.append("  'longitude' => 
").append(server.longitude).append(",").append(Os.LINE_SEPARATOR);
+sb.append("array('name'  => 
'").append(escape(server.displayName)).append("',\n");
+sb.append("  'latitude'  => 
").append(server.latitude).append(",\n");
+sb.append("  'longitude' => 
").append(server.longitude).append(",\n");
 sb.append("  'ip'=> 
'").append(escape(server.address)).append("')");
-if (iServer.hasNext()) sb.append(",").append(Os.LINE_SEPARATOR);
-sb.append(Os.LINE_SEPARATOR);
+if (iServer.hasNext()) sb.append(",\n");
+sb.append("\n");
 }
-sb.append(");").append(Os.LINE_SEPARATOR);
+sb.append(");").append("\n");
 return sb.toString();
 }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/a59863f0/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGeneratorTest.java
--
diff --git 
a/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGeneratorTest.java
 
b/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGeneratorTest.java
index 4e8ef2c..627feee 100644
--- 
a/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGeneratorTest.java
+++ 
b/software/webapp/src/test/java/org/apache/brooklyn/entity/dns/geoscaling/GeoscalingScriptGeneratorTest.java
@@ -48,10 +48,22 @@ public class GeoscalingScriptGeneratorTest {
 String generatedScript = 
GeoscalingScriptGenerator.generateScriptString(generationTime, HOSTS);
 assertTrue(generatedScript.contains("1.2.3"));
 String expectedScript = 

[1/2] brooklyn-docs git commit: Document the latch improvements - max concurrency behaviour

2017-01-27 Thread sjcorbett
Repository: brooklyn-docs
Updated Branches:
  refs/heads/master 8384923ea -> 11414400e


Document the latch improvements - max concurrency behaviour


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

Branch: refs/heads/master
Commit: 9fc73facf5daa7df7b6930e95aa0e507c72d6562
Parents: 8049f2e
Author: Svetoslav Neykov 
Authored: Fri Jan 27 12:43:43 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 27 12:54:43 2017 +0200

--
 guide/yaml/advanced-example.md | 30 ++
 1 file changed, 30 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-docs/blob/9fc73fac/guide/yaml/advanced-example.md
--
diff --git a/guide/yaml/advanced-example.md b/guide/yaml/advanced-example.md
index 2b7957d..6513191 100644
--- a/guide/yaml/advanced-example.md
+++ b/guide/yaml/advanced-example.md
@@ -201,6 +201,36 @@ certain conditions are met before continuing. For example:
 This latch is used to stop Kibana customizing until the Elasticsearch cluster 
is up. We do this to ensure 
 that the URL sensors have been setup, so that they can be passed into Kibana 
during the customization phase.
 
+Latches can also be used to control how many entities can execute the same 
step at any given moment. When
+a latch is given the value of a `MaxConcurrencySensor` it will unblock 
execution only when there are
+available "slots" to execute (think of it as a semaphore). For example to let 
a single entity execute the
+launch step of the start effector:
+
+~~~yaml
+services:
+- type: cluster
+
+  brooklyn.initializers:
+  - type: org.apache.brooklyn.core.sensor.MaxConcurrencySensor
+brooklyn.config:
+  name: single-executor
+  latch.concurrency.max: 1
+
+  brooklyn.config: 
+initialSize: 10
+memberSpec:
+  $brooklyn:entitySpec:
+type: vanilla-bash-server
+brooklyn.config:
+  launch.command: sleep 2
+  checkRunning.command: true
+  launch.latch: 
$brooklyn:parent().attributeWhenReady("single-executor")
+~~~
+
+It's important to note that the above setup is not reentrant. This means that 
users should be careful to
+avoid deadlocks. For example having a start and launch latches against the 
`single-executor` from above.
+The launch latch will block forever since the start latch already would've 
acquired the free slot.
+
  Child entities
 The ELK blueprint also contains a good example of a child entity.
 



[2/2] brooklyn-docs git commit: This closes #146

2017-01-27 Thread sjcorbett
This closes #146

Document the latch improvements - max concurrency behaviour


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

Branch: refs/heads/master
Commit: 11414400e5a31e034b359a2351a23ec49add7d65
Parents: 8384923 9fc73fa
Author: Sam Corbett 
Authored: Fri Jan 27 15:09:15 2017 +
Committer: Sam Corbett 
Committed: Fri Jan 27 15:09:15 2017 +

--
 guide/yaml/advanced-example.md | 30 ++
 1 file changed, 30 insertions(+)
--




[2/2] brooklyn-server git commit: This closes #541

2017-01-27 Thread sjcorbett
This closes #541

Fix ReachableSocketFinderTest (so not time-sensitive)


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

Branch: refs/heads/master
Commit: 6761825a57d00c9ce201c322f40c3726feaf7782
Parents: 7460981 91b3b8d
Author: Sam Corbett 
Authored: Fri Jan 27 14:47:15 2017 +
Committer: Sam Corbett 
Committed: Fri Jan 27 14:47:15 2017 +

--
 .../util/net/ReachableSocketFinderTest.java | 30 +++-
 1 file changed, 17 insertions(+), 13 deletions(-)
--




[1/2] brooklyn-server git commit: Fix ReachableSocketFinderTest (so not time-sensitive)

2017-01-27 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 7460981b2 -> 6761825a5


Fix ReachableSocketFinderTest (so not time-sensitive)

Tests sometimes failed on apache Jenkins, because 100ms wasn’t long 
enough for the other thread(s) to complete.

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

Branch: refs/heads/master
Commit: 91b3b8dd320157e2b9cc815dd6d920ea2371e625
Parents: 7460981
Author: Aled Sage 
Authored: Fri Jan 27 14:36:41 2017 +
Committer: Aled Sage 
Committed: Fri Jan 27 14:36:41 2017 +

--
 .../util/net/ReachableSocketFinderTest.java | 30 +++-
 1 file changed, 17 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/91b3b8dd/utils/common/src/test/java/org/apache/brooklyn/util/net/ReachableSocketFinderTest.java
--
diff --git 
a/utils/common/src/test/java/org/apache/brooklyn/util/net/ReachableSocketFinderTest.java
 
b/utils/common/src/test/java/org/apache/brooklyn/util/net/ReachableSocketFinderTest.java
index eb42362..34a1893 100644
--- 
a/utils/common/src/test/java/org/apache/brooklyn/util/net/ReachableSocketFinderTest.java
+++ 
b/utils/common/src/test/java/org/apache/brooklyn/util/net/ReachableSocketFinderTest.java
@@ -53,6 +53,10 @@ public class ReachableSocketFinderTest {
 
 private static final Logger LOG = 
LoggerFactory.getLogger(ReachableSocketFinderTest.class);
 
+private static final Duration TIMEOUT = Asserts.DEFAULT_LONG_TIMEOUT;
+private static final Duration SHORT_TIMEOUT = Duration.millis(100);
+private static final Duration SHORT_WAIT = Duration.millis(100);
+
 private final HostAndPort socket1 = HostAndPort.fromParts("1.1.1.1", );
 private final HostAndPort socket2 = HostAndPort.fromParts("1.1.1.2", 1112);
 private final HostAndPort socket3 = HostAndPort.fromParts("1.1.1.3", 1113);
@@ -80,23 +84,23 @@ public class ReachableSocketFinderTest {
 
 @Test(expectedExceptions=IllegalStateException.class)
 public void testFindWhenNoSocketsThrowsIllegalState() throws Exception {
-finder.findOpenSocketOnNode(ImmutableList.of(), 
Duration.TEN_SECONDS);
+finder.findOpenSocketOnNode(ImmutableList.of(), TIMEOUT);
 }
 
 @Test(expectedExceptions=IllegalStateException.class)
 public void testFindAllWhenNoSocketsThrowsIllegalState() throws Exception {
-finder.findOpenSocketsOnNode(ImmutableList.of(), 
Duration.TEN_SECONDS);
+finder.findOpenSocketsOnNode(ImmutableList.of(), TIMEOUT);
 }
 
 @Test
 public void testReturnsReachableSocket() throws Exception {
 reachabilityResults.put(socket1, true);
 reachabilityResults.put(socket2, false);
-assertEquals(finder.findOpenSocketOnNode(ImmutableList.of(socket1, 
socket2), Duration.millis(50)), socket1);
+assertEquals(finder.findOpenSocketOnNode(ImmutableList.of(socket1, 
socket2), TIMEOUT), socket1);
 
 reachabilityResults.put(socket1, false);
 reachabilityResults.put(socket2, true);
-assertEquals(finder.findOpenSocketOnNode(ImmutableList.of(socket1, 
socket2), Duration.millis(50)), socket2);
+assertEquals(finder.findOpenSocketOnNode(ImmutableList.of(socket1, 
socket2), TIMEOUT), socket2);
 }
 
 @Test
@@ -105,11 +109,11 @@ public class ReachableSocketFinderTest {
 reachabilityResults.put(socket2, false);
 final ListenableFuture future = executor.submit(new 
Callable() {
 @Override public HostAndPort call() throws Exception {
-return 
finder.findOpenSocketOnNode(ImmutableList.of(socket1, socket2), 
Duration.TEN_SECONDS);
+return 
finder.findOpenSocketOnNode(ImmutableList.of(socket1, socket2), TIMEOUT);
 }});
 
 // Should keep trying
-Asserts.succeedsContinually(ImmutableMap.of("timeout", 
Duration.millis(100)), new Runnable() {
+Asserts.succeedsContinually(ImmutableMap.of("timeout", SHORT_WAIT), 
new Runnable() {
 @Override public void run() {
 assertFalse(future.isDone());
 }});
@@ -126,14 +130,14 @@ public class ReachableSocketFinderTest {
 reachabilityResults.put(socket3, true);
 final Iterable expected = ImmutableList.of(socket1, 
socket3);
 final Iterable actual = finder.findOpenSocketsOnNode(
-ImmutableList.of(socket1, socket2, socket3), 
Duration.millis(100));
+ImmutableList.of(socket1, 

[2/3] brooklyn-library git commit: ReleaseableLatch - better support for failing tasks

2017-01-26 Thread sjcorbett
ReleaseableLatch - better support for failing tasks


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

Branch: refs/heads/master
Commit: 49ba9f1546de0f7d88339681731f24a0d766794a
Parents: b7cfae7
Author: Svetoslav Neykov 
Authored: Wed Jan 25 09:35:14 2017 +0200
Committer: Svetoslav Neykov 
Committed: Wed Jan 25 09:35:14 2017 +0200

--
 .../cm/ansible/AnsibleLifecycleEffectorTasks.java| 15 ++-
 .../cm/salt/impl/SaltLifecycleEffectorTasks.java |  6 ++
 .../PostgreSqlNodeChefImplFromScratch.java   | 12 
 3 files changed, 12 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/49ba9f15/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
--
diff --git 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
index da4b2d7..b2a104a 100644
--- 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
+++ 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
@@ -18,7 +18,8 @@
  */
 package org.apache.brooklyn.entity.cm.ansible;
 
-import com.google.common.base.Supplier;
+import static org.apache.brooklyn.util.ssh.BashCommands.sudo;
+
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.MachineLocation;
 import org.apache.brooklyn.core.effector.ssh.SshEffectorTasks;
@@ -27,7 +28,6 @@ import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
 import org.apache.brooklyn.core.entity.trait.Startable;
 import org.apache.brooklyn.core.location.Locations;
 import org.apache.brooklyn.core.location.Machines;
-import org.apache.brooklyn.core.sensor.ReleaseableLatch;
 import org.apache.brooklyn.entity.software.base.SoftwareProcess;
 import 
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks;
 import org.apache.brooklyn.feed.ssh.SshFeed;
@@ -36,17 +36,14 @@ import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.util.core.task.DynamicTasks;
 import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.net.Urls;
-
-import static org.apache.brooklyn.util.ssh.BashCommands.sudo;
-
-import java.util.concurrent.atomic.AtomicReference;
-
 import org.apache.brooklyn.util.text.Strings;
 import org.apache.brooklyn.util.time.Duration;
 import org.apache.brooklyn.util.time.Time;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Supplier;
+
 public class AnsibleLifecycleEffectorTasks extends 
MachineLifecycleEffectorTasks implements AnsibleConfig {
 
 private static final Logger LOG = 
LoggerFactory.getLogger(AnsibleLifecycleEffectorTasks.class);
@@ -140,7 +137,7 @@ public class AnsibleLifecycleEffectorTasks extends 
MachineLifecycleEffectorTasks
 
 
 @Override
-protected void postStartCustom(AtomicReference 
startLatchRef) {
+protected void postStartCustom() {
 boolean result = false;
 result |= tryCheckStartService();
 
@@ -183,7 +180,7 @@ public class AnsibleLifecycleEffectorTasks extends 
MachineLifecycleEffectorTasks
 LOG.warn("Location(s) {} not an ssh-machine location, so not 
polling for status; "
 + "setting serviceUp immediately", 
entity().getLocations());
 }
-super.postStartCustom(startLatchRef);
+super.postStartCustom();
 }
 
 protected boolean tryCheckStartService() {

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/49ba9f15/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
--
diff --git 
a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
 
b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
index cc02546..49fd336 100644
--- 
a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
+++ 
b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
@@ -24,7 +24,6 @@ import static 

[3/3] brooklyn-library git commit: This closes #87

2017-01-26 Thread sjcorbett
This closes #87

Follow API changes in brooklyn-server#520


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

Branch: refs/heads/master
Commit: 35a71ffeb66ea4bed3e5aaf9d15477e5f036349c
Parents: 4b27264 49ba9f1
Author: Sam Corbett 
Authored: Thu Jan 26 18:52:20 2017 +
Committer: Sam Corbett 
Committed: Thu Jan 26 18:52:20 2017 +

--
 .../ansible/AnsibleLifecycleEffectorTasks.java  | 11 ---
 .../salt/impl/SaltLifecycleEffectorTasks.java   | 30 +++-
 .../PostgreSqlNodeChefImplFromScratch.java  | 11 ---
 3 files changed, 30 insertions(+), 22 deletions(-)
--




[1/3] brooklyn-library git commit: Follow API changes in brooklyn-server

2017-01-26 Thread sjcorbett
Repository: brooklyn-library
Updated Branches:
  refs/heads/master 4b272645e -> 35a71ffeb


Follow API changes in brooklyn-server


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

Branch: refs/heads/master
Commit: b7cfae7509235fbc63c54eb71742d5111ce6a094
Parents: 3c25ff5
Author: Svetoslav Neykov 
Authored: Fri Jan 20 09:16:29 2017 +0200
Committer: Svetoslav Neykov 
Committed: Mon Jan 23 10:20:45 2017 +0200

--
 .../ansible/AnsibleLifecycleEffectorTasks.java  | 10 --
 .../salt/impl/SaltLifecycleEffectorTasks.java   | 34 +++-
 .../PostgreSqlNodeChefImplFromScratch.java  | 11 +--
 3 files changed, 36 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/b7cfae75/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
--
diff --git 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
index fd73c61..da4b2d7 100644
--- 
a/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
+++ 
b/software/cm/ansible/src/main/java/org/apache/brooklyn/entity/cm/ansible/AnsibleLifecycleEffectorTasks.java
@@ -27,6 +27,7 @@ import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
 import org.apache.brooklyn.core.entity.trait.Startable;
 import org.apache.brooklyn.core.location.Locations;
 import org.apache.brooklyn.core.location.Machines;
+import org.apache.brooklyn.core.sensor.ReleaseableLatch;
 import org.apache.brooklyn.entity.software.base.SoftwareProcess;
 import 
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks;
 import org.apache.brooklyn.feed.ssh.SshFeed;
@@ -37,6 +38,9 @@ import org.apache.brooklyn.util.guava.Maybe;
 import org.apache.brooklyn.util.net.Urls;
 
 import static org.apache.brooklyn.util.ssh.BashCommands.sudo;
+
+import java.util.concurrent.atomic.AtomicReference;
+
 import org.apache.brooklyn.util.text.Strings;
 import org.apache.brooklyn.util.time.Duration;
 import org.apache.brooklyn.util.time.Time;
@@ -135,7 +139,8 @@ public class AnsibleLifecycleEffectorTasks extends 
MachineLifecycleEffectorTasks
 }
 
 
-protected void postStartCustom() {
+@Override
+protected void postStartCustom(AtomicReference 
startLatchRef) {
 boolean result = false;
 result |= tryCheckStartService();
 
@@ -173,11 +178,12 @@ public class AnsibleLifecycleEffectorTasks extends 
MachineLifecycleEffectorTasks
 .setOnFailureOrException(false))
 .build();
 
- entity().feeds().addFeed(serviceSshFeed);
+ entity().feeds().add(serviceSshFeed);
 } else {
 LOG.warn("Location(s) {} not an ssh-machine location, so not 
polling for status; "
 + "setting serviceUp immediately", 
entity().getLocations());
 }
+super.postStartCustom(startLatchRef);
 }
 
 protected boolean tryCheckStartService() {

http://git-wip-us.apache.org/repos/asf/brooklyn-library/blob/b7cfae75/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
--
diff --git 
a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
 
b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
index 871caea..cc02546 100644
--- 
a/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
+++ 
b/software/cm/salt/src/main/java/org/apache/brooklyn/entity/cm/salt/impl/SaltLifecycleEffectorTasks.java
@@ -18,21 +18,28 @@
  */
 package org.apache.brooklyn.entity.cm.salt.impl;
 
-import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableMap;
+import static java.util.regex.Pattern.DOTALL;
+import static java.util.regex.Pattern.MULTILINE;
+import static 
org.apache.brooklyn.entity.software.base.SoftwareProcess.StopSoftwareParameters.StopMode.ALWAYS;
+import static 
org.apache.brooklyn.entity.software.base.SoftwareProcess.StopSoftwareParameters.StopMode.NEVER;
+

[2/7] brooklyn-server git commit: Let latches limit the paralellism for the step they guard

2017-01-26 Thread sjcorbett
Let latches limit the paralellism for the step they guard


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

Branch: refs/heads/master
Commit: 47aecce0ce38107d67f1347999542f4d26cf6e61
Parents: 5f66e8f
Author: Svetoslav Neykov 
Authored: Mon Jan 16 18:40:55 2017 +0200
Committer: Svetoslav Neykov 
Committed: Mon Jan 23 18:25:09 2017 +0200

--
 .../core/sensor/DependentConfiguration.java |  49 -
 .../core/sensor/MaxConcurrencySensor.java   |  91 
 .../brooklyn/core/sensor/ReleaseableLatch.java  |  95 +
 .../core/sensor/MaxConcurrencySensorTest.java   |  49 +
 .../core/sensor/ReleaseableLatchRebindTest.java |  42 
 .../core/test/BrooklynMgmtUnitTestSupport.java  |   3 +-
 .../entity/chef/ChefLifecycleEffectorTasks.java |   7 +-
 .../base/AbstractSoftwareProcessDriver.java |  69 +--
 ...wareProcessDriverLifecycleEffectorTasks.java |  21 +-
 .../MachineLifecycleEffectorTasks.java  | 174 +---
 .../base/SoftwareProcessEntityLatchTest.java| 206 +--
 .../mysql/DynamicToyMySqlEntityBuilder.java |   5 +-
 .../java/org/apache/brooklyn/test/Asserts.java  |   6 +-
 .../org/apache/brooklyn/util/guava/Maybe.java   |   5 +
 14 files changed, 700 insertions(+), 122 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/47aecce0/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
 
b/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
index 97d3a53..1b8a352 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/sensor/DependentConfiguration.java
@@ -52,6 +52,7 @@ import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
 import org.apache.brooklyn.util.collections.CollectionFunctionals;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.core.task.BasicExecutionContext;
 import org.apache.brooklyn.util.core.task.BasicTask;
 import org.apache.brooklyn.util.core.task.DeferredSupplier;
@@ -569,6 +570,25 @@ public class DependentConfiguration {
 );
 }
 
+public static Maybe maxConcurrencyImmediately(Object 
maxThreads) {
+Maybe resolvedMaxThreads = resolveImmediately(maxThreads);
+if (resolvedMaxThreads.isAbsent()) return Maybe.absent();
+Integer resolvedMaxThreadsInt = 
TypeCoercions.coerce(resolvedMaxThreads, Integer.class);
+
+ReleaseableLatch result = 
ReleaseableLatch.Factory.newMaxConcurrencyLatch(resolvedMaxThreadsInt);
+return Maybe.of(result);
+}
+
+public static Task maxConcurrency(Object maxThreads) {
+List taskArgs = getTaskAdaptable(maxThreads);
+Function transformer = new 
MaxThreadsTransformerFunction(maxThreads);
+return transformMultiple(
+MutableMap.of("displayName", String.format("creating max 
concurrency semaphore(%s)", maxThreads)),
+transformer,
+taskArgs
+);
+}
+
 @SuppressWarnings("unchecked")
 private static List getTaskAdaptable(Object... 
args){
 List taskArgs = Lists.newArrayList();
@@ -624,13 +644,38 @@ public class DependentConfiguration {
 
 }
 
+public static class MaxThreadsTransformerFunction implements 
Function {
+private final Object maxThreads;
+
+public MaxThreadsTransformerFunction(Object maxThreads) {
+this.maxThreads = maxThreads;
+}
+
+@Override
+public ReleaseableLatch apply(List input) {
+Iterator taskArgsIterator = input.iterator();
+Integer maxThreadsNum = resolveArgument(maxThreads, 
taskArgsIterator, Integer.class);
+return 
ReleaseableLatch.Factory.newMaxConcurrencyLatch(maxThreadsNum);
+}
+
+}
+
+/**
+ * Same as {@link #resolveArgument(Object, Iterator, Class) with type of 
String
+ */
+private static String resolveArgument(Object argument, Iterator 
taskArgsIterator) {
+return resolveArgument(argument, taskArgsIterator, String.class);
+}
+
 /**
  * Resolves the argument as 

[5/7] brooklyn-server git commit: Experiment to avoid ThreadLocal

2017-01-26 Thread sjcorbett
Experiment to avoid ThreadLocal


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

Branch: refs/heads/master
Commit: af74958988c2d997259b580f43b6fd6f839fcf22
Parents: d79f9ef
Author: Geoff Macartney 
Authored: Wed Jan 25 13:08:17 2017 +
Committer: Svetoslav Neykov 
Committed: Wed Jan 25 16:22:23 2017 +0200

--
 ...wareProcessDriverLifecycleEffectorTasks.java |  8 +--
 .../MachineLifecycleEffectorTasks.java  | 58 +++-
 .../base/SoftwareProcessEntityLatchTest.java|  8 ++-
 3 files changed, 18 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/af749589/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessDriverLifecycleEffectorTasks.java
--
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessDriverLifecycleEffectorTasks.java
 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessDriverLifecycleEffectorTasks.java
index 4159c3f..5039621 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessDriverLifecycleEffectorTasks.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/SoftwareProcessDriverLifecycleEffectorTasks.java
@@ -122,13 +122,13 @@ public class SoftwareProcessDriverLifecycleEffectorTasks 
extends MachineLifecycl
 }
  
 @Override
-protected void preStartCustom(MachineLocation machine, 
AtomicReference startLatchRef) {
+protected void preStartCustom(MachineLocation machine) {
 entity().initDriver(machine);
 
 // Note: must only apply config-sensors after adding to locations and 
creating driver; 
 // otherwise can't do things like acquire free port from location
 // or allowing driver to set up ports; but must be careful in init not 
to block on these!
-super.preStartCustom(machine, startLatchRef);
+super.preStartCustom(machine);
 
 entity().preStart();
 }
@@ -189,8 +189,8 @@ public class SoftwareProcessDriverLifecycleEffectorTasks 
extends MachineLifecycl
 }
 
 @Override
-protected void preStopConfirmCustom(AtomicReference 
stopLatchRef) {
-super.preStopConfirmCustom(stopLatchRef);
+protected void preStopConfirmCustom() {
+super.preStopConfirmCustom();
 
 entity().preStopConfirmCustom();
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/af749589/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
--
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
index 2acb604..e945b47 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
@@ -127,13 +127,6 @@ public abstract class MachineLifecycleEffectorTasks {
 
 private static final Logger log = 
LoggerFactory.getLogger(MachineLifecycleEffectorTasks.class);
 
-private static final ThreadLocal 
RELEASEABLE_LATCH_TL = new ThreadLocal() {
-@Override
-protected AtomicReference initialValue() {
-return new AtomicReference(ReleaseableLatch.NOP);
-}
-};
-
 public static final ConfigKey ON_BOX_BASE_DIR_RESOLVED = 
ConfigKeys.newBooleanConfigKey(
 "onbox.base.dir.resolved",
 "Whether the on-box base directory has been resolved (for internal 
use)");
@@ -373,13 +366,14 @@ public abstract class MachineLifecycleEffectorTasks {
 
 final Supplier locationSF = locationS;
 final AtomicReference startLatchRef = new 
AtomicReference<>();
-RELEASEABLE_LATCH_TL.set(startLatchRef);
+
+// Opportunity to block startup until other dependent components are 
available
+startLatchRef.set(waitForLatch(entity(), SoftwareProcess.START_LATCH));
 try {
 preStartAtMachineAsync(locationSF);
 DynamicTasks.queue("start (processes)", new 
StartProcessesAtMachineTask(locationSF));
 

[4/7] brooklyn-server git commit: less magic

2017-01-26 Thread sjcorbett
less magic


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

Branch: refs/heads/master
Commit: d79f9ef0775dd426485839ee681f06b55dda7c23
Parents: ae8eb9e
Author: Svetoslav Neykov 
Authored: Wed Jan 25 13:48:35 2017 +0200
Committer: Svetoslav Neykov 
Committed: Wed Jan 25 13:48:35 2017 +0200

--
 .../brooklyn/core/sensor/ReleaseableLatch.java  | 24 ++--
 .../MachineLifecycleEffectorTasks.java  |  1 +
 .../base/SoftwareProcessEntityLatchTest.java|  9 
 3 files changed, 13 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d79f9ef0/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java 
b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
index 41ed779..8d28f93 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
@@ -21,13 +21,13 @@ package org.apache.brooklyn.core.sensor;
 import java.util.concurrent.Semaphore;
 
 import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.util.core.task.DeferredSupplier;
-import org.apache.brooklyn.util.core.task.ImmediateSupplier;
+import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.guava.Maybe;
+
+import com.google.common.base.Function;
 
 // DeferredSupplier used as a marker interface to prevent coercion. When 
resolved it must evaluate to {@code Boolean.TRUE}.
-public interface ReleaseableLatch extends DeferredSupplier, 
ImmediateSupplier {
+public interface ReleaseableLatch {
 /**
  * Increment usage count for the {@code caller} entity
  */
@@ -38,21 +38,21 @@ public interface ReleaseableLatch extends 
DeferredSupplier, ImmediateSu
  */
 void release(Entity caller);
 
-static abstract class AbstractReleaseableLatch implements ReleaseableLatch 
{
-// Instances coerce to TRUE as they are non-null.
-@Override public Boolean get() {return Boolean.TRUE;}
-@Override public Maybe getImmediately() {return 
Maybe.of(Boolean.TRUE);}
-}
-
 ReleaseableLatch NOP = new Factory.NopLatch();
 
 static class Factory {
-private static class NopLatch extends AbstractReleaseableLatch {
+static {
+TypeCoercions.registerAdapter(ReleaseableLatch.class, 
Boolean.class, new Function() {
+@Override public Boolean apply(ReleaseableLatch input) { 
return Boolean.TRUE; }
+});
+}
+
+private static class NopLatch implements ReleaseableLatch {
 @Override public void acquire(Entity caller) {}
 @Override public void release(Entity caller) {}
 }
 
-private static class MaxConcurrencyLatch extends 
AbstractReleaseableLatch {
+private static class MaxConcurrencyLatch implements ReleaseableLatch {
 private int permits;
 private transient final Semaphore sem;
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d79f9ef0/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
--
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
index c0d80af..2acb604 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/lifecycle/MachineLifecycleEffectorTasks.java
@@ -1152,6 +1152,7 @@ public abstract class MachineLifecycleEffectorTasks {
 return ReleaseableLatch.NOP;
 } else {
 ValueResolverIterator iter = resolveLatchIterator(entity, 
rawValue.get(), configKey);
+// The iterator is used to prevent coercion; the value should 
always be the last one, but iter.last() will return a coerced Boolean
 Maybe releasableLatchMaybe = 
iter.next(ReleaseableLatch.class);
 if (releasableLatchMaybe.isPresent()) {
 

[1/7] brooklyn-server git commit: Add iterator to ValueResolver

2017-01-26 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master dc5bc6d19 -> a4e69956e


Add iterator to ValueResolver

Resolves the initial object iteratively until either failure or object can't be 
resolved any more.


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

Branch: refs/heads/master
Commit: 5f66e8fe4ecdf91a8121ff6e16da4ca0607cf0f1
Parents: 972a0d8
Author: Svetoslav Neykov 
Authored: Mon Jan 16 18:37:46 2017 +0200
Committer: Svetoslav Neykov 
Committed: Mon Jan 23 18:16:49 2017 +0200

--
 .../spi/dsl/DslDeferredFunctionCall.java|  30 +--
 .../brooklyn/util/core/task/ValueResolver.java  |  37 +++-
 .../util/core/task/ValueResolverIterator.java   | 196 +
 .../core/task/ValueResolverIteratorTest.java| 217 +++
 .../util/core/task/ValueResolverTest.java   |   4 +-
 5 files changed, 451 insertions(+), 33 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5f66e8fe/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslDeferredFunctionCall.java
--
diff --git 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslDeferredFunctionCall.java
 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslDeferredFunctionCall.java
index f511926..0b2963d 100644
--- 
a/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslDeferredFunctionCall.java
+++ 
b/camp/camp-brooklyn/src/main/java/org/apache/brooklyn/camp/brooklyn/spi/dsl/DslDeferredFunctionCall.java
@@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.brooklyn.api.mgmt.Task;
 import org.apache.brooklyn.camp.brooklyn.spi.dsl.methods.BrooklynDslCommon;
-import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.mgmt.BrooklynTaskTags;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -142,29 +141,12 @@ public class DslDeferredFunctionCall extends 
BrooklynDslDeferredSupplier
 }
 
 protected Maybe resolve(Object object, boolean immediate) {
-if (object instanceof DslFunctionSource || object == null) {
-return Maybe.of(object);
-}
-
-Maybe resultMaybe = Tasks.resolving(object, Object.class)
-.context(entity().getExecutionContext())
-.deep(true)
-.immediately(immediate)
-.recursive(false)
-.getMaybe();
-
-if (resultMaybe.isPresent()) {
-// No nice way to figure out whether the object is deferred. Try 
to resolve it
-// until it matches the input value as a poor man's replacement.
-Object result = resultMaybe.get();
-if (result == object) {
-return resultMaybe;
-} else {
-return resolve(result, immediate);
-}
-} else {
-return resultMaybe;
-}
+return Tasks.resolving(object, Object.class)
+.context(entity().getExecutionContext())
+.deep(true)
+.immediately(immediate)
+.iterator()
+.nextOrLast(DslFunctionSource.class);
 }
 
 private static void checkCallAllowed(Method m) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/5f66e8fe/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java 
b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
index 650ccc9..f81594e 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/task/ValueResolver.java
@@ -56,7 +56,7 @@ import com.google.common.reflect.TypeToken;
  * 
  * Fluent-style API exposes a number of other options.
  */
-public class ValueResolver implements DeferredSupplier {
+public class ValueResolver implements DeferredSupplier, 
Iterable {
 
 // TODO most of these usages should be removed when we have
 // an ability to run resolution in a non-blocking mode
@@ -166,14 +166,29 @@ public class ValueResolver implements 
DeferredSupplier {
 /** returns a copy of this resolver which can be queried, even if the 
original (single-use instance) has already been copied */
 

[7/7] brooklyn-server git commit: This closes #520

2017-01-26 Thread sjcorbett
This closes #520

Limit parallelism of start/stop steps on SoftwareProcess


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

Branch: refs/heads/master
Commit: a4e69956e5b3441771459e3694f472fbc033b7d9
Parents: dc5bc6d d81af3e
Author: Sam Corbett 
Authored: Thu Jan 26 18:50:38 2017 +
Committer: Sam Corbett 
Committed: Thu Jan 26 18:50:38 2017 +

--
 .../spi/dsl/DslDeferredFunctionCall.java|  30 +-
 .../core/sensor/DependentConfiguration.java |  49 ++-
 .../core/sensor/MaxConcurrencySensor.java   |  99 ++
 .../brooklyn/core/sensor/ReleaseableLatch.java  |  98 ++
 .../brooklyn/util/core/task/ValueResolver.java  |  37 ++-
 .../util/core/task/ValueResolverIterator.java   | 196 +++
 .../core/sensor/MaxConcurrencySensorTest.java   |  48 +++
 .../core/sensor/ReleaseableLatchRebindTest.java |  42 +++
 .../core/test/BrooklynMgmtUnitTestSupport.java  |   3 +-
 .../core/task/ValueResolverIteratorTest.java| 217 
 .../util/core/task/ValueResolverTest.java   |   4 +-
 .../entity/chef/ChefLifecycleEffectorTasks.java |   8 +-
 .../base/AbstractSoftwareProcessDriver.java |  49 +--
 ...wareProcessDriverLifecycleEffectorTasks.java |   8 +-
 .../MachineLifecycleEffectorTasks.java  | 106 --
 .../base/SoftwareProcessEntityLatchTest.java| 331 +++
 .../mysql/DynamicToyMySqlEntityBuilder.java |   5 +-
 .../java/org/apache/brooklyn/test/Asserts.java  |   6 +-
 .../org/apache/brooklyn/util/guava/Maybe.java   |   5 +
 19 files changed, 1192 insertions(+), 149 deletions(-)
--




[6/7] brooklyn-server git commit: cleanup

2017-01-26 Thread sjcorbett
cleanup


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

Branch: refs/heads/master
Commit: d81af3e2e143fd5b0285c5f0dcb999aea0f9a6ad
Parents: af74958
Author: Svetoslav Neykov 
Authored: Wed Jan 25 17:10:21 2017 +0200
Committer: Svetoslav Neykov 
Committed: Wed Jan 25 17:10:21 2017 +0200

--
 .../brooklyn/core/sensor/ReleaseableLatch.java  |  9 ++--
 .../base/AbstractSoftwareProcessDriver.java | 23 +
 .../MachineLifecycleEffectorTasks.java  | 51 +++-
 .../base/SoftwareProcessEntityLatchTest.java| 17 ---
 4 files changed, 44 insertions(+), 56 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d81af3e2/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java 
b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
index 8d28f93..97d4212 100644
--- a/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
+++ b/core/src/main/java/org/apache/brooklyn/core/sensor/ReleaseableLatch.java
@@ -26,15 +26,18 @@ import org.apache.brooklyn.util.exceptions.Exceptions;
 
 import com.google.common.base.Function;
 
-// DeferredSupplier used as a marker interface to prevent coercion. When 
resolved it must evaluate to {@code Boolean.TRUE}.
 public interface ReleaseableLatch {
 /**
- * Increment usage count for the {@code caller} entity
+ * Increment usage count for the {@code caller} entity. Implementations 
may ignore {@code caller}.
+ * 
+ * @param caller The entity latching on the object
  */
 void acquire(Entity caller);
 
 /**
- * Decrement usage count for the {@code caller} entity
+ * Decrement usage count for the {@code caller} entity. Implementations 
may ignore {@code caller}.
+ *
+ * @param caller The entity latching on the object
  */
 void release(Entity caller);
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d81af3e2/software/base/src/main/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessDriver.java
--
diff --git 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessDriver.java
 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessDriver.java
index 3900b76..339dd75 100644
--- 
a/software/base/src/main/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessDriver.java
+++ 
b/software/base/src/main/java/org/apache/brooklyn/entity/software/base/AbstractSoftwareProcessDriver.java
@@ -38,7 +38,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
-import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.entity.EntityLocal;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.mgmt.Task;
@@ -48,8 +47,8 @@ import org.apache.brooklyn.core.entity.BrooklynConfigKeys;
 import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.core.entity.lifecycle.Lifecycle;
 import org.apache.brooklyn.core.entity.lifecycle.ServiceStateLogic;
-import org.apache.brooklyn.core.sensor.ReleaseableLatch;
 import 
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks;
+import 
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.CloseableLatch;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.task.DynamicTasks;
@@ -217,26 +216,8 @@ public abstract class AbstractSoftwareProcessDriver 
implements SoftwareProcessDr
 }});
 }
 
-// Removes the checked Exception from the method signature
-private static class CloseableLatch implements AutoCloseable {
-private Entity caller;
-private ReleaseableLatch releaseableLatch;
-
-public CloseableLatch(Entity caller, ReleaseableLatch 
releaseableLatch) {
-this.caller = caller;
-this.releaseableLatch = releaseableLatch;
-}
-
-@Override
-public void close() {
-DynamicTasks.drain(null, false);
-releaseableLatch.release(caller);
-}
-}
-
 private CloseableLatch waitForLatch(ConfigKey configKey) {
-ReleaseableLatch releaseableLatch = 

[3/7] brooklyn-server git commit: ReleaseableLatch - better support for failing tasks

2017-01-26 Thread sjcorbett
ReleaseableLatch - better support for failing tasks


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

Branch: refs/heads/master
Commit: ae8eb9e346df7f91acf229e3d6fd8f68c41a9c69
Parents: 47aecce
Author: Svetoslav Neykov 
Authored: Wed Jan 25 09:34:41 2017 +0200
Committer: Svetoslav Neykov 
Committed: Wed Jan 25 09:39:02 2017 +0200

--
 .../core/sensor/MaxConcurrencySensor.java   |  16 ++-
 .../core/sensor/MaxConcurrencySensorTest.java   |   3 +-
 .../entity/chef/ChefLifecycleEffectorTasks.java |  13 +-
 .../base/AbstractSoftwareProcessDriver.java |   3 +-
 ...wareProcessDriverLifecycleEffectorTasks.java |  11 +-
 .../MachineLifecycleEffectorTasks.java  |  80 ---
 .../base/SoftwareProcessEntityLatchTest.java| 131 ++-
 .../mysql/DynamicToyMySqlEntityBuilder.java |  10 +-
 8 files changed, 186 insertions(+), 81 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ae8eb9e3/core/src/main/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensor.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensor.java 
b/core/src/main/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensor.java
index bae9415..fcdf7ba 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensor.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensor.java
@@ -18,11 +18,14 @@
  */
 package org.apache.brooklyn.core.sensor;
 
+import org.apache.brooklyn.api.entity.EntityInitializer;
 import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.api.sensor.AttributeSensor;
 import org.apache.brooklyn.config.ConfigKey;
 import org.apache.brooklyn.core.config.ConfigKeys;
 import org.apache.brooklyn.core.effector.AddSensor;
 import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.entity.EntityInternal;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.task.Tasks;
 import org.slf4j.Logger;
@@ -55,24 +58,29 @@ import org.slf4j.LoggerFactory;
  * }
  * 
  */
-public class MaxConcurrencySensor extends AddSensor {
+public class MaxConcurrencySensor implements EntityInitializer {
 private static final Logger log = 
LoggerFactory.getLogger(MaxConcurrencySensor.class);
 
+public static final ConfigKey SENSOR_NAME = 
ConfigKeys.newStringConfigKey("name", "The name of the sensor to create");
 public static final ConfigKey SENSOR_TYPE = 
ConfigKeys.newConfigKeyWithDefault(AddSensor.SENSOR_TYPE, 
ReleaseableLatch.class.getName());
 public static final ConfigKey MAX_CONCURRENCY = 
ConfigKeys.newIntegerConfigKey(
 "latch.concurrency.max",
 "The maximum number of threads that can execute the step for the 
latch this sensors is used at, in parallel.",
 Integer.MAX_VALUE);
+
 private Object maxConcurrency;
+private String sensorName;
 
 public MaxConcurrencySensor(ConfigBag params) {
-super(params);
-maxConcurrency = params.getStringKey(MAX_CONCURRENCY.getName());
+this.sensorName = params.get(SENSOR_NAME);
+this.maxConcurrency = params.getStringKey(MAX_CONCURRENCY.getName());
 }
 
 @Override
 public void apply(@SuppressWarnings("deprecation") final 
org.apache.brooklyn.api.entity.EntityLocal entity) {
-super.apply(entity);
+final AttributeSensor sensor = 
Sensors.newSensor(ReleaseableLatch.class, sensorName);
+((EntityInternal) entity).getMutableEntityType().addSensor(sensor);
+
 final Task resolveValueTask = 
DependentConfiguration.maxConcurrency(maxConcurrency);
 
 class SetValue implements Runnable {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/ae8eb9e3/core/src/test/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensorTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensorTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensorTest.java
index 299c269..c8f391c 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensorTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/sensor/MaxConcurrencySensorTest.java
@@ -30,7 +30,6 @@ import com.google.common.collect.ImmutableMap;
 
 public class MaxConcurrencySensorTest extends BrooklynAppUnitTestSupport {
 private static final 

[1/2] brooklyn-server git commit: BROOKLYN-404: improve BrooklynProperties concurrency

2017-01-24 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 972a0d8e1 -> 0570ca5a5


BROOKLYN-404: improve BrooklynProperties concurrency

BrooklynProperties no longer exposed as java.util.Map


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

Branch: refs/heads/master
Commit: 4c1fe06042eca2be3edcd8c603d8435559b4a9a9
Parents: 972a0d8
Author: Aled Sage 
Authored: Wed Jan 4 16:23:17 2017 +
Committer: Aled Sage 
Committed: Tue Jan 24 10:14:30 2017 +

--
 .../brooklyn/core/config/ConfigUtils.java   |  15 +-
 .../core/internal/BrooklynProperties.java   |  29 ++-
 .../core/internal/BrooklynPropertiesImpl.java   | 183 ++-
 .../core/location/BasicLocationDefinition.java  |   4 +-
 .../core/location/BasicLocationRegistry.java|   5 +-
 .../BasicExternalConfigSupplierRegistry.java|   6 +-
 .../internal/DeferredBrooklynProperties.java|  84 -
 .../config/BrooklynPropertiesBuilderTest.java   |   8 +-
 .../core/config/BrooklynPropertiesTest.java |  13 +-
 .../internal/LocalManagementContextTest.java|   6 +-
 .../brooklyn/launcher/BrooklynLauncher.java |   2 +-
 ...lynLauncherRebindToCloudObjectStoreTest.java |   2 +-
 .../jclouds/BailOutJcloudsLocation.java |   8 +-
 .../location/jclouds/JcloudsLocationTest.java   |   6 +-
 .../brooklynnode/LocalBrooklynNodeImpl.java |   6 +-
 15 files changed, 246 insertions(+), 131 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4c1fe060/core/src/main/java/org/apache/brooklyn/core/config/ConfigUtils.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/config/ConfigUtils.java 
b/core/src/main/java/org/apache/brooklyn/core/config/ConfigUtils.java
index d5b0c41..bbccaa6 100644
--- a/core/src/main/java/org/apache/brooklyn/core/config/ConfigUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/core/config/ConfigUtils.java
@@ -35,6 +35,7 @@ import org.apache.brooklyn.core.config.WrappedConfigKey;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.text.StringPredicates;
 import org.apache.brooklyn.util.text.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -81,20 +82,18 @@ public class ConfigUtils {
 
 public static BrooklynProperties filterFor(BrooklynProperties properties, 
Predicate filter) {
 BrooklynProperties result = BrooklynProperties.Factory.newEmpty();
-for (String k: (Collection)properties.keySet()) {
-if (filter.apply(k)) {
-result.put(k, properties.get(k));
-}
+Set keys = 
properties.findKeys(ConfigPredicates.nameSatisfies(filter));
+for (ConfigKey key : keys) {
+result.put(key, properties.getConfig(key));
 }
 return result;
 }
 
 public static BrooklynProperties filterForPrefix(BrooklynProperties 
properties, String prefix) {
 BrooklynProperties result = BrooklynProperties.Factory.newEmpty();
-for (String k: (Collection)properties.keySet()) {
-if (k.startsWith(prefix)) {
-result.put(k, properties.get(k));
-}
+Set keys = 
properties.findKeys(ConfigPredicates.nameSatisfies(StringPredicates.startsWith(prefix)));
+for (ConfigKey key : keys) {
+result.put(key, properties.getConfig(key));
 }
 return result;
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/4c1fe060/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynProperties.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynProperties.java 
b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynProperties.java
index ad72e4a..9924a90 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynProperties.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/internal/BrooklynProperties.java
@@ -50,7 +50,7 @@ import com.google.common.base.Supplier;
  * thereafter.
  */
 @SuppressWarnings("rawtypes")
-public interface BrooklynProperties extends Map, StringConfigMap {
+public interface BrooklynProperties extends StringConfigMap {
 
 public static class Factory {
 private static final Logger LOG = 

[2/2] brooklyn-server git commit: This closes #505

2017-01-24 Thread sjcorbett
This closes #505

BROOKLYN-404: fix ConcurrentModificationException in BrooklynProperties


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

Branch: refs/heads/master
Commit: 0570ca5a54dbd045c2bd007ea1a18d9f139762fb
Parents: 972a0d8 4c1fe06
Author: Sam Corbett 
Authored: Tue Jan 24 12:18:40 2017 +
Committer: Sam Corbett 
Committed: Tue Jan 24 12:18:40 2017 +

--
 .../brooklyn/core/config/ConfigUtils.java   |  15 +-
 .../core/internal/BrooklynProperties.java   |  29 ++-
 .../core/internal/BrooklynPropertiesImpl.java   | 183 ++-
 .../core/location/BasicLocationDefinition.java  |   4 +-
 .../core/location/BasicLocationRegistry.java|   5 +-
 .../BasicExternalConfigSupplierRegistry.java|   6 +-
 .../internal/DeferredBrooklynProperties.java|  84 -
 .../config/BrooklynPropertiesBuilderTest.java   |   8 +-
 .../core/config/BrooklynPropertiesTest.java |  13 +-
 .../internal/LocalManagementContextTest.java|   6 +-
 .../brooklyn/launcher/BrooklynLauncher.java |   2 +-
 ...lynLauncherRebindToCloudObjectStoreTest.java |   2 +-
 .../jclouds/BailOutJcloudsLocation.java |   8 +-
 .../location/jclouds/JcloudsLocationTest.java   |   6 +-
 .../brooklynnode/LocalBrooklynNodeImpl.java |   6 +-
 15 files changed, 246 insertions(+), 131 deletions(-)
--




[16/17] brooklyn-server git commit: Remove unnecessary casts

2017-01-23 Thread sjcorbett
Remove unnecessary casts


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

Branch: refs/heads/master
Commit: c0f11d0748698d8368a7a0619f53ad6806ac7b5b
Parents: 070d4ef
Author: Svetoslav Neykov 
Authored: Fri Jan 20 16:58:08 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 20 16:58:08 2017 +0200

--
 .../apache/brooklyn/camp/spi/pdp/Artifact.java  |  2 +-
 .../camp/spi/pdp/ArtifactRequirement.java   |  2 +-
 .../BrooklynComponentTemplateResolver.java  |  2 +-
 .../creation/BrooklynYamlLocationResolver.java  |  2 +-
 .../spi/dsl/BrooklynDslInterpreter.java |  2 +-
 .../spi/dsl/DslDeferredFunctionCall.java|  2 +-
 .../spi/dsl/methods/BrooklynDslCommon.java  |  4 +--
 .../brooklyn/spi/dsl/methods/DslComponent.java  |  4 +--
 .../camp/brooklyn/EnrichersYamlTest.java|  2 +-
 .../camp/brooklyn/EntitiesYamlTest.java |  4 +--
 .../camp/brooklyn/LocationsYamlTest.java| 22 -
 .../brooklyn/camp/brooklyn/ObjectsYamlTest.java |  2 +-
 .../camp/brooklyn/PoliciesYamlTest.java |  2 +-
 .../camp/brooklyn/WindowsYamlLiveTest.java  |  2 +-
 .../catalog/CatalogYamlLocationTest.java|  2 +-
 .../camp/server/rest/util/DtoFactory.java   |  2 +-
 .../catalog/internal/BasicBrooklynCatalog.java  |  6 ++---
 .../core/catalog/internal/CatalogDto.java   |  2 +-
 .../config/internal/AbstractConfigMapImpl.java  |  2 +-
 .../brooklyn/core/entity/AbstractEntity.java|  2 +-
 .../brooklyn/core/entity/EntityFunctions.java   |  4 +--
 .../brooklyn/core/entity/EntityRelations.java   |  2 +-
 .../drivers/ReflectiveEntityDriverFactory.java  |  2 +-
 .../core/entity/factory/ApplicationBuilder.java |  4 +--
 .../entity/lifecycle/ServiceStateLogic.java |  2 +-
 .../core/feed/AttributePollHandler.java |  2 +-
 .../impl/ConcurrentMapAcceptingNullVals.java|  2 +-
 .../core/location/CatalogLocationResolver.java  |  2 +-
 .../core/mgmt/EntityManagementUtils.java|  2 +-
 .../ha/dto/BasicManagementNodeSyncRecord.java   |  2 +-
 .../core/mgmt/internal/EffectorUtils.java   |  2 +-
 .../core/mgmt/internal/LocalEntityManager.java  |  2 +-
 .../mgmt/rebind/BasicEntityRebindSupport.java   |  6 ++---
 .../core/mgmt/rebind/RebindIteration.java   |  8 +++---
 .../mgmt/rebind/dto/MementosGenerators.java |  2 +-
 .../core/objs/proxy/InternalEntityFactory.java  |  2 +-
 .../brooklyn/core/sensor/AttributeMap.java  |  2 +-
 ...platedStringAttributeSensorAndConfigKey.java |  2 +-
 .../core/server/BrooklynServerPaths.java|  2 +-
 .../stock/CustomAggregatingEnricher.java|  2 +-
 .../brooklyn/enricher/stock/Enrichers.java  |  8 +++---
 .../SshCommandMembershipTrackingPolicy.java |  2 +-
 .../brooklyn/entity/stock/DelegateEntity.java   |  2 +-
 .../brooklyn/feed/http/HttpValueFunctions.java  |  2 +-
 .../brooklyn/feed/http/JsonFunctions.java   |  4 +--
 .../location/byon/ByonLocationResolver.java |  2 +-
 .../FixedListMachineProvisioningLocation.java   |  2 +-
 .../LocalhostMachineProvisioningLocation.java   |  4 +--
 .../location/ssh/SshMachineLocation.java|  2 +-
 .../util/core/internal/ssh/sshj/SshjTool.java   |  2 +-
 .../util/core/json/MultimapSerializer.java  |  2 +-
 .../util/core/task/BasicExecutionContext.java   |  2 +-
 .../util/core/task/BasicExecutionManager.java   |  2 +-
 .../brooklyn/util/core/task/BasicTask.java  |  4 +--
 .../core/effector/EffectorTaskTest.java |  6 ++---
 .../core/effector/ssh/SshEffectorTasksTest.java |  4 +--
 .../entity/DynamicEntityTypeConfigTest.java |  2 +-
 .../core/entity/EntityConfigUsageTest.java  |  2 +-
 .../core/location/TestPortSupplierLocation.java |  2 +-
 .../core/mgmt/internal/EffectorUtilsTest.java   |  6 ++---
 .../mgmt/osgi/OsgiVersionMoreEntityTest.java|  2 +-
 .../core/mgmt/rebind/RebindEnricherTest.java|  8 +++---
 .../core/mgmt/rebind/RebindEntityTest.java  |  2 +-
 .../core/mgmt/rebind/RebindFeedTest.java| 12 -
 .../core/mgmt/rebind/RebindFeedWithHaTest.java  |  6 ++---
 .../rebind/RebindLocalhostLocationTest.java |  2 +-
 .../core/mgmt/rebind/RebindLocationTest.java| 18 +++---
 .../core/mgmt/rebind/RebindPolicyTest.java  |  2 +-
 .../rebind/RebindSshMachineLocationTest.java|  4 +--
 .../network/OnPublicNetworkEnricherTest.java|  6 ++---
 .../network/OnSubnetNetworkEnricherTest.java|  4 +--
 .../core/test/entity/TestApplicationImpl.java   |  2 +-
 .../typereg/RegisteredTypePredicatesTest.java   |  4 +--
 ...CustomAggregatingEnricherDeprecatedTest.java |  2 +-
 

[09/17] brooklyn-server git commit: Add missing @Override annotation to method signatures overriding interface methods

2017-01-23 Thread sjcorbett
Add missing @Override annotation to method signatures overriding interface 
methods


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

Branch: refs/heads/master
Commit: e61caea44a535ea1aeda0ea8633b3a0d7c38c8ec
Parents: 0d2d5d6
Author: Svetoslav Neykov 
Authored: Fri Jan 20 16:00:40 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 20 16:17:09 2017 +0200

--
 .../org/apache/brooklyn/api/entity/Entity.java  |  2 +
 .../apache/brooklyn/api/entity/EntityLocal.java |  1 +
 .../brooklyn/api/location/MachineLocation.java  |  1 +
 .../java/org/apache/brooklyn/api/mgmt/Task.java |  1 +
 .../mementos/BrooklynMementoManifest.java   |  1 +
 .../org/apache/brooklyn/api/policy/Policy.java  |  1 +
 .../brooklyn/camp/AggregatingCampPlatform.java  |  6 +++
 .../collection/AggregatingResourceLookup.java   |  2 +
 .../spi/collection/BasicResourceLookup.java |  2 +
 .../camp/spi/collection/ResourceLookup.java |  3 ++
 .../BasicAssemblyTemplateInstantiator.java  |  1 +
 .../brooklyn/camp/spi/resolve/PdpMatcher.java   |  2 +
 .../web/MockAssemblyTemplateInstantiator.java   |  1 +
 .../camp/test/mock/web/MockWebPlatform.java |  2 +
 .../camp/brooklyn/BrooklynCampPlatform.java |  2 +
 .../brooklyn/ConfigInheritanceYamlTest.java |  2 +
 .../camp/brooklyn/ConfigParametersYamlTest.java |  1 +
 .../brooklyn/camp/brooklyn/ConfigYamlTest.java  |  3 ++
 .../DependentConfigPollingYamlTest.java |  2 +
 .../camp/brooklyn/EnrichersYamlTest.java|  3 ++
 .../camp/brooklyn/EntitiesYamlTest.java |  1 +
 .../brooklyn/TestEntityWithInitConfigImpl.java  |  1 +
 .../TestSensorAndEffectorInitializer.java   |  1 +
 .../qa/performance/CatalogPerformanceTest.java  |  6 +++
 .../brooklyn/camp/brooklyn/spi/dsl/DslTest.java |  3 ++
 .../camp/server/rest/util/CampRestGuavas.java   |  1 +
 .../camp/server/rest/util/DtoFactory.java   |  2 +
 .../AbstractExternalConfigSupplier.java |  1 +
 .../external/InPlaceExternalConfigSupplier.java |  1 +
 .../PropertiesFileExternalConfigSupplier.java   |  1 +
 .../external/UrlsExternalConfigSupplier.java|  1 +
 .../config/internal/AbstractConfigMapImpl.java  |  2 +
 .../internal/AbstractStructuredConfigKey.java   |  2 +
 .../core/config/render/RendererHints.java   |  1 +
 .../core/effector/ssh/SshEffectorTasks.java |  3 ++
 .../brooklyn/core/entity/AbstractEntity.java|  1 +
 .../apache/brooklyn/core/entity/Entities.java   |  2 +
 .../drivers/BasicEntityDriverManager.java   |  1 +
 .../drivers/RegistryEntityDriverFactory.java|  1 +
 .../DownloadProducerFromCloudsoftRepo.java  |  1 +
 .../DownloadProducerFromLocalRepo.java  |  1 +
 .../DownloadProducerFromProperties.java |  1 +
 .../AbstractConfigurableEntityFactory.java  |  6 +++
 .../org/apache/brooklyn/core/feed/Poller.java   |  4 +-
 .../core/internal/BrooklynProperties.java   |  1 +
 .../core/internal/BrooklynPropertiesImpl.java   | 17 ++-
 .../storage/impl/BrooklynStorageImpl.java   |  1 +
 .../core/location/BasicLocationDefinition.java  |  3 ++
 .../core/location/BasicMachineMetadata.java |  5 ++
 .../brooklyn/core/location/PortRanges.java  |  6 +--
 .../location/access/PortForwardManager.java |  1 +
 .../cloud/names/AbstractCloudMachineNamer.java  |  3 ++
 .../location/geo/GeoBytesHostGeoLookup.java |  1 +
 .../location/geo/MaxMind2HostGeoLookup.java |  1 +
 .../core/location/geo/UtraceHostGeoLookup.java  |  1 +
 .../core/mgmt/ha/BasicMasterChooser.java|  1 +
 .../mgmt/ha/HighAvailabilityManagerImpl.java|  2 +
 .../internal/AbstractManagementContext.java |  3 ++
 .../internal/AbstractSubscriptionManager.java   |  9 
 .../internal/AsyncCollectionChangeAdapter.java  |  2 +
 ...PropertyChangeToCollectionChangeAdapter.java |  1 +
 .../core/mgmt/internal/LocalEntityManager.java  |  5 +-
 .../mgmt/internal/LocalLocationManager.java |  5 +-
 .../mgmt/internal/LocalSubscriptionManager.java |  5 ++
 .../core/mgmt/internal/LocalUsageManager.java   |  4 ++
 .../BrooklynMementoPersisterToObjectStore.java  |  5 ++
 .../rebind/PeriodicDeltaChangeListener.java |  1 +
 .../core/mgmt/rebind/PersisterDeltaImpl.java|  2 +
 .../core/mgmt/rebind/RebindContextImpl.java |  3 ++
 .../mgmt/rebind/RebindExceptionHandlerImpl.java |  1 +
 .../core/mgmt/rebind/RebindManagerImpl.java |  2 +
 .../mgmt/rebind/dto/BasicEntityMemento.java |  1 +
 .../transformer/impl/XsltTransformer.java   |  1 +
 .../AbstractConfigurationSupportInternal.java   |  2 +
 .../core/objs/BasicConfigurableObject.java  |  2 +
 

[14/17] brooklyn-server git commit: Remove unnecessary casts

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c0f11d07/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Boxing.java
--
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Boxing.java 
b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Boxing.java
index 87529ad..5838df9 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Boxing.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/Boxing.java
@@ -116,7 +116,7 @@ public class Boxing {
 Array.setShort(target, index, (Short)value);
 
 else if (type.equals(Void.TYPE))
-Array.set(target, index, (Void)value);
+Array.set(target, index, value);
 
 else 
 // should not happen!

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c0f11d07/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/EnumTypeCoercions.java
--
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/EnumTypeCoercions.java
 
b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/EnumTypeCoercions.java
index b57625a..e8e84b7 100644
--- 
a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/EnumTypeCoercions.java
+++ 
b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/EnumTypeCoercions.java
@@ -52,7 +52,7 @@ public class EnumTypeCoercions {
 @SuppressWarnings({ "unchecked", "rawtypes" })
 public static  Function stringToEnumUntyped(final Class type, @Nullable final T defaultValue) {
 if (!type.isEnum()) return new 
Functionals.ConstantFunction(null);
-return (Function) new 
StringToEnumFunction((Class)type, (Enum)defaultValue);
+return new StringToEnumFunction((Class)type, (Enum)defaultValue);
 }
 
 private static class StringToEnumFunction> implements 
Function {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c0f11d07/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/PrimitiveStringTypeCoercions.java
--
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/PrimitiveStringTypeCoercions.java
 
b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/PrimitiveStringTypeCoercions.java
index 9812d93..0b2a636 100644
--- 
a/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/PrimitiveStringTypeCoercions.java
+++ 
b/utils/common/src/main/java/org/apache/brooklyn/util/javalang/coerce/PrimitiveStringTypeCoercions.java
@@ -96,7 +96,7 @@ public class PrimitiveStringTypeCoercions {
 // (we could say 0=false, nonzero=true, but there is no compelling 
use case so better
 // to encourage users to write as boolean)
 if (sourceWrapType == Character.class)
-return (T) stringToPrimitive(value.toString(), targetType);
+return stringToPrimitive(value.toString(), targetType);
 
 throw new ClassCoercionException("Cannot cast "+sourceWrapType+" 
("+value+") to "+targetType);
 } else if (sourceWrapType == Boolean.class) {
@@ -109,13 +109,13 @@ public class PrimitiveStringTypeCoercions {
 long v = 0;
 boolean islong = true;
 if (sourceWrapType == Character.class) {
-v = (long) ((Character)value).charValue();
+v = ((Character)value).charValue();
 } else if (sourceWrapType == Byte.class) {
-v = (long) ((Byte)value).byteValue();
+v = ((Byte)value).byteValue();
 } else if (sourceWrapType == Short.class) {
-v = (long) ((Short)value).shortValue();
+v = ((Short)value).shortValue();
 } else if (sourceWrapType == Integer.class) {
-v = (long) ((Integer)value).intValue();
+v = ((Integer)value).intValue();
 } else if (sourceWrapType == Long.class) {
 v = ((Long)value).longValue();
 } else {
@@ -126,9 +126,9 @@ public class PrimitiveStringTypeCoercions {
 if (targetWrapType == Byte.class) return (T) 
Byte.valueOf((byte)v); 
 if (targetWrapType == Short.class) return (T) 
Short.valueOf((short)v); 
 if (targetWrapType == Integer.class) return (T) 
Integer.valueOf((int)v); 
-if (targetWrapType == Long.class) return (T) 
Long.valueOf((long)v); 
-if (targetWrapType == Float.class) return (T) 
Float.valueOf((float)v); 
-if (targetWrapType == Double.class) return (T) 
Double.valueOf((double)v);
+if (targetWrapType == Long.class) return (T) Long.valueOf(v); 
+if (targetWrapType == Float.class) return (T) 

[03/17] brooklyn-server git commit: Add missing @Override annotations

2017-01-23 Thread sjcorbett
Add missing @Override annotations


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

Branch: refs/heads/master
Commit: 0d2d5d6a7a3568c4ed4c4aee4d07dd5982802d9e
Parents: 4d2f7cc
Author: Svetoslav Neykov 
Authored: Fri Jan 20 12:45:34 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 20 12:45:34 2017 +0200

--
 .../brooklyn/api/location/LocationSpec.java |  3 ++
 .../apache/brooklyn/api/policy/PolicySpec.java  |  1 +
 .../brooklyn/api/sensor/EnricherSpec.java   |  2 ++
 .../brooklyn/camp/AggregatingCampPlatform.java  |  4 +++
 .../apache/brooklyn/camp/BasicCampPlatform.java |  4 +++
 .../brooklyn/camp/spi/PlatformRootSummary.java  |  1 +
 .../camp/brooklyn/AbstractYamlRebindTest.java   |  1 +
 .../brooklyn/catalog/CatalogYamlRebindTest.java |  1 +
 .../catalog/CatalogYamlVersioningTest.java  |  1 +
 .../brooklyn/core/config/MapConfigKey.java  |  5 +++
 .../vault/VaultAppIdExternalConfigSupplier.java |  1 +
 .../core/effector/ExplicitEffector.java |  2 ++
 .../brooklyn/core/effector/MethodEffector.java  |  1 +
 .../core/effector/ssh/SshEffectorTasks.java |  2 ++
 .../core/enricher/EnricherDynamicType.java  |  1 +
 .../core/entity/AbstractApplication.java|  1 +
 .../brooklyn/core/entity/AbstractEntity.java|  4 +++
 .../factory/BasicConfigurableEntityFactory.java |  1 +
 .../entity/factory/ClosureEntityFactory.java|  1 +
 .../org/apache/brooklyn/core/feed/Poller.java   |  1 +
 .../core/internal/BrooklynPropertiesImpl.java   |  1 +
 .../core/location/AbstractLocation.java |  4 +++
 .../brooklyn/core/location/PortRanges.java  |  2 ++
 .../location/access/PortForwardManager.java |  1 +
 .../access/PortForwardManagerAuthority.java |  1 +
 .../location/geo/LocalhostExternalIpLoader.java |  1 +
 .../core/location/geo/UtraceHostGeoLookup.java  |  1 +
 .../location/internal/LocationDynamicType.java  |  1 +
 .../brooklyn/core/mgmt/BrooklynTaskTags.java|  1 +
 .../BrooklynClassLoadingContextSequential.java  |  1 +
 .../JavaBrooklynClassLoadingContext.java|  1 +
 ...PropertyChangeToCollectionChangeAdapter.java |  2 ++
 .../mgmt/internal/LocalSubscriptionManager.java |  2 ++
 .../core/mgmt/internal/LocalUsageManager.java   |  2 ++
 .../brooklyn/core/policy/PolicyDynamicType.java |  1 +
 .../stock/AbstractTypeTransformingEnricher.java |  1 +
 .../brooklyn/enricher/stock/AddingEnricher.java |  1 +
 .../brooklyn/enricher/stock/Aggregator.java |  2 ++
 .../brooklyn/enricher/stock/Enrichers.java  |  7 
 .../stock/SensorPropagatingEnricher.java|  1 +
 .../brooklyn/enricher/stock/Transformer.java|  1 +
 .../org/apache/brooklyn/feed/http/HttpFeed.java |  1 +
 .../apache/brooklyn/feed/shell/ShellFeed.java   |  1 +
 .../org/apache/brooklyn/feed/ssh/SshFeed.java   |  1 +
 .../LocalhostMachineProvisioningLocation.java   |  4 +++
 .../location/ssh/SshMachineLocation.java|  1 +
 .../util/core/config/ResolvingConfigBag.java|  2 ++
 .../util/core/internal/ssh/cli/SshCliTool.java  |  2 ++
 .../core/internal/ssh/process/ProcessTool.java  |  1 +
 .../util/core/internal/ssh/sshj/SshjTool.java   |  2 ++
 .../util/core/task/BasicExecutionManager.java   |  1 +
 .../util/core/task/DynamicSequentialTask.java   |  1 +
 .../core/task/ListenableForwardingFuture.java   |  1 +
 .../brooklyn/util/core/task/ScheduledTask.java  |  3 ++
 .../brooklyn/util/core/task/SequentialTask.java |  1 +
 .../brooklyn/util/core/task/ValueResolver.java  |  1 +
 .../internal/AbstractSshExecTaskFactory.java|  2 ++
 .../xstream/EnumCaseForgivingConverter.java |  1 +
 .../EnumCaseForgivingSingleValueConverter.java  |  1 +
 .../core/xstream/ImmutableListConverter.java|  1 +
 .../core/xstream/ImmutableMapConverter.java |  1 +
 .../core/xstream/ImmutableSetConverter.java |  1 +
 .../util/core/xstream/MapConverter.java |  2 ++
 .../core/xstream/StringKeyMapConverter.java |  1 +
 .../MapListAndOtherStructuredConfigKeyTest.java |  2 ++
 .../effector/EffectorExceptionLoggedTest.java   |  1 +
 .../core/effector/EffectorTaskTest.java |  2 ++
 .../core/enricher/BasicEnricherTest.java|  1 +
 .../ApplicationLifecycleStateStressTest.java| 11 ++
 .../core/entity/EntityAutomanagedTest.java  |  1 +
 .../apache/brooklyn/core/feed/PollerTest.java   |  2 ++
 .../brooklyn/core/location/MachinesTest.java|  1 +
 .../entitlement/AcmeEntitlementManagerTest.java |  1 +
 ...PerUserEntitlementManagerPropertiesTest.java |  1 +
 .../HighAvailabilityManagerFileBasedTest.java   |  1 +
 .../ha/HighAvailabilityManagerInMemoryTest.java |  

[01/17] brooklyn-server git commit: Add missing @Override annotations

2017-01-23 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 8ad5578c1 -> 972a0d8e1


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
--
diff --git 
a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java 
b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
index 8d239da..ce060e3 100644
--- 
a/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
+++ 
b/policy/src/test/java/org/apache/brooklyn/policy/ha/ServiceRestarterTest.java
@@ -56,6 +56,7 @@ public class ServiceRestarterTest extends 
BrooklynAppUnitTestSupport {
 private SensorEventListener eventListener;
 private List events;
 
+@Override
 @BeforeMethod(alwaysRun=true)
 public void setUp() throws Exception {
 super.setUp();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
--
diff --git 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
index cb93df0..bf5661e 100644
--- 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
+++ 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
@@ -122,6 +122,7 @@ public class MockContainerEntityImpl extends 
AbstractGroupImpl implements MockCo
 return (Set) Sets.newLinkedHashSet(getMembers());
 }
 
+@Override
 public String toString() {
 return "MockContainer["+getDisplayName()+"]";
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/BrooklynRestApp.java
--
diff --git 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/BrooklynRestApp.java
 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/BrooklynRestApp.java
index 419715b..05b9092 100644
--- 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/BrooklynRestApp.java
+++ 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/BrooklynRestApp.java
@@ -45,6 +45,7 @@ public class BrooklynRestApp extends Application {
 
 //Uncomment after removing jersey dependencies
 //@Override
+@Override
 public Map getProperties() {
 return ImmutableMap.of(
 // Makes sure that all exceptions are handled by our custom 
DefaultExceptionMapper

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java
--
diff --git 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java
 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java
index 6278b7c..cb55875 100644
--- 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java
+++ 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java
@@ -67,6 +67,7 @@ public class HaHotCheckResourceFilter implements 
ContainerRequestFilter {
 private ResourceInfo resourceInfo;
 
 private HaHotCheckHelperAbstract helper = new HaHotCheckHelperAbstract() {
+@Override
 public ManagementContext mgmt() {
 return mgmt.getContext(ManagementContext.class);
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
--
diff --git 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
index 713dccb..e12b769 100644
--- 
a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
+++ 
b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/DelegatingPrintStream.java
@@ -40,142 +40,177 @@ public abstract class DelegatingPrintStream extends 
PrintStream {
 
 protected abstract PrintStream getDelegate();
 
+@Override
 public int hashCode() {
 return getDelegate().hashCode();
 }
 
+@Override
 public void write(byte[] b) throws IOException {
 getDelegate().write(b);
 }
 
+@Override
 public boolean equals(Object 

[11/17] brooklyn-server git commit: Add missing @Deprecated annotations

2017-01-23 Thread sjcorbett
Add missing @Deprecated annotations


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

Branch: refs/heads/master
Commit: dfa8aa2926fbecc884ffa75cb5c820c6174199c4
Parents: e61caea
Author: Svetoslav Neykov 
Authored: Fri Jan 20 16:24:50 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 20 16:24:50 2017 +0200

--
 .../java/org/apache/brooklyn/api/catalog/BrooklynCatalog.java   | 1 +
 .../main/java/org/apache/brooklyn/api/catalog/CatalogItem.java  | 1 +
 .../main/java/org/apache/brooklyn/api/entity/EntityLocal.java   | 4 
 .../main/java/org/apache/brooklyn/api/mgmt/LocationManager.java | 1 +
 .../java/org/apache/brooklyn/api/mgmt/rebind/RebindManager.java | 1 +
 .../brooklyn/camp/spi/pdp/AssemblyTemplateConstructor.java  | 1 +
 .../org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java | 1 +
 .../org/apache/brooklyn/core/catalog/internal/CatalogUtils.java | 4 
 .../java/org/apache/brooklyn/core/config/ConfigPredicates.java  | 4 
 .../java/org/apache/brooklyn/core/entity/AbstractEntity.java| 4 
 .../org/apache/brooklyn/core/entity/BrooklynConfigKeys.java | 2 ++
 .../src/main/java/org/apache/brooklyn/core/entity/Entities.java | 4 
 .../org/apache/brooklyn/core/entity/EntityAndAttribute.java | 1 +
 .../java/org/apache/brooklyn/core/entity/EntityInternal.java| 3 +++
 .../java/org/apache/brooklyn/core/entity/EntityPredicates.java  | 1 +
 .../apache/brooklyn/core/entity/factory/ApplicationBuilder.java | 1 +
 .../src/main/java/org/apache/brooklyn/core/feed/FeedConfig.java | 1 +
 .../apache/brooklyn/core/internal/BrooklynPropertiesImpl.java   | 1 +
 .../brooklyn/core/location/DeprecatedKeysMappingBuilder.java| 1 +
 .../main/java/org/apache/brooklyn/core/location/Locations.java  | 1 +
 .../org/apache/brooklyn/core/mgmt/internal/EffectorUtils.java   | 1 +
 .../org/apache/brooklyn/core/mgmt/rebind/RebindManagerImpl.java | 1 +
 .../brooklyn/core/mgmt/rebind/dto/MementosGenerators.java   | 1 +
 .../brooklyn/core/mgmt/rebind/dto/MutableBrooklynMemento.java   | 1 +
 .../org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java| 1 +
 .../org/apache/brooklyn/core/plan/PlanToSpecTransformer.java| 1 +
 .../org/apache/brooklyn/core/sensor/DependentConfiguration.java | 1 +
 .../org/apache/brooklyn/core/server/BrooklynServerConfig.java   | 4 
 .../brooklyn/enricher/stock/AbstractAggregatingEnricher.java| 1 +
 .../brooklyn/enricher/stock/AbstractTransformingEnricher.java   | 1 +
 .../enricher/stock/AbstractTypeTransformingEnricher.java| 1 +
 .../java/org/apache/brooklyn/enricher/stock/AddingEnricher.java | 1 +
 .../brooklyn/enricher/stock/CustomAggregatingEnricher.java  | 5 +
 .../brooklyn/enricher/stock/SensorPropagatingEnricher.java  | 4 
 .../brooklyn/enricher/stock/SensorTransformingEnricher.java | 2 ++
 .../java/org/apache/brooklyn/entity/stock/BasicStartable.java   | 1 +
 .../org/apache/brooklyn/feed/function/FunctionPollConfig.java   | 1 +
 .../java/org/apache/brooklyn/feed/http/HttpValueFunctions.java  | 3 +++
 .../main/java/org/apache/brooklyn/feed/ssh/SshPollConfig.java   | 2 ++
 .../java/org/apache/brooklyn/feed/ssh/SshValueFunctions.java| 2 ++
 .../localhost/LocalhostMachineProvisioningLocation.java | 2 ++
 .../apache/brooklyn/util/core/BrooklynLanguageExtensions.java   | 1 +
 .../java/org/apache/brooklyn/util/core/flags/FlagUtils.java | 2 ++
 .../java/org/apache/brooklyn/util/core/flags/TypeCoercions.java | 1 +
 .../java/org/apache/brooklyn/util/core/internal/Repeater.java   | 1 +
 .../apache/brooklyn/util/core/internal/ssh/SshAbstractTool.java | 1 +
 .../org/apache/brooklyn/util/core/internal/ssh/SshTool.java | 1 +
 .../util/core/internal/ssh/sshj/SshjClientConnection.java   | 1 +
 .../java/org/apache/brooklyn/util/core/task/TaskPredicates.java | 1 +
 .../org/apache/brooklyn/core/mgmt/rebind/RebindEntityTest.java  | 1 +
 .../apache/brooklyn/core/mgmt/rebind/RebindLocationTest.java| 1 +
 .../java/org/apache/brooklyn/launcher/common/BasicLauncher.java | 1 +
 .../java/org/apache/brooklyn/launcher/BrooklynWebServer.java| 1 +
 .../org/apache/brooklyn/location/jclouds/JcloudsPredicates.java | 1 +
 .../java/org/apache/brooklyn/location/jclouds/JcloudsUtil.java  | 1 +
 .../brooklyn/policy/enricher/RollingTimeWindowMeanEnricher.java | 1 +
 .../main/java/org/apache/brooklyn/rest/domain/LocationSpec.java | 1 +
 .../apache/brooklyn/rest/filter/HaHotCheckResourceFilter.java   | 1 +
 .../org/apache/brooklyn/rest/resources/LocationResource.java| 1 +
 .../java/org/apache/brooklyn/rest/util/URLParamEncoder.java

[13/17] brooklyn-server git commit: Remove unused imports

2017-01-23 Thread sjcorbett
Remove unused imports


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

Branch: refs/heads/master
Commit: 070d4ef568528423f78079370b760df3e7fa6990
Parents: dfa8aa2
Author: Svetoslav Neykov 
Authored: Fri Jan 20 16:27:10 2017 +0200
Committer: Svetoslav Neykov 
Committed: Fri Jan 20 16:27:10 2017 +0200

--
 .../org/apache/brooklyn/api/catalog/BrooklynCatalog.java |  2 --
 .../spi/creation/BrooklynYamlLocationResolver.java   |  1 -
 .../spi/creation/BrooklynYamlTypeInstantiator.java   |  1 -
 .../camp/brooklyn/spi/creation/CampResolver.java |  1 -
 .../spi/creation/service/UrlServiceSpecResolver.java |  3 ---
 .../camp/brooklyn/spi/dsl/BrooklynDslInterpreter.java|  1 -
 .../org/apache/brooklyn/core/entity/AbstractEntity.java  |  1 -
 .../main/java/org/apache/brooklyn/core/feed/Poller.java  |  1 -
 .../brooklyn/core/location/BasicLocationRegistry.java|  1 -
 .../core/location/geo/LocalhostExternalIpLoader.java |  1 -
 .../core/location/internal/LocationConfigMap.java|  1 -
 .../org/apache/brooklyn/core/mgmt/BrooklynTaskTags.java  |  2 --
 .../ManagementPlaneSyncRecordPersisterToObjectStore.java |  1 -
 .../core/mgmt/internal/AbstractManagementContext.java|  1 -
 .../core/mgmt/persist/DeserializingProvider.java |  1 -
 .../brooklyn/core/mgmt/rebind/RebindIteration.java   |  1 -
 .../brooklyn/core/network/OnSubnetNetworkEnricher.java   |  1 -
 .../org/apache/brooklyn/core/plan/PlanToSpecFactory.java |  2 --
 .../org/apache/brooklyn/core/policy/AbstractPolicy.java  |  1 -
 .../resolve/entity/DelegatingEntitySpecResolver.java |  1 -
 .../org/apache/brooklyn/core/sensor/StaticSensor.java|  2 --
 .../brooklyn/core/typereg/TypePlanTransformers.java  |  1 -
 .../brooklyn/enricher/stock/AbstractTransformer.java |  2 --
 .../org/apache/brooklyn/enricher/stock/Enrichers.java|  3 ---
 .../apache/brooklyn/enricher/stock/MapAggregator.java|  3 ---
 .../org/apache/brooklyn/enricher/stock/Propagator.java   |  1 -
 .../enricher/stock/SensorTransformingEnricher.java   |  2 --
 .../stock/YamlRollingTimeWindowMeanEnricher.java |  2 --
 .../apache/brooklyn/enricher/stock/reducer/Reducer.java  |  1 -
 .../brooklyn/entity/group/DynamicMultiGroupImpl.java |  1 -
 .../apache/brooklyn/entity/group/QuarantineGroup.java|  2 --
 .../entity/group/SshCommandMembershipTrackingPolicy.java |  1 -
 .../apache/brooklyn/entity/stock/BasicStartableImpl.java |  1 -
 .../main/java/org/apache/brooklyn/feed/ssh/SshFeed.java  |  2 --
 .../brooklyn/location/byon/HostLocationResolver.java |  1 -
 .../location/byon/SingleMachineLocationResolver.java |  1 -
 .../util/core/internal/ssh/process/ProcessTool.java  |  1 -
 .../org/apache/brooklyn/util/core/task/ssh/SshTasks.java |  1 -
 .../core/catalog/internal/CatalogItemBuilderTest.java|  1 -
 .../config/external/UrlsExternalConfigSupplierTest.java  |  2 --
 .../org/apache/brooklyn/core/entity/EntitiesTest.java|  1 -
 .../brooklyn/core/location/LocationSubscriptionTest.java |  1 -
 .../brooklyn/core/mgmt/internal/EffectorUtilsTest.java   |  1 -
 .../core/mgmt/internal/EntityExecutionManagerTest.java   |  1 -
 .../core/mgmt/internal/LocalSubscriptionManagerTest.java |  2 --
 .../core/mgmt/persist/XmlMementoSerializerTest.java  |  1 -
 .../RebindCatalogWhenCatalogPersistenceDisabledTest.java |  5 -
 .../brooklyn/core/mgmt/rebind/RebindTestFixture.java |  1 -
 .../apache/brooklyn/entity/group/DynamicFabricTest.java  |  1 -
 .../apache/brooklyn/entity/group/DynamicGroupTest.java   |  1 -
 .../entity/group/DynamicMultiGroupRebindTest.java|  2 --
 .../entity/group/MembershipTrackingPolicyTest.java   |  1 -
 .../apache/brooklyn/entity/stock/LocationEntityTest.java |  1 -
 .../brooklyn/location/byon/ByonLocationResolverTest.java |  1 -
 .../localhost/LocalhostLocationResolverRebindTest.java   |  2 --
 .../brooklyn/util/core/BrooklynMavenArtifactsTest.java   |  2 --
 .../apache/brooklyn/util/core/ClassLoaderUtilsTest.java  |  1 -
 .../ssh/sshj/SshjToolAsyncStubIntegrationTest.java   |  1 -
 .../util/core/xstream/CompilerCompatibilityTest.java |  2 --
 .../launcher/osgi/ClassRenameOsgiConfigLoader.java   |  1 -
 .../org/apache/brooklyn/launcher/BrooklynLauncher.java   |  2 --
 .../brooklyn/location/jclouds/ChildEntityCustomizer.java |  1 -
 .../apache/brooklyn/location/jclouds/JcloudsUtil.java|  4 
 .../location/jclouds/JcloudsWinRmMachineLocation.java|  2 --
 .../JcloudsLocationReleasePortForwardingDefaultTest.java |  1 -
 

[10/17] brooklyn-server git commit: Add missing @Deprecated annotations

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/dfa8aa29/utils/common/src/main/java/org/apache/brooklyn/util/time/Time.java
--
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/time/Time.java 
b/utils/common/src/main/java/org/apache/brooklyn/util/time/Time.java
index ef445d5..39bb15f 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/time/Time.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/time/Time.java
@@ -944,6 +944,7 @@ public class Time {
  * @deprecated since 0.7.0 use {@link #parseCalendar(String)} for general 
or {@link #parseCalendarFormat(String, DateFormat)} for a format,
  * plus {@link #parseCalendarUtc(String)} if you want to accept UTC
  */
+@Deprecated
 public static Date parseDateString(String dateString, DateFormat format) {
 Maybe r = parseCalendarFormat(dateString, format);
 if (r.isPresent()) return r.get().getTime();



[17/17] brooklyn-server git commit: This closes #532

2017-01-23 Thread sjcorbett
This closes #532

Add missing @Override annotations and other cleanup


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

Branch: refs/heads/master
Commit: 972a0d8e1d9e5f456e40f8afd791c425d94419ca
Parents: 8ad5578 c0f11d0
Author: Sam Corbett 
Authored: Mon Jan 23 15:12:47 2017 +
Committer: Sam Corbett 
Committed: Mon Jan 23 15:12:47 2017 +

--
 .../brooklyn/api/catalog/BrooklynCatalog.java   |  3 +-
 .../brooklyn/api/catalog/CatalogItem.java   |  1 +
 .../org/apache/brooklyn/api/entity/Entity.java  |  2 +
 .../apache/brooklyn/api/entity/EntityLocal.java |  5 ++
 .../brooklyn/api/location/LocationSpec.java |  3 ++
 .../brooklyn/api/location/MachineLocation.java  |  1 +
 .../brooklyn/api/mgmt/LocationManager.java  |  1 +
 .../java/org/apache/brooklyn/api/mgmt/Task.java |  1 +
 .../brooklyn/api/mgmt/rebind/RebindManager.java |  1 +
 .../mementos/BrooklynMementoManifest.java   |  1 +
 .../org/apache/brooklyn/api/policy/Policy.java  |  1 +
 .../apache/brooklyn/api/policy/PolicySpec.java  |  1 +
 .../brooklyn/api/sensor/EnricherSpec.java   |  2 +
 .../brooklyn/camp/AggregatingCampPlatform.java  | 10 
 .../apache/brooklyn/camp/BasicCampPlatform.java |  4 ++
 .../brooklyn/camp/spi/PlatformRootSummary.java  |  1 +
 .../collection/AggregatingResourceLookup.java   |  2 +
 .../spi/collection/BasicResourceLookup.java |  2 +
 .../camp/spi/collection/ResourceLookup.java |  3 ++
 .../BasicAssemblyTemplateInstantiator.java  |  1 +
 .../apache/brooklyn/camp/spi/pdp/Artifact.java  |  2 +-
 .../camp/spi/pdp/ArtifactRequirement.java   |  2 +-
 .../spi/pdp/AssemblyTemplateConstructor.java|  1 +
 .../brooklyn/camp/spi/resolve/PdpMatcher.java   |  2 +
 .../web/MockAssemblyTemplateInstantiator.java   |  1 +
 .../camp/test/mock/web/MockWebPlatform.java |  2 +
 .../camp/brooklyn/BrooklynCampPlatform.java |  2 +
 .../BrooklynComponentTemplateResolver.java  |  2 +-
 .../creation/BrooklynYamlLocationResolver.java  |  3 +-
 .../creation/BrooklynYamlTypeInstantiator.java  |  1 -
 .../brooklyn/spi/creation/CampResolver.java |  1 -
 .../service/UrlServiceSpecResolver.java |  3 --
 .../spi/dsl/BrooklynDslInterpreter.java |  3 +-
 .../spi/dsl/DslDeferredFunctionCall.java|  2 +-
 .../spi/dsl/methods/BrooklynDslCommon.java  |  4 +-
 .../brooklyn/spi/dsl/methods/DslComponent.java  |  4 +-
 .../camp/brooklyn/AbstractYamlRebindTest.java   |  1 +
 .../camp/brooklyn/AbstractYamlTest.java |  1 +
 .../brooklyn/ConfigInheritanceYamlTest.java |  2 +
 .../camp/brooklyn/ConfigParametersYamlTest.java |  1 +
 .../brooklyn/camp/brooklyn/ConfigYamlTest.java  |  3 ++
 .../DependentConfigPollingYamlTest.java |  2 +
 .../camp/brooklyn/EnrichersYamlTest.java|  5 +-
 .../camp/brooklyn/EntitiesYamlTest.java |  5 +-
 .../camp/brooklyn/LocationsYamlTest.java| 22 
 .../brooklyn/camp/brooklyn/ObjectsYamlTest.java |  2 +-
 .../camp/brooklyn/PoliciesYamlTest.java |  2 +-
 .../brooklyn/TestEntityWithInitConfigImpl.java  |  1 +
 .../TestSensorAndEffectorInitializer.java   |  1 +
 .../camp/brooklyn/WindowsYamlLiveTest.java  |  2 +-
 .../catalog/CatalogYamlLocationTest.java|  2 +-
 .../brooklyn/catalog/CatalogYamlRebindTest.java |  1 +
 .../catalog/CatalogYamlVersioningTest.java  |  1 +
 .../qa/performance/CatalogPerformanceTest.java  |  6 +++
 .../brooklyn/camp/brooklyn/spi/dsl/DslTest.java |  3 ++
 .../camp/server/rest/util/CampRestGuavas.java   |  1 +
 .../camp/server/rest/util/DtoFactory.java   |  4 +-
 .../catalog/internal/BasicBrooklynCatalog.java  |  6 +--
 .../core/catalog/internal/CatalogDto.java   |  2 +-
 .../core/catalog/internal/CatalogUtils.java |  4 ++
 .../brooklyn/core/config/ConfigPredicates.java  |  4 ++
 .../brooklyn/core/config/MapConfigKey.java  |  5 ++
 .../AbstractExternalConfigSupplier.java |  1 +
 .../external/InPlaceExternalConfigSupplier.java |  1 +
 .../PropertiesFileExternalConfigSupplier.java   |  1 +
 .../external/UrlsExternalConfigSupplier.java|  1 +
 .../vault/VaultAppIdExternalConfigSupplier.java |  1 +
 .../config/internal/AbstractConfigMapImpl.java  |  4 +-
 .../internal/AbstractStructuredConfigKey.java   |  2 +
 .../core/config/render/RendererHints.java   |  1 +
 .../core/effector/ExplicitEffector.java |  2 +
 .../brooklyn/core/effector/MethodEffector.java  |  1 +
 .../core/effector/ssh/SshEffectorTasks.java |  5 ++
 .../core/enricher/EnricherDynamicType.java  |  1 +
 .../core/entity/AbstractApplication.java|  1 +
 

[05/17] brooklyn-server git commit: Add missing @Override annotation to method signatures overriding interface methods

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyTest.java
--
diff --git 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyTest.java
 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyTest.java
index bee3eae..5d06b12 100644
--- 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyTest.java
+++ 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/LoadBalancingPolicyTest.java
@@ -316,6 +316,7 @@ public class LoadBalancingPolicyTest extends 
AbstractLoadBalancingPolicyTest {
 pool.policies().add(policy);
 
 Asserts.succeedsEventually(MutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 assertEquals(model.getContainerWorkrates(), 
ImmutableMap.of(containerA, 10d));
 }
@@ -375,6 +376,7 @@ public class LoadBalancingPolicyTest extends 
AbstractLoadBalancingPolicyTest {
 final MockItemEntity item2 = newItem(app, containerB, "2", 13);
 
 Asserts.succeedsEventually(MutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 assertEquals(model.getPoolSize(), 2);
 assertEquals(model.getPoolContents(), 
ImmutableSet.of(containerA, containerB));

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
--
diff --git 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
index bf5661e..ba2c519 100644
--- 
a/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
+++ 
b/policy/src/test/java/org/apache/brooklyn/policy/loadbalancing/MockContainerEntityImpl.java
@@ -165,9 +165,11 @@ public class MockContainerEntityImpl extends 
AbstractGroupImpl implements MockCo
 sensors().set(SERVICE_UP, false);
 }
 
+@Override
 public void offloadAndStop(final MockContainerEntity otherContainer) {
 if (LOG.isDebugEnabled()) LOG.debug("Mocks: offloading container {} to 
{} (items {})", new Object[] {this, otherContainer, getBalanceableItems()});
 runWithLock(ImmutableList.of(this, otherContainer), new Runnable() {
+@Override
 public void run() {
 offloading = false;
 for (Movable item : getBalanceableItems()) {
@@ -188,6 +190,7 @@ public class MockContainerEntityImpl extends 
AbstractGroupImpl implements MockCo
 List entitiesToLockCopy = 
MutableList.copyOf(Iterables.filter(entitiesToLock, Predicates.notNull()));
 List entitiesLocked = Lists.newArrayList();
 Collections.sort(entitiesToLockCopy, new 
Comparator() {
+@Override
 public int compare(MockContainerEntity o1, MockContainerEntity o2) 
{
 return o1.getId().compareTo(o2.getId());
 }});

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/LocationSpec.java
--
diff --git 
a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/LocationSpec.java 
b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/LocationSpec.java
index 70980bc..2947df1 100644
--- 
a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/LocationSpec.java
+++ 
b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/domain/LocationSpec.java
@@ -66,6 +66,7 @@ public class LocationSpec implements HasName, HasConfig, 
Serializable {
 return spec;
 }
 
+@Override
 public Map getConfig() {
 return config;
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/jaas/SecurityProviderHttpSession.java
--
diff --git 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/jaas/SecurityProviderHttpSession.java
 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/jaas/SecurityProviderHttpSession.java
index 188df40..98f1e6d 100644
--- 
a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/jaas/SecurityProviderHttpSession.java
+++ 
b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/security/jaas/SecurityProviderHttpSession.java
@@ -62,6 +62,7 @@ public class SecurityProviderHttpSession implements 
HttpSession {
 return 0;
  

[02/17] brooklyn-server git commit: Add missing @Override annotations

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/core/src/test/java/org/apache/brooklyn/core/enricher/BasicEnricherTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/enricher/BasicEnricherTest.java 
b/core/src/test/java/org/apache/brooklyn/core/enricher/BasicEnricherTest.java
index 6d58be0a..ae61d0a 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/enricher/BasicEnricherTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/enricher/BasicEnricherTest.java
@@ -48,6 +48,7 @@ public class BasicEnricherTest extends 
BrooklynAppUnitTestSupport {
 // TODO These tests are a copy of BasicPolicyTest, which is a code smell.
 // However, the src/main/java code does not contain as much duplication.
 
+@Override
 protected void setUpApp() {
 EntitySpec appSpec = 
EntitySpec.create(TestApplication.class, TestApplicationNoEnrichersImpl.class)
 .configure(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, 
shouldSkipOnBoxBaseDirResolution());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/core/src/test/java/org/apache/brooklyn/core/entity/ApplicationLifecycleStateStressTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/ApplicationLifecycleStateStressTest.java
 
b/core/src/test/java/org/apache/brooklyn/core/entity/ApplicationLifecycleStateStressTest.java
index c4b288c..f333b43 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/ApplicationLifecycleStateStressTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/ApplicationLifecycleStateStressTest.java
@@ -27,46 +27,57 @@ public class ApplicationLifecycleStateStressTest extends 
ApplicationLifecycleSta
 // invocationCount defined on this class, rather than the simple `@Test` 
annotation on 
 // the super-class (without redefining all the public methods here!)?
 
+@Override
 public void testHappyPathEmptyApp() throws Exception {
 super.testHappyPathEmptyApp();
 }
 
+@Override
 public void testHappyPathWithChild() throws Exception {
 super.testHappyPathWithChild();
 }
 
+@Override
 public void testOnlyChildFailsToStartCausesAppToFail() throws Exception {
 super.testOnlyChildFailsToStartCausesAppToFail();
 }
 
+@Override
 public void testSomeChildFailsOnStartCausesAppToFail() throws Exception {
 super.testSomeChildFailsOnStartCausesAppToFail();
 }
 
+@Override
 public void testOnlyChildFailsToStartThenRecoversCausesAppToRecover() 
throws Exception {
 super.testOnlyChildFailsToStartThenRecoversCausesAppToRecover();
 }
 
+@Override
 public void testSomeChildFailsToStartThenRecoversCausesAppToRecover() 
throws Exception {
 super.testSomeChildFailsToStartThenRecoversCausesAppToRecover();
 }
 
+@Override
 public void testStartsThenOnlyChildFailsCausesAppToFail() throws Exception 
{
 super.testStartsThenOnlyChildFailsCausesAppToFail();
 }
 
+@Override
 public void testStartsThenSomeChildFailsCausesAppToFail() throws Exception 
{
 super.testStartsThenSomeChildFailsCausesAppToFail();
 }
 
+@Override
 public void testChildFailuresOnStartButWithQuorumCausesAppToSucceed() 
throws Exception {
 super.testChildFailuresOnStartButWithQuorumCausesAppToSucceed();
 }
 
+@Override
 public void testStartsThenChildFailsButWithQuorumCausesAppToSucceed() 
throws Exception {
 super.testStartsThenChildFailsButWithQuorumCausesAppToSucceed();
 }
 
+@Override
 public void testStartsThenChildFailsButWithQuorumCausesAppToStayHealthy() 
throws Exception {
 super.testStartsThenChildFailsButWithQuorumCausesAppToStayHealthy();
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
--
diff --git 
a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java 
b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
index 84c7eef..3d67337 100644
--- 
a/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
+++ 
b/core/src/test/java/org/apache/brooklyn/core/entity/EntityAutomanagedTest.java
@@ -59,6 +59,7 @@ public class EntityAutomanagedTest extends 
BrooklynAppUnitTestSupport {
 
 protected RecordingCollectionChangeListener listener;
 
+@Override
 @BeforeMethod(alwaysRun=true)
 public void setUp() throws Exception {
 super.setUp();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/0d2d5d6a/core/src/test/java/org/apache/brooklyn/core/feed/PollerTest.java

[08/17] brooklyn-server git commit: Add missing @Override annotation to method signatures overriding interface methods

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/core/src/main/java/org/apache/brooklyn/core/location/geo/MaxMind2HostGeoLookup.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/location/geo/MaxMind2HostGeoLookup.java
 
b/core/src/main/java/org/apache/brooklyn/core/location/geo/MaxMind2HostGeoLookup.java
index 1880441..cb7994c 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/location/geo/MaxMind2HostGeoLookup.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/location/geo/MaxMind2HostGeoLookup.java
@@ -62,6 +62,7 @@ public class MaxMind2HostGeoLookup implements HostGeoLookup {
 return databaseReader;
 }
 
+@Override
 public HostGeoInfo getHostGeoInfo(InetAddress address) throws 
MalformedURLException, IOException {
 if (lookupFailed) return null;
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/core/src/main/java/org/apache/brooklyn/core/location/geo/UtraceHostGeoLookup.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/location/geo/UtraceHostGeoLookup.java
 
b/core/src/main/java/org/apache/brooklyn/core/location/geo/UtraceHostGeoLookup.java
index 12f1b15..16ffa18 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/location/geo/UtraceHostGeoLookup.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/location/geo/UtraceHostGeoLookup.java
@@ -113,6 +113,7 @@ Beyond this you get blacklisted and requests may time out, 
or return none.
 private static long LAST_FAILURE_UTC = -1;
 
 /** does the {@link #retrieveHostGeoInfo(InetAddress)}, but in the 
background with a default timeout */
+@Override
 public HostGeoInfo getHostGeoInfo(InetAddress address) throws 
MalformedURLException, IOException {
 if (Duration.sinceUtc(LAST_FAILURE_UTC).compareTo(RETRY_INTERVAL) < 0) 
{
 // wait at least 60s since a failure

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/BasicMasterChooser.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/BasicMasterChooser.java 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/BasicMasterChooser.java
index 9bb2ea1..c474b66 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/BasicMasterChooser.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/BasicMasterChooser.java
@@ -63,6 +63,7 @@ public abstract class BasicMasterChooser implements 
MasterChooser {
 }
 }
 
+@Override
 public ManagementNodeSyncRecord choose(ManagementPlaneSyncRecord memento, 
Duration heartbeatTimeout, String ownNodeId) {
 if (LOG.isDebugEnabled()) LOG.debug("Choosing new master from 
"+memento.getManagementNodes());
 ManagementNodeSyncRecord me = 
memento.getManagementNodes().get(ownNodeId);

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
index 7e6868c..c9f3a58 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/ha/HighAvailabilityManagerImpl.java
@@ -533,6 +533,7 @@ public class HighAvailabilityManagerImpl implements 
HighAvailabilityManager {
 return myNodeState;
 }
 
+@Override
 public ManagementPlaneSyncRecord getLastManagementPlaneSyncRecord() {
 return lastSyncRecord;
 }
@@ -613,6 +614,7 @@ public class HighAvailabilityManagerImpl implements 
HighAvailabilityManager {
 }
 }
 
+@Override
 public void publishClearNonMaster() {
 ManagementPlaneSyncRecord plane = getLastManagementPlaneSyncRecord();
 if (plane==null || persister==null) {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
index b57e6eb..5a67faa 100644
--- 
a/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
+++ 
b/core/src/main/java/org/apache/brooklyn/core/mgmt/internal/AbstractManagementContext.java
@@ -335,6 +335,7 @@ public abstract class AbstractManagementContext implements 

[12/17] brooklyn-server git commit: Remove unused imports

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/070d4ef5/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
index c05d15b..f7b52fd 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
+++ 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/BrooklynPropertiesSecurityFilterTest.java
@@ -35,7 +35,6 @@ import org.eclipse.jetty.server.Server;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.Test;
-import org.apache.brooklyn.rest.security.provider.AnyoneSecurityProvider;
 import org.apache.brooklyn.util.collections.MutableMap;
 import org.apache.brooklyn.util.http.HttpTool;
 import org.apache.brooklyn.util.http.HttpToolResponse;

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/070d4ef5/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
index ad16226..7e11474 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
+++ 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/entitlement/AbstractRestApiEntitlementsTest.java
@@ -18,10 +18,7 @@
  */
 package org.apache.brooklyn.rest.entitlement;
 
-import static org.apache.brooklyn.util.http.HttpTool.httpClientBuilder;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
 import java.net.URI;
 
 import org.apache.brooklyn.api.entity.EntitySpec;
@@ -33,15 +30,10 @@ import 
org.apache.brooklyn.core.mgmt.entitlement.PerUserEntitlementManager;
 import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
 import org.apache.brooklyn.core.test.entity.TestApplication;
 import org.apache.brooklyn.core.test.entity.TestEntity;
-import org.apache.brooklyn.rest.BrooklynRestApiLauncher;
 import org.apache.brooklyn.rest.BrooklynRestApiLauncherTestFixture;
 import org.apache.brooklyn.rest.BrooklynWebConfig;
-import org.apache.brooklyn.util.http.HttpAsserts;
 import org.apache.brooklyn.util.http.HttpTool;
-import org.apache.brooklyn.util.http.HttpTool.HttpClientBuilder;
 import org.apache.brooklyn.util.http.HttpToolResponse;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.HttpClient;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/070d4ef5/rest/rest-server/src/test/java/org/apache/brooklyn/rest/resources/ServerResourceIntegrationTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/resources/ServerResourceIntegrationTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/resources/ServerResourceIntegrationTest.java
index 5daa5fa..1cae978 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/resources/ServerResourceIntegrationTest.java
+++ 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/resources/ServerResourceIntegrationTest.java
@@ -29,7 +29,6 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.core.internal.BrooklynProperties;
 import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
 import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
-import org.apache.brooklyn.rest.BrooklynRestApiLauncher;
 import org.apache.brooklyn.rest.BrooklynRestApiLauncherTestFixture;
 import org.apache.brooklyn.rest.security.provider.TestSecurityProvider;
 import org.apache.brooklyn.util.http.HttpAsserts;

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/070d4ef5/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
--
diff --git 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
 
b/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
index 09ac6cc..edad261 100644
--- 
a/rest/rest-server/src/test/java/org/apache/brooklyn/rest/util/json/BrooklynJacksonSerializerIntegrationTest.java
+++ 

[04/17] brooklyn-server git commit: Add missing @Override annotation to method signatures overriding interface methods

2017-01-23 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e61caea4/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java
--
diff --git 
a/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java 
b/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java
index 5326bd2..08434e8 100644
--- a/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/feed/jmx/JmxFeedTest.java
@@ -253,6 +253,7 @@ public class JmxFeedTest {
 GeneralisedDynamicMBean mbean = jmxService.registerMBean(
 Collections.emptyMap(), 
 ImmutableMap.of(opInfo, new Function() {
+@Override
 public Integer apply(Object[] args) {
 invocationCount.incrementAndGet(); return 
opReturnVal;
 }}),
@@ -266,6 +267,7 @@ public class JmxFeedTest {
 .build();
 
 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 assertTrue(invocationCount.get() > 0, 
"invocationCount="+invocationCount);
 assertEquals(entity.getAttribute(intAttribute), 
(Integer)opReturnVal);
@@ -281,6 +283,7 @@ public class JmxFeedTest {
 GeneralisedDynamicMBean mbean = jmxService.registerMBean(
 Collections.emptyMap(), 
 ImmutableMap.of(opInfo, new Function() {
+@Override
 public String apply(Object[] args) {
 return args[0]+"suffix";
 }}),
@@ -313,6 +316,7 @@ public class JmxFeedTest {
 // Notification updates the sensor
 // Note that subscription is done async, so can't just send 
notification immediately during test.
 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 sendNotification(mbean, one, sequence.getAndIncrement(), 123);
 assertEquals(entity.getAttribute(intAttribute), (Integer)123);
@@ -322,6 +326,7 @@ public class JmxFeedTest {
 sendNotification(mbean, two, sequence.getAndIncrement(), -1);
 
 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 assertEquals(entity.getAttribute(intAttribute), (Integer)123);
 }});
@@ -339,6 +344,7 @@ public class JmxFeedTest {
 .objectName(objectName)
 
.notificationFilter(JmxNotificationFilters.matchesType(one))
 .onNotification(new Function() {
+@Override
 public Integer apply(Notification notif) {
 return (Integer) notif.getUserData();
 }
@@ -349,6 +355,7 @@ public class JmxFeedTest {
 // Notification updates the sensor
 // Note that subscription is done async, so can't just send 
notification immediately during test.
 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 sendNotification(mbean, one, sequence.getAndIncrement(), 123);
 assertEquals(entity.getAttribute(intAttribute), (Integer)123);
@@ -372,6 +379,7 @@ public class JmxFeedTest {
 // Notification updates the sensor
 // Note that subscription is done async, so can't just send 
notification immediately during test.
 Asserts.succeedsEventually(ImmutableMap.of("timeout", TIMEOUT_MS), new 
Runnable() {
+@Override
 public void run() {
 sendNotification(mbean, one, sequence.getAndIncrement(), 123);
 assertEquals(entity.getAttribute(intAttribute), (Integer)123);
@@ -393,6 +401,7 @@ public class JmxFeedTest {
 
 final List received = Lists.newArrayList();
 app2.subscriptions().subscribe(null, EntityWithEmitter.MY_NOTIF, 
new SensorEventListener() {
+@Override
 public void onEvent(SensorEvent event) {
 received.add(event);
 }});
@@ -402,6 +411,7 @@ public class JmxFeedTest {
 
 jmxHelper.connect(TIMEOUT_MS);
 jmxHelper.addNotificationListener(jmxObjectName, new 
NotificationListener() {
+@Override
 public void handleNotification(Notification notif, Object 
callback) {
 if (notif.getType().equals("one")) {
  

[1/2] brooklyn-server git commit: Adds test for catalog-effector from OSGi bundle

2017-01-23 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master c5fc588c3 -> 8ad5578c1


Adds test for catalog-effector from OSGi bundle

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

Branch: refs/heads/master
Commit: d893d529bccb2cea3b4511a4409a378d2253b8be
Parents: 494ae6f
Author: Aled Sage 
Authored: Thu Jan 19 12:37:42 2017 +
Committer: Aled Sage 
Committed: Thu Jan 19 12:37:42 2017 +

--
 .../CatalogOsgiVersionMoreEntityRebindTest.java | 41 
 1 file changed, 41 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/d893d529/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
index b4af697..cee7a4d 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogOsgiVersionMoreEntityRebindTest.java
@@ -20,6 +20,7 @@ package org.apache.brooklyn.camp.brooklyn.catalog;
 
 import static org.testng.Assert.assertEquals;
 
+import org.apache.brooklyn.api.effector.Effector;
 import org.apache.brooklyn.api.entity.Entity;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.location.LocationSpec;
@@ -39,6 +40,7 @@ import org.slf4j.LoggerFactory;
 import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 
 /** Many of the same tests as per {@link OsgiVersionMoreEntityTest} but using 
YAML for catalog and entities, so catalog item ID is set automatically */
@@ -128,4 +130,43 @@ public class CatalogOsgiVersionMoreEntityRebindTest 
extends AbstractYamlRebindTe
 Location newLoc = Iterables.getOnlyElement(newEntity.getLocations());
 assertEquals(newLoc.getClass().getName(), locationType);
 }
+
+@Test
+public void testEffectorInBundleReferencedByStockCatalogItem() throws 
Exception {
+
TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_PATH);
+
+String effectorType = 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_EFFECTOR;
+
+addCatalogItems(
+"brooklyn.catalog:",
+"  id: wrapped-entity",
+"  version: 1.0",
+"  item:",
+"services:",
+"- type: " + TestEntity.class.getName());
+
+addCatalogItems(
+"brooklyn.catalog:",
+"  id: with-effector-from-library",
+"  version: 1.0",
+"  brooklyn.libraries:",
+"  - classpath:" + 
OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_COM_EXAMPLE_PATH,
+"  item:",
+"services:",
+"- type: " + BasicApplication.class.getName(),
+"  brooklyn.children:",
+"  - type: wrapped-entity:1.0",
+"brooklyn.initializers:",
+"- type: " + effectorType);
+
+Entity app = createAndStartApplication("services: [ { type: 
'with-effector-from-library:1.0' } ]");
+Entity entity = Iterables.getOnlyElement(app.getChildren());
+Effector effector = 
entity.getEntityType().getEffectorByName("myEffector").get();
+entity.invoke(effector, ImmutableMap.of()).get();
+
+StartableApplication newApp = rebind();
+Entity newEntity = Iterables.getOnlyElement(newApp.getChildren());
+Effector newEffector = 
newEntity.getEntityType().getEffectorByName("myEffector").get();
+newEntity.invoke(newEffector, ImmutableMap.of()).get();
+}
 }



[1/2] brooklyn-server git commit: BROOKLYN-426: avoid propagating NoClassDefFoundError

2017-01-23 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master a9047f64c -> c5fc588c3


BROOKLYN-426: avoid propagating NoClassDefFoundError

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

Branch: refs/heads/master
Commit: 1c20df2590f7b2104d3f6f70b68a586d15bbc3f7
Parents: 4d2f7cc
Author: Aled Sage 
Authored: Thu Jan 19 12:38:52 2017 +
Committer: Aled Sage 
Committed: Thu Jan 19 12:38:52 2017 +

--
 .../org/apache/brooklyn/util/core/LoaderDispatcher.java | 12 
 1 file changed, 12 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/1c20df25/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java
--
diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java 
b/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java
index f45c6d1..8fffa9d 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/LoaderDispatcher.java
@@ -44,6 +44,10 @@ public interface LoaderDispatcher {
 return 
Maybe.of(SystemFrameworkLoader.get().loadClassFromBundle(className, 
bundle));
 } catch (ClassNotFoundException e) {
 return Maybe.absent("Failed to load class " + className + " 
from bundle " + bundle, e);
+} catch (NoClassDefFoundError e) {
+// Can happen if a bundle misbehaves (e.g. it doesn't include 
Import-Package for 
+// all the packages it really needs.
+return Maybe.absent("Failed to load class " + className + " 
from bundle " + bundle, e);
 }
 }
 
@@ -54,6 +58,10 @@ public interface LoaderDispatcher {
 } catch (IllegalStateException e) {
 propagateIfCauseNotClassNotFound(e);
 return Maybe.absent("Failed to load class " + className + " 
from loader " + loader, e);
+} catch (NoClassDefFoundError e) {
+// Can happen if a bundle misbehaves (e.g. it doesn't include 
Import-Package for 
+// all the packages it really needs.
+return Maybe.absent("Failed to load class " + className + " 
from loader " + loader, e);
 }
 }
 
@@ -68,6 +76,10 @@ public interface LoaderDispatcher {
 return Maybe.absent("Failed to load class " + className + " 
from class loader " + classLoader, e);
 } catch (ClassNotFoundException e) {
 return Maybe.absent("Failed to load class " + className + " 
from class loader " + classLoader, e);
+} catch (NoClassDefFoundError e) {
+// Can happen if a bundle misbehaves (e.g. it doesn't include 
Import-Package for 
+// all the packages it really needs.
+return Maybe.absent("Failed to load class " + className + " 
from class loader " + classLoader, e);
 }
 }
 



[2/2] brooklyn-server git commit: This closes #526

2017-01-19 Thread sjcorbett
This closes #526

Add removeSecurityGroup by id


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

Branch: refs/heads/master
Commit: 4d2f7cc789fbd9f9eaa00a3e477e2e56c28f2d52
Parents: 494ae6f bbe0e04
Author: Sam Corbett 
Authored: Thu Jan 19 11:29:27 2017 +
Committer: Sam Corbett 
Committed: Thu Jan 19 11:29:27 2017 +

--
 .../jclouds/networking/SecurityGroupEditor.java | 32 +++-
 1 file changed, 25 insertions(+), 7 deletions(-)
--




[2/2] brooklyn-server git commit: This closes #506

2017-01-10 Thread sjcorbett
This closes #506

AbstractYamlTest: make setUpPlatform overridable


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

Branch: refs/heads/master
Commit: 07e5503d8439be1155056513110ba41e104e52fc
Parents: 1d2d535 2759528
Author: Sam Corbett 
Authored: Tue Jan 10 16:29:56 2017 +
Committer: Sam Corbett 
Committed: Tue Jan 10 16:29:56 2017 +

--
 .../brooklyn/camp/brooklyn/AbstractYamlTest.java  | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)
--




[1/2] brooklyn-server git commit: AbstractYamlTest: make setUpPlatform overridable

2017-01-10 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 1d2d53504 -> 07e5503d8


AbstractYamlTest: make setUpPlatform overridable

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

Branch: refs/heads/master
Commit: 27595281a34fa4f2c0eace5a80844b4aff908cdd
Parents: 84eba7e
Author: Aled Sage 
Authored: Fri Dec 16 14:11:03 2016 +
Committer: Aled Sage 
Committed: Fri Jan 6 10:22:11 2017 +

--
 .../brooklyn/camp/brooklyn/AbstractYamlTest.java  | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/27595281/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
--
diff --git 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
index e0eef7d..f30ae95 100644
--- 
a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
+++ 
b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/AbstractYamlTest.java
@@ -69,6 +69,11 @@ public abstract class AbstractYamlTest {
 @BeforeMethod(alwaysRun = true)
 public void setUp() throws Exception {
 forceUpdate = false;
+brooklynMgmt = setUpPlatform();
+catalog = brooklynMgmt.getCatalog();
+}
+
+protected ManagementContext setUpPlatform() {
 launcher = new BrooklynCampPlatformLauncherNoServer() {
 @Override
 protected LocalManagementContext newMgmtContext() {
@@ -76,11 +81,10 @@ public abstract class AbstractYamlTest {
 }
 };
 launcher.launch();
-brooklynMgmt = launcher.getBrooklynMgmt();
-catalog = brooklynMgmt.getCatalog();
 platform = launcher.getCampPlatform();
+return launcher.getBrooklynMgmt();
 }
-
+
 protected LocalManagementContext newTestManagementContext() {
 Builder builder = 
LocalManagementContextForTests.builder(true).disableOsgi(disableOsgi());
 if (useDefaultProperties()) {
@@ -101,6 +105,10 @@ public abstract class AbstractYamlTest {
 @AfterMethod(alwaysRun = true)
 public void tearDown() throws Exception {
 if (brooklynMgmt != null) Entities.destroyAll(brooklynMgmt);
+tearDownPlatform();
+}
+
+protected void tearDownPlatform() throws Exception {
 if (launcher != null) launcher.stopServers();
 }
 



[1/2] brooklyn-server git commit: Add jcloudsProviderRenames.properties

2017-01-10 Thread sjcorbett
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 62c55b829 -> 0c04484c1


Add jcloudsProviderRenames.properties


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

Branch: refs/heads/master
Commit: 354826a8191fce51cb68bdb76fb1bf8ad8435504
Parents: 62c55b8
Author: Duncan Godwin 
Authored: Tue Jan 10 12:16:24 2017 +
Committer: Duncan Godwin 
Committed: Tue Jan 10 12:16:24 2017 +

--
 .../persist/jcloudsProviderRenames.properties   | 20 
 1 file changed, 20 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/354826a8/core/src/main/resources/org/apache/brooklyn/core/mgmt/persist/jcloudsProviderRenames.properties
--
diff --git 
a/core/src/main/resources/org/apache/brooklyn/core/mgmt/persist/jcloudsProviderRenames.properties
 
b/core/src/main/resources/org/apache/brooklyn/core/mgmt/persist/jcloudsProviderRenames.properties
new file mode 100644
index 000..6f32e12
--- /dev/null
+++ 
b/core/src/main/resources/org/apache/brooklyn/core/mgmt/persist/jcloudsProviderRenames.properties
@@ -0,0 +1,20 @@
+#
+# 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.
+#
+openstack-mitaka-nova : openstack-nova
+openstack-devtest-compute : openstack-nova
\ No newline at end of file



[2/2] brooklyn-server git commit: This closes #511

2017-01-10 Thread sjcorbett
This closes #511

Add jcloudsProviderRenames.properties


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

Branch: refs/heads/master
Commit: 0c04484c16532f5edb5e19b48e3868ae6eff2614
Parents: 62c55b8 354826a
Author: Sam Corbett 
Authored: Tue Jan 10 12:22:20 2017 +
Committer: Sam Corbett 
Committed: Tue Jan 10 12:22:20 2017 +

--
 .../persist/jcloudsProviderRenames.properties   | 20 
 1 file changed, 20 insertions(+)
--




[5/7] brooklyn-server git commit: Extract CustomizeTemplateOptions and its implementations from JcloudsLocation

2016-12-20 Thread sjcorbett
Extract CustomizeTemplateOptions and its implementations from JcloudsLocation


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

Branch: refs/heads/master
Commit: 7582ebeb7881478a04f82b1788c0a890a1261838
Parents: e0c6e7e
Author: Sam Corbett 
Authored: Fri Dec 9 16:46:46 2016 +
Committer: Sam Corbett 
Committed: Tue Dec 20 15:39:01 2016 +

--
 .../location/jclouds/JcloudsLocation.java   | 348 +++
 .../customize/AutoAssignFloatingIpOption.java   |  41 +++
 .../customize/AutoCreateFloatingIpsOption.java  |  41 +++
 .../customize/AutoGenerateKeypairsOption.java   |  41 +++
 .../templates/customize/DomainNameOption.java   |  39 +++
 .../ExtraPublicKeyDataToAuthOption.java |  52 +++
 .../templates/customize/InboundPortsOption.java |  49 +++
 .../templates/customize/KeyPairOption.java  |  44 +++
 .../templates/customize/LoginUserOption.java|  31 ++
 .../customize/LoginUserPasswordOption.java  |  31 ++
 .../LoginUserPrivateKeyDataOption.java  |  31 ++
 .../LoginUserPrivateKeyFileOption.java  |  51 +++
 .../templates/customize/NetworkNameOption.java  |  65 
 .../templates/customize/RunAsRootOption.java|  29 ++
 .../customize/SecurityGroupOption.java  |  63 
 .../templates/customize/StringTagsOption.java   |  40 +++
 .../customize/TemplateOptionCustomizer.java |  29 ++
 .../customize/TemplateOptionCustomizers.java| 103 ++
 .../customize/TemplateOptionsOption.java|  55 +++
 .../customize/UserDataUuencodedOption.java  |  53 +++
 .../customize/UserMetadataMapOption.java|  52 +++
 .../customize/UserMetadataStringOption.java |  80 +
 ...ationTemplateOptionsCustomisersLiveTest.java |   3 +-
 .../MachineLifecycleEffectorTasks.java  |   2 +
 .../org/apache/brooklyn/util/text/Strings.java  |  30 +-
 25 files changed, 1108 insertions(+), 295 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7582ebeb/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index 7b7e458..fd06a9a 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -29,7 +29,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -79,6 +78,8 @@ import 
org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore;
 import 
org.apache.brooklyn.core.mgmt.persist.jclouds.JcloudsBlobStoreBasedObjectStore;
 import 
org.apache.brooklyn.location.jclouds.networking.JcloudsPortForwarderExtension;
 import org.apache.brooklyn.location.jclouds.templates.PortableTemplateBuilder;
+import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateOptionCustomizer;
+import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateOptionCustomizers;
 import org.apache.brooklyn.location.jclouds.zone.AwsAvailabilityZoneExtension;
 import org.apache.brooklyn.location.ssh.SshMachineLocation;
 import org.apache.brooklyn.location.winrm.WinRmMachineLocation;
@@ -90,7 +91,6 @@ import org.apache.brooklyn.util.core.ClassLoaderUtils;
 import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.config.ResolvingConfigBag;
-import org.apache.brooklyn.util.core.flags.MethodCoercions;
 import org.apache.brooklyn.util.core.flags.SetFromFlag;
 import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.core.internal.ssh.ShellTool;
@@ -114,7 +114,6 @@ import org.apache.brooklyn.util.javalang.Reflections;
 import org.apache.brooklyn.util.net.Cidr;
 import org.apache.brooklyn.util.net.Networking;
 import org.apache.brooklyn.util.net.Protocol;
-import org.apache.brooklyn.util.os.Os;
 import org.apache.brooklyn.util.repeat.Repeater;
 import org.apache.brooklyn.util.ssh.BashCommands;
 import org.apache.brooklyn.util.ssh.IptablesCommands;
@@ -129,8 +128,6 @@ import org.apache.brooklyn.util.time.Duration;
 import 

[3/7] brooklyn-server git commit: Extract RebindToMachinePredicate from JcloudsLocation

2016-12-20 Thread sjcorbett
Extract RebindToMachinePredicate from JcloudsLocation


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

Branch: refs/heads/master
Commit: e0c6e7e65f3e7a4a9f5b09fc1a35ccb0c7511bfe
Parents: c93a79d
Author: Sam Corbett 
Authored: Wed Dec 7 12:06:02 2016 +
Committer: Sam Corbett 
Committed: Tue Dec 20 15:00:27 2016 +

--
 .../location/jclouds/JcloudsLocation.java   | 58 -
 .../jclouds/RebindToMachinePredicate.java   | 85 
 2 files changed, 85 insertions(+), 58 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0c6e7e6/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index c680815..7b7e458 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -2234,64 +2234,6 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 return new RebindToMachinePredicate(config);
 }
 
-/**
- * Determines whether a machine may be rebinded to by comparing the given 
id, hostname and region
- * against the node's id, hostname, provider id and public addresses.
- */
-private static class RebindToMachinePredicate implements 
Predicate {
-
-final String rawId;
-final String rawHostname;
-final String rawRegion;
-
-public RebindToMachinePredicate(ConfigBag config) {
-rawId = (String) config.getStringKey("id");
-rawHostname = (String) config.getStringKey("hostname");
-rawRegion = (String) config.getStringKey("region");
-}
-
-@Override
-public boolean apply(ComputeMetadata input) {
-// ID exact match
-if (rawId != null) {
-// Second is AWS format
-if (rawId.equals(input.getId()) || rawRegion != null && 
(rawRegion + "/" + rawId).equals(input.getId())) {
-return true;
-}
-}
-
-// else do node metadata lookup
-if (input instanceof NodeMetadata) {
-NodeMetadata node = NodeMetadata.class.cast(input);
-if (rawHostname != null && 
rawHostname.equalsIgnoreCase(node.getHostname()))
-return true;
-if (rawHostname != null && 
node.getPublicAddresses().contains(rawHostname))
-return true;
-if (rawId != null && 
rawId.equalsIgnoreCase(node.getHostname()))
-return true;
-if (rawId != null && node.getPublicAddresses().contains(rawId))
-return true;
-// don't do private IPs because they might be repeated
-if (rawId != null && 
rawId.equalsIgnoreCase(node.getProviderId()))
-return true;
-if (rawHostname != null && 
rawHostname.equalsIgnoreCase(node.getProviderId()))
-return true;
-}
-
-return false;
-}
-
-@Override
-public String toString() {
-return Objects.toStringHelper(this)
-.omitNullValues()
-.add("id", rawId)
-.add("hostname", rawHostname)
-.add("region", rawRegion)
-.toString();
-}
-}
-
 protected JcloudsSshMachineLocation registerJcloudsSshMachineLocation(
 ComputeService computeService, NodeMetadata node, 
Optional template,
 LoginCredentials credentials, HostAndPort managementHostAndPort, 
ConfigBag setup) throws IOException {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0c6e7e6/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/RebindToMachinePredicate.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/RebindToMachinePredicate.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/RebindToMachinePredicate.java
new file mode 100644
index 000..5cb6e64
--- /dev/null
+++ 

[6/7] brooklyn-server git commit: Extract CustomizeTemplateBuilder from JcloudsLocation

2016-12-20 Thread sjcorbett
Extract CustomizeTemplateBuilder from JcloudsLocation


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

Branch: refs/heads/master
Commit: f89ba453253cadf2d0df1bf05d741543d8e36a9b
Parents: 7582ebe
Author: Sam Corbett 
Authored: Fri Dec 9 17:29:55 2016 +
Committer: Sam Corbett 
Committed: Tue Dec 20 15:40:12 2016 +

--
 .../location/jclouds/JcloudsLocation.java   |  88 +++---
 .../customize/TemplateBuilderCustomizer.java|  29 
 .../customize/TemplateBuilderCustomizers.java   | 164 +++
 3 files changed, 213 insertions(+), 68 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/f89ba453/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
index fd06a9a..67aa826 100644
--- 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/JcloudsLocation.java
@@ -78,6 +78,8 @@ import 
org.apache.brooklyn.core.mgmt.persist.PersistenceObjectStore;
 import 
org.apache.brooklyn.core.mgmt.persist.jclouds.JcloudsBlobStoreBasedObjectStore;
 import 
org.apache.brooklyn.location.jclouds.networking.JcloudsPortForwarderExtension;
 import org.apache.brooklyn.location.jclouds.templates.PortableTemplateBuilder;
+import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateBuilderCustomizer;
+import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateBuilderCustomizers;
 import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateOptionCustomizer;
 import 
org.apache.brooklyn.location.jclouds.templates.customize.TemplateOptionCustomizers;
 import org.apache.brooklyn.location.jclouds.zone.AwsAvailabilityZoneExtension;
@@ -92,7 +94,6 @@ import org.apache.brooklyn.util.core.ResourceUtils;
 import org.apache.brooklyn.util.core.config.ConfigBag;
 import org.apache.brooklyn.util.core.config.ResolvingConfigBag;
 import org.apache.brooklyn.util.core.flags.SetFromFlag;
-import org.apache.brooklyn.util.core.flags.TypeCoercions;
 import org.apache.brooklyn.util.core.internal.ssh.ShellTool;
 import org.apache.brooklyn.util.core.internal.ssh.SshTool;
 import org.apache.brooklyn.util.core.internal.winrm.WinRmTool;
@@ -109,7 +110,6 @@ import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.exceptions.ReferenceWithError;
 import org.apache.brooklyn.util.exceptions.UserFacingException;
 import org.apache.brooklyn.util.guava.Maybe;
-import org.apache.brooklyn.util.javalang.Enums;
 import org.apache.brooklyn.util.javalang.Reflections;
 import org.apache.brooklyn.util.net.Cidr;
 import org.apache.brooklyn.util.net.Networking;
@@ -120,7 +120,6 @@ import org.apache.brooklyn.util.ssh.IptablesCommands;
 import org.apache.brooklyn.util.ssh.IptablesCommands.Chain;
 import org.apache.brooklyn.util.ssh.IptablesCommands.Policy;
 import org.apache.brooklyn.util.stream.Streams;
-import org.apache.brooklyn.util.text.ByteSizeStrings;
 import org.apache.brooklyn.util.text.KeyValueParser;
 import org.apache.brooklyn.util.text.StringPredicates;
 import org.apache.brooklyn.util.text.Strings;
@@ -141,7 +140,6 @@ import org.jclouds.compute.domain.OperatingSystem;
 import org.jclouds.compute.domain.OsFamily;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
-import org.jclouds.compute.domain.TemplateBuilderSpec;
 import org.jclouds.compute.options.TemplateOptions;
 import org.jclouds.domain.Credentials;
 import org.jclouds.domain.LocationScope;
@@ -1232,74 +1230,27 @@ public class JcloudsLocation extends 
AbstractCloudMachineProvisioningLocation im
 
 // - constructing the template, etc 
 
-private interface CustomizeTemplateBuilder {
-void apply(TemplateBuilder tb, ConfigBag props, Object v);
-}
-
 /** @deprecated since 0.11.0 use {@link TemplateOptionCustomizer} instead 
*/
 @Deprecated
 public interface CustomizeTemplateOptions extends TemplateOptionCustomizer 
{
 }
 
 /** properties which cause customization of the TemplateBuilder */
-public static final Map 
SUPPORTED_TEMPLATE_BUILDER_PROPERTIES = 

[2/7] brooklyn-server git commit: Move JcloudsLocation's logic for creating users to separate class

2016-12-20 Thread sjcorbett
Move JcloudsLocation's logic for creating users to separate class


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

Branch: refs/heads/master
Commit: c93a79de41d32616e5cec03d07632daefe0d28ca
Parents: 2cbe309
Author: Sam Corbett 
Authored: Wed Dec 7 11:56:40 2016 +
Committer: Sam Corbett 
Committed: Tue Dec 20 15:00:26 2016 +

--
 .../location/jclouds/CreateUserStatements.java  | 303 ++
 .../location/jclouds/JcloudsLocation.java   | 405 ---
 .../location/jclouds/JcloudsLocationTest.java   |   6 +-
 3 files changed, 393 insertions(+), 321 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/c93a79de/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/CreateUserStatements.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/CreateUserStatements.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/CreateUserStatements.java
new file mode 100644
index 000..d275fc1
--- /dev/null
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/CreateUserStatements.java
@@ -0,0 +1,303 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.brooklyn.location.jclouds;
+
+import static org.apache.brooklyn.util.JavaGroovyEquivalents.groovyTruth;
+
+import java.security.KeyPair;
+import java.util.List;
+import javax.annotation.Nullable;
+
+import org.apache.brooklyn.core.location.LocationConfigUtils;
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.core.crypto.SecureKeys;
+import org.apache.brooklyn.util.text.Identifiers;
+import org.apache.brooklyn.util.text.Strings;
+import org.jclouds.compute.domain.Image;
+import org.jclouds.compute.functions.Sha512Crypt;
+import org.jclouds.domain.LoginCredentials;
+import org.jclouds.scriptbuilder.domain.LiteralStatement;
+import org.jclouds.scriptbuilder.domain.Statement;
+import org.jclouds.scriptbuilder.statements.login.AdminAccess;
+import org.jclouds.scriptbuilder.statements.login.ReplaceShadowPasswordEntry;
+import org.jclouds.scriptbuilder.statements.ssh.AuthorizeRSAPublicKeys;
+import org.jclouds.scriptbuilder.statements.ssh.SshStatements;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
+
+public class CreateUserStatements {
+
+private static final Logger LOG = 
LoggerFactory.getLogger(CreateUserStatements.class);
+
+private final LoginCredentials createdUserCredentials;
+private final List statements;
+
+CreateUserStatements(LoginCredentials creds, List statements) {
+this.createdUserCredentials = creds;
+this.statements = statements;
+}
+
+public LoginCredentials credentials() {
+return createdUserCredentials;
+}
+
+public List statements() {
+return statements;
+}
+
+/**
+ * Returns the commands required to create the user, to be used for 
connecting (e.g. over ssh)
+ * to the machine; also returns the expected login credentials.
+ * 
+ * The returned login credentials may be null if we haven't done any 
user-setup and no specific
+ * user was supplied (i.e. if {@code dontCreateUser} was true and {@code 
user} was null or blank).
+ * In which case, the caller should use the jclouds node's login 
credentials.
+ * 
+ * There are quite a few configuration options. Depending on their values, 
the user-creation
+ * behaves differently:
+ * 
+ * {@code dontCreateUser} says not to run 

[4/7] brooklyn-server git commit: Extract CustomizeTemplateOptions and its implementations from JcloudsLocation

2016-12-20 Thread sjcorbett
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/7582ebeb/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/customize/UserMetadataStringOption.java
--
diff --git 
a/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/customize/UserMetadataStringOption.java
 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/customize/UserMetadataStringOption.java
new file mode 100644
index 000..b01fdcb
--- /dev/null
+++ 
b/locations/jclouds/src/main/java/org/apache/brooklyn/location/jclouds/templates/customize/UserMetadataStringOption.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.brooklyn.location.jclouds.templates.customize;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+import org.apache.brooklyn.util.core.config.ConfigBag;
+import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.apache.brooklyn.util.text.Strings;
+import org.jclouds.compute.options.TemplateOptions;
+import org.jclouds.ec2.compute.options.EC2TemplateOptions;
+import org.jclouds.softlayer.compute.options.SoftLayerTemplateOptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class UserMetadataStringOption implements TemplateOptionCustomizer {
+private static final Logger LOG = 
LoggerFactory.getLogger(UserMetadataStringOption.class);
+
+public void apply(TemplateOptions t, ConfigBag props, Object v) {
+if (t instanceof EC2TemplateOptions) {
+// See AWS docs: 
http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/UsingConfig_WinAMI.html#user-data-execution
+if (v == null) return;
+String data = v.toString();
+if (!(data.startsWith("") || 
data.startsWith(""))) {
+data = "