[Kimchi-devel] [PATCH] Discover Kimchi peers using openSLP
Aline Manera
alinefm at linux.vnet.ibm.com
Fri Aug 15 19:06:25 UTC 2014
Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
src/kimchi/control/peers.py | 29 ++++++++++++++++++++++++++
src/kimchi/model/peers.py | 50 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 79 insertions(+)
create mode 100644 src/kimchi/control/peers.py
create mode 100644 src/kimchi/model/peers.py
diff --git a/src/kimchi/control/peers.py b/src/kimchi/control/peers.py
new file mode 100644
index 0000000..f72a38c
--- /dev/null
+++ b/src/kimchi/control/peers.py
@@ -0,0 +1,29 @@
+#
+# Project Kimchi
+#
+# Copyright IBM, Corp. 2014
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+from kimchi.control.base import SimpleCollection
+from kimchi.control.utils import UrlSubNode
+
+
+ at UrlSubNode("peers", True)
+class Peers(SimpleCollection):
+ def __init__(self, model):
+ super(Peers, self).__init__(model)
+ self.role_key = 'peers'
+ self.admin_methods = ['GET']
diff --git a/src/kimchi/model/peers.py b/src/kimchi/model/peers.py
new file mode 100644
index 0000000..d0f8808
--- /dev/null
+++ b/src/kimchi/model/peers.py
@@ -0,0 +1,50 @@
+#
+# Project Kimchi
+#
+# Copyright IBM, Corp. 2014
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+import re
+import socket
+
+from kimchi.config import config
+from kimchi.utils import kimchi_log, run_command
+
+
+class PeersModel(object):
+ def __init__(self, **kargs):
+ # TODO: only register server on openSLP if federation feature is
+ # enabled
+ # register server on openslp
+ hostname = socket.getfqdn(config.get("server", "host"))
+ port = config.get("server", "ssl_port")
+
+ cmd = ["slptool", "register",
+ "service:kimchid://%s:%s" % (hostname, port)]
+ out, error, ret = run_command(cmd)
+ if len(out) != 0:
+ kimchi_log.info("Unable to register server on openSLP")
+
+ def get_list(self):
+ peers = []
+
+ cmd = ["slptool", "findsrvs", "service:kimchid"]
+ out, error, ret = run_command(cmd)
+ for server in out.strip().split("\n"):
+ match = re.match("service:kimchid://(.*?),.*", server)
+ peers.append("https://" + match.group(1))
+
+ return peers
--
1.9.3
More information about the Kimchi-devel
mailing list