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);
     }