You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2014/07/15 06:42:49 UTC
git commit: [KARAF-3115]add address flag when create a child instance
(cherry picked from commit 71aca23470605f7c78ae7d8bfa99ebef017a79b9)
Repository: karaf
Updated Branches:
refs/heads/master f0aad2014 -> fc5d92b4d
[KARAF-3115]add address flag when create a child instance
(cherry picked from commit 71aca23470605f7c78ae7d8bfa99ebef017a79b9)
Conflicts:
instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/fc5d92b4
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/fc5d92b4
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/fc5d92b4
Branch: refs/heads/master
Commit: fc5d92b4d27525715fb94cc888fd96c50fb40bb0
Parents: f0aad20
Author: Freeman Fang <fr...@gmail.com>
Authored: Mon Jul 14 18:43:06 2014 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Tue Jul 15 12:41:55 2014 +0800
----------------------------------------------------------------------
.../karaf/instance/command/CreateCommand.java | 5 +++-
.../karaf/instance/core/InstanceSettings.java | 15 +++++++++++-
.../core/internal/InstanceServiceImpl.java | 25 +++++++++++++++++++-
.../resources/etc/org.apache.karaf.shell.cfg | 2 +-
4 files changed, 43 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/fc5d92b4/instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
----------------------------------------------------------------------
diff --git a/instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java b/instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
index 9efc268..2d4ac1c 100644
--- a/instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
+++ b/instance/src/main/java/org/apache/karaf/instance/command/CreateCommand.java
@@ -72,6 +72,9 @@ public class CreateCommand extends InstanceCommandSupport
@Option(name = "-v", aliases = {"--verbose"}, description = "Display actions performed by the command (disabled by default)", required = false, multiValued = false)
boolean verbose = false;
+ @Option(name = "-a", aliases = {"--adderss"}, description = "IP address of the new container instance running on(When Virtual IP is used)", required = false, multiValued = false)
+ String address = "0.0.0.0";
+
@Argument(index = 0, name = "name", description="The name of the new container instance", required = true, multiValued = false)
String instance = null;
@@ -101,7 +104,7 @@ public class CreateCommand extends InstanceCommandSupport
}
}
}
- InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features);
+ InstanceSettings settings = new InstanceSettings(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features, address);
getInstanceService().createInstance(instance, settings, verbose);
return null;
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/fc5d92b4/instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java
----------------------------------------------------------------------
diff --git a/instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java b/instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java
index 0f9cf97..8ec9315 100644
--- a/instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java
+++ b/instance/src/main/java/org/apache/karaf/instance/core/InstanceSettings.java
@@ -27,8 +27,13 @@ public class InstanceSettings {
private final String javaOpts;
private final List<String> featureURLs;
private final List<String> features;
+ private final String address;
public InstanceSettings(int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, List<String> featureURLs, List<String> features) {
+ this(sshPort, rmiRegistryPort, rmiServerPort, location, javaOpts, featureURLs, features, "0.0.0.0");
+ }
+
+ public InstanceSettings(int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, List<String> featureURLs, List<String> features, String address) {
this.sshPort = sshPort;
this.rmiRegistryPort = rmiRegistryPort;
this.rmiServerPort = rmiServerPort;
@@ -36,8 +41,10 @@ public class InstanceSettings {
this.javaOpts = javaOpts;
this.featureURLs = featureURLs;
this.features = features;
+ this.address = address;
}
+
public int getSshPort() {
return sshPort;
}
@@ -66,6 +73,10 @@ public class InstanceSettings {
return features;
}
+ public String getAddress() {
+ return this.address;
+ }
+
@Override
public boolean equals(Object o) {
if (o == this) {
@@ -81,7 +92,8 @@ public class InstanceSettings {
(location == null ? is.location == null : location.equals(is.location)) &&
(javaOpts == null ? is.javaOpts == null : javaOpts.equals(is.javaOpts)) &&
(featureURLs == null ? is.featureURLs == null : featureURLs.equals(is.featureURLs)) &&
- (features == null ? is.features == null : features.equals(is.features));
+ (features == null ? is.features == null : features.equals(is.features)) &&
+ (address == null ? is.address == null : address.equals(is.address));
}
@Override
@@ -91,6 +103,7 @@ public class InstanceSettings {
result = 31 * result + (javaOpts != null ? javaOpts.hashCode() : 0);
result = 31 * result + (featureURLs != null ? featureURLs.hashCode() : 0);
result = 31 * result + (features != null ? features.hashCode() : 0);
+ result = 31 * result + (address != null ? address.hashCode() : 0);
return result;
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/fc5d92b4/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
----------------------------------------------------------------------
diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
index 5700e43..9493ea8 100644
--- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
+++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java
@@ -266,6 +266,7 @@ public class InstanceServiceImpl implements InstanceService {
if (sshPort <= 0) {
sshPort = ++state.defaultSshPortStart;
}
+ String sshHost = settings.getAddress();
int rmiRegistryPort = settings.getRmiRegistryPort();
if (rmiRegistryPort <= 0) {
rmiRegistryPort = ++state.defaultRmiRegistryPortStart;
@@ -329,6 +330,7 @@ public class InstanceServiceImpl implements InstanceService {
props.put("${SUBST-KARAF-HOME}", System.getProperty("karaf.home"));
props.put("${SUBST-KARAF-BASE}", karafBase.getPath());
props.put("${SUBST-SSH-PORT}", Integer.toString(sshPort));
+ props.put("${SUBST-SSH-HOST}", sshHost);
props.put("${SUBST-RMI-REGISTRY-PORT}", Integer.toString(rmiRegistryPort));
props.put("${SUBST-RMI-SERVER-PORT}", Integer.toString(rmiServerPort));
copyFilteredResourceToDir(karafBase, "etc/system.properties", props, printOutput);
@@ -824,6 +826,23 @@ public class InstanceServiceImpl implements InstanceService {
return 0;
}
}
+
+ private String getKarafHost(State state, String name, String path, final String key) {
+ InstanceState instance = state.instances.get(name);
+ if (instance == null) {
+ throw new IllegalArgumentException("Instance " + name + " not found");
+ }
+ File f = new File(instance.loc, path);
+ try {
+ return FileLockUtils.execute(f, new FileLockUtils.CallableWithProperties<String>() {
+ public String call(org.apache.felix.utils.properties.Properties properties) throws IOException {
+ return properties.get(key).toString();
+ }
+ }, false);
+ } catch (IOException e) {
+ return "0.0.0.0";
+ }
+ }
private void setKarafPort(final String name, final String path, final String key, final int port) throws IOException {
execute(new Task<Object>() {
@@ -917,6 +936,10 @@ public class InstanceServiceImpl implements InstanceService {
throw new IllegalArgumentException("Instance " + name + " not found");
}
int port = getKarafPort(state, name, "etc/org.apache.karaf.shell.cfg", "sshPort");
+ String host = getKarafHost(state, name, "etc/org.apache.karaf.shell.cfg", "sshHost");
+ if (host.equals("0.0.0.0")) {
+ host = "localhost";
+ }
if (!new File(instance.loc).isDirectory() || port <= 0) {
return Instance.ERROR;
}
@@ -925,7 +948,7 @@ public class InstanceServiceImpl implements InstanceService {
return Instance.STOPPED;
} else {
try {
- Socket s = new Socket("localhost", port);
+ Socket s = new Socket(host, port);
s.close();
return Instance.STARTED;
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/karaf/blob/fc5d92b4/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.shell.cfg
----------------------------------------------------------------------
diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.shell.cfg b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.shell.cfg
index b00ffc7..c8c6e79 100644
--- a/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.shell.cfg
+++ b/instance/src/main/resources/org/apache/karaf/instance/resources/etc/org.apache.karaf.shell.cfg
@@ -25,7 +25,7 @@
# Via sshPort and sshHost you define the address you can login into Karaf.
#
sshPort = ${SUBST-SSH-PORT}
-sshHost = 0.0.0.0
+sshHost = ${SUBST-SSH-HOST}
#
# The sshIdleTimeout defines the inactivity timeout to logout the SSH session.