1. 29 6月, 2011 9 次提交
    • D
      Support automatic creation of leases for disks in sanlock · 97e4f217
      Daniel P. Berrange 提交于
      The current sanlock plugin requires a central management
      application to manually add <lease> elements to each guest,
      to protect resources that are assigned to it (eg writable
      disks). This makes the sanlock plugin useless for usage
      in more ad hoc deployment environments where there is no
      central authority to associate disks with leases.
      
      This patch adds a mode where the sanlock plugin will
      automatically create leases for each assigned read-write
      disk, using a md5 checksum of the fully qualified disk
      path. This can work pretty well if guests are using
      stable disk paths for block devices eg /dev/disk/by-path/XXXX
      symlinks, or if all hosts have NFS volumes mounted in
      a consistent pattern.
      
      The plugin will create one lockspace for managing disks
      with filename /var/lib/libvirt/sanlock/__LIBVIRT__DISKS__.
      For each VM disks, there will be another file to hold
      a lease /var/lib/libvirt/sanlock/5903e5d25e087e60a20fe4566fab41fd
      Each VM disk lease is usually 1 MB in size. The script
      virt-sanlock-cleanup should be run periodically to remove
      unused lease files from the lockspace directory.
      
      To make use of this capability the admin will need to do
      several tasks:
      
       - Mount an NFS volume (or other shared filesystem)
         on /var/lib/libvirt/sanlock
       - Configure 'host_id' in /etc/libvirt/qemu-sanlock.conf
         with a unique value for each host with the same NFS
         mount
       - Toggle the 'auto_disk_leases' parameter in qemu-sanlock.conf
      
      Technically the first step can be skipped, in which case
      sanlock will only protect against 2 vms on the same host
      using the same disk (or the same VM being started twice
      due to error by libvirt).
      
      * src/locking/libvirt_sanlock.aug,
        src/locking/sanlock.conf,
        src/locking/test_libvirt_sanlock.aug: Add config params
        for configuring auto lease setup
      * libvirt.spec.in: Add virt-sanlock-cleanup program, man
        page
      * tools/virt-sanlock-cleanup.in: Script to purge unused
        disk resource lease files
      97e4f217
    • D
      Support loading a configuration file for sanlock plugin · 58eb4f2c
      Daniel P. Berrange 提交于
      Introduce a configuration file with a single parameter
      'require_lease_for_disks', which is used to decide whether
      it is allowed to start a guest which has read/write disks,
      but without any leases.
      
      * libvirt.spec.in: Add sanlock config file and augeas
        lens
      * src/Makefile.am: Install sanlock config file and
        augeas lens
      * src/locking/libvirt_sanlock.aug: Augeas master lens
      * src/locking/test_libvirt_sanlock.aug: Augeas test file
      * src/locking/sanlock.conf: Example sanlock config
      * src/locking/lock_driver_sanlock.c: Wire up loading
        of configuration file
      58eb4f2c
    • D
      Allow per-driver config file for lock manager plugins · 5df29ebc
      Daniel P. Berrange 提交于
      Allow a 'configFile' parameter to be passed into the lock
      drivers to provide configuration. Wire up the QEMU driver
      to pass in file names '/etc/libvirt/qemu-$NAME.conf
      eg qemu-sanlock.conf
      
      * src/locking/lock_driver.h, src/locking/lock_driver_nop.c,
        src/locking/lock_driver_sanlock.c, src/locking/lock_manager.c,
        src/locking/lock_manager.h: Add configFile parameter
      * src/qemu/qemu_conf.c: Pass in configuration file path to
        lock driver plugins
      5df29ebc
    • L
      network: add domain to unqualified names defined with <host> · 25171f60
      Laine Stump 提交于
      If a domain name is defined for a network, add the --expand-hosts
      option to the dnsmasq commandline. This results in the domain being
      added to any hostname that is defined in a dns <host> element and
      contains no '.' characters (i.e. it is an "unqualified"
      hostname). Since PTR records are automatically created for any name
      defined in <host>, the result of a PTR request will change from the
      unqualified name to the qualified name.
      
      This also has the same effect on any hostnames that dnsmasq reads
      from the host's /etc/hosts file.
      
      (In the case of guest hostnames that were learned by dnsmasq via DHCP
      requests, they were already getting the domain name added on, even
      without --expand-hosts).
      25171f60
    • D
      Cleanup remote protocol definitions · 6818cf86
      Daniel P. Berrange 提交于
      The standard remote protocol for libvirtd no longer needs to
      include definitions of the generic message header/error structs
      or status codes. This is all defined in the generic RPC protocol
      
      * src/remote/remote_protocol.x: Remove all RPC message definitions
      * src/remote/remote_protocol.h, src/remote/remote_protocol.c:
        Re-generate
      * daemon/remote_generate_stubs.pl: Delete obsolete script
      6818cf86
    • D
      Remove obsolete libvirtd mdns code · ea9694b2
      Daniel P. Berrange 提交于
      libvirtd now uses the generic RPC code for MDNS, so its
      custom mdns APIs are no longer required
      
      * daemon/mdns.c, daemon/mdns.h: Removed obsolete files
      ea9694b2
    • D
      Convert libvirtd over to the new RPC handling APIs · df0b57a9
      Daniel P. Berrange 提交于
      This guts the libvirtd daemon, removing all its networking and
      RPC handling code. Instead it calls out to the new virServerPtr
      APIs for all its RPC & networking work
      
      As a fallout all libvirtd daemon error reporting now takes place
      via the normal internal error reporting APIs. There is no need
      to call separate error reporting APIs in RPC code, nor should
      code use VIR_WARN/VIR_ERROR for reporting fatal problems anymore.
      
      * daemon/qemu_dispatch_*.h, daemon/remote_dispatch_*.h: Remove
        old generated dispatcher code
      * daemon/qemu_dispatch.h, daemon/remote_dispatch.h: New dispatch
        code
      * daemon/dispatch.c, daemon/dispatch.h: Remove obsoleted code
      * daemon/remote.c, daemon/remote.h: Rewrite for new dispatch
        APIs
      * daemon/libvirtd.c, daemon/libvirtd.h: Remove all networking
        code
      * daemon/stream.c, daemon/stream.h: Update for new APIs
      * daemon/Makefile.am: Link to libvirt-net-rpc-server.la
      df0b57a9
    • D
      Convert the remote driver to new RPC client APIs · c1b22644
      Daniel P. Berrange 提交于
      This guts the current remote driver, removing all its networking
      handling code. Instead it calls out to the new virClientPtr and
      virClientProgramPtr APIs for all RPC & networking work.
      
      * src/Makefile.am: Link remote driver with generic RPC code
      * src/remote/remote_driver.c: Gut code, replacing with RPC
        API calls
      * src/rpc/gendispatch.pl: Update for changes in the way
        streams are handled
      c1b22644
    • D
      Add XDR_CFLAGS to libvirt-net-rpc.la library · 51ae69be
      Daniel P. Berrange 提交于
      * src/Makefile.am: Add XDR_CFLAGS
      51ae69be
  2. 28 6月, 2011 6 次提交
    • D
      Ensure sanlock socket is labelled with the VM process label · 5247b069
      Daniel P. Berrange 提交于
      The libvirt sanlock plugin is intentionally leaking a file
      descriptor to QEMU. To enable QEMU to use this FD under
      SELinux, it must be labelled correctly. We dont want to use
      the svirt_image_t for this, since QEMU must not be allowed
      to actually use the FD. So instead we label it with svirt_t
      using virSecurityManagerSetProcessFDLabel
      
      * src/locking/domain_lock.c, src/locking/domain_lock.h,
        src/locking/lock_driver.h, src/locking/lock_driver_nop.c,
        src/locking/lock_driver_sanlock.c, src/locking/lock_manager.c,
        src/locking/lock_manager.h: Optionally pass an FD back to
        the hypervisor for security driver labelling
      * src/qemu/qemu_process.c: label the lock manager plugin
        FD with the process label
      5247b069
    • D
      Add a virSecurityManagerSetProcessFDLabel · 8e3c6fbb
      Daniel P. Berrange 提交于
      Add a new security driver method for labelling an FD with
      the process label, rather than the image label
      
      * src/libvirt_private.syms, src/security/security_apparmor.c,
        src/security/security_dac.c, src/security/security_driver.h,
        src/security/security_manager.c, src/security/security_manager.h,
        src/security/security_selinux.c, src/security/security_stack.c:
        Add virSecurityManagerSetProcessFDLabel & impl
      8e3c6fbb
    • D
      Rename virSecurityManagerSetFDLabel method · 4438c63e
      Daniel P. Berrange 提交于
      The virSecurityManagerSetFDLabel method is used to label
      file descriptors associated with disk images. There will
      shortly be a need to label other file descriptors in a
      different way. So the current name is ambiguous. Rename
      the method to virSecurityManagerSetImageFDLabel to clarify
      its purpose
      
      * src/libvirt_private.syms,
        src/qemu/qemu_migration.c, src/qemu/qemu_process.c,
        src/security/security_apparmor.c, src/security/security_dac.c,
        src/security/security_driver.h, src/security/security_manager.c,
        src/security/security_manager.h, src/security/security_selinux.c,
        src/security/security_stack.c: s/FDLabel/ImageFDLabel/
      4438c63e
    • M
    • J
      qemu: Fix update device for CURRENT + FORCE flags · ad7b3276
      Jiri Denemark 提交于
      When CURRENT and FORCE flags were used together, UpdateDeviceFlags did
      nothing because it failed to transform CURRENT into either LIVE or
      CONFIG.
      ad7b3276
    • S
      nwfilter: Return error message about unresolvable variables · ecfbf795
      Stefan Berger 提交于
      This is in response to bugzilla 664629
      
      https://bugzilla.redhat.com/show_bug.cgi?id=664629
      
      The patch below returns an appropriate error message if the chain of
      nwfilters is found to contain unresolvable variables and therefore
      cannot be instantiated.
      
      Example: The following XMl added to a domain:
      
          <interface type='bridge'>
            <mac address='52:54:00:9f:80:45'/>
            <source bridge='virbr0'/>
            <model type='virtio'/>
            <filterref filter='test'/>
          </interface>
      
      that references the following filter
      
      <filter name='test' chain='root'>
        <filterref filter='clean-traffic'/>
        <filterref filter='allow-dhcp-server'/>
      </filter>
      
      now displays upon 'virsh start mydomain'
      
      error: Failed to start domain mydomain
      error: internal error Cannot instantiate filter due to unresolvable variable: DHCPSERVER
      
      'DHPCSERVER' is contained in allow-dhcp-server.
      ecfbf795
  3. 27 6月, 2011 7 次提交
  4. 25 6月, 2011 18 次提交