1. 07 Feb, 2009 1 commit
    • Guido Trotter's avatar
      Support cdrom image and boot order for KVM · 66d5dbef
      Guido Trotter authored
      The cdrom image has the same meaning than in Xen HVM, and so does
      boot_order, even though it has a slightly different syntax, and uses the
      value 'disk' too boot from disk and 'cdrom' to boot from cdrom.
      
      Reviewed-by: iustinp
      66d5dbef
  2. 05 Feb, 2009 2 commits
    • Guido Trotter's avatar
      KVM: add VNC TLS and X509 parameters · 8b2d1013
      Guido Trotter authored
      With this parameters VNC for KVM is able to be protected by tls,
      optionally with an x509 certificate, and optionally verifying the
      client as well. Additionally in this patch we limit the bind address to
      being a directory, rather than a file or a directory, for simplicity, as
      it allows for the same level of control anyway.
      
      Reviewed-by: iustinp
      8b2d1013
    • Guido Trotter's avatar
      KVM: allow binding vnc to a file · 8447f52b
      Guido Trotter authored
      Before we forced the VNC_BIND_ADDRESS to be an ip. Now we also accept a
      path, and bind the instance to it, or to a file in it if it's a
      directory.
      
      Reviewed-by: iustinp
      8447f52b
  3. 03 Feb, 2009 1 commit
    • Guido Trotter's avatar
      KVM: Make GetAllInstancesInfo concurrency-safe · 00ad5362
      Guido Trotter authored
      Or actually more so. If this function gets called while instances get
      shut down, it might try to report information on instances which don't
      exits. Try to fail gracefully if that happens, by just skipping an
      instance which has disappeared in the meantime.
      
      Reviewed-by: iustinp
      00ad5362
  4. 29 Jan, 2009 6 commits
  5. 28 Jan, 2009 1 commit
  6. 27 Jan, 2009 3 commits
    • Guido Trotter's avatar
      KVM and Xen: add the HV_ROOT_PATH parameter · 074ca009
      Guido Trotter authored
      This parameter allows a different path to be passed to the instance
      kernel. The new parameter is mandatory, and by default has the value of
      the old hardcoded value for both kvm and xen.
      
      Beta1 clusters will need to have this parameter added for their
      instances to be able to boot.
      
      Reviewed-by: iustinp
      074ca009
    • Guido Trotter's avatar
      KVM: implement GetShellCommandForConsole · 637ce7f9
      Guido Trotter authored
      This is a class method, because it calls _InstanceSerial, which is
      another class method. The patch changes it to classmethod for all the
      hypervisor classes.
      
      Reviewed-by: iustinp
      637ce7f9
    • Guido Trotter's avatar
      KVM: classify _Instance{Monitor,Serial,KVMRuntime} · 0df4d98a
      Guido Trotter authored
      Those methods need nothing from the instantiated class, and just
      manipulate strings, and fetch some class global variables, so they can
      be classmethods.
      
      Reviewed-by: iustinp
      0df4d98a
  7. 23 Jan, 2009 1 commit
  8. 21 Jan, 2009 8 commits
    • Guido Trotter's avatar
      KVM live migration: handle failure · c087266c
      Guido Trotter authored
      If the KVM live migration ends up in a 'failed' state it has been
      aborted at the kvm level, and the machine is still running locally.
      We support also the 'cancelled' state even though there should be no way
      of reaching it, without manual intervention.
      
      Reviewed-by: iustinp
      c087266c
    • Guido Trotter's avatar
      KVM: change a few IOError with EnvironmentError · 90c024f6
      Guido Trotter authored
      Reviewed-by: iustinp
      90c024f6
    • Guido Trotter's avatar
      KVM: instance migration · 30e42c4e
      Guido Trotter authored
      The tcp port used for migrating KVM instances is selectable at
      ./configure time. We use a single port as nodes are locked anyway during
      a migration, so no two migrations can happen at the same time to the
      same node.
      
      Reviewed-by: iustinp
      30e42c4e
    • Guido Trotter's avatar
      KVM: add the _InstancePidAlive function · 1f8b3a27
      Guido Trotter authored
      Throughout the kvm code we very often look for the instance pidfile
      name, read it, and check if the process is alive. Abstract this into a
      private function and use that one instead.
      
      This patch also changes RebootInstance to check whether the instance is
      alive before trying to reboot it.
      
      Reviewed-by: iustinp
      1f8b3a27
    • Guido Trotter's avatar
      KVM: fix RebootInstance · f02881e0
      Guido Trotter authored
      RebootInstance was broken, because it just used to call StartInstance
      with wrong parameters. With this patch we still stop the instance, but
      use the saved kvm runtime to start it again.
      
      Reviewed-by: iustinp
      f02881e0
    • Guido Trotter's avatar
      KVM: retry the instance shutdown command · 6567aff3
      Guido Trotter authored
      When we ask the instance to shutdown sometimes the command won't work,
      especially if the instance isn't fully booted up. We'll wait for a bit,
      and give it a few chances before giving up.
      
      Reviewed-by: iustinp
      6567aff3
    • Guido Trotter's avatar
      KVM: save and remove the KVM runtime · 38e250ba
      Guido Trotter authored
      At instance startup time we save the kvm runtime, and at stop time we
      delete it. This patch also includes a function to load the kvm runtime,
      which is unused yet.
      
      Reviewed-by: iustinp
      38e250ba
    • Guido Trotter's avatar
      KVM: split KVM runtime generation and startup · ee5f20b0
      Guido Trotter authored
      Before we used to generate the kvm command line and then just run it.
      With this patch we split the generation from the time it is run,
      allowing us to save it and replay it at reboot.
      
      We must take special care about instance nics:
        - We can't include them in the saved command line, as they point to
          temporary files
        - We can't just generate them at exec time, because we would apply
          those changes, but not all the other ones, to a running instance,
          thus making it inconsistent (for example if an instance had a memory
          increased and one more nic, in a soft reboot we would add the nic, but
          not the memory)
      So we'll just save the instance nic data at the time the kvm runtime
      data is generated, and transform it into actual parameters at execution
      time.
      
      Reviewed-by: iustinp
      ee5f20b0
  9. 20 Jan, 2009 3 commits
    • Guido Trotter's avatar
      KVM: add a _CONF_DIR · a1d79fc6
      Guido Trotter authored
      Currently we keep pid files and control files. In the conf dir we'll
      also keep the data to start the instance anew, and the network
      interface scripts. These will then be copied to a separate area (since
      _CONF_DIR could be mounted 'noexec') and used to start the instance.
      
      This patch also adds comments to state what the various directories are
      used for.
      
      Reviewed-by: iustinp
      a1d79fc6
    • Guido Trotter's avatar
      KVM: Remove sockets after shutdown · c4fbefc8
      Guido Trotter authored
      Abstract the monitor and serial socket naming in two functions, and
      reuse them to cleanup the files after shutdown.
      
      Reviewed-by: iustinp
      c4fbefc8
    • Guido Trotter's avatar
      KVM: fix class docstring · c4469f75
      Guido Trotter authored
      Reviewed-by: iustinp
      c4469f75
  10. 07 Jan, 2009 1 commit
    • Iustin Pop's avatar
      Simplify hypervisor block_devices structure · 069cfbf1
      Iustin Pop authored
      This is a partial forward-port of commit 1136 on the 1.2 branch:
      
        The hypervisor doesn't need to be passed the whole block device
        structure, so we'll just give it the block device name on the local
        node, and the name as seen by the instance. This will make it easier to
        manipulate it later without messing with the block devices (eg. by
        changing the system name to a symlink to the name itself).
      
        Since the HVM hypervisor changes the "virtual" name a note is added
        calling for a redesign that doesn't need this change, as different
        hypervisors and emulation types will anyway have different names for
        exported devices.
      
        Reviewed-by: iustinp
      
      The changes in this patch compared to the original are:
        - we keep passing the original disk object, not for its iv_name, but
          for it's physical_id which is needed by the file driver (this could
          be fixed maybe)
        - we don't use the iv_name anymore, since in 2.0 we already use the
          index of the device
      
      Original-Author: ultrotter
      069cfbf1
  11. 16 Dec, 2008 1 commit
    • Guido Trotter's avatar
      KVM: improve socat interface · 14aa53cb
      Guido Trotter authored
      Call socat with a full path specified at configure time, rather than
      just by its name, and check for the binary to exist at hypervisor
      verify.
      
      Reviewed-by: iustinp
      14aa53cb
  12. 14 Dec, 2008 1 commit
  13. 11 Dec, 2008 1 commit
    • Iustin Pop's avatar
      Fix epydoc format warnings · c41eea6e
      Iustin Pop authored
      This patch should fix all outstanding epydoc parsing errors; as such, we
      switch epydoc into verbose mode so that any new errors will be visible.
      
      Reviewed-by: imsnah
      c41eea6e
  14. 02 Dec, 2008 2 commits
  15. 14 Oct, 2008 2 commits
  16. 13 Aug, 2008 2 commits
    • Guido Trotter's avatar
      KVM Hypervisor Cleanup · d47d3d38
      Guido Trotter authored
      - Remove a few experiemental code lines left as comments
      - Rework first disks' boot=on addition, which was calculated twice
      - Remove an empty line
      - Remove reference to hvm_pae which doesn't apply to kvm
      
      Reviewed-by: imsnah
      d47d3d38
    • Guido Trotter's avatar
      Add KVM hypervisor code · eb58f9b1
      Guido Trotter authored
      ht_kvm.py contains the code for ganeti to work under kvm.
      This patch also modifies Makefile.am to ship that file, and
      lib/hypervisor/__init__.py to import it, and add kvm to the
      hypervisors map.
      
      Reviewed-by: imsnah
      eb58f9b1