[Kimchi-devel] [PATCH] [Kimchi] Remove federation feature from Kimchi as it is now on Wok
Aline Manera
alinefm at linux.vnet.ibm.com
Tue May 2 16:59:28 UTC 2017
Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
control/peers.py | 28 ----------
docs/API.md | 10 ----
docs/README-federation.md | 60 --------------------
kimchi.conf | 4 --
model/config.py | 8 +--
model/peers.py | 74 ------------------------
root.py | 8 ---
tests/test_config.py.in | 3 +-
tests/test_rest.py | 6 +-
ui/js/kimchi.peers.js | 140 ----------------------------------------------
ui/js/src/kimchi.main.js | 3 -
ui/pages/i18n.json.tmpl | 7 +--
12 files changed, 7 insertions(+), 344 deletions(-)
delete mode 100644 control/peers.py
delete mode 100644 docs/README-federation.md
delete mode 100644 model/peers.py
delete mode 100644 ui/js/kimchi.peers.js
diff --git a/control/peers.py b/control/peers.py
deleted file mode 100644
index 5eaacdd..0000000
--- a/control/peers.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM Corp, 2015-2017
-#
-# 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 wok.control.base import SimpleCollection
-from wok.control.utils import UrlSubNode
-
-
- at UrlSubNode("peers", True)
-class Peers(SimpleCollection):
- def __init__(self, model):
- super(Peers, self).__init__(model)
- self.admin_methods = ['GET']
diff --git a/docs/API.md b/docs/API.md
index 3ecc7a0..1f67879 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -820,7 +820,6 @@ Contains information about Kimchi configuration.
**Methods:**
* **GET**: Retrieve configuration information
- * federation: True if federation feature is enabled, False otherwise.
* version: The version of the kimchi service
* **POST**: *See Configuration Actions*
@@ -1052,15 +1051,6 @@ List of available groups.
* free: Amount of free space in the volume group.
* size: Total size of the volume group.
-### Collection: Peers
-
-**URI:** /plugins/kimchi/peers
-
-**Methods:**
-
-* **GET**: Return the list of Kimchi peers in the same network
- (It uses openSLP for discovering)
-
### Simple Collection: OVSBridges
**URI:** /plugins/kimchi/ovsbridges
diff --git a/docs/README-federation.md b/docs/README-federation.md
deleted file mode 100644
index 3554757..0000000
--- a/docs/README-federation.md
+++ /dev/null
@@ -1,60 +0,0 @@
-Kimchi Project - Federation Feature
-===================================
-
-Federation feature is a Kimchi mechanism to discover Wok peers in the same
-network. It uses openSLP tool (http://www.openslp.org/) to register and find Wok
-servers.
-
-By default this feature is disabled on Wok as it is not critical for KVM
-virtualization and requires additional software installation.
-
-To enable it, do the following:
-
-1. Install openslp and openslp-server rpm packages,
- or install slpd and slptool deb packages.
-
-2. openSLP uses port 427 (UDP) and port 427 (TCP) so make sure to open those
- ports in your firewall configuration
-
- For system using firewalld, do:
- sudo firewall-cmd --permanent --add-port=427/udp
- sudo firewall-cmd --permanent --add-port=427/tcp
- sudo firewall-cmd --reload
-
- For openSUSE systems, do:
- sudo /sbin/SuSEfirewall2 open EXT TCP 427
- sudo /sbin/SuSEfirewall2 open EXT UDP 427
-
- For system using iptables, do:
- sudo iptables -A INPUT -p tcp --dport 427 -j ACCEPT
- sudo iptables -A INPUT -p udp --dport 427 -j ACCEPT
-
-3. In addition to the openSLP ports, you also need to allow multicast in the
- firewall configuration
-
- For system using firewalld, do:
- sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s <subnet> -j ACCEPT
-
- For openSUSE systems, do:
- Add the subnet to the trusted networks listed on FW_TRUSTED_NETS in
- /etc/sysconfig/SuSEfirewall2 file.
- Make sure to restart /sbin/SuSEfirewall2 after modifying /etc/sysconfig/SuSEfirewall2
-
- For system using iptables, do:
- sudo iptables -A INPUT -s <subnet> -j ACCEPT
-
-4. Start slpd service and make sure it is up while running Wok
- sudo service slpd start
-
-5. Enable federation on Wok by editing the /etc/wok/plugins.d/kimchi.conf file:
-
- federation = True
-
-6. Then start Wok service
- sudo service wokd start
-
-The Wok server will be registered on openSLP on server starting up and will
-be found by other Wok peers (with federation feature enabled) in the same
-network.
-
-Enjoy!
diff --git a/kimchi.conf b/kimchi.conf
index 97a14bd..5e85e2b 100644
--- a/kimchi.conf
+++ b/kimchi.conf
@@ -3,9 +3,5 @@
enable = True
[kimchi]
-# Federation feature: register Wok server on openSLP and discover peers
-# in the same network. Check README-federation for more details.
-federation = False
-
# Automatically create ISO pool on server start up
create_iso_pool = True
diff --git a/model/config.py b/model/config.py
index 78cdaeb..1db9afb 100644
--- a/model/config.py
+++ b/model/config.py
@@ -1,7 +1,7 @@
#
# Project Kimchi
#
-# Copyright IBM Corp, 2015-2016
+# Copyright IBM Corp, 2015-2017
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -24,7 +24,7 @@ from wok.basemodel import Singleton
from wok.exception import NotFoundError
from wok.utils import run_command, wok_log
-from wok.plugins.kimchi.config import config, find_qemu_binary
+from wok.plugins.kimchi.config import find_qemu_binary
from wok.plugins.kimchi.config import get_kimchi_version
from wok.plugins.kimchi.distroloader import DistroLoader
from wok.plugins.kimchi.model.featuretests import FeatureTests
@@ -39,9 +39,7 @@ class ConfigModel(object):
pass
def lookup(self, name):
- kconfig = config.get('kimchi', {})
- return {'federation': kconfig.get('federation', False),
- 'version': get_kimchi_version()}
+ return {'version': get_kimchi_version()}
class CapabilitiesModel(object):
diff --git a/model/peers.py b/model/peers.py
deleted file mode 100644
index 0a4ee4b..0000000
--- a/model/peers.py
+++ /dev/null
@@ -1,74 +0,0 @@
-#
-# Project Kimchi
-#
-# Copyright IBM Corp, 2015-2017
-#
-# 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 cherrypy
-import re
-import socket
-
-from wok.config import config as wok_config
-from wok.utils import run_command, wok_log
-
-from wok.plugins.kimchi.config import config
-
-
-class PeersModel(object):
- def __init__(self, **kargs):
- # check federation feature is enabled on Kimchi server
- if not config.get('kimchi', {}).get('federation', False):
- return
-
- # register server on openslp
- hostname = socket.getfqdn()
- port = wok_config.get("server", "proxy_port")
- self.url = hostname + ":" + port
-
- cmd = ["slptool", "register",
- "service:wokd://%s" % self.url]
- out, error, ret = run_command(cmd)
- if out and len(out) != 0:
- wok_log.error("Unable to register server on openSLP."
- " Details: %s" % out)
- cherrypy.engine.subscribe('exit', self._peer_deregister)
-
- def _peer_deregister(self):
- cmd = ["slptool", "deregister",
- "service:wokd://%s" % self.url]
- out, error, ret = run_command(cmd)
- if out and len(out) != 0:
- wok_log.error("Unable to deregister server on openSLP."
- " Details: %s" % out)
-
- def get_list(self):
- # check federation feature is enabled on Kimchi server
- if not config.get('kimchi', {}).get('federation', False):
- return []
-
- cmd = ["slptool", "findsrvs", "service:wokd"]
- out, error, ret = run_command(cmd)
- if ret != 0:
- return []
-
- peers = []
- for server in out.strip().split("\n"):
- match = re.match("service:wokd://(.*?),.*", server)
- peer = match.group(1)
- if peer != self.url:
- peers.append("https://" + peer)
-
- return peers
diff --git a/root.py b/root.py
index 4f131e7..d42e787 100644
--- a/root.py
+++ b/root.py
@@ -72,14 +72,6 @@ class Kimchi(WokRoot):
self.domain = 'kimchi'
self.messages = messages
- self.extends = {
- "/plugins/gingerbase": {
- "host-dashboard.html": "/plugins/kimchi/js/kimchi.peers.js"
- }
- }
-
- self.depends = ['gingerbase']
-
# Some paths or URI's present in the objectstore have changed after
# Kimchi 2.0.0 release. Check here if an upgrade in the schema and data
# are necessary.
diff --git a/tests/test_config.py.in b/tests/test_config.py.in
index 135097b..dd47130 100644
--- a/tests/test_config.py.in
+++ b/tests/test_config.py.in
@@ -80,8 +80,7 @@ class ConfigTests(unittest.TestCase):
'enable': True
},
'kimchi': {
- 'federation': False,
- 'create_iso_pool': True,
+ 'create_iso_pool': True
},
'/': {
'tools.trailing_slash.on': False,
diff --git a/tests/test_rest.py b/tests/test_rest.py
index 852e4bd..f808478 100644
--- a/tests/test_rest.py
+++ b/tests/test_rest.py
@@ -1529,7 +1529,7 @@ class RestTests(unittest.TestCase):
def test_config(self):
resp = self.request('/plugins/kimchi/config').read()
conf = json.loads(resp)
- keys = ["federation", "version"]
+ keys = ["version"]
self.assertEquals(keys, sorted(conf.keys()))
def test_capabilities(self):
@@ -1541,10 +1541,6 @@ class RestTests(unittest.TestCase):
u'mem_hotplug_support', u'libvirtd_running']
self.assertEquals(sorted(keys), sorted(conf.keys()))
- def test_peers(self):
- resp = self.request('/plugins/kimchi/peers').read()
- self.assertEquals([], json.loads(resp))
-
def test_distros(self):
resp = self.request('/plugins/kimchi/config/distros').read()
distros = json.loads(resp)
diff --git a/ui/js/kimchi.peers.js b/ui/js/kimchi.peers.js
deleted file mode 100644
index 8b1a18d..0000000
--- a/ui/js/kimchi.peers.js
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Project Kimchi
- *
- * Copyright IBM Corp, 2016
- *
- * Licensed 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.
- */
-
-var kimchi = {
-
- getPeers: function(suc, err) {
- wok.requestJSON({
- url: 'plugins/kimchi/peers',
- type: 'GET',
- contentType: 'application/json',
- dataType: 'json',
- resend: true,
- success: suc,
- error: err ? err : function(data) {
- wok.message.error(data.responseJSON.reason);
- }
- });
- },
-
- initPeers: function() {
-
- var peersAccordion = "<div class='panel-group federation-enabled accordion' id='peers-content-area-accordion' role='tablist' aria-multiselectable='true'>" +
- "<h3>" +
- "<a role='button' aria-expanded='true' data-toggle='collapse' data-parent='#peers-content-area-accordion' href='#peers-content-area' aria-expanded='false' aria-controls='peers-content-area' class=''>" +
- "<span class='accordion-icon'></span>" +
- "<span class='accordion-text' id='#peers-title'>"+i18n['KCHPEERS0001M']+"</span>" +
- "</a>" +
- "</h3>" +
- "<div id='peers-content-area' class='panel-collapse collapse in' role='tabpanel' aria-labelledby='peers-title'>" +
- "<div id='peers-alert-container'></div>" +
- "<div class='row'>" +
- "<div class='col-sm-12'>" +
- "<table id='peers-list' class='table table-striped' cellspacing='0' width='100%''>" +
- "<thead>" +
- "<tr>" +
- "<th><span class='sr-only'>" + i18n['KCHPEERS0001M'] + "</span></th>" +
- "</tr>" +
- "</thead>" +
- "</table>" +
- "</div>" +
- "</div>" +
- "<div class='wok-mask' role='presentation'>" +
- "<div class='wok-mask-loader-container'>" +
- "<div class='wok-mask-loading'>" +
- "<div class='wok-mask-loading-icon'></div>" +
- "<div class='wok-mask-loading-text'>" + i18n['WOKGRD6001M'] + "</div>" +
- "</div>" +
- "</div>" +
- "</div>" +
- "</div>" +
- "</div>";
-
- var peersDatatableTable;
- var peers = new Array();
-
- $('#peers-container > .container').append(peersAccordion);
-
- var peersDatatable = function(nwConfigDataSet) {
- peersDatatableTable = $('#peers-list').DataTable({
- "processing": true,
- "data": peers,
- "language": {
- "emptyTable": i18n['WOKSETT0010M']
- },
- "order": [],
- "paging": false,
- "dom": '<"row"<"col-sm-12"t>>',
- "scrollY": "269px",
- "scrollCollapse": true,
- "columnDefs": [{
- "targets": 0,
- "searchable": false,
- "orderable": false,
- "width": "100%",
- "className": "tabular-data",
- "render": function(data, type, full, meta) {
- return '<a href="' + data + '" target="_blank">' + data + '</a>';
- }
- }],
- "initComplete": function(settings, json) {
- $('#peers-content-area > .wok-mask').addClass('hidden');
- }
- });
- };
-
- var getPeers = function() {
- kimchi.getPeers(function(result) {
- peers.length = 0;
- for (var i = 0; i < result.length; i++) {
- var tempArr = [];
- tempArr.push(result[i]);
- peers.push(tempArr);
- }
- peersDatatable(peers);
- }, function(err) {
- wok.message.error(err.responseJSON.reason, '#peers-alert-container', true);
- });
- };
- getPeers();
-
- },
-
- getConfig: function(suc, err, done) {
- done = typeof done !== 'undefined' ? done : function() {};
- wok.requestJSON({
- url: "plugins/kimchi/config",
- type: "GET",
- contentType: "application/json",
- dataType: "json",
- success: suc,
- error: err,
- complete: done
- });
- }
-}
-
-$(document).ready(function() {
- // Peers check
- kimchi.getConfig(function(config) {
- if (config.federation) {
- $("#host-content-container").after('<div id="peers-container"><div class="container"></div></div>');
- kimchi.initPeers();
- }
- });
-});
diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js
index 47531ae..89df799 100644
--- a/ui/js/src/kimchi.main.js
+++ b/ui/js/src/kimchi.main.js
@@ -19,9 +19,6 @@
kimchi.config = undefined;
kimchi.getConfig(function(result) {
kimchi.config = result;
-
- if(kimchi.config.federation == true)
- $('#peers').removeClass('hide-content');
}, function() {
kimchi.config = {}
});
diff --git a/ui/pages/i18n.json.tmpl b/ui/pages/i18n.json.tmpl
index 4510921..d44d4bd 100644
--- a/ui/pages/i18n.json.tmpl
+++ b/ui/pages/i18n.json.tmpl
@@ -1,7 +1,7 @@
#*
* Project Kimchi
*
- * Copyright IBM Corp, 2014-2016
+ * Copyright IBM Corp, 2014-2017
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -154,8 +154,5 @@
"KCHVMSTOR0007M": "$_("qed")",
"KCHVMSTOR0008M": "$_("raw")",
"KCHVMSTOR0009M": "$_("vmdk")",
- "KCHVMSTOR0010M": "$_("vpc")",
-
-
- "KCHPEERS0001M": "$_("Peers")"
+ "KCHVMSTOR0010M": "$_("vpc")"
}
--
2.9.3
More information about the Kimchi-devel
mailing list