1. 26 3月, 2013 1 次提交
    • G
      python: set default value to optional arguments · c65fc29a
      Guannan Ren 提交于
      When prefixing with string (optional) or optional in the description
      of arguments to libvirt C APIs, in python, these arguments will be
      set as optional arugments, for example:
      
       * virDomainSaveFlags:
       * @domain: a domain object
       * @to: path for the output file
       * @dxml: (optional) XML config for adjusting guest xml used on restore
       * @flags: bitwise-OR of virDomainSaveRestoreFlags
      
       the corresponding python APIs is
       restoreFlags(self, frm, dxml=None, flags=0)
      
      The following python APIs are changed to:
       blockCommit(self, disk, base, top, bandwidth=0, flags=0)
       blockPull(self, disk, bandwidth=0, flags=0)
       blockRebase(self, disk, base, bandwidth=0, flags=0)
       migrate(self, dconn, flags=0, dname=None, uri=None, bandwidth=0)
       migrate2(self, dconn, dxml=None, flags=0, dname=None, uri=None, bandwidth=0)
       migrateToURI(self, duri, flags=0, dname=None, bandwidth=0)
       migrateToURI2(self, dconnuri=None, miguri=None, dxml=None, flags=0, \
                     dname=None, bandwidth=0)
       saveFlags(self, to, dxml=None, flags=0)
       migrate(self, domain, flags=0, dname=None, uri=None, bandwidth=0)
       migrate2(self, domain, dxml=None, flags=0, dname=None, uri=None, bandwidth=0)
       restoreFlags(self, frm, dxml=None, flags=0)
      c65fc29a
  2. 22 3月, 2013 3 次提交
  3. 21 3月, 2013 2 次提交
    • P
      python: Fix emulatorpin API bindings · d395c811
      Peter Krempa 提交于
      The addition of emulator pinning APIs didn't think of doing the right
      job with python APIs for them. The default generator produced unusable
      code for this.
      
      This patch switches to proper code as in the case of domain Vcpu pining.
      This change can be classified as a python API-breaker but in the state
      the code was before I doubt anyone was able to use it successfully.
      d395c811
    • G
      python: fix bindings that don't raise an exception · 4b143ab2
      Guannan Ren 提交于
      For example:
       >>> dom.memoryStats()
       libvir: QEMU Driver error : Requested operation is not valid:\
               domain is not running
      
      There are six such python API functions like so.
      The root reason is that generator.py script checks the type of return
      value of a python stub function defined in libvirt-api.xml or
      libvirt-override-api.xml to see whether to add the raise clause or not
      in python wrapper code in libvirt.py.
      
      The type of return value is supposed to be C types.
      For those stub functions which return python non-integer data type like
      string, list, tuple, dictionary, the existing type in functions varies
      from each other which leads problem like this.
      
      Currently, in generator.py, it maintains a buggy whitelist for stub functions
      returning a list type. I think it is easy to forget adding new function name
      in the whitelist.
      
      This patch makes the value of type consistent with C type "char *"
      in libvirt-override-api.xml. For python, any of types could be printed
      as string, so I choose "char *" in this case. And the comment in xml
      could explain it when adding new function definition.
      
            <function name='virNodeGetCPUStats' file='python'>
              ...
       -      <return type='virNodeCPUStats' info='...'/>
       +      <return type='char *' info='...'/>
              ...
            </function>
      4b143ab2
  4. 13 3月, 2013 1 次提交
    • D
      Apply security label when entering LXC namespaces · e4e69e89
      Daniel P. Berrange 提交于
      Add a new virDomainLxcEnterSecurityLabel() function as a
      counterpart to virDomainLxcEnterNamespaces(), which can
      change the current calling process to have a new security
      context. This call runs client side, not in libvirtd
      so we can't use the security driver infrastructure.
      
      When entering a namespace, the process spawned from virsh
      will default to running with the security label of virsh.
      The actual desired behaviour is to run with the security
      label of the container most of the time. So this changes
      virsh lxc-enter-namespace command to invoke the
      virDomainLxcEnterSecurityLabel method.
      
      The current behaviour is:
      
      LABEL                             PID TTY          TIME CMD
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 1 pts/0 00:00:00 systemd
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 3 pts/1 00:00:00 sh
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 24 ? 00:00:00 systemd-journal
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 29 ? 00:00:00 dhclient
      staff_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 47 ? 00:00:00 ps
      
      Note the ps command is running as unconfined_t,  After this patch,
      
      The new behaviour is this:
      
      virsh -c lxc:/// lxc-enter-namespace dan -- /bin/ps -eZ
      LABEL                             PID TTY          TIME CMD
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 1 pts/0 00:00:00 systemd
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 3 pts/1 00:00:00 sh
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 24 ? 00:00:00 systemd-journal
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 32 ? 00:00:00 dhclient
      system_u:system_r:svirt_lxc_net_t:s0:c0.c1023 38 ? 00:00:00 ps
      
      The '--noseclabel' flag can be used to skip security labelling.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      e4e69e89
  5. 01 3月, 2013 2 次提交
  6. 23 2月, 2013 4 次提交
  7. 12 2月, 2013 1 次提交
  8. 08 2月, 2013 1 次提交
  9. 07 2月, 2013 1 次提交
  10. 06 2月, 2013 1 次提交
    • J
      sanitytest.py: Do not rely on system libvirt · 90873ab9
      Jiri Denemark 提交于
      When running sanitytest.py we should not rely on libvirt library
      installed on the system. And since we generate a nice wrapper called
      "run" that sets both PYTHON_PATH and LD_LIBRARY_PATH, we should just use
      it rather than trying to duplicate it in the Makefile.
      90873ab9
  11. 05 2月, 2013 1 次提交
  12. 31 1月, 2013 1 次提交
  13. 25 1月, 2013 1 次提交
    • J
      python: Fix bindings for virDomainSnapshotGet{Domain,Connect} · 7b35fd71
      Jiri Denemark 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=895882
      
      virDomainSnapshot.getDomain() and virDomainSnapshot.getConnect()
      wrappers around virDomainSnapshotGet{Domain,Connect} were not supposed
      to be ever implemented. The class should contain proper domain() and
      connect() accessors that fetch python objects stored internally within
      the class. While domain() was already provided, connect() was missing.
      
      This patch adds connect() method to virDomainSnapshot class and
      reimplements getDomain() and getConnect() methods as aliases to domain()
      and connect() for backward compatibility.
      7b35fd71
  14. 24 1月, 2013 1 次提交
  15. 18 1月, 2013 2 次提交
    • J
      Introduce virTypedParamsClear public API · de78bf60
      Jiri Denemark 提交于
      The function is just a renamed public version of former
      virTypedParameterArrayClear.
      de78bf60
    • J
      Add virTypedParams* APIs · 54dd75fd
      Jiri Denemark 提交于
      Working with virTypedParameters in clients written in C is ugly and
      requires all clients to duplicate the same code. This set of APIs makes
      this code for manipulating with virTypedParameters integral part of
      libvirt so that all clients may benefit from it.
      54dd75fd
  16. 17 1月, 2013 1 次提交
  17. 15 1月, 2013 1 次提交
  18. 14 1月, 2013 1 次提交
    • D
      Introduce an LXC specific public API & library · 3d1596b0
      Daniel P. Berrange 提交于
      This patch introduces support for LXC specific public APIs. In
      common with what was done for QEMU, this creates a libvirt_lxc.so
      library and libvirt/libvirt-lxc.h header file.
      
      The actual APIs are
      
        int virDomainLxcOpenNamespace(virDomainPtr domain,
                                      int **fdlist,
                                      unsigned int flags);
      
        int virDomainLxcEnterNamespace(virDomainPtr domain,
                                       unsigned int nfdlist,
                                       int *fdlist,
                                       unsigned int *noldfdlist,
                                       int **oldfdlist,
                                       unsigned int flags);
      
      which provide a way to use the setns() system call to move the
      calling process into the container's namespace. It is not
      practical to write in a generically applicable manner. The
      nearest that we could get to such an API would be an API which
      allows to pass a command + argv to be executed inside a
      container. Even if we had such a generic API, this LXC specific
      API is still useful, because it allows the caller to maintain
      the current process context, in particular any I/O streams they
      have open.
      
      NB the virDomainLxcEnterNamespace() API is special in that it
      runs client side, so does not involve the internal driver API.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      3d1596b0
  19. 28 12月, 2012 1 次提交
    • M
      python: Adapt to virevent rename · e2d7e7c6
      Michal Privoznik 提交于
      With our recent renames under src/util/* we forgot to adapt
      python wrapper code generator. This results in some methods being
      not exposed:
      
      $ python examples/domain-events/events-python/event-test.py
      Using uri:qemu:///system
      Traceback (most recent call last):
        File "examples/domain-events/events-python/event-test.py", line 585, in <module>
          main()
        File "examples/domain-events/events-python/event-test.py", line 543, in main
          virEventLoopPureStart()
        File "examples/domain-events/events-python/event-test.py", line 416, in virEventLoopPureStart
          virEventLoopPureRegister()
        File "examples/domain-events/events-python/event-test.py", line 397, in virEventLoopPureRegister
          libvirt.virEventRegisterImpl(virEventAddHandleImpl,
      AttributeError: 'module' object has no attribute 'virEventRegisterImpl'
      e2d7e7c6
  20. 21 12月, 2012 2 次提交
  21. 04 12月, 2012 2 次提交
  22. 16 11月, 2012 1 次提交
  23. 02 11月, 2012 1 次提交
  24. 26 10月, 2012 2 次提交
  25. 24 10月, 2012 1 次提交
    • V
      virNodeGetCPUMap: Define public API. · 7ecc1d81
      Viktor Mihajlovski 提交于
      Adding a new API to obtain information about the
      host node's present, online and offline CPUs.
      
      int virNodeGetCPUMap(virConnectPtr conn,
                           unsigned char **cpumap,
                           unsigned int *online,
                           unsigned int flags);
      
      The function will return the number of CPUs present on the host
      or -1 on failure;
      If cpumap is non-NULL virNodeGetCPUMap will allocate an array
      containing a bit map representation of the online CPUs. It's
      the callers responsibility to deallocate cpumap using free().
      If online is non-NULL, the variable pointed to will contain
      the number of online host node CPUs.
      The variable flags has been added to support future extensions
      and must be set to 0.
      
      Extend the driver structure by nodeGetCPUMap entry in support of the
      new API virNodeGetCPUMap.
      Added implementation of virNodeGetCPUMap to libvirt.c
      Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
      Signed-off-by: NEric Blake <eblake@redhat.com>
      7ecc1d81
  26. 15 10月, 2012 1 次提交
    • M
      Add support for SUSPEND_DISK event · 7ba5defb
      Martin Kletzander 提交于
      This patch adds support for SUSPEND_DISK event; both lifecycle and
      separated.  The support is added for QEMU, machines are changed to
      PMSUSPENDED, but as QEMU sends SHUTDOWN afterwards, the state changes
      to shut-off.  This and much more needs to be done in order for libvirt
      to work with transient devices, wake-ups etc.  This patch is not
      aiming for that functionality.
      7ba5defb
  27. 13 10月, 2012 1 次提交
  28. 08 10月, 2012 2 次提交
    • G
      python: keep consistent handling of Python integer conversion · 283f1c4a
      Guannan Ren 提交于
      libvirt_ulonglongUnwrap requires the integer type of python obj.
      But libvirt_longlongUnwrap still could handle python obj of
      Pyfloat_type which causes the float value to be rounded up
      to an integer.
      
      For example
       >>> dom.setSchedulerParameters({'vcpu_quota': 0.88})
       0
      libvirt_longlongUnwrap treats 0.88 as a valid value 0
      
      However
       >>> dom.setSchedulerParameters({'cpu_shares': 1000.22})
      libvirt_ulonglongUnwrap will throw out an error
      "TypeError: an integer is required"
      
      The patch make this consistent.
      283f1c4a
    • G
      python: cleanup vcpu related binding APIs · 2832663f
      Guannan Ren 提交于
      libvirt_virDomainGetVcpus: add error handling, return -1 instead of None
      libvirt_virDomainPinVcpu and libvirt_virDomainPinVcpuFlags:
        check the type of argument
        make use of libvirt_boolUnwrap
      
        Set bitmap according to these values which are contained in given
        argument of vcpu tuple and turn off these bit corresponding to
        missing vcpus in argument tuple
      
        The original way ignored the error info from PyTuple_GetItem
        if index is out of range.
        "IndexError: tuple index out of range"
        The error message will only be raised on next command in interactive mode.
      2832663f