Reviewed-By: Paulo Vital <pvital(a)linux.vnet.ibm.com>
On Wed, 2015-09-16 at 14:44 -0300, Aline Manera wrote:
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(a)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(a)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