[Kimchi-devel] [PATCH WOK 1/2] Move vnc.py to Kimchi plugin

Aline Manera alinefm at linux.vnet.ibm.com
Wed Sep 16 17:44:08 UTC 2015


vnc.py is related to noVNC configuration and should not be in wok
framework.

Move it to Kimchi and adjust the imports and build process accordingly.

Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
 Makefile.am                                  |  2 -
 contrib/wok.spec.fedora.in                   |  1 -
 contrib/wok.spec.suse.in                     |  1 -
 plugins/kimchi/Makefile.am                   |  4 +-
 plugins/kimchi/contrib/kimchi.spec.fedora.in |  3 +-
 plugins/kimchi/contrib/kimchi.spec.suse.in   |  4 +-
 plugins/kimchi/model/vms.py                  |  2 +-
 plugins/kimchi/root.py                       |  2 +-
 plugins/kimchi/vnc.py                        | 77 ++++++++++++++++++++++++++++
 src/wok/vnc.py                               | 77 ----------------------------
 10 files changed, 86 insertions(+), 87 deletions(-)
 create mode 100644 plugins/kimchi/vnc.py
 delete mode 100644 src/wok/vnc.py

diff --git a/Makefile.am b/Makefile.am
index ab5b7d8..c7914d0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -69,7 +69,6 @@ all-local:
 
 install-deb: install
 	cp -R $(top_srcdir)/contrib/DEBIAN $(DESTDIR)/
-	mkdir -p $(DESTDIR)/var/lib/wok/vnc-tokens
 	touch $(DESTDIR)/var/lib/wok/objectstore
 	$(MKDIR_P) $(DESTDIR)/etc/init
 	$(MKDIR_P) $(DESTDIR)/usr/lib/firewalld/services
@@ -124,7 +123,6 @@ install-data-local:
 		mkdir -p $(DESTDIR)/usr/lib/firewalld/services/; \
 		$(INSTALL_DATA) src/firewalld.xml $(DESTDIR)/usr/lib/firewalld/services/wokd.xml; \
 	fi; \
-	mkdir -p $(DESTDIR)/var/lib/wok/vnc-tokens
 	touch $(DESTDIR)/var/lib/wok/objectstore
 	mkdir -p $(DESTDIR)/var/log/wok/
 	touch $(DESTDIR)/var/log/wok/wok-access.log
diff --git a/contrib/wok.spec.fedora.in b/contrib/wok.spec.fedora.in
index 30319a9..037e705 100644
--- a/contrib/wok.spec.fedora.in
+++ b/contrib/wok.spec.fedora.in
@@ -127,7 +127,6 @@ rm -rf $RPM_BUILD_ROOT
 
 %if 0%{?with_systemd}
 %{_sysconfdir}/nginx/conf.d/wok.conf
-%{_sharedstatedir}/wok/vnc-tokens/
 %{_sharedstatedir}/wok/
 %{_localstatedir}/log/wok/*
 %{_localstatedir}/log/wok/
diff --git a/contrib/wok.spec.suse.in b/contrib/wok.spec.suse.in
index 63bdce3..6bff10a 100644
--- a/contrib/wok.spec.suse.in
+++ b/contrib/wok.spec.suse.in
@@ -93,7 +93,6 @@ rm -rf $RPM_BUILD_ROOT
 %{_sysconfdir}/wok/
 %{_sysconfdir}/nginx/conf.d/wok.conf.in
 %{_sysconfdir}/nginx/conf.d/wok.conf
-%{_var}/lib/wok/vnc-tokens/
 %{_var}/lib/wok/
 %{_localstatedir}/log/wok/*
 %{_localstatedir}/log/wok/
diff --git a/plugins/kimchi/Makefile.am b/plugins/kimchi/Makefile.am
index faef341..49c835e 100644
--- a/plugins/kimchi/Makefile.am
+++ b/plugins/kimchi/Makefile.am
@@ -98,6 +98,7 @@ config.py: config.py.in Makefile
 
 install-deb: install
 	cp -R $(top_srcdir)/contrib/DEBIAN $(DESTDIR)/
+	mkdir -p $(DESTDIR)/var/lib/kimchi/vnc-tokens
 	mkdir -p $(DESTDIR)/var/lib/kimchi/debugreports
 	mkdir -p $(DESTDIR)/var/lib/kimchi/screenshots
 	mkdir -p $(DESTDIR)/var/lib/kimchi/isos
@@ -138,7 +139,8 @@ ChangeLog:
 install-data-local:
 	$(MKDIR_P) $(DESTDIR)$(kimchidir)
 	$(INSTALL_DATA) API.json $(DESTDIR)$(kimchidir)/API.json
-	mkdir -p $(DESTDIR)/var/lib/kimchi/{debugreports,screenshots,isos}
+	mkdir -p $(DESTDIR)/var/lib/kimchi/vnc-tokens
+	mkdir -p $(DESTDIR)/var/lib/kimchi/{debugreports,isos,screenshots}
 
 uninstall-local:
 	$(RM) $(DESTDIR)$(kimchidir)/API.json
diff --git a/plugins/kimchi/contrib/kimchi.spec.fedora.in b/plugins/kimchi/contrib/kimchi.spec.fedora.in
index 7a7a447..fa53980 100644
--- a/plugins/kimchi/contrib/kimchi.spec.fedora.in
+++ b/plugins/kimchi/contrib/kimchi.spec.fedora.in
@@ -102,8 +102,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_sysconfdir}/kimchi/distros.d/gentoo.json
 %{_sysconfdir}/kimchi/
 %{_sharedstatedir}/kimchi/debugreports/
-%{_sharedstatedir}/kimchi/screenshots/
 %{_sharedstatedir}/kimchi/isos/
+%{_sharedstatedir}/kimchi/screenshots/
+%{_sharedstatedir}/kimchi/vnc-tokens/
 %{_sharedstatedir}/kimchi/
 
 
diff --git a/plugins/kimchi/contrib/kimchi.spec.suse.in b/plugins/kimchi/contrib/kimchi.spec.suse.in
index 1ab2e5f..9b55c7b 100644
--- a/plugins/kimchi/contrib/kimchi.spec.suse.in
+++ b/plugins/kimchi/contrib/kimchi.spec.suse.in
@@ -89,12 +89,12 @@ rm -rf $RPM_BUILD_ROOT
 %{_sysconfdir}/kimchi/distros.d/gentoo.json
 %{_sysconfdir}/kimchi/
 %{_var}/lib/kimchi/debugreports/
-%{_var}/lib/kimchi/screenshots/
 %{_var}/lib/kimchi/isos/
+%{_var}/lib/kimchi/screenshots/
+%{_var}/lib/kimchi/vnc-tokens/
 %{_var}/lib/kimchi/
 
 
-
 %changelog
 * Thu Jun 18 2015 Lucio Correia <luciojhc at linux.vnet.ibm.com> 1.6
 - Run kimchi as a plugin
diff --git a/plugins/kimchi/model/vms.py b/plugins/kimchi/model/vms.py
index 36e3cd2..f446e80 100644
--- a/plugins/kimchi/model/vms.py
+++ b/plugins/kimchi/model/vms.py
@@ -28,7 +28,6 @@ from lxml import etree, objectify
 from lxml.builder import E
 from xml.etree import ElementTree
 
-from wok import vnc
 from wok.config import config
 from wok.exception import InvalidOperation, InvalidParameter
 from wok.exception import NotFoundError, OperationFailed
@@ -39,6 +38,7 @@ from wok.xmlutils.utils import xpath_get_text, xml_item_update
 from wok.xmlutils.utils import dictize
 
 from .. import model
+from .. import vnc
 from ..config import READONLY_POOL_TYPE
 from ..kvmusertests import UserTests
 from ..screenshot import VMScreenshot
diff --git a/plugins/kimchi/root.py b/plugins/kimchi/root.py
index fb2f966..1e2bfc7 100644
--- a/plugins/kimchi/root.py
+++ b/plugins/kimchi/root.py
@@ -21,12 +21,12 @@ import json
 import os
 import cherrypy
 
-from wok import vnc
 from wok.i18n import messages
 from wok.root import WokRoot
 
 import config
 import mockmodel
+import vnc
 from control import sub_nodes
 from model import model as kimchiModel
 
diff --git a/plugins/kimchi/vnc.py b/plugins/kimchi/vnc.py
new file mode 100644
index 0000000..2532449
--- /dev/null
+++ b/plugins/kimchi/vnc.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python2
+#
+# Project Kimchi
+#
+# Copyright IBM, Corp. 2013-2015
+#
+# 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 base64
+import errno
+import os
+from multiprocessing import Process
+from websockify import WebSocketProxy
+
+from wok.config import config, paths
+
+
+WS_TOKENS_DIR = '/var/lib/wok/vnc-tokens'
+
+
+def new_ws_proxy():
+    try:
+        os.makedirs(WS_TOKENS_DIR, mode=0755)
+    except OSError as e:
+        if e.errno == errno.EEXIST:
+            pass
+
+    cert = config.get('server', 'ssl_cert')
+    key = config.get('server', 'ssl_key')
+    if not (cert and key):
+        cert = '%s/wok-cert.pem' % paths.conf_dir
+        key = '%s/wok-key.pem' % paths.conf_dir
+
+    params = {'web': os.path.join(paths.ui_dir, 'pages/websockify'),
+              'listen_port': config.get('display', 'display_proxy_port'),
+              'target_cfg': WS_TOKENS_DIR,
+              'key': key, 'cert': cert, 'ssl_only': True}
+
+    def start_proxy():
+        server = WebSocketProxy(**params)
+        server.start_server()
+
+    proc = Process(target=start_proxy)
+    proc.start()
+    return proc
+
+
+def add_proxy_token(name, port):
+    with open(os.path.join(WS_TOKENS_DIR, name), 'w') as f:
+        """
+        From python documentation base64.urlsafe_b64encode(s)
+        substitutes - instead of + and _ instead of / in the
+        standard Base64 alphabet, BUT the result can still
+        contain = which is not safe in a URL query component.
+        So remove it when needed as base64 can work well without it.
+        """
+        name = base64.urlsafe_b64encode(name).rstrip('=')
+        f.write('%s: localhost:%s' % (name.encode('utf-8'), port))
+
+
+def remove_proxy_token(name):
+    try:
+        os.unlink(os.path.join(WS_TOKENS_DIR, name))
+    except OSError:
+        pass
diff --git a/src/wok/vnc.py b/src/wok/vnc.py
deleted file mode 100644
index 2532449..0000000
--- a/src/wok/vnc.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env python2
-#
-# Project Kimchi
-#
-# Copyright IBM, Corp. 2013-2015
-#
-# 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 base64
-import errno
-import os
-from multiprocessing import Process
-from websockify import WebSocketProxy
-
-from wok.config import config, paths
-
-
-WS_TOKENS_DIR = '/var/lib/wok/vnc-tokens'
-
-
-def new_ws_proxy():
-    try:
-        os.makedirs(WS_TOKENS_DIR, mode=0755)
-    except OSError as e:
-        if e.errno == errno.EEXIST:
-            pass
-
-    cert = config.get('server', 'ssl_cert')
-    key = config.get('server', 'ssl_key')
-    if not (cert and key):
-        cert = '%s/wok-cert.pem' % paths.conf_dir
-        key = '%s/wok-key.pem' % paths.conf_dir
-
-    params = {'web': os.path.join(paths.ui_dir, 'pages/websockify'),
-              'listen_port': config.get('display', 'display_proxy_port'),
-              'target_cfg': WS_TOKENS_DIR,
-              'key': key, 'cert': cert, 'ssl_only': True}
-
-    def start_proxy():
-        server = WebSocketProxy(**params)
-        server.start_server()
-
-    proc = Process(target=start_proxy)
-    proc.start()
-    return proc
-
-
-def add_proxy_token(name, port):
-    with open(os.path.join(WS_TOKENS_DIR, name), 'w') as f:
-        """
-        From python documentation base64.urlsafe_b64encode(s)
-        substitutes - instead of + and _ instead of / in the
-        standard Base64 alphabet, BUT the result can still
-        contain = which is not safe in a URL query component.
-        So remove it when needed as base64 can work well without it.
-        """
-        name = base64.urlsafe_b64encode(name).rstrip('=')
-        f.write('%s: localhost:%s' % (name.encode('utf-8'), port))
-
-
-def remove_proxy_token(name):
-    try:
-        os.unlink(os.path.join(WS_TOKENS_DIR, name))
-    except OSError:
-        pass
-- 
2.1.0




More information about the Kimchi-devel mailing list