<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<tt>Hi all,<br>
<br>
I'd like to share with you what I have in mind for the next
release.<br>
Most of the items listed below have already come up on ML before.<br>
<br>
<font color="#3333ff"><b>A) Upload file to storage pool</b></font><br>
In the current code, the upload function is disabled as it does
not work well with files larger than 500MB.<br>
When trying to upload a file with 500MB the browser stops
responding and after some time it crashes.<br>
From a quick investigation, I identified it happens prior to
send the data to server:<br>
<br>
var uploadFile = function() {<br>
var blobFile =
$(localFileBox)[0].files[0]; <br>
var fileName =
blobFile.name; <br>
var fd = new
FormData(); <br>
fd.append('name',
fileName); <br>
<b>fd.append('file', blobFile)</b><br>
....<br>
}<br>
<br>
We need check if there is a way to solve it on UI by changing
the data structure or how it is loaded or think about a solution
involving backend.<br>
<br>
<b><font color="#3333ff">B) Reduce imported code</font></b><br>
Kimchi imports some code: python-websockets, novnc, spice and
jquery libs<br>
Some of them (to don't say most of them) are already packaged
in some Linux distributions (Fedora, Ubuntu, etc)<br>
We should check the availability of those packages in the all
supported distros and when possible remove the imported code from
git repository and add it as a dependency. <br>
<b>It is a requirement</b><b> to have Kimchi on Fedora.</b><br>
<br>
<b><font color="#3333ff">C) MockModel refactor</font></b><br>
The mockmodel was designed to provide a way to user tests
Kimchi without affecting the system (by "kimchid --test") and also
to make the tests easier to do.<br>
But in fact, we have a bunch of code that completely differs
from the real model, so the developer needs to do 2 kinds of
implementations while developing a new feature.<br>
My proposal is simplify that by using Model() with
"test:///default" URI.<br>
This configuration does not affect the system in real and also
can provide us a way to test the new feature in a closer scenario
to the real one: by connecting to libvirt and doing the
operations.<br>
As you may know "test:///default" driver has some limitations
that prevents some operations, for example, screenshots.<br>
To solve it we could only override what is not supported by
this driver and create a simpler mockmodel.<br>
<br>
Example:<br>
class MockModel(Model):<br>
super(Model, self).__init__("test:///default")<br>
<br>
def vmscreenshot_lookup():<br>
# do some mock code<br>
<br>
I think in this way we will have a significant reduction in
our mockmodel code.<br>
<br>
<b><font color="#3333ff">D) VM Template refactor</font></b><br>
More and more the user will be able to change the VM
configuration and it implies in generating a XML code related to
the new item to be attached to the VM.<br>
But it is also done in the Template level. Because that we have
a lot of duplicated code related to the XML generation on VM and
Template. Some of them using etree.builder and others using pure
strings.<br>
My idea is to create a xml python module to hold all the XML
manipulation about to element type.<br>
<br>
Example:<br>
src/kimchi/xml/iface.py</tt><br>
<tt><tt> src/kimchi/xml/disk.py</tt></tt><br>
<tt><tt><tt> src/kimchi/xml/graphics.py</tt></tt></tt><br>
<tt><tt> src/kimchi/xml/domain.py</tt><br>
<br>
Each of these files will be responsible to handle the XML
generation and manipulation using <b>etree</b>.<br>
Then when needed, while changing VM configuration or Template,
we use the same code from our xml module.<br>
<br>
<b><font color="#3333ff">E) Allow user adds volumes from different
pools to a Template</font></b> <b>(depends on D)</b><br>
Today the user can only use one disk in a Template.<br>
We should provide a way to user select multiple volumes from
different storage pools in a Template.<br>
The user should be able to specific a pool and a disk size to
Kimchi automatically creates a volume according to those inputs.<br>
So user can specify a pool and a volume OR a pool and a disk
size.<br>
<br>
From UI perspective, we will need a bigger refactor on it.
Maybe displaying the Template information in tabs (the same way we
did when editing a VM)<br>
<br>
<b><font color="#3333ff">F) Guest disk hot plug</font></b> <b>(depends
on D)</b><br>
Allow attaching a disk to a running guest.<br>
<br>
<b><font color="#3333ff">G) PCI passthrough</font></b><br>
<br>
<b><font color="#3333ff">H) SMT support</font></b><br>
Kimchi should enable SMT on guests when it improves performance
according to host architecture and choose the best configuration
to user (SMT8, 4 or 2)<br>
This kind of information must not be prompted to user as it is
only for expert users and can block entry level users (our main
focus)<br>
So our algorithm must be good enough to do the right choice
according to host and guest configuration.<br>
<br>
<font color="#3333ff"><b>I) Snapshot support</b></font><br>
Allow users create, revert and delete a snapshot.<br>
<br>
<b><font color="#3333ff">J) Guest cloning</font></b><br>
<br>
<b><font color="#3333ff">K) LDAP authentication support</font></b><br>
We need to think also how to enable authorization on a LDAP
authentication.<br>
In my first view, I think we need to provide a way to sysadmin
lists the IDs to have admin role in the Kimchi config file.<br>
What about the groups? Should we use LDAP domains instead of
groups?<br>
<br>
And we also need to change UI when setting users and groups, as
there is no way to list all users in a LDAP server.<br>
<br>
On Kimchi configuration file we can have an authentication
section like below:<br>
<br>
[authentication]<br>
method = pam | ldap<br>
<br>
ldap_server = <br>
ldap_search = <br>
ldap_domain = <br>
ldap_admin_users = <br>
<br>
<b><font color="#3333ff">L) Allow user changes graphics type on
guest</font></b><br>
User should be able to change from VNC to Spice on a existing
guest<br>
<br>
<b><font color="#3333ff">M) Add support for serial console</font></b><br>
<br>
<b><font color="#3333ff">N) Live migration</font></b><br>
Start some investigation on how to do that<br>
<br>
----<br>
Yeap! A lot of cool features and just a piece of our backlog... <span
class="moz-smiley-s3"><span> ;-) </span></span><br>
<br>
That is a brainstorm. So please, your comments/suggestions are
more than welcome!<br>
<br>
Thanks,<br>
Aline Manera<br>
</tt>
</body>
</html>