<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>