[libvirt] [PATCH] lockd: fix typo in virtlockd-admin.socket
by Jim Fehlig
Commit ce7ae55ea1 introduced a typo in virtlockd-admin socket file
/usr/lib/systemd/system/virtlockd-admin.socket:7: Unknown lvalue
'Server' in section 'Socket'
Change 'Server' to 'Service'.
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
src/locking/virtlockd-admin.socket.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/locking/virtlockd-admin.socket.in b/src/locking/virtlockd-admin.socket.in
index 1fa0a3dc3..2a7500f3d 100644
--- a/src/locking/virtlockd-admin.socket.in
+++ b/src/locking/virtlockd-admin.socket.in
@@ -4,7 +4,7 @@ Before=libvirtd.service
[Socket]
ListenStream=@localstatedir@/run/libvirt/virtlockd-admin-sock
-Server=virtlockd.service
+Service=virtlockd.service
[Install]
WantedBy=sockets.target
--
2.16.2
6 years, 8 months
[libvirt] [PATCH 00/10] conf: Make disk source parsing cleaner and reusable
by Peter Krempa
Fixup and cleanup the disk source parsing code and make it usable in
other parts of the code by exporting it.
Peter Krempa (10):
conf: Remove unnecessary condition from
virDomainDiskSourceFormatInternal
conf: Refactor seclabel formatting in
virDomainDiskSourceFormatInternal
conf: Remove virDomainDiskSourceDefFormatSeclabel
conf: Refactor formatting of startupPolicy in
virDomainDiskSourceFormatInternal
conf: disk: Separate virStorageSource formatting
conf: Validate disk source configuration also for the backing store
conf: Separate seclabel validation from parsing
conf: Parse and validate disk source seclabels together with the
source
conf: Extract parsing of storage source related data
conf: Add and export wrapper for parsing storage source XML
src/conf/domain_conf.c | 402 ++++++++++++++++++++++++++++-------------------
src/conf/domain_conf.h | 13 ++
src/libvirt_private.syms | 2 +
3 files changed, 254 insertions(+), 163 deletions(-)
--
2.16.2
6 years, 8 months
[libvirt] [PATCH] daemonStreamHandleWriteData: Preserve error when aborting stream
by Michal Privoznik
The daemonStreamHandleWriteData() function is called whenever
server side of stream is able to receive some data. Nevertheless,
it calls virStreamSend() (to pass data down to virFDStream) and
depending on its return value it may abort the stream. However,
the functions it called when doing so are public APIs and as such
reset any error set previously. Therefore, if there was any error
in writing data to stream (i.e. repored in virStreamSend) it is
reset before virNetServerProgramSendReplyError() can get to it.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/remote/remote_daemon_stream.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/remote/remote_daemon_stream.c b/src/remote/remote_daemon_stream.c
index 4dd3af9e0..532afd856 100644
--- a/src/remote/remote_daemon_stream.c
+++ b/src/remote/remote_daemon_stream.c
@@ -549,8 +549,9 @@ daemonStreamHandleWriteData(virNetServerClientPtr client,
} else if (ret == -2) {
/* Blocking, so indicate we have more todo later */
return 1;
- } else {
+ } else if (ret < 0) {
virNetMessageError rerr;
+ virErrorPtr err = virSaveLastError();
memset(&rerr, 0, sizeof(rerr));
@@ -558,7 +559,10 @@ daemonStreamHandleWriteData(virNetServerClientPtr client,
stream->closed = true;
virStreamEventRemoveCallback(stream->st);
virStreamAbort(stream->st);
-
+ if (err) {
+ virSetError(err);
+ virFreeError(err);
+ }
return virNetServerProgramSendReplyError(stream->prog,
client,
msg,
--
2.16.1
6 years, 8 months
[libvirt] [PATCH] virsysinfo: Use more virSkipSpacesBackwards()
by Michal Privoznik
Some fields reported by dmidecode have plenty of useless spaces
(in fact some have nothing but spaces). To deal with this we have
introduced virSkipSpacesBackwards() and use it in
virSysinfoParseX86Processor() and virSysinfoParseX86Memory().
However, other functions (e.g. virSysinfoParseX86Chassis()) don't
use it at all and thus we are reporting nonsense:
<sysinfo type='smbios'>
<chassis>
<entry name='manufacturer'>FUJITSU</entry>
<entry name='version'> </entry>
<entry name='serial'> </entry>
<entry name='asset'> </entry>
<entry name='sku'>Default string</entry>
</chassis>
</sysinfo>
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/util/virsysinfo.c | 34 ++++++++++++++++++++++++++++++----
1 file changed, 30 insertions(+), 4 deletions(-)
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 43a4c8835..5795d90c7 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -644,7 +644,8 @@ static int
virSysinfoParseBIOS(const char *base, virSysinfoBIOSDefPtr *bios)
{
int ret = -1;
- const char *cur, *eol = NULL;
+ const char *cur;
+ char *eol = NULL;
virSysinfoBIOSDefPtr def;
if ((cur = strstr(base, "BIOS Information")) == NULL)
@@ -657,24 +658,28 @@ virSysinfoParseBIOS(const char *base, virSysinfoBIOSDefPtr *bios)
if ((cur = strstr(base, "Vendor: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->vendor, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->version, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Release Date: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->date, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "BIOS Revision: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->release, cur, eol - cur) < 0)
goto cleanup;
}
@@ -697,7 +702,8 @@ static int
virSysinfoParseX86System(const char *base, virSysinfoSystemDefPtr *sysdef)
{
int ret = -1;
- const char *cur, *eol = NULL;
+ const char *cur;
+ char *eol = NULL;
virSysinfoSystemDefPtr def;
if ((cur = strstr(base, "System Information")) == NULL)
@@ -710,42 +716,49 @@ virSysinfoParseX86System(const char *base, virSysinfoSystemDefPtr *sysdef)
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->manufacturer, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Product Name: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->product, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->version, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->serial, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "UUID: ")) != NULL) {
cur += 6;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->uuid, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "SKU Number: ")) != NULL) {
cur += 12;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->sku, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Family: ")) != NULL) {
cur += 8;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->family, cur, eol - cur) < 0)
goto cleanup;
}
@@ -770,7 +783,8 @@ virSysinfoParseX86BaseBoard(const char *base,
size_t *nbaseBoard)
{
int ret = -1;
- const char *cur, *eol = NULL;
+ const char *cur;
+ char *eol = NULL;
virSysinfoBaseBoardDefPtr boards = NULL;
size_t nboards = 0;
char *board_type = NULL;
@@ -787,36 +801,42 @@ virSysinfoParseX86BaseBoard(const char *base,
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->manufacturer, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Product Name: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->product, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->version, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->serial, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Asset Tag: ")) != NULL) {
cur += 11;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->asset, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Location In Chassis: ")) != NULL) {
cur += 21;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->location, cur, eol - cur) < 0)
goto cleanup;
}
@@ -848,7 +868,8 @@ virSysinfoParseX86Chassis(const char *base,
virSysinfoChassisDefPtr *chassisdef)
{
int ret = -1;
- const char *cur, *eol = NULL;
+ const char *cur;
+ char *eol = NULL;
virSysinfoChassisDefPtr def;
if ((cur = strstr(base, "Chassis Information")) == NULL)
@@ -861,30 +882,35 @@ virSysinfoParseX86Chassis(const char *base,
if ((cur = strstr(base, "Manufacturer: ")) != NULL) {
cur += 14;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->manufacturer, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Version: ")) != NULL) {
cur += 9;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->version, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Serial Number: ")) != NULL) {
cur += 15;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->serial, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "Asset Tag: ")) != NULL) {
cur += 11;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->asset, cur, eol - cur) < 0)
goto cleanup;
}
if ((cur = strstr(base, "SKU Number: ")) != NULL) {
cur += 12;
eol = strchr(cur, '\n');
+ virSkipSpacesBackwards(cur, &eol);
if (eol && VIR_STRNDUP(def->sku, cur, eol - cur) < 0)
goto cleanup;
}
--
2.16.1
6 years, 8 months
[libvirt] [PATCH] m4: Fix xenstore detection
by Andrea Bolognani
Commit 596fc3e3897e introduced the ability to detect xenstore
using pkg-config for systems with Xen 4.9, but accidentally broke
detection for all other systems. Fix the logic so that it works
in all cases.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
m4/virt-driver-xen.m4 | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/m4/virt-driver-xen.m4 b/m4/virt-driver-xen.m4
index 52d4f51626..1d0acfa363 100644
--- a/m4/virt-driver-xen.m4
+++ b/m4/virt-driver-xen.m4
@@ -42,7 +42,6 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_XEN], [
if test "$xen_path_provided" = "no" ; then
PKG_CHECK_MODULES([XEN], [xenstore], [
- fail=0
with_xen=yes
], [
fail=1
@@ -52,8 +51,8 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_XEN], [
if test "$xen_path_provided" = "yes" || test "$fail" = 1 ; then
CFLAGS="$CFLAGS $XEN_CFLAGS"
LIBS="$LIBS $XEN_LIBS"
+ fail=0
AC_CHECK_LIB([xenstore], [xs_read], [
- fail=0
with_xen=yes
XEN_LIBS="$XEN_LIBS -lxenstore"
],[
--
2.14.3
6 years, 8 months
[libvirt] libvirt cannot boot windows-uefi-guest with virtio disk
by Иван Иванов
I am using libvirt 3.6 version on Ubuntu 17.10 and create domain with
command:
virt-install --name dc02 --memory 1024,maxmemory=2048 --vcpus 1 --cpu host
--boot uefi,hd,network --disk /var/lib/libvirt/images/dc02.qcow2,bus=virtio
--network bridge=br.27,model=virtio --video=qxl --memballoon virtio --hvm
--controller usb3 --machine=q35 --graphics spice,listen=192.168.69.108
Domain boot failed with BSOD message "Unaccesible boot device", but when i
change virtio-drive to sata-drive, its successfuly boot
ps -ef output for virtio-drive look like:
libvirt+ 39726 1 45 19:59 ? 00:00:06 qemu-system-x86_64
-enable-kvm -name guest=dc02,debug-threads=on -S -object
secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-11-dc02/master-key.aes
-machine pc-q35-2.10,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu
SandyBridge,vme=on,ss=on,vmx=on,pcid=on,hypervisor=on,arat=on,tsc_adjust=on,xsaveopt=on,pdpe1gb=on
-drive
file=/usr/share/OVMF/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on
-drive
file=/var/lib/libvirt/qemu/nvram/dc02_VARS.fd,if=pflash,format=raw,unit=1
-m 2048 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid
fab3a566-46ad-4b2c-9e65-26cb685af33a -no-user-config -nodefaults -chardev
socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-11-dc02/monitor.sock,server,nowait
-mon chardev=charmonitor,id=monitor,mode=control -rtc
base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet
-no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1
-boot strict=on -device
pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2
-device i82801b11-bridge,id=pci.2,bus=pcie.0,addr=0x1e -device
pci-bridge,chassis_nr=3,id=pci.3,bus=pci.2,addr=0x0 -device
pcie-root-port,port=0x11,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x1 -device
pcie-root-port,port=0x12,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x2 -device
pcie-root-port,port=0x13,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x3 -device
pcie-root-port,port=0x14,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x4 -device
pcie-root-port,port=0x15,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x5 -device
nec-usb-xhci,id=usb,bus=pci.4,addr=0x0 -device
virtio-serial-pci,id=virtio-serial0,bus=pci.5,addr=0x0 -drive
file=/var/lib/libvirt/images/dc02.qcow2,format=qcow2,if=none,id=drive-virtio-disk0
-device
virtio-blk-pci,scsi=off,bus=pci.6,addr=0x0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
-netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=29 -device
virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:16:88:b3,bus=pci.1,addr=0x0,bootindex=2
-chardev pty,id=charserial0 -device
isa-serial,chardev=charserial0,id=serial0 -chardev
spicevmc,id=charchannel0,name=vdagent -device
virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
-spice
port=5900,addr=192.168.69.108,disable-ticketing,image-compression=off,seamless-migration=on
-device
qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1
-device intel-hda,id=sound0,bus=pci.3,addr=0x1 -device
hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev
spicevmc,id=charredir0,name=usbredir -device
usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 -chardev
spicevmc,id=charredir1,name=usbredir -device
usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 -device
virtio-balloon-pci,id=balloon0,bus=pci.7,addr=0x0 -msg timestamp=on
But when i run this domain with qemu-system its succsessfuly boot and work.
Cmd looks like:
qemu-system-x86_64 -machine type=pc-q35-2.8 -accel kvm -cpu host \
-cdrom /var/lib/libvirt/images/virtio-win-0.1.141.iso \
--bios /usr/share/OVMF/OVMF_CODE.fd \
-m 2048 -smp 2 -drive
file=/var/lib/libvirt/images/dc02.qcow2,index=0,media=disk,if=virtio -boot
menu=on \
-spice addr=192.168.69.108,port=5910,disable-ticketing
I cannot fugire out where i went wrong
6 years, 8 months
[libvirt] [GSoC]: Help in setup
by Sukrit Bhatnagar
Hi,
I am Sukrit, currently pursuing Masters in Computer Science and Engineering
from Indian Institute of Technology Bombay, India.
I am interested in applying for a few projects listed on the ideas page.
But, I am not able to connect to IRC channel (missing key problem). Also, I
am not able to run `autogen.sh` successfully from the git repo clone as
there is some error related to gnulib git repo's URL.
Can someone help me out please?
Thanks,
Sukrit Bhatnagar
6 years, 8 months
[libvirt] [PATCH 00/11] Make some virsh.pod adjustments for vol-* commands
by John Ferlan
Been reviewing documentation lately - ran into the virsh vol-* commands
and their "inconsistency" with the expected ordering of the command options.
Also the commands were largely a mash of sentences without regard for
any sort of readability.
John Ferlan (11):
virsh: Clean up formatting of the vol-create* commands
virsh: Fix man page argument ordering for vol-clone command
virsh: Fix man page argument ordering for vol-delete command
virsh: Fix man page argument ordering for vol-upload command
virsh: Fix man page argument ordering for vol-download command
virsh: Fix man page argument ordering for vol-wipe command
virsh: Fix man page argument ordering for vol-dumpxml command
virsh: Fix man page argument ordering for vol-info command
virsh: Clean up man page formatting for vol-list and vol-pool
virsh: Fix man page argument ordering for vol-{path|name|key} commands
tools: Clean up the vol-resize man page
tools/virsh.pod | 238 +++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 168 insertions(+), 70 deletions(-)
--
2.13.6
6 years, 8 months
[libvirt] [PATCH] qemu: avoid denial of service reading from QEMU guest agent (CVE-2018-1064)
by Daniel P. Berrangé
We read from the agent until seeing a \r\n pair to indicate a completed
reply or event. To avoid memory denial-of-service though, we must have a
size limit on amount of data we buffer. 10 MB is large enough that it
ought to cope with normal agent replies, and small enough that we're not
consuming unreasonable mem.
This is identical to the flaw we had reading from the QEMU monitor
as CVE-2018-5748, so rather embarrassing that we forgot to fix
the agent code at the same time.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
Pushed as a security patch pre-reviewed via the libvirt-security list
src/qemu/qemu_agent.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 0f36054a61..89183c3f76 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -53,6 +53,15 @@ VIR_LOG_INIT("qemu.qemu_agent");
#define DEBUG_IO 0
#define DEBUG_RAW_IO 0
+/* We read from QEMU until seeing a \r\n pair to indicate a
+ * completed reply or event. To avoid memory denial-of-service
+ * though, we must have a size limit on amount of data we
+ * buffer. 10 MB is large enough that it ought to cope with
+ * normal QEMU replies, and small enough that we're not
+ * consuming unreasonable mem.
+ */
+#define QEMU_AGENT_MAX_RESPONSE (10 * 1024 * 1024)
+
/* When you are the first to uncomment this,
* don't forget to uncomment the corresponding
* part in qemuAgentIOProcessEvent as well.
@@ -535,6 +544,12 @@ qemuAgentIORead(qemuAgentPtr mon)
int ret = 0;
if (avail < 1024) {
+ if (mon->bufferLength >= QEMU_AGENT_MAX_RESPONSE) {
+ virReportSystemError(ERANGE,
+ _("No complete agent response found in %d bytes"),
+ QEMU_AGENT_MAX_RESPONSE);
+ return -1;
+ }
if (VIR_REALLOC_N(mon->buffer,
mon->bufferLength + 1024) < 0)
return -1;
--
2.14.3
6 years, 8 months
[libvirt] [PATCH 0/5] Partially successful attempt at Python 3 compatibility
by Andrea Bolognani
We use Python in out build system: more specifically, we're stuck
with Python 2 even though Python 3's been out for a decade and some
major Linux distributions have gone Python 3-only recently.
This series tries to solve the issue, but falls quite short. Maybe
someone who actually knows Python should have tried instead of me?
The good news is that, once the first two patches have been merged,
anyone will be able to give it a shot by running
PYTHON=$(which python3) ./autogen.sh
or similar. Let's get the ball rolling!
Andrea Bolognani (5):
NEWS: Move generation to the docs/ directory
docs: Call reformat-news.py with $(PYTHON)
esx: Port esx_vi_generator.py to Python 3
hyperv: Port hyperv_wmi_generator.py to Python 3
docs: Port apibuild.py to Python 3
.gitignore | 1 +
Makefile.am | 24 +--
docs/Makefile.am | 24 +++
docs/apibuild.py | 379 ++++++++++++++++++-------------------
src/esx/esx_vi_generator.py | 30 ++-
src/hyperv/hyperv_wmi_generator.py | 17 +-
6 files changed, 233 insertions(+), 242 deletions(-)
--
2.14.3
6 years, 8 months