<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Thanks for the replies and all the comments. Sorry for taking so
    long to<br>
    answer this thread again...<br>
    <br>
    Some more comments inline.<br>
    <br>
    On 01/21/2013 09:54 AM, Daniel P. Berrange wrote:<br>
    <span style="white-space: pre;">> On Fri, Jan 18, 2013 at
      03:27:32PM -0200, <a class="moz-txt-link-abbreviated" href="mailto:lagarcia@linux.vnet.ibm.com">lagarcia@linux.vnet.ibm.com</a> wrote:<br>
      >><br>
      >> Although I can agree that virt-manager would be more
      appropriate to hold the<br>
      >> features I am describing, I think I am trying to address
      a use case scenario<br>
      >> that is currently not properly supported by any of these
      two tools. So, first,<br>
      >> let me try to define the audience I am interested in: my
      average end-user here<br>
      >> is a desktop user.<br>
      >><br>
      >> My view is that currently available virt-viewer and
      virt-manager tools are<br>
      >> designed to fit the needs of system administrators or
      developers managing<br>
      >> virtual machines. Both of them are targeted to the user
      dealing with<br>
      >> virtualization in an enterprise/data-center environment.
      However, it is<br>
      >> becoming more and more common that average desktop users,
      that are usually<br>
      >> involved in administrative or operational tasks and that
      might not have any<br>
      >> knowledge on how virtualization works, need to use
      virtualized environments<br>
      >> running on their desktops (or even remotely) to
      accomplish daily tasks. Using a<br>
      >> virtualized environment to accomplish some specific tasks
      would be important<br>
      >> and necessary due to security reasons: to avoid any kind
      of contamination<br>
      >> between the desktop user system and the system running
      the tools he/she uses to<br>
      >> accomplish important tasks and that might have
      confidential/sensitive<br>
      >> information. Also, it may be the case that customer
      contracts enforce the use<br>
      >> of isolated systems to access the customer's IT
      environment: the use of<br>
      >> virtualization allows one person to have access to
      multiple isolated<br>
      >> environments in an easy way yet avoiding any
      contamination between the<br>
      >> environments.<br>
      >><br>
      >> The way I see today, virt-viewer is a too simple tool
      that only provides access<br>
      >> to the virtual machine console. And, on the other hand,
      virt-manager is quite a<br>
      >> complex tool for a desktop user. A desktop user might not
      be interested in the<br>
      >> details involved in creating and managing virtual
      machines (IT department will<br>
      >> work on that). But, at the same time, the desktop user
      would definitely want to<br>
      >> access the virtual machine console and have some kind of
      control over the<br>
      >> machine, even though he/she don't want to interact with
      any other complexities<br>
      >> related to the virtual machine infrastructure. In that
      scenario, I am really<br>
      >> targeting something in between from what virt-viewer and
      virt-manager console<br>
      >> viewer provides today.<br>
      >><br>
      >> The specific use cases I am interested in are:<br>
      >><br>
      >> 1) Pause/Resume virtual machine<br>
      >><br>
      >> As a desktop user I want to be able to pause/resume the
      execution of the<br>
      >> virtual machine. This is important in cases in which I
      want to temporarily<br>
      >> suspend the work being executed at some point and resume
      the work in a later<br>
      >> time. From my point of view, this operation is similar to
      the suspend operation<br>
      >> in my desktop/laptop and it is intuitive for me to
      execute the same action in a<br>
      >> virtual machine.<br>
      ><br>
      > You can just invoke S3 suspend inside the VM<br>
      ><br>
      >> 2) Restart virtual machine<br>
      >><br>
      >> As a desktop user I want to be able to restart the
      virtual machine. This is<br>
      >> important in cases in which the applications running on
      the virtual machine<br>
      >> blocks its operation for some reason (specially when
      using Windows virtual<br>
      >> machines, which happens to be a very common case).<br>
      ><br>
      > If you're talking about forcing restart when the guest is not
      co-operating<br>
      > then this is just the same as item 4).<br>
      ><br>
      > If the guest is co-operating, then invoking virDomainReboot
      is exactly<br>
      > equivalent to just initiating a reboot from inside the guest.<br>
      ><br>
      >> 3) Shutdown<br>
      >><br>
      >> As a desktop user I want to be able to shutdown the
      virtual machine. The use<br>
      >> case here is similar to the one above: sometimes it is
      needed to simply turn<br>
      >> off the virtual machine to recover from a bad behaving
      state. Also, it is<br>
      >> intuitive for myself that I would be able to shutdown the
      virtual machine the<br>
      >> same way I do with my desktop/laptop. More importantly,
      this is the more<br>
      >> effective way to free up resources being used by the
      running virtual machine.<br>
      ><br>
      > Same comments as 2).</span><br>
    <br>
    Well, if an user can perform #1, #2, and #3 from inside the VM, why<br>
    shouldn't we provide an easy way for he/she does the same from the<br>
    virtual interface? In the end, that would be similar to hit
    power/reset<br>
    button if the user was in front of the machine.<br>
    <br>
    On the other hand, I understand the concerns from Doug Goldstein on
    this<br>
    respect. Although in the majority of Linux distros I've seen till
    now a<br>
    user with access to the machine console can suspend/restart/shutdown
    the<br>
    machine, this might not be the general case for all the OSes.<br>
    <span style="white-space: pre;">><br>
      ><br>
      >> 4) Forced shutdown<br>
      >><br>
      >> As a desktop user I want to be able to forcefully turn
      off the running virtual<br>
      >> machine. This is important in cases where the virtual
      machine is not responding<br>
      >> anymore, e.g. BSOD.<br>
      ><br>
      > Yep, I can see this could be useful.<br>
      ><br>
      >> 5) Delete Virtual Client<br>
      >><br>
      >> As a desktop user I might be interested in deleting the
      current virtual<br>
      >> machine. This is important when, for instance, IT is
      deploying a new version of<br>
      >> the virtual machine and I need to decide whether I want
      to continue using the<br>
      >> old one, whether I want both versions (temporarily or in
      a definitive way), or<br>
      >> whether I would, eventually, destroy the old machine and
      start using the new<br>
      >> one.<br>
      ><br>
      > This is a difficult one in general. While it is easy enough
      to delete the<br>
      > definition of the VM, there's the question of what todo with
      the storage<br>
      > that goes along with it.</span><br>
    <br>
    I would say that, in general, we should allow the user to choose
    whether<br>
    he/she wants to delete the storage. If the user doesn't have enough<br>
    permission in order to do that, we just show a message error. I
    think<br>
    this is similar to what happens with virt-manager today.<br>
    <span style="white-space: pre;">><br>
      ><br>
      >> 6) Create shortcut on Desktop<br>
      >><br>
      >> As a desktop user I want to be able to easily access my
      virtual machines.<br>
      >> Ideally I would be able to do that from a desktop
      application launcher shortcut<br>
      >> that would: 1) Check if the virtual machine is running
      and, if not running,<br>
      >> start it; 2) Connect to the virtual machine console.<br>
      >><br>
      >> This desktop shortcut will be pre-configured by IT in my
      machine, but I need an<br>
      >> easy way to recover it if I mistakenly delete it.<br>
      >><br>
      >> Notice that the desktop shortcut would led me directly to
      the virtual machine<br>
      >> console viewer with all the features I am interested in.
      I don't want to look<br>
      >> on all the complexities shown by the virt-manager
      management window, for<br>
      >> instance.<br>
      ><br>
      > I think your talk about shortcuts is a red-herring here. This
      can be simply<br>
      > described as "Start the VM upon connect, if not already
      running".<br>
      ><br>
      >> 7) Changes the console viewer exit routine to shutdown
      the guest when the<br>
      >> application is terminated.<br>
      >><br>
      >> As a desktop user it is counter intuitive that the
      virtual machine continues to<br>
      >> run when I left the console viewer application. I am used
      that when I close an<br>
      >> application all the resources being used by it are also
      freed up. In that case,<br>
      >> I would want to link the viewer exit routine to the
      virtual machine shutdown<br>
      >> action.<br>
      >><br>
      >> Of course that this might be configurable, as little bit
      more advanced desktop<br>
      >> user might understand the fact that the virtual machine
      can continue to run<br>
      >> even though the viewer is closed.<br>
      >><br>
      >> 8) Leave virtual machine running in the background<br>
      >><br>
      >> As a desktop user, I want to be able to quit the viewer
      application but leave<br>
      >> the virtual machine running. This is the default behavior
      in viewers today, but<br>
      >> if we introduce the use case #7 (which is interestingly a
      cause of a good<br>
      >> amount of desktop users' requests) and the user
      configures it to be the default<br>
      >> behavior, we need to leave a way for myself to keep the
      virtual machine running<br>
      >> while I quit the viewer application.<br>
      ><br>
      >><br>
      >> 9) USB redirection functionality<br>
      >><br>
      >> As a desktop user I want to be able to attach a USB
      device in my laptop/desktop<br>
      >> and get it available in the running guest if the console
      viewer has the UI<br>
      >> focus at the time the USB device is attached. I would
      also be able to manually<br>
      >> select which USB devices already attached to the host I
      want to make available<br>
      >> to the guest.<br>
      >><br>
      >> Current development status:<br>
      >><br>
      >> Use cases #1, #2, #3, and #4 are currently implemented in
      virt-manager console<br>
      >> viewer. It would be useful though to have a way to open
      it without opening the<br>
      >> virt-manager management window.<br>
      >><br>
      >> Use case #5 is currently implemented in virt-manager
      management window, but<br>
      >> this is not a window in which a desktop user would be
      interested in as it is<br>
      >> too complex for the average desktop user.<br>
      >><br>
      >> Use case #9 is currently implemented only in virt-viewer.<br>
      >><br>
      >> Use cases #6, #7, and #8 are currently not implemented in
      any tools.<br>
      ><br>
      > It is quite a perfect fit, but in general I think I'd
      classify your<br>
      > arguments as being "Allow the admin todo anything to a VM,
      that he<br>
      > could do to a physical machine if he had physical access".</span><br>
    <br>
    Yes, based on the latest discussions, I agree.<br>
    <span style="white-space: pre;">><br>
      > Virt-viewer as an application is really aiming at "Allow a
      user to<br>
      > interact with a VM as he would with a physical 'kiosk'
      display". ie<br>
      > it presents you access to use the desktop, but provides no
      physical<br>
      > interaction / lifecycle control</span><br>
    <br>
    Ok.<br>
    <span style="white-space: pre;">><br>
      ><br>
      > I still believe that virt-manager could be made to address
      these, or<br>
      > alternatively GNOME Boxes also addresses much of this. The
      problem is<br>
      > though, that neither of these applications are really
      ammenable to<br>
      > running on Windows.</span><br>
    <br>
    Ok... actually I didn't tried GNOME Boxes yet... but this was
    already in<br>
    my "to do" list (specially as you and Doug Goldstein suggested it
    might include<br>
    some of the features I am looking for.<br>
    <span style="white-space: pre;">><br>
      > I'm kind of loathe to suggest this, but it kind of seems like
      you'd<br>
      > be served by a new application "virt-control", which would
      basically<br>
      > be the virt-viewer, but with all the extra features you
      describe.<br>
      > This could even be done as part of the virt-viewer codebase,
      so that<br>
      > we don't end up duplicating too much code. We already have 2
      frontends<br>
      > to our virt-viewer codebase - remote-viewer & virt-viewer
      - so adding<br>
      > a 3rd - virt-control wouldn't be the end of the world,
      assuming we<br>
      > still shared that 95% of the code.</span><br>
    <br>
    Ok... at the same time, before going down this path, I would try to<br>
    implement some of these features in the virt-manager console viewer.<br>
    From what I heard in the latest e-mails on this thread, it seems
    that<br>
    everybody agrees that, although these features might not fit well on<br>
    virt-viewer, they are kind of already available or should fit in<br>
    virt-manager. So, before creating a 3rd frontend for virt-viewer, I
    am<br>
    going to try to fit my requirements on virt-manager console viewer.<br>
    <br>
    I think this option would be less intrusive and might be simpler.<br>
    <br>
    Best regards,<br>
    <br>
    Leonardo Garcia<br>
    <span style="white-space: pre;">><br>
      ><br>
      > Regards,<br>
      > Daniel</span><br>
    <br>
    <br>
  </body>
</html>