[PATCH][Kimchi] Add support to recognize latest CentOS version
by Rodrigo Trujillo
Latest CentOS (7) has a different identifier and Kimchi is not able to
recognize the version and the os name in templates and in the guest.
This patch changes the regular expression in order to cover latest
version.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
isoinfo.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/isoinfo.py b/isoinfo.py
index 3cd4daf..4cb0209 100644
--- a/isoinfo.py
+++ b/isoinfo.py
@@ -46,7 +46,7 @@ iso_dir = [
('openbsd', lambda m: m.group(2),
('OpenBSD/(i386|amd64) (\d+\.\d+) Install CD')),
('centos', lambda m: m.group(1),
- ('CentOS_(\d+\.\d+)_Final')),
+ ('CentOS[ _](\d+\.?\d?)[ _].+')),
('windows', '2000',
('W2AFPP|SP1AFPP|SP2AFPP|YRMAFPP|ZRMAFPP|W2AOEM|SP1AOEM|SP2AOEM' +
'|YRMAOEM|ZRMAOEM|W2ASEL|SP2ASEL|W2SFPP|SP1SFPP|SP2SFPP|YRMSFPP' +
--
2.1.0
8 years, 8 months
[PATCH][Kimchi] Check memory values in UI before submit request
by Rodrigo Trujillo
This patch adds a simple test to check memory values being submitted to
backend, canceling the request if Memory is higher then Max Memory,
avoiding useless requests.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.guest_edit_main.js | 8 ++++++++
ui/pages/i18n.json.tmpl | 1 +
2 files changed, 9 insertions(+)
diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js
index 19d9e7d..7a9c754 100644
--- a/ui/js/src/kimchi.guest_edit_main.js
+++ b/ui/js/src/kimchi.guest_edit_main.js
@@ -744,6 +744,14 @@ kimchi.guest_edit_main = function() {
if (data['max-memory'] !== undefined) {
data['max-memory'] = Number(data['max-memory']);
}
+
+ // Test memory values before submit. Avoid requests we know are going to fail
+ if ($('#guest-edit-memory-textbox').val() > $('#guest-edit-max-memory-textbox').val()) {
+ wok.message.error(i18n['KCHVM0002E'], '#alert-modal-container');
+ $(saveButton).prop('disabled', false);
+ return;
+ }
+
if (data['vcpus'] !== undefined) {
var cpu = Number(data['vcpus']);
var maxCpu = Number(data['max-processor']);
diff --git a/ui/pages/i18n.json.tmpl b/ui/pages/i18n.json.tmpl
index 5be0a66..153d7c2 100644
--- a/ui/pages/i18n.json.tmpl
+++ b/ui/pages/i18n.json.tmpl
@@ -66,6 +66,7 @@
"KCHVM6009M": "$_("This virtual machine is not persistent. Power Off will delete it. Continue?")",
"KCHVM0001E": "$_("Input is not a number")",
+ "KCHVM0002E": "$_("Memory value cannot be higher then Max Memory value")",
"KCHVMCD6001M": "$_("This CDROM will be detached permanently and you can re-attach it. Continue to detach it?")",
"KCHVMCD6003M": "$_("Attaching...")",
--
2.1.0
8 years, 8 months
[PATCH v3][Kimchi] Fix memory value return when hotplug memory devs
by Rodrigo Trujillo
There is an issue when Kimchi returns the value of memory, if the guest
is running. It is returning the current memory value, instead of the
total memory, which includes the value of the memory devices added.
This patch fix this problem returning the total value: current memory
+ total of memory devs.
This patch computes the total of memory considering different memory
device sizes and units.
Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
---
model/vms.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/model/vms.py b/model/vms.py
index b56727e..a6db2bf 100644
--- a/model/vms.py
+++ b/model/vms.py
@@ -1229,7 +1229,15 @@ class VMModel(object):
unit = 'KiB'
memory = convert_data_size(val, unit, 'MiB')
else:
- memory = info[2] >> 10
+ # Return current memory plus the amount of memory given by memory
+ # devices
+ root = ET.fromstring(xml)
+ totMemDevs = 0
+ for size in root.findall('./devices/memory/target/size'):
+ totMemDevs += convert_data_size(size.text,
+ size.get('unit'),
+ 'MiB')
+ memory = (info[2] >> 10) + totMemDevs
# assure there is no zombie process left
for proc in self._serial_procs[:]:
--
2.1.0
8 years, 8 months
[PATCH] [Wok] Implement Asynchronous Notifications backend
by Lucio Correia
* There is no POST method: a notification is
added through add_notification() method.
* Notifications are always stored in Wok object store under
'notification' type, even if added by a plugin.
* Every time Wok is started, all notifications are erased,
since this is a UI feature, intended to be showed to the
user asynchronously, independent of which tab is opened.
Signed-off-by: Lucio Correia <luciojhc(a)linux.vnet.ibm.com>
---
docs/API/notifications.md | 33 ++++++++++++++++++++++++++++
src/wok/control/notifications.py | 39 +++++++++++++++++++++++++++++++++
src/wok/i18n.py | 2 ++
src/wok/model/notifications.py | 47 ++++++++++++++++++++++++++++++++++++++++
src/wok/objectstore.py | 20 +++++++++++++++++
src/wok/server.py | 4 ++++
6 files changed, 145 insertions(+)
create mode 100644 docs/API/notifications.md
create mode 100644 src/wok/control/notifications.py
create mode 100644 src/wok/model/notifications.py
IMPORTANT: This patch depends on WokMessage patch.
diff --git a/docs/API/notifications.md b/docs/API/notifications.md
new file mode 100644
index 0000000..fb0e691
--- /dev/null
+++ b/docs/API/notifications.md
@@ -0,0 +1,33 @@
+## REST API Specification for Notifications
+
+### Collection: Notifications
+
+**URI:** /notifications
+
+**Methods:**
+
+* **GET**: Retrieve a summarized list of current Notifications
+
+#### Examples
+GET /notifications
+[{Notification1}, {Notification2}, ...]
+
+### Resource: Notification
+
+**URI:** /notifications/*:id*
+
+A task represents an asynchronous operation that is being performed by the
+server.
+
+**Methods:**
+
+* **GET**: Retrieve the full description of the Notification
+ * code: message ID
+ * message: message text already translated
+
+#### Examples
+GET /notifications/KCHLIBVIRT0001W
+{
+ id: "KCHLIBVIRT0001W",
+ message: "KCHLIBVIRT0001W: Lack of storage space in guest vm-1",
+}
diff --git a/src/wok/control/notifications.py b/src/wok/control/notifications.py
new file mode 100644
index 0000000..4e6d8d9
--- /dev/null
+++ b/src/wok/control/notifications.py
@@ -0,0 +1,39 @@
+#
+# Project Wok
+#
+# Copyright IBM Corp, 2016
+#
+# Code derived from Project Kimchi
+#
+# 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 Collection, Resource
+from wok.control.utils import UrlSubNode
+
+
+@UrlSubNode('notifications', True)
+class Notifications(Collection):
+ def __init__(self, model):
+ super(Notifications, self).__init__(model)
+ self.resource = Notification
+
+
+class Notification(Resource):
+ def __init__(self, model, id):
+ super(Notification, self).__init__(model, id)
+
+ @property
+ def data(self):
+ return self.info
diff --git a/src/wok/i18n.py b/src/wok/i18n.py
index e6087f4..1bc92e3 100644
--- a/src/wok/i18n.py
+++ b/src/wok/i18n.py
@@ -45,6 +45,8 @@ messages = {
"WOKLOG0001E": _("Invalid filter parameter. Filter parameters allowed: %(filters)s"),
"WOKLOG0002E": _("Creation of log file failed: %(err)s"),
+ "WOKNOT0001E": _("Unable to find notification %(id)s"),
+
"WOKOBJST0001E": _("Unable to find %(item)s in datastore"),
"WOKUTILS0001E": _("Unable to reach %(url)s. Make sure it is accessible and try again."),
diff --git a/src/wok/model/notifications.py b/src/wok/model/notifications.py
new file mode 100644
index 0000000..7158571
--- /dev/null
+++ b/src/wok/model/notifications.py
@@ -0,0 +1,47 @@
+#
+# Project Wok
+#
+# Copyright IBM Corp, 2016
+#
+# 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.exception import NotFoundError
+from wok.message import WokMessage
+
+
+class NotificationsModel(object):
+ def __init__(self, **kargs):
+ self.objstore = kargs['objstore']
+
+ def get_list(self):
+ with self.objstore as session:
+ return session.get_list('notification')
+
+
+class NotificationModel(object):
+ def __init__(self, **kargs):
+ self.objstore = kargs['objstore']
+
+ def lookup(self, id):
+ with self.objstore as session:
+ notification = session.get('notification', str(id))
+
+ # use WokMessage to translate the notification
+ if notification:
+ plugin = notification.pop('_plugin_name', None)
+ message = WokMessage(id, notification, plugin).get_text()
+ return {"code": id, "message": message}
+
+ raise NotFoundError("WOKNOT0001E", {'id': str(id)})
diff --git a/src/wok/objectstore.py b/src/wok/objectstore.py
index 59354f3..2bae30b 100644
--- a/src/wok/objectstore.py
+++ b/src/wok/objectstore.py
@@ -144,3 +144,23 @@ class ObjectStore(object):
# exception again
wok_log.error(traceback.format_exc())
return False
+
+
+def add_notification(code="", args={}, plugin_name=None):
+ try:
+ args.update({"_plugin_name": plugin_name})
+
+ with ObjectStore() as session:
+ session.store('notification', code, args)
+ except Exception as e:
+ wok_log.error("Unable to generate notification: %s" % e.message)
+
+
+def clean_notifications():
+ try:
+ with ObjectStore() as session:
+ notifications = session.get_list('notification')
+ for item in notifications:
+ session.delete('notification', item)
+ except Exception as e:
+ wok_log.error("Unable to clean notifications: %s" % e.message)
diff --git a/src/wok/server.py b/src/wok/server.py
index 902d4bf..a329ed4 100644
--- a/src/wok/server.py
+++ b/src/wok/server.py
@@ -33,6 +33,7 @@ from wok.config import config as configParser
from wok.config import paths, PluginConfig, WokConfig
from wok.control import sub_nodes
from wok.model import model
+from wok.objectstore import clean_notifications
from wok.proxy import start_proxy, terminate_proxy
from wok.reqlogger import RequestLogger
from wok.root import WokRoot
@@ -106,6 +107,9 @@ class Server(object):
if dev_env:
cherrypy.log.screen = True
+ # clean object store notifications
+ clean_notifications()
+
# close standard file handlers because we are going to use a
# watchedfiled handler, otherwise we will have two file handlers
# pointing to the same file, duplicating log enries
--
1.9.1
8 years, 8 months
[PATCH V2] [Wok] Implement WokMessage class
by Lucio Correia
WokMessage is a generic message implementation, which looks
up and translates error messages for all plugins and Wok
itself.
Lookup and translation code was adapted from WokException
class, which now just uses WokMessage.
WokMessage is intended to be used by other modules dealing
with messages, such as User Request Log and future feature
Asynchronous Notifications.
Signed-off-by: Lucio Correia <luciojhc(a)linux.vnet.ibm.com>
---
src/wok/exception.py | 45 +++---------------------------
src/wok/message.py | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 83 insertions(+), 41 deletions(-)
create mode 100644 src/wok/message.py
diff --git a/src/wok/exception.py b/src/wok/exception.py
index 023334b..52f007e 100644
--- a/src/wok/exception.py
+++ b/src/wok/exception.py
@@ -20,53 +20,16 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import cherrypy
-import gettext
-from wok.i18n import messages as _messages
-from wok.template import get_lang, validate_language
+from wok.message import WokMessage
class WokException(Exception):
def __init__(self, code='', args={}):
self.code = code
-
- for key, value in args.iteritems():
- if isinstance(value, unicode):
- continue
-
- # value is not unicode: convert it
- try:
- # In case the value formats itself to an ascii string.
- args[key] = unicode(str(value), 'utf-8')
- except UnicodeEncodeError:
- # In case the value is a WokException or it formats
- # itself to a unicode string.
- args[key] = unicode(value)
-
- # First, check if it is a Wok error message, then search in plugin
- # error messages list
- msg = _messages.get(code, code)
- if (msg == code) and (cherrypy.request.app):
- msg = self._get_translation()
-
- msg = unicode(msg, 'utf-8') % args
- pattern = "%s: %s" % (code, msg)
- cherrypy.log.error_log.error(pattern)
- Exception.__init__(self, pattern)
-
- def _get_translation(self):
- lang = validate_language(get_lang())
- paths = cherrypy.request.app.root.paths
- domain = cherrypy.request.app.root.domain
- messages = cherrypy.request.app.root.messages
- text = messages.get(self.code, self.code)
-
- try:
- translation = gettext.translation(domain, paths.mo_dir, [lang])
- except:
- translation = gettext
-
- return translation.gettext(text)
+ msg = WokMessage(code, args).get_text()
+ cherrypy.log.error_log.error(msg)
+ Exception.__init__(self, msg)
class NotFoundError(WokException):
diff --git a/src/wok/message.py b/src/wok/message.py
new file mode 100644
index 0000000..3167f1f
--- /dev/null
+++ b/src/wok/message.py
@@ -0,0 +1,79 @@
+#
+# Project Wok
+#
+# Copyright IBM Corp, 2015-2016
+#
+# Code derived from Project Kimchi
+#
+# 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 gettext
+
+from wok.template import get_lang, validate_language
+
+
+class WokMessage(object):
+ def __init__(self, code='', args={}, plugin=None):
+ # make all args unicode
+ for key, value in args.iteritems():
+ if isinstance(value, unicode):
+ continue
+
+ try:
+ # In case the value formats itself to an ascii string.
+ args[key] = unicode(str(value), 'utf-8')
+ except UnicodeEncodeError:
+ # In case the value is a WokException or it formats
+ # itself to a unicode string.
+ args[key] = unicode(value)
+
+ self.code = code
+ self.args = args
+ self.plugin = plugin
+
+ def _get_translation(self):
+ # get app from plugin path if specified
+ if self.plugin:
+ app = cherrypy.tree.apps[self.plugin]
+ # if on request, try to get app from it
+ elif cherrypy.request.app:
+ app = cherrypy.request.app
+ # fallback: get root app (WokRoot)
+ else:
+ app = cherrypy.tree.apps['']
+
+ # setup translation
+ domain = app.root.domain
+ paths = app.root.paths
+ lang = validate_language(get_lang())
+
+ try:
+ translation = gettext.translation(domain, paths.mo_dir, [lang])
+ except:
+ translation = gettext
+
+ # fallback to Wok message in case plugins raise Wok exceptions
+ text = app.root.messages.get(self.code, None)
+ if text is None:
+ wok_messages = cherrypy.tree.apps[''].root.messages
+ text = wok_messages.get(self.code, self.code)
+
+ return translation.gettext(text)
+
+ def get_text(self):
+ msg = self._get_translation()
+ msg = unicode(msg, 'utf-8') % self.args
+ return "%s: %s" % (self.code, msg)
--
1.9.1
8 years, 8 months
[PATCH] [Wok] Updated Bootstrap-select library to latest version
by sguimaraes943@gmail.com
From: Samuel Guimarães <sguimaraes943(a)gmail.com>
This patch updates Boootstrap-select files and wok customization SCSS / CSS.
This patch is mandatory to enable multiple VEPA interfaces in Kimchi.
Samuel Guimarães (1):
Updated Bootstrap-select library to latest version
ui/css/bootstrap-select.custom.css | 24 ++++++++++++++++++++++
ui/css/src/bootstrap-select.custom.scss | 21 +++++++++++++++++++
ui/js/src/wok.login.js | 4 ++--
ui/libs/bootstrap-select/LICENSE | 2 +-
.../dist/css/bootstrap-select.min.css | 6 +++---
.../dist/js/bootstrap-select.min.js | 12 +++++------
6 files changed, 57 insertions(+), 12 deletions(-)
--
1.8.3.1
8 years, 8 months
Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
by Samuel Henrique De Oliveira Guimaraes
I think this would have to go to the bugfix backlog for this release. I’m currently working on new features for Kimchi and Ginger but we’ll have to perform some enhancements on wok.window.js in order to work with ui tests and then we can investigate a fix once we start working on this task. I believe if we fix it in wok.window widget it would automatically work for all pages and plugins.
Samuel
From: Harshal Patil [mailto:harshal.patil@in.ibm.com]
Sent: terça-feira, 29 de março de 2016 03:04
To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes(a)eldorado.org.br>
Cc: alinefm(a)linux.vnet.ibm.com; Chandra Sr Potula <chandra.shekhar(a)in.ibm.com>; kimchi-devel(a)ovirt.org
Subject: Re: RE: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
That's great. Would you be able to fix this issue? I don't have much insight into UI.
----- Original message -----
From: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes(a)eldorado.org.br<mailto:samuel.guimaraes@eldorado.org.br>>
To: Harshal Patil/India/IBM@IBMIN, "alinefm(a)linux.vnet.ibm.com<mailto:alinefm@linux.vnet.ibm.com>" <alinefm(a)linux.vnet.ibm.com<mailto:alinefm@linux.vnet.ibm.com>>
Cc: Chandra Sr Potula/India/IBM@IBMIN, "kimchi-devel(a)ovirt.org<mailto:kimchi-devel@ovirt.org>" <kimchi-devel(a)ovirt.org<mailto:kimchi-devel@ovirt.org>>
Subject: RE: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
Date: Thu, Mar 24, 2016 10:08 PM
Hi,
I was able to reproduce it here. I think we need to add a function to check if the user session is still valid before appending the modal window content inside the dialog and if it is not, then redirect to login page.
Samuel
From: Harshal Patil [mailto:harshal.patil@in.ibm.com]
Sent: quinta-feira, 24 de março de 2016 13:13
To: alinefm(a)linux.vnet.ibm.com<mailto:alinefm@linux.vnet.ibm.com>
Cc: Chandra Sr Potula <chandra.shekhar(a)in.ibm.com<mailto:chandra.shekhar@in.ibm.com>>; kimchi-devel(a)ovirt.org<mailto:kimchi-devel@ovirt.org>; Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes(a)eldorado.org.br<mailto:samuel.guimaraes@eldorado.org.br>>
Subject: Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
Screenshots,
https://imgur.com/a/CcuMe
----- Original message -----
From: Aline Manera <alinefm(a)linux.vnet.ibm.com<mailto:alinefm@linux.vnet.ibm.com>>
To: Harshal Patil/India/IBM@IBMIN, kimchi-devel(a)ovirt.org<mailto:kimchi-devel@ovirt.org>, samuel.guimaraes(a)eldorado.org.br<mailto:samuel.guimaraes@eldorado.org.br>, Chandra Sr Potula/India/IBM@IBMIN
Cc:
Subject: Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
Date: Thu, Mar 24, 2016 3:49 AM
Thanks, Harshal, for reporting this problem!
I will try to reproduce and update the issue according to my tests.
On 03/23/2016 06:59 AM, Harshal Patil wrote:
Hi,
Wherever there are modal dialog boxes are used, the session timeout on UI is not handled properly. User is not able to log back in but instead is shown 405 error code.
I have described the steps to reproduce here, https://github.com/kimchi-project/wok/issues/58
Let me know if you need more info.
Harshal
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org<mailto:Kimchi-devel@ovirt.org>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
8 years, 8 months
Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
by Samuel Henrique De Oliveira Guimaraes
Hi,
I was able to reproduce it here. I think we need to add a function to check if the user session is still valid before appending the modal window content inside the dialog and if it is not, then redirect to login page.
Samuel
From: Harshal Patil [mailto:harshal.patil@in.ibm.com]
Sent: quinta-feira, 24 de março de 2016 13:13
To: alinefm(a)linux.vnet.ibm.com
Cc: Chandra Sr Potula <chandra.shekhar(a)in.ibm.com>; kimchi-devel(a)ovirt.org; Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes(a)eldorado.org.br>
Subject: Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
Screenshots,
https://imgur.com/a/CcuMe
----- Original message -----
From: Aline Manera <alinefm(a)linux.vnet.ibm.com<mailto:alinefm@linux.vnet.ibm.com>>
To: Harshal Patil/India/IBM@IBMIN, kimchi-devel(a)ovirt.org<mailto:kimchi-devel@ovirt.org>, samuel.guimaraes(a)eldorado.org.br<mailto:samuel.guimaraes@eldorado.org.br>, Chandra Sr Potula/India/IBM@IBMIN
Cc:
Subject: Re: [Kimchi-devel] [WOK][UI] Modal dialog box not able to log user back in after timeout
Date: Thu, Mar 24, 2016 3:49 AM
Thanks, Harshal, for reporting this problem!
I will try to reproduce and update the issue according to my tests.
On 03/23/2016 06:59 AM, Harshal Patil wrote:
Hi,
Wherever there are modal dialog boxes are used, the session timeout on UI is not handled properly. User is not able to log back in but instead is shown 405 error code.
I have described the steps to reproduce here, https://github.com/kimchi-project/wok/issues/58
Let me know if you need more info.
Harshal
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org<mailto:Kimchi-devel@ovirt.org>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
8 years, 8 months
Kimchi 2.1 is released!
by Aline Manera
On behalf of everyone who has worked hard on this release, I am pleased
to announce the availability of *Kimchi 2.1*!
Kimchi 2.1 depends on *Wok 2.1*! So make sure to have both of them properly installed in your system.
Find more information about Wok 2.1 athttp://kimchi-project.github.io/wok/downloads
Among many features, this release includes:
✔ Live migration support
✔ Guest memory hot plug support
✔ Guest serial console support
✔ Attach new disk to guest
✔ Linux bridges support
✔ VEPA network support
✔ Logical storage pool based on existing VG
✔ Maximum vCPUs support on Guests and Templates
✔ Maximum memory support on Guests and Templates
✔ Templates gallery view
✔ Guests gallery view
✔ Add user activity log support
✔ Bug fixes
We have worked hard to ensure that Kimchi runs well on the most popular
Linux distributions including: Fedora 23, Ubuntu 15.10, openSUSE LEAP 42.1,
and RHEL 7.2. Kimchi uses standard Linux interfaces so it should run well
on many other distributions too.
You can easily grab this release in tarball format or via git:
✔https://github.com/kimchi-project/kimchi/archive/2.1.0.tar.gz
<https://github.com/kimchi-project/kimchi/archive/2.0.0.tar.gz>
✔ git clone --recursivehttps://github.com/kimchi-project/kimchi.git
There are also some packages available for download at:
✔http://kimchi-project.github.io/kimchi/downloads/
Go ahead! Give it a try and let us know what you think!
Regards,
Aline Manera
8 years, 8 months
[PATCH][Kimchi 0/6] Use a single field to create a template
by Ramon Medeiros
Instead of specify if the media is cdrom or disk, use source_media to create a template
Ramon Medeiros (6):
Create a single field to pass the installation media
Method to retrieve stored templates at object store
Fix checking duplicate template before creating it
Identify installation media while creating template
Only use source_media as boot media
Update tests
API.json | 5 ++
i18n.py | 2 +-
model/templates.py | 13 ++--
tests/test_authorization.py | 4 +-
tests/test_livemigration.py | 7 +-
tests/test_mockmodel.py | 14 ++--
tests/test_model.py | 69 ++++++++++++--------
tests/test_rest.py | 32 ++++------
tests/test_template.py | 39 +++++-------
tests/test_vmtemplate.py | 24 +++----
utils.py | 30 +++++++++
vmtemplate.py | 152 ++++++++++++++++++++++++++++++++++++++++----
12 files changed, 279 insertions(+), 112 deletions(-)
--
2.5.5
8 years, 8 months