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/18 10:10:26 UTC
git commit: [KARAF-3130]add admin:change-ssh-host command
Repository: karaf
Updated Branches:
refs/heads/karaf-2.x e2cbb0617 -> 119e9fecb
[KARAF-3130]add admin:change-ssh-host command
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/119e9fec
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/119e9fec
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/119e9fec
Branch: refs/heads/karaf-2.x
Commit: 119e9fecb20633ea98664ccda532bb9cb2f286a1
Parents: e2cbb06
Author: Freeman Fang <fr...@gmail.com>
Authored: Fri Jul 18 16:10:01 2014 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Fri Jul 18 16:10:01 2014 +0800
----------------------------------------------------------------------
.../admin/command/ChangeSshHostCommand.java | 35 ++++++++++++++++++++
.../OSGI-INF/blueprint/admin-command.xml | 9 +++++
.../java/org/apache/karaf/admin/Instance.java | 2 ++
.../karaf/admin/internal/AdminServiceImpl.java | 26 +++++++++++++++
.../karaf/admin/internal/InstanceImpl.java | 4 +++
.../admin/management/AdminServiceMBean.java | 1 +
.../internal/AdminServiceMBeanImpl.java | 4 +++
7 files changed, 81 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeSshHostCommand.java
----------------------------------------------------------------------
diff --git a/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeSshHostCommand.java b/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeSshHostCommand.java
new file mode 100644
index 0000000..84dab80
--- /dev/null
+++ b/admin/command/src/main/java/org/apache/karaf/admin/command/ChangeSshHostCommand.java
@@ -0,0 +1,35 @@
+/*
+ * 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.karaf.admin.command;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+
+@Command(scope = "admin", name = "change-ssh-host", description = "Changes the secure shell host of an existing container instance.")
+public class ChangeSshHostCommand extends AdminCommandSupport {
+
+ @Argument(index = 0, name = "name", description="The name of the container instance", required = true, multiValued = false)
+ private String instance = null;
+
+ @Argument(index = 1, name = "host", description = "The new secure shell host to set", required = true, multiValued = false)
+ private String host = "0.0.0.0";
+
+ protected Object doExecute() throws Exception {
+ getExistingInstance(instance).changeSshHost(host);
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
----------------------------------------------------------------------
diff --git a/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml b/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
index c4e404a..6c797a2 100644
--- a/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
+++ b/admin/command/src/main/resources/OSGI-INF/blueprint/admin-command.xml
@@ -98,6 +98,15 @@
<null/>
</completers>
</command>
+ <command name="admin/change-ssh-host">
+ <action class="org.apache.karaf.admin.command.ChangeSshHostCommand">
+ <property name="adminService" ref="adminService" />
+ </action>
+ <completers>
+ <ref component-id="stoppedInstanceCompleter" />
+ <null/>
+ </completers>
+ </command>
<command name="admin/change-rmi-registry-port">
<action class="org.apache.karaf.admin.command.ChangeRmiRegistryPortCommand">
<property name="adminService" ref="adminService" />
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
----------------------------------------------------------------------
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/Instance.java b/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
index 3b7d4e6..8c98aaa 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/Instance.java
@@ -64,4 +64,6 @@ public interface Instance {
@Deprecated
boolean isAttached();
+ void changeSshHost(String host) throws Exception;
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
----------------------------------------------------------------------
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
index c5fcf95..31b83e9 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/internal/AdminServiceImpl.java
@@ -1182,4 +1182,30 @@ public class AdminServiceImpl implements AdminService {
return val;
}
+ public void changeInstanceSshHost(String name, String host) throws Exception {
+ setKarafHost(name, "etc/org.apache.karaf.shell.cfg", "sshHost", host);
+ }
+
+ private void setKarafHost(final String name, final String path, final String key, final String host) throws IOException {
+ execute(new Task<Object>() {
+ public Object call(State state) throws IOException {
+ InstanceState instance = state.instances.get(name);
+ if (instance == null) {
+ throw new IllegalArgumentException("Instance " + name + " not found");
+ }
+ checkPid(instance);
+ if (instance.pid != 0) {
+ throw new IllegalStateException("Instance is not stopped");
+ }
+ File f = new File(instance.loc, path);
+ FileLockUtils.execute(f, new FileLockUtils.RunnableWithProperties() {
+ public void run(org.apache.felix.utils.properties.Properties properties) throws IOException {
+ properties.put(key, host);
+ }
+ }, true);
+ return null;
+ }
+ }, true);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
----------------------------------------------------------------------
diff --git a/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java b/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
index 1a37b9f..8a96afd 100644
--- a/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
+++ b/admin/core/src/main/java/org/apache/karaf/admin/internal/InstanceImpl.java
@@ -107,4 +107,8 @@ public class InstanceImpl implements Instance {
public boolean isAttached() {
return getPid() != 0;
}
+
+ public void changeSshHost(String host) throws Exception {
+ service.changeInstanceSshHost(name, host);
+ }
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
----------------------------------------------------------------------
diff --git a/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java b/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
index fecbad4..f11d053 100644
--- a/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
+++ b/admin/management/src/main/java/org/apache/karaf/admin/management/AdminServiceMBean.java
@@ -37,6 +37,7 @@ public interface AdminServiceMBean {
int createInstance(String name, int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, String features, String featureURLs) throws Exception;
int createInstance(String name, int sshPort, int rmiRegistryPort, int rmiServerPort, String location, String javaOpts, String features, String featureURLs, String address) throws Exception;
void changeSshPort(String name, int port) throws Exception;
+ void changeSshHost(String name, String host) throws Exception;
void changeRmiRegistryPort(String name, int port) throws Exception;
void changeRmiServerPort(String name, int port) throws Exception;
void changeJavaOpts(String name, String javaopts) throws Exception;
http://git-wip-us.apache.org/repos/asf/karaf/blob/119e9fec/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
----------------------------------------------------------------------
diff --git a/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java b/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
index 5a683c9..5ab40c7 100644
--- a/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
+++ b/admin/management/src/main/java/org/apache/karaf/admin/management/internal/AdminServiceMBeanImpl.java
@@ -77,6 +77,10 @@ public class AdminServiceMBeanImpl extends StandardMBean implements AdminService
getExistingInstance(name).changeSshPort(port);
}
+ public void changeSshHost(String name, String host) throws Exception {
+ getExistingInstance(name).changeSshHost(host);
+ }
+
public void changeRmiRegistryPort(String name, int port) throws Exception {
getExistingInstance(name).changeRmiRegistryPort(port);
}