From 902deb61d022fe87fdfd3143cc47d7736f1cba4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 23 Apr 2018 13:46:47 +0100 Subject: [PATCH 001/114] git: add config file telling git-publish how to send patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "git-publish" tool is a useful git extension for sending patch series for code review. It automatically creates versioned tags each time code on a branch is sent, so that there is a record of each version. It also remembers the cover letter so it does not need re-entering each time the series is reposted. With this config file present it is now sufficient[1] to run $ git publish to send all patches in a branch to the list for review, with the correct subject prefix added for this non-core libvirt module. [1] Assuming your $HOME/.gitconfig has an SMTP server listed at least e.g. [sendemail] smtpserver = smtp.example.com Signed-off-by: Daniel P. Berrangé --- .gitpublish | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitpublish diff --git a/.gitpublish b/.gitpublish new file mode 100644 index 0000000..306d57a --- /dev/null +++ b/.gitpublish @@ -0,0 +1,4 @@ +[gitpublishprofile "default"] +base = master +to = libvir-list@redhat.com +prefix = java PATCH From 44ee19cf27c0b2d506ef1eae67212479e29a8a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 16 Jan 2020 15:37:19 +0000 Subject: [PATCH 002/114] gitpublish: add 'libvirt-' to subject prefix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Ján Tomko Signed-off-by: Daniel P. Berrangé --- .gitpublish | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpublish b/.gitpublish index 306d57a..1920230 100644 --- a/.gitpublish +++ b/.gitpublish @@ -1,4 +1,4 @@ [gitpublishprofile "default"] base = master to = libvir-list@redhat.com -prefix = java PATCH +prefix = libvirt-java PATCH From 3a859d3640359f49a68ede3ed4eaba3f89bb0e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 7 Apr 2020 17:28:33 +0100 Subject: [PATCH 003/114] github: enable lockdown of issues and merge requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Libvirt uses GitHub as an automated read-only mirror. The goals were to have a disaster recovery backup for libvirt.org, a way to make it easy for people to clone their own private copy of libvirt Git, and finally as a way to interact with apps like Travis. The project description was set to a message telling people that we don't respond to pull requests. This was quite a negative message to potential contributors, and also did not give them any guidance about the right way to submit to libvirt. Many also missed the description and submitted issues or pull requests regardless. It is possible to disable the issue tracker in GitHub, but there is no way to disable merge requests. Disabling the issue tracker would also leave the problem of users not being given any positive information about where they should be reporting instead. There is a fairly new 3rd party application built for GitHub that provides a bot which auto-responds to both issues and merge requests, closing and locking them, with a arbitrary comment: https://github.com/apps/repo-lockdown This commit adds a suitable configuration file for libvirt, which tries to give a positive response to user's issue/pullreq and guide them to the desired contribution path on GitLab. Reviewed-by: Andrea Bolognani Reviewed-by: Pavel Hrdina Reviewed-by: Eric Blake Signed-off-by: Daniel P. Berrangé --- .github/lockdown.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/lockdown.yml diff --git a/.github/lockdown.yml b/.github/lockdown.yml new file mode 100644 index 0000000..ff4a3eb --- /dev/null +++ b/.github/lockdown.yml @@ -0,0 +1,36 @@ +# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown + +# Close issues and pull requests +close: true + +# Lock issues and pull requests +lock: true + +# Optionally, specify configuration settings just for `issues` or `pulls` +issues: + comment: | + Thank you for your interest in the libvirt project. + + Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, issues opened here are not processed. + + We kindly request that new issues are reported to + + https://gitlab.com/libvirt/libvirt-java/-/issues/new + + Thank you for your time and understanding. + +pulls: + comment: | + Thank you for your interest in the libvirt project. + + Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, merge requests opened here are not processed. + + We kindly request that contributors fork the project at + + https://gitlab.com/libvirt/libvirt-java/ + + push changes to the fork, and then open a new merge request at + + https://gitlab.com/libvirt/libvirt-java/-/merge_requests/new + + Thank you for your time and understanding. From f96f1c14d0c49247d8e1a924233070d6642bd84b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 30 Apr 2020 16:24:51 +0100 Subject: [PATCH 004/114] gitlab: add CI job for validating DCO signoff MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This job uses the shared "check-dco" image to validate that all commits on a branch in a developer's repo fork have a suitable Signed-off-by statement present. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..50dae92 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,16 @@ + +stages: + - prebuild + +# Check that all commits are signed-off for the DCO. +# Skip on "libvirt" namespace, since we only need to run +# this test on developer's personal forks from which +# merge requests are submitted +check-dco: + stage: prebuild + image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master + script: + - /check-dco + except: + variables: + - $CI_PROJECT_NAMESPACE == 'libvirt' From f3529744d3243bda47bd5ae1b910d8b75ff0c6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 6 May 2020 18:18:10 +0100 Subject: [PATCH 005/114] Fix test driver connection type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- src/test/java/org/libvirt/TestJavaBindings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 88ad1ba..4b55a13 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -51,7 +51,7 @@ public void testConnectionErrorCallback() throws LibvirtException { } public void testConnection() throws Exception { - assertEquals("conn.getType()", "Test", conn.getType()); + assertEquals("conn.getType()", "TEST", conn.getType()); assertEquals("conn.getURI()", "test:///default", conn.getURI()); assertEquals("conn.getMaxVcpus(xen)", 32, conn.getMaxVcpus("xen")); assertNotNull("conn.getHostName()", conn.getHostName()); From be8a2acb24c7c1a403b59e2dac049f011cb175e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 7 May 2020 12:28:04 +0100 Subject: [PATCH 006/114] Add workaround for broken screenshot API on Ubuntu 18.04 vintage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- src/test/java/org/libvirt/TestJavaBindings.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 4b55a13..0a3bca0 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -325,7 +325,16 @@ public void testDomainScreenshot() throws Exception { assertFalse("Domain \"test\" not found", dom == null); - String mimetype = dom.screenshot(str, 0); + String mimetype; + try { + mimetype = dom.screenshot(str, 0); + } catch (LibvirtException ex) { + if (ex.getMessage().contains("test-screenshot.png': No such file or directory")) { + System.err.format("testDomainScreenshot skipped (missing png file)"); + return; + } + throw ex; + } ByteBuffer bb = ByteBuffer.allocateDirect(8192); From c843884751d2ddb171b05f03d0241d998a51a82d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 11 May 2020 16:16:26 +0100 Subject: [PATCH 007/114] Remove reference to test.java file that was deleted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was removed in commit 2cdc96c2a6ce83ea0605ad81b2e542f0daafa805 Author: Claudio Bley Date: Wed Jan 22 16:45:14 2014 +0100 tests: remove obsolete test driver JUnit is used for quite some time now, which supercedes the tests defined in the old "test" class. Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- README.in | 16 ++-------------- libvirt-java.spec.in | 2 -- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/README.in b/README.in index eb27c3b..34dca65 100644 --- a/README.in +++ b/README.in @@ -13,19 +13,7 @@ By default the installs it to /usr/share/java/@version@.jar 4. You can run the unit tests with ant test. -5. There is a rudimentary functional test program that the libvirt-java-devel -installs put it into /usr/share/doc/libvirt-java-devel-@version@/test.java +5. There is full javadoc for the API in /usr/share/javadoc/libvirt-java-@version@/ - To run it, first copy the test.java file to writeable directory - cp /usr/share/doc/libvirt-java-devel-@version@/test.java ~ - - Compile the java file to a class: - javac -classpath /usr/share/java/libvirt-@version@.jar test.java - - Then run the program: - java -classpath .:/usr/share/java/jna.jar:/usr/share/java/libvirt-@version@.jar test - -6. There is full javadoc for the API in /usr/share/javadoc/libvirt-java-@version@/ - -7. The full API can be found at http://www.libvirt.org/html/libvirt-libvirt.html +6. The full API can be found at http://www.libvirt.org/html/libvirt-libvirt.html diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index d07b998..034d511 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -80,8 +80,6 @@ rm -rf %{buildroot} %files devel %defattr(-,root,root) -%doc src/test/java/test.java - %files javadoc %defattr(-,root,root) From 1c58db0bd3cfe0c7c87e02703693493a31883c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 11 May 2020 17:17:28 +0100 Subject: [PATCH 008/114] rpm: skip junit tests in RHEL-8 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- libvirt-java.spec.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index 034d511..74ebb1e 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -20,7 +20,9 @@ Requires: java >= @java.required@ Requires: jpackage-utils BuildRequires: ant BuildRequires: jna +%if 0%{?rhel} < 8 BuildRequires: ant-junit +%endif BuildRequires: java-devel >= @java.required@ BuildRequires: jpackage-utils @@ -68,7 +70,9 @@ cp -r target/javadoc/* %{buildroot}%{_javadocdir}/%{name}-%{version} %{__ln_s} %{_javadocdir}/%{name}-%{version} %{buildroot}%{_javadocdir}/%{name} %check +%if 0%{?rhel} < 8 ant test +%endif %clean rm -rf %{buildroot} From 75fd2d61e300c164f19d88376f6b8584d57c2483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 6 May 2020 15:22:04 +0100 Subject: [PATCH 009/114] gitlab: introduce CI jobs testing git master & distro libvirt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The java build needs to validate two axis - A variety of libvirt versions - A variety of java versions We get coverage for both these axis by running a build against the distro provided libvirt packages. All that is then missing is a build against the latest libvirt git master, which only needs to be run on a single distro, for which Fedora 32 is picked. CentOS 8 is unable to run tests, since it lacks ant-junit packages. Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 171 +++++++++++++++++++++++++++ ci/README.rst | 14 +++ ci/libvirt-centos-7.Dockerfile | 88 ++++++++++++++ ci/libvirt-centos-8.Dockerfile | 55 +++++++++ ci/libvirt-debian-10.Dockerfile | 58 +++++++++ ci/libvirt-debian-9.Dockerfile | 61 ++++++++++ ci/libvirt-debian-sid.Dockerfile | 58 +++++++++ ci/libvirt-fedora-31.Dockerfile | 55 +++++++++ ci/libvirt-fedora-32.Dockerfile | 55 +++++++++ ci/libvirt-fedora-rawhide.Dockerfile | 56 +++++++++ ci/libvirt-opensuse-151.Dockerfile | 57 +++++++++ ci/libvirt-ubuntu-1804.Dockerfile | 61 ++++++++++ ci/libvirt-ubuntu-2004.Dockerfile | 68 +++++++++++ ci/refresh | 27 +++++ 14 files changed, 884 insertions(+) create mode 100644 ci/README.rst create mode 100644 ci/libvirt-centos-7.Dockerfile create mode 100644 ci/libvirt-centos-8.Dockerfile create mode 100644 ci/libvirt-debian-10.Dockerfile create mode 100644 ci/libvirt-debian-9.Dockerfile create mode 100644 ci/libvirt-debian-sid.Dockerfile create mode 100644 ci/libvirt-fedora-31.Dockerfile create mode 100644 ci/libvirt-fedora-32.Dockerfile create mode 100644 ci/libvirt-fedora-rawhide.Dockerfile create mode 100644 ci/libvirt-opensuse-151.Dockerfile create mode 100644 ci/libvirt-ubuntu-1804.Dockerfile create mode 100644 ci/libvirt-ubuntu-2004.Dockerfile create mode 100755 ci/refresh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50dae92..cb11858 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,59 @@ stages: - prebuild + - containers + - builds + +.container_job_template: &container_job_definition + image: docker:stable + stage: containers + services: + - docker:dind + before_script: + - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" + - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" + - docker info + - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" + script: + - docker pull "$TAG" || docker pull "$COMMON_TAG" || true + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/libvirt-$NAME.Dockerfile" ci + - docker push "$TAG" + after_script: + - docker logout + +.git_build_job_template: &git_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + before_script: + - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" + - export SCRATCH_DIR="/tmp/scratch" + - export VROOT="$SCRATCH_DIR/vroot" + - export LD_LIBRARY_PATH="$VROOT/lib" + - export PATH="$VROOT/bin:$PATH" + - export PKG_CONFIG_PATH="$VROOT/lib/pkgconfig" + script: + - pushd "$PWD" + - mkdir -p "$SCRATCH_DIR" + - cd "$SCRATCH_DIR" + - git clone --depth 1 https://gitlab.com/libvirt/libvirt.git + - mkdir libvirt/build + - cd libvirt/build + - ../autogen.sh --prefix="$VROOT" --without-libvirtd + - $MAKE install + - popd + - ant build jar docs + - if test "$TESTS" != "skip" ; then ant test ; fi + - ant src + - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi + +.dist_build_job_template: &dist_build_job_definition + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + script: + - ant build jar docs + - if test "$TESTS" != "skip" ; then ant test ; fi + - ant src + - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi # Check that all commits are signed-off for the DCO. # Skip on "libvirt" namespace, since we only need to run @@ -14,3 +67,121 @@ check-dco: except: variables: - $CI_PROJECT_NAMESPACE == 'libvirt' + +centos-7-container: + <<: *container_job_definition + variables: + NAME: centos-7 + +centos-8-container: + <<: *container_job_definition + variables: + NAME: centos-8 + +debian-9-container: + <<: *container_job_definition + variables: + NAME: debian-9 + +debian-10-container: + <<: *container_job_definition + variables: + NAME: debian-10 + +debian-sid-container: + <<: *container_job_definition + variables: + NAME: debian-sid + +fedora-31-container: + <<: *container_job_definition + variables: + NAME: fedora-31 + +fedora-32-container: + <<: *container_job_definition + variables: + NAME: fedora-32 + +fedora-rawhide-container: + <<: *container_job_definition + variables: + NAME: fedora-rawhide + +opensuse-151-container: + <<: *container_job_definition + variables: + NAME: opensuse-151 + +ubuntu-1804-container: + <<: *container_job_definition + variables: + NAME: ubuntu-1804 + +ubuntu-2004-container: + <<: *container_job_definition + variables: + NAME: ubuntu-2004 + + +ubuntu-2004-git-build: + <<: *git_build_job_definition + variables: + NAME: ubuntu-2004 + + +centos-7-dist-build: + <<: *dist_build_job_definition + variables: + NAME: centos-7 + +centos-8-dist-build: + <<: *dist_build_job_definition + variables: + NAME: centos-8 + TESTS: skip + +debian-9-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-9 + +debian-10-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-10 + +debian-sid-dist-build: + <<: *dist_build_job_definition + variables: + NAME: debian-sid + +fedora-31-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-31 + +fedora-32-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-32 + +fedora-rawhide-dist-build: + <<: *dist_build_job_definition + variables: + NAME: fedora-rawhide + +opensuse-151-dist-build: + <<: *dist_build_job_definition + variables: + NAME: opensuse-151 + +ubuntu-1804-dist-build: + <<: *dist_build_job_definition + variables: + NAME: ubuntu-1804 + +ubuntu-2004-dist-build: + <<: *dist_build_job_definition + variables: + NAME: ubuntu-2004 diff --git a/ci/README.rst b/ci/README.rst new file mode 100644 index 0000000..530897e --- /dev/null +++ b/ci/README.rst @@ -0,0 +1,14 @@ +CI job assets +============= + +This directory contains assets used in the automated CI jobs, most +notably the Dockerfiles used to build container images in which the +CI jobs then run. + +The ``refresh`` script is used to re-create the Dockerfiles using the +``lcitool`` command that is provided by repo +https://gitlab.com/libvirt/libvirt-ci + +The containers are built during the CI process and cached in the GitLab +container registry of the project doing the build. The cached containers +can be deleted at any time and will be correctly rebuilt. diff --git a/ci/libvirt-centos-7.Dockerfile b/ci/libvirt-centos-7.Dockerfile new file mode 100644 index 0000000..6e78a63 --- /dev/null +++ b/ci/libvirt-centos-7.Dockerfile @@ -0,0 +1,88 @@ +FROM centos:7 + +RUN echo -e '[openvz]\n\ +name=OpenVZ addons\n\ +baseurl=https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/\n\ +enabled=1\n\ +gpgcheck=1\n\ +skip_if_unavailable=0\n\ +metadata_expire=6h\n\ +priority=90\n\ +includepkgs=libprl*' > /etc/yum.repos.d/openvz.repo && \ + echo -e '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\ +Version: GnuPG v2.0.22 (GNU/Linux)\n\ +\n\ +mI0EVl80nQEEAKrEeyeTCwrzS9kYedZ/sAc/GUqlb81C7pA9SaR3fyck5mVw1Ogk\n\ +YdmNBPM2kY7QDxR9F0EpSpnxSCAXZXugsQ8KzZ0DRLVeBDQyGs9IGK5hI0zzxIil\n\ +BzfvIexLiQQhLy7YlIi8Jt/uUqKkW0pIMNMGcduY97VATtczpncpkmSzABEBAAG0\n\ +SFZpcnR1b3p6byBUZWFtIChHUEcga2V5IHNpZ25hdHVyZSBmb3IgcGFja2FnZXMp\n\ +IDxzZWN1cml0eUB2aXJ0dW96em8uY29tPoi5BBMBAgAjBQJWXzSdAhsDBwsJCAcD\n\ +AgEGFQgCCQoLBBYCAwECHgECF4AACgkQygt9GUTNrSruIgP/er70Eyo73A1gfrjv\n\ +oPUkyo4rslVRZu3qqCwoMFtJc/Z/UxWgEka1buorlcGLa6eO/EZ49c0n+KGa4Kvt\n\ +EUboIq0yEu5i0FyAj92ifm+hNhoAbGfm0cZ4/fD0oGr3l8OsQo4+iHX4xAPwFe7Y\n\ +zABuB8I1ZDZ4OIp5tDfTTuF2LT24jQRWXzSdAQQAog2Aqb+Ptl68O7cQhWLjVGkj\n\ +yyigZrdeReLx3HloKJPBeQ/kA6uvMJc/IYS3uppMWXv9v+QenS6uhP1TUJ2k9FvM\n\ +t94MQZfALN7Vpf8AF+UeWu4Ru+y4BNzcFhrPhIFNFChOR2QqW6FkgE57D9I177NC\n\ +oJMyrlNe8wcGa178An8AEQEAAYifBBgBAgAJBQJWXzSdAhsMAAoJEMoLfRlEza0q\n\ +bKwD/3+OFVIEXnIv5XgdGRNX5fHggsUN1bb8gva7HANRlKdd4LD8foDM3F/yv/3V\n\ +igG14D5EjKz56SaBDNgiI4++hOzb2M8jhAsR86jxkXFrrP1U3ZNRKg6av9DPFAPS\n\ +WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ +=fRMg\n\ +-----END PGP PUBLIC KEY BLOCK-----' > /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ + rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ + yum install -y epel-release && \ + yum update -y && \ + yum install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-common \ + glibc-devel \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + yum autoremove -y && \ + yum clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +RUN pip3 install \ + meson==0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja-build" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-centos-8.Dockerfile b/ci/libvirt-centos-8.Dockerfile new file mode 100644 index 0000000..eb652a8 --- /dev/null +++ b/ci/libvirt-centos-8.Dockerfile @@ -0,0 +1,55 @@ +FROM centos:8 + +RUN dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled PowerTools -y && \ + dnf install -y epel-release && \ + dnf update -y && \ + dnf install -y \ + ant \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-debian-10.Dockerfile b/ci/libvirt-debian-10.Dockerfile new file mode 100644 index 0000000..8b85a8e --- /dev/null +++ b/ci/libvirt-debian-10.Dockerfile @@ -0,0 +1,58 @@ +FROM debian:10 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-debian-9.Dockerfile b/ci/libvirt-debian-9.Dockerfile new file mode 100644 index 0000000..73d03ed --- /dev/null +++ b/ci/libvirt-debian-9.Dockerfile @@ -0,0 +1,61 @@ +FROM debian:9 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + openjdk-8-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +RUN pip3 install \ + meson==0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-debian-sid.Dockerfile b/ci/libvirt-debian-sid.Dockerfile new file mode 100644 index 0000000..cf9803f --- /dev/null +++ b/ci/libvirt-debian-sid.Dockerfile @@ -0,0 +1,58 @@ +FROM debian:sid + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-31.Dockerfile b/ci/libvirt-fedora-31.Dockerfile new file mode 100644 index 0000000..0fe0e1f --- /dev/null +++ b/ci/libvirt-fedora-31.Dockerfile @@ -0,0 +1,55 @@ +FROM fedora:31 + +RUN dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-32.Dockerfile b/ci/libvirt-fedora-32.Dockerfile new file mode 100644 index 0000000..79be180 --- /dev/null +++ b/ci/libvirt-fedora-32.Dockerfile @@ -0,0 +1,55 @@ +FROM fedora:32 + +RUN dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-fedora-rawhide.Dockerfile b/ci/libvirt-fedora-rawhide.Dockerfile new file mode 100644 index 0000000..dda8771 --- /dev/null +++ b/ci/libvirt-fedora-rawhide.Dockerfile @@ -0,0 +1,56 @@ +FROM fedora:rawhide + +RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ + dnf update -y && \ + dnf install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-opensuse-151.Dockerfile b/ci/libvirt-opensuse-151.Dockerfile new file mode 100644 index 0000000..a46f303 --- /dev/null +++ b/ci/libvirt-opensuse-151.Dockerfile @@ -0,0 +1,57 @@ +FROM opensuse/leap:15.1 + +RUN zypper update -y && \ + zypper install -y \ + ant \ + ant-junit \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + cppi \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-locale \ + java-11-openjdk-headless \ + jna \ + junit \ + libtool \ + libvirt-devel \ + lsof \ + make \ + net-tools \ + ninja \ + patch \ + perl \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim && \ + zypper clean --all && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +RUN pip3 install \ + meson==0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-ubuntu-1804.Dockerfile b/ci/libvirt-ubuntu-1804.Dockerfile new file mode 100644 index 0000000..4e0fc1d --- /dev/null +++ b/ci/libvirt-ubuntu-1804.Dockerfile @@ -0,0 +1,61 @@ +FROM ubuntu:18.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc6-dev \ + libjna-java \ + libtool \ + libtool-bin \ + libvirt-dev \ + locales \ + lsof \ + make \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +RUN pip3 install \ + meson==0.49.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-ubuntu-2004.Dockerfile b/ci/libvirt-ubuntu-2004.Dockerfile new file mode 100644 index 0000000..df5e877 --- /dev/null +++ b/ci/libvirt-ubuntu-2004.Dockerfile @@ -0,0 +1,68 @@ +FROM ubuntu:20.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + autoconf \ + automake \ + autopoint \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + git \ + junit \ + libc-dev-bin \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libtool \ + libtool-bin \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + lsof \ + make \ + meson \ + net-tools \ + ninja-build \ + openjdk-11-jdk-headless \ + patch \ + perl \ + pkgconf \ + python3 \ + python3-docutils \ + python3-setuptools \ + python3-wheel \ + screen \ + strace \ + sudo \ + vim \ + xsltproc && \ + apt-get autoremove -y && \ + apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/refresh b/ci/refresh new file mode 100755 index 0000000..cf140e4 --- /dev/null +++ b/ci/refresh @@ -0,0 +1,27 @@ +#!/bin/sh + +if test -z "$1" +then + echo "syntax: $0 PATH-TO-LCITOOL" + exit 1 +fi + +LCITOOL=$1 + +if ! test -x "$LCITOOL" +then + echo "$LCITOOL is not executable" + exit 1 +fi + +HOSTS=$($LCITOOL hosts | grep -v freebsd) + +for host in $HOSTS +do + if test "$host" = "libvirt-ubuntu-2004" + then + $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-java > $host.Dockerfile + else + $LCITOOL dockerfile $host libvirt+dist,libvirt-java > $host.Dockerfile + fi +done From b2b77800c8e96d2f95ba4350ac6b28eb8699b3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Thu, 7 May 2020 13:42:35 +0100 Subject: [PATCH 010/114] gitlab: add CONTRIBUTING.rst file to indicate use of merge requests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the introduction of automated CI pipelines, we are now ready to switch to using merge requests for the project. With this switch we longer wish to have patches sent to the mailing list, and thus the git-publish config is removed. Reviewed-by: Andrea Bolognani Signed-off-by: Daniel P. Berrangé --- .gitpublish | 4 ---- CONTRIBUTING.rst | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) delete mode 100644 .gitpublish create mode 100644 CONTRIBUTING.rst diff --git a/.gitpublish b/.gitpublish deleted file mode 100644 index 1920230..0000000 --- a/.gitpublish +++ /dev/null @@ -1,4 +0,0 @@ -[gitpublishprofile "default"] -base = master -to = libvir-list@redhat.com -prefix = libvirt-java PATCH diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..4ef23bd --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,28 @@ +============================ +Contributing to libvirt-java +============================ + +The libvirt Java API binding accepts code contributions via merge requests +on the GitLab project: + +https://gitlab.com/libvirt/libvirt-java/-/merge_requests + +It is required that automated CI pipelines succeed before a merge request +will be accepted. The global pipeline status for the ``master`` branch is +visible at: + +https://gitlab.com/libvirt/libvirt-java/pipelines + +CI pipeline results for merge requests will be visible via the contributors' +own private repository fork: + +https://gitlab.com/yourusername/libvirt-java/pipelines + +Contributions submitted to the project must be in compliance with the +Developer Certificate of Origin Version 1.1. This is documented at: + +https://developercertificate.org/ + +To indicate compliance, each commit in a series must have a "Signed-off-by" +tag with the submitter's name and email address. This can be added by passing +the ``-s`` flag to ``git commit`` when creating the patches. From 28641d6a1ea386e48550a679267be69656927abe Mon Sep 17 00:00:00 2001 From: Slavka Peleva Date: Tue, 19 May 2020 18:48:29 +0300 Subject: [PATCH 011/114] Qemu Guest Agent and Qemu Monitor Commands Implement LibvirtQemu.virDomainQemuAgentCommand and LibvirtQemu.virDomainQemuMonitorCommand api calls for support of Qemu Guest Agent and Monitor commands Signed-off-by: Slavka Peleva --- src/main/java/org/libvirt/Domain.java | 44 +++++++++++++++++++ src/main/java/org/libvirt/Library.java | 7 +++ .../org/libvirt/jna/CStringByReference.java | 19 ++++++++ .../java/org/libvirt/jna/LibvirtQemu.java | 12 +++++ 4 files changed, 82 insertions(+) create mode 100644 src/main/java/org/libvirt/jna/CStringByReference.java create mode 100644 src/main/java/org/libvirt/jna/LibvirtQemu.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 83a500c..54edbd6 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -5,6 +5,7 @@ import org.libvirt.event.IOErrorListener; import org.libvirt.jna.CString; +import org.libvirt.jna.CStringByReference; import org.libvirt.jna.DomainPointer; import org.libvirt.jna.DomainSnapshotPointer; import org.libvirt.jna.Libvirt; @@ -22,6 +23,7 @@ import org.libvirt.event.PMWakeupListener; import org.libvirt.event.PMSuspendListener; import static org.libvirt.Library.libvirt; +import static org.libvirt.Library.libvirtQemu; import static org.libvirt.ErrorHandler.processError; import static org.libvirt.ErrorHandler.processErrorIfZero; @@ -1556,4 +1558,46 @@ public int updateDeviceFlags(String xml, int flags) throws LibvirtException { return processError(libvirt.virDomainUpdateDeviceFlags(VDP, xml, flags)); } + /** + * Commands for Qemu Guest Agent helper daemon + * + *@see Libvirt + * Documentation + * @param cmd + * the guest agent command string + * @param timeout + * timeout seconds + * @param flags + * execution flags + * @return result + * strings if success, NULL in failure. + * @throws LibvirtException + */ + public String qemuAgentCommand(String cmd, int timeout, int flags) throws LibvirtException { + CString result = libvirtQemu != null ? libvirtQemu.virDomainQemuAgentCommand(VDP, cmd, timeout, flags) : null; + processError(result); + return result.toString(); + } + + /** + * Qemu Monitor Command - it will only work with hypervisor connections to the QEMU driver. + * + *@see Libvirt + * Documentation + * @param cmd + * the qemu monitor command string + * @param flags + * bitwise-or of supported virDomainQemuMonitorCommandFlags + * @return result + * a string returned by @cmd + * @throws LibvirtException + */ + public String qemuMonitorCommand(String cmd, int flags) throws LibvirtException { + CStringByReference result = new CStringByReference(); + int cmdResult = libvirtQemu != null ? libvirtQemu.virDomainQemuMonitorCommand(VDP, cmd, result, flags) : -1; + processError(cmdResult); + return result.getValue().toString(); + } } diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index 8e054c6..aef0cb7 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -1,6 +1,7 @@ package org.libvirt; import org.libvirt.jna.Libvirt; +import org.libvirt.jna.LibvirtQemu; import org.libvirt.jna.Libvirt.VirEventTimeoutCallback; import org.libvirt.jna.CString; import static org.libvirt.ErrorHandler.processError; @@ -34,6 +35,7 @@ public void tick(int id, Pointer p) { }; final static Libvirt libvirt; + final static LibvirtQemu libvirtQemu; // an empty string array constant // prefer this over creating empty arrays dynamically. @@ -47,6 +49,11 @@ public void tick(int id, Pointer p) { } catch (Exception e) { e.printStackTrace(); } + try { + libvirtQemu = getVersion() > 9010 ? LibvirtQemu.INSTANCE : null; + } catch (LibvirtException e) { + throw new RuntimeException("libvirt error get version", e); + } } private Library() {} diff --git a/src/main/java/org/libvirt/jna/CStringByReference.java b/src/main/java/org/libvirt/jna/CStringByReference.java new file mode 100644 index 0000000..87a06b2 --- /dev/null +++ b/src/main/java/org/libvirt/jna/CStringByReference.java @@ -0,0 +1,19 @@ +package org.libvirt.jna; + +import com.sun.jna.Native; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.ByReference; + +public class CStringByReference extends ByReference{ + + public CStringByReference() { + super(Native.POINTER_SIZE); + Pointer p = getPointer(); + p.setPointer(0, Pointer.NULL); + } + + public CString getValue() { + Pointer p = getPointer(); + return new CString(p.getPointer(0)); + } +} diff --git a/src/main/java/org/libvirt/jna/LibvirtQemu.java b/src/main/java/org/libvirt/jna/LibvirtQemu.java new file mode 100644 index 0000000..04f2685 --- /dev/null +++ b/src/main/java/org/libvirt/jna/LibvirtQemu.java @@ -0,0 +1,12 @@ +package org.libvirt.jna; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Platform; + +public interface LibvirtQemu extends Library{ + LibvirtQemu INSTANCE = (LibvirtQemu) Native.loadLibrary(Platform.isWindows() ? "virt-qemu-0" : "virt-qemu", LibvirtQemu.class); + + int virDomainQemuMonitorCommand(DomainPointer virDomainPtr, String cmd, CStringByReference result, int flags); + CString virDomainQemuAgentCommand(DomainPointer virDomainPtr, String cmd, int timeout,int flags); +} From 2eeb1a9b26121c8fb9cdd02ede13b071c2d10241 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:46 +0200 Subject: [PATCH 012/114] Use newer minimal java source and target version To be able to compile the project with java versions greater than 1.8 a minimal java version of at least 1.8 is needed. Change the minimal java source and target version and use a minimal java compiler version 1.8 to deal with that. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- build.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.properties b/build.properties index bcc7b8c..c7c1a43 100644 --- a/build.properties +++ b/build.properties @@ -1,8 +1,8 @@ version=0.5.1 release=1 libvirt.required=0.9.12 -java.required=1.6.0 -java.target=1.6 -java.source=1.6 +java.required=1.8.0 +java.target=1.8 +java.source=1.8 rpm.topdir=/home/veillard/rpms jar.dir=/usr/share/java From bb0028c291b4ca4b9fbc7915a9ea000ddbd9f2cf Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:48 +0200 Subject: [PATCH 013/114] Change junit output format to xml As preparatory patch to use Jenkins junit bindings the output format of junit needs to be changed to XML. Change the output format to XML. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index acd9c92..57e5b0d 100644 --- a/build.xml +++ b/build.xml @@ -65,7 +65,7 @@ - + From 23630d4ffda098ebd631e3ad74f1f803c86eb648 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:49 +0200 Subject: [PATCH 014/114] Remove unused imports Some imports are not used any more. Remove them. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 4 +++- src/main/java/org/libvirt/Device.java | 4 ---- src/main/java/org/libvirt/Domain.java | 1 - src/main/java/org/libvirt/DomainSnapshot.java | 2 -- src/main/java/org/libvirt/Error.java | 3 --- src/main/java/org/libvirt/ErrorHandler.java | 1 - src/main/java/org/libvirt/Interface.java | 2 -- src/main/java/org/libvirt/Library.java | 1 - src/main/java/org/libvirt/Network.java | 1 - src/main/java/org/libvirt/StoragePool.java | 1 - src/main/java/org/libvirt/StorageVol.java | 2 -- src/main/java/org/libvirt/event/DefinedDetail.java | 2 -- 12 files changed, 3 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 04de4fd..0852cd1 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -5,7 +5,10 @@ import java.util.Map; import java.util.UUID; +//CHECKSTYLE:OFF: AvoidStarImport - Too much events to mention... import org.libvirt.event.*; +//CHECKSTYLE:ON: AvoidStarImport + import org.libvirt.jna.ConnectionPointer; import org.libvirt.jna.CString; import org.libvirt.jna.DevicePointer; @@ -20,7 +23,6 @@ import org.libvirt.jna.StreamPointer; import org.libvirt.jna.virConnectAuth; import org.libvirt.jna.virNodeInfo; -import org.libvirt.event.*; import static org.libvirt.Library.libvirt; import static org.libvirt.Library.getConstant; diff --git a/src/main/java/org/libvirt/Device.java b/src/main/java/org/libvirt/Device.java index 6becbca..c8f028a 100644 --- a/src/main/java/org/libvirt/Device.java +++ b/src/main/java/org/libvirt/Device.java @@ -5,10 +5,6 @@ import static org.libvirt.Library.libvirt; import static org.libvirt.ErrorHandler.processError; -import com.sun.jna.Pointer; - -import com.sun.jna.Pointer; - /** * A device which is attached to a node */ diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 54edbd6..7056f13 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -29,7 +29,6 @@ import com.sun.jna.Native; import com.sun.jna.NativeLong; -import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; import java.util.Arrays; diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index ad49724..7af4034 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -4,8 +4,6 @@ import static org.libvirt.Library.libvirt; import static org.libvirt.ErrorHandler.processError; -import com.sun.jna.Pointer; - public class DomainSnapshot { /** diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index 15dd870..cb4efce 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -2,9 +2,6 @@ import java.io.Serializable; -import org.libvirt.jna.ConnectionPointer; -import org.libvirt.jna.DomainPointer; -import org.libvirt.jna.NetworkPointer; import org.libvirt.jna.virError; /** diff --git a/src/main/java/org/libvirt/ErrorHandler.java b/src/main/java/org/libvirt/ErrorHandler.java index c2e7337..05b5254 100644 --- a/src/main/java/org/libvirt/ErrorHandler.java +++ b/src/main/java/org/libvirt/ErrorHandler.java @@ -1,6 +1,5 @@ package org.libvirt; -import org.libvirt.jna.Libvirt; import org.libvirt.jna.virError; import static org.libvirt.Library.libvirt; diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index 2c29a35..e2f7849 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -4,8 +4,6 @@ import static org.libvirt.Library.libvirt; import static org.libvirt.ErrorHandler.processError; -import com.sun.jna.Pointer; - /** * A device which is attached to a node */ diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index aef0cb7..27daacb 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -9,7 +9,6 @@ import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.ptr.LongByReference; -import com.sun.jna.ptr.PointerByReference; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; diff --git a/src/main/java/org/libvirt/Network.java b/src/main/java/org/libvirt/Network.java index 9f493f7..e9e5de1 100644 --- a/src/main/java/org/libvirt/Network.java +++ b/src/main/java/org/libvirt/Network.java @@ -6,7 +6,6 @@ import static org.libvirt.ErrorHandler.processError; import com.sun.jna.Native; -import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; /** diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index 04870bf..55172f2 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -9,7 +9,6 @@ import static org.libvirt.ErrorHandler.processError; import com.sun.jna.Native; -import com.sun.jna.Pointer; import com.sun.jna.ptr.IntByReference; /** diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index 3b1533e..6991db3 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -6,8 +6,6 @@ import static org.libvirt.Library.libvirt; import static org.libvirt.ErrorHandler.processError; -import com.sun.jna.Pointer; - /** * An acutal storage bucket. */ diff --git a/src/main/java/org/libvirt/event/DefinedDetail.java b/src/main/java/org/libvirt/event/DefinedDetail.java index f0220f0..f40c356 100644 --- a/src/main/java/org/libvirt/event/DefinedDetail.java +++ b/src/main/java/org/libvirt/event/DefinedDetail.java @@ -1,7 +1,5 @@ package org.libvirt.event; -import org.libvirt.Domain; - public enum DefinedDetail implements DomainEventDetail { /** * Newly created config file. From 70a2815f4d7ca84a249be3bc46f65c4b6a67ecb4 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:50 +0200 Subject: [PATCH 015/114] Remove unused variables The connection, domain and network pointer in the error class are leftover from previous implementation. These pointers are not only unused, they furthermore inhibit proper serialization. Drop these pointers. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Error.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index cb4efce..cac52a3 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -346,9 +346,6 @@ public Error(virError vError) { str3 = vError.str3; int1 = vError.int1; int2 = vError.int2; - VCP = vError.conn; - VDP = vError.dom; - VNP = vError.net; } /** From f46c0376bb2a5432afaee88bfc7930cce588520a Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:52 +0200 Subject: [PATCH 016/114] Declare inner class static For a better encapsulation and stronger access rules define inner classes as static. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/ConnectAuth.java | 2 +- src/main/java/org/libvirt/jna/virNodeInfo.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index 32fb0e8..5db6afb 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -13,7 +13,7 @@ * */ public abstract class ConnectAuth implements Libvirt.VirConnectAuthCallback { - public class Credential { + public static class Credential { /** * One of virConnectCredentialType constants diff --git a/src/main/java/org/libvirt/jna/virNodeInfo.java b/src/main/java/org/libvirt/jna/virNodeInfo.java index 7a7716e..98c408d 100644 --- a/src/main/java/org/libvirt/jna/virNodeInfo.java +++ b/src/main/java/org/libvirt/jna/virNodeInfo.java @@ -10,10 +10,10 @@ * JNA mapping for the virNodeInfo structure */ public class virNodeInfo extends Structure { - public class ByReference extends virNodeInfo implements Structure.ByReference { + public static class ByReference extends virNodeInfo implements Structure.ByReference { }; - public class ByValue extends virNodeInfo implements Structure.ByValue { + public static class ByValue extends virNodeInfo implements Structure.ByValue { }; public byte model[] = new byte[32]; From 81cfed7e07239e06381d7b039018ede5f6a69132 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:53 +0200 Subject: [PATCH 017/114] Specify string encoding String manipulation with unknown encoding may result in undefined behaviour. Set the string encoding to UTF-8 and add error handling. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/ConnectAuthDefault.java | 7 ++++--- src/main/java/org/libvirt/SchedParameter.java | 7 ++++++- src/main/java/org/libvirt/Secret.java | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/libvirt/ConnectAuthDefault.java b/src/main/java/org/libvirt/ConnectAuthDefault.java index 09632cc..2016e49 100644 --- a/src/main/java/org/libvirt/ConnectAuthDefault.java +++ b/src/main/java/org/libvirt/ConnectAuthDefault.java @@ -1,6 +1,7 @@ package org.libvirt; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStreamReader; /** @@ -19,8 +20,8 @@ public ConnectAuthDefault() { @Override public int callback(Credential[] cred) { - BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - try { + try (BufferedReader in = + new BufferedReader(new InputStreamReader(System.in, "UTF-8"))) { for (Credential c : cred) { String response = ""; switch (c.type) { @@ -47,7 +48,7 @@ public int callback(Credential[] cred) { return -1; } } - } catch (Exception e) { + } catch (IOException e) { return -1; } return 0; diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index 36302bc..c9e4471 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -7,6 +7,7 @@ import org.libvirt.jna.virSchedParameterValue; import com.sun.jna.Native; +import java.io.UnsupportedEncodingException; /** * The abstract parent of the actual Schedparameter classes @@ -47,7 +48,11 @@ public static SchedParameter create(virSchedParameter vParam) { public static virSchedParameter toNative(SchedParameter param) { virSchedParameter returnValue = new virSchedParameter(); returnValue.value = new virSchedParameterValue(); - returnValue.field = copyOf(param.field.getBytes(), Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH); + try { + returnValue.field = copyOf(param.field.getBytes("UTF-8"), Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH); + } catch (UnsupportedEncodingException ex) { + returnValue.field = null; + } returnValue.type = param.getType(); switch (param.getType()) { case (1): diff --git a/src/main/java/org/libvirt/Secret.java b/src/main/java/org/libvirt/Secret.java index a5f13ac..3e1b7b1 100644 --- a/src/main/java/org/libvirt/Secret.java +++ b/src/main/java/org/libvirt/Secret.java @@ -9,6 +9,7 @@ import com.sun.jna.Native; import com.sun.jna.Pointer; +import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; /** @@ -103,7 +104,12 @@ public String getUUIDString() throws LibvirtException { * @return the value of the secret, or null on failure. */ public String getValue() throws LibvirtException { - String returnValue = new String(getByteValue()); + String returnValue; + try { + returnValue = new String(getByteValue(), "UTF-8"); + } catch (UnsupportedEncodingException ex) { + returnValue = null; + } return returnValue; } From 9423acea651900bc58ca4920e777753c4e891095 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:54 +0200 Subject: [PATCH 018/114] Mark methods final A couple of properties are not changed after initialization. Mark them final. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Device.java | 2 +- src/main/java/org/libvirt/DomainSnapshot.java | 2 +- src/main/java/org/libvirt/Error.java | 21 ++++++++----------- src/main/java/org/libvirt/Interface.java | 4 ++-- src/main/java/org/libvirt/NetworkFilter.java | 2 +- src/main/java/org/libvirt/Secret.java | 2 +- src/main/java/org/libvirt/Stream.java | 2 +- 7 files changed, 16 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/libvirt/Device.java b/src/main/java/org/libvirt/Device.java index c8f028a..c3fbf42 100644 --- a/src/main/java/org/libvirt/Device.java +++ b/src/main/java/org/libvirt/Device.java @@ -18,7 +18,7 @@ public class Device { /** * The Connect Object that represents the Hypervisor of this Domain */ - private Connect virConnect; + private final Connect virConnect; /** * Constructs a Device object from a DevicePointer, and a Connect object. diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index 7af4034..0516ff4 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -14,7 +14,7 @@ public class DomainSnapshot { /** * The Connect Object that represents the Hypervisor of this Domain Snapshot */ - private Connect virConnect; + private final Connect virConnect; public DomainSnapshot(Connect virConnect, DomainSnapshotPointer VDSP) { this.VDSP = VDSP; diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index cac52a3..c7c72f8 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -323,18 +323,15 @@ protected static final ErrorNumber wrap(int value) { */ private static final long serialVersionUID = -4780109197014633842L; - private ErrorNumber code; - private ErrorDomain domain; - private String message; - private ErrorLevel level; - private ConnectionPointer VCP; /* Deprecated */ - private DomainPointer VDP; /* Deprecated */ - private String str1; - private String str2; - private String str3; - private int int1; - private int int2; - private NetworkPointer VNP; /* Deprecated */ + private final ErrorNumber code; + private final ErrorDomain domain; + private final String message; + private final ErrorLevel level; + private final String str1; + private final String str2; + private final String str3; + private final int int1; + private final int int2; public Error(virError vError) { code = ErrorNumber.wrap(vError.code); diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index e2f7849..8549119 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -12,7 +12,7 @@ public class Interface { /** * Get XML Flag: dump inactive interface information */ - public static int VIR_INTERFACE_XML_INACTIVE = 1; + public static final int VIR_INTERFACE_XML_INACTIVE = 1; /** * the native virInterfacePtr. @@ -22,7 +22,7 @@ public class Interface { /** * The Connect Object that represents the Hypervisor of this Interface */ - private Connect virConnect; + private final Connect virConnect; /** * Constructs an Interface object from an InterfacePointer, and a Connect diff --git a/src/main/java/org/libvirt/NetworkFilter.java b/src/main/java/org/libvirt/NetworkFilter.java index 094a5f6..9ecd4f3 100644 --- a/src/main/java/org/libvirt/NetworkFilter.java +++ b/src/main/java/org/libvirt/NetworkFilter.java @@ -16,7 +16,7 @@ public class NetworkFilter { /** * The Connect Object that represents the Hypervisor of this Filter */ - private Connect virConnect; + private final Connect virConnect; public NetworkFilter(Connect virConnect, NetworkFilterPointer NFP) { this.NFP = NFP; diff --git a/src/main/java/org/libvirt/Secret.java b/src/main/java/org/libvirt/Secret.java index 3e1b7b1..52d2063 100644 --- a/src/main/java/org/libvirt/Secret.java +++ b/src/main/java/org/libvirt/Secret.java @@ -25,7 +25,7 @@ public class Secret { /** * The Connect Object that represents the Hypervisor of this Domain */ - private Connect virConnect; + private final Connect virConnect; Secret(Connect virConnect, SecretPointer VSP) { this.virConnect = virConnect; diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 97bebdd..3d081a3 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -42,7 +42,7 @@ */ public class Stream implements ByteChannel { - public static int VIR_STREAM_NONBLOCK = (1 << 0); + public static final int VIR_STREAM_NONBLOCK = (1 << 0); /** * the native virStreamPtr. From c4f808160150c324c7512b2762549909caff3159 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:55 +0200 Subject: [PATCH 019/114] Change field name according to Java naming convention The Java naming convention claims: Constants should be written in uppercase characters separated by underscores. Constant names may also contain digits if appropriate, but not as the first character. Convert field names to uppercase according to the naming convention. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/jna/virError.java | 4 ++-- src/main/java/org/libvirt/jna/virNodeInfo.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/libvirt/jna/virError.java b/src/main/java/org/libvirt/jna/virError.java index e58f5f3..0a763a4 100644 --- a/src/main/java/org/libvirt/jna/virError.java +++ b/src/main/java/org/libvirt/jna/virError.java @@ -22,12 +22,12 @@ public class virError extends Structure { public int int2; public NetworkPointer net; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "code", "domain", "message", "level", "conn", "dom", "str1", "str2", "str3", "int1", "int2", "net"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virNodeInfo.java b/src/main/java/org/libvirt/jna/virNodeInfo.java index 98c408d..d59714b 100644 --- a/src/main/java/org/libvirt/jna/virNodeInfo.java +++ b/src/main/java/org/libvirt/jna/virNodeInfo.java @@ -25,12 +25,12 @@ public static class ByValue extends virNodeInfo implements Structure.ByValue { public int cores; public int threads; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "model", "memory", "cpus", "mhz", "nodes", "sockets", "cores", "threads"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } From 405e991cff94afb9433e0855b1fd58c7286bfc8d Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:56 +0200 Subject: [PATCH 020/114] Add default handling to switch and revisit error handling The Java naming convention claims: Every switch statement should include a default case. Revisit all switch statements and add a default case if needed. While at it check the error handling. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/ConnectAuthDefault.java | 5 +++++ src/main/java/org/libvirt/SchedParameter.java | 13 ++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/libvirt/ConnectAuthDefault.java b/src/main/java/org/libvirt/ConnectAuthDefault.java index 2016e49..a06f221 100644 --- a/src/main/java/org/libvirt/ConnectAuthDefault.java +++ b/src/main/java/org/libvirt/ConnectAuthDefault.java @@ -38,6 +38,11 @@ public int callback(Credential[] cred) { System.out.println("WARNING: THE ENTERED PASSWORD WILL NOT BE MASKED!"); response = in.readLine(); break; + default: + // Unknown Type: Nothing to do here, + } + if (response == null) { + response = ""; } if (response.equals("") && !c.defresult.equals("")) { c.result = c.defresult; diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index c9e4471..967c0ee 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -39,8 +39,12 @@ public static SchedParameter create(virSchedParameter vParam) { case (6): returnValue = new SchedBooleanParameter(vParam.value.b); break; + default: + // Unknown type: nothing to do. + } + if (returnValue != null) { + returnValue.field = Native.toString(vParam.field); } - returnValue.field = Native.toString(vParam.field); } return returnValue; } @@ -79,7 +83,8 @@ public static virSchedParameter toNative(SchedParameter param) { returnValue.value.b = (byte) (((SchedBooleanParameter) param).value ? 1 : 0); returnValue.value.setType(byte.class); break; - + default: + // Unknown type: nothing to do. } return returnValue; } @@ -88,9 +93,7 @@ public static byte[] copyOf(byte[] original, int length) { byte[] returnValue = new byte[length]; int originalLength = original.length ; Arrays.fill(returnValue, (byte)0); - for (int x = 0 ; x < originalLength ; x++) { - returnValue[x] = original[x] ; - } + System.arraycopy(original, 0, returnValue, 0, originalLength); return returnValue ; } From cb81b050d29c08d95cf6da6a3df9d651edc1cc9c Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:57 +0200 Subject: [PATCH 021/114] Revisit C-string conversion The former C-string conversion returned a null pointer without need. Avoid the null pointer and return a feasible string instead. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/jna/CString.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index b6d9dc2..5091886 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -32,13 +32,14 @@ public CString(Pointer p) { * Returns a String representing the value of this C-String *

* Side-effect: frees the memory of the C-String. + * @return String represented by C-String or "(null)" */ @Override public String toString() { if (string == null) { final Pointer ptr = getPointer(); - if (ptr == null) return null; + if (ptr == null) return "(null)"; try { // N.B. could be replaced with Pointer.getString(0L, "UTF-8") From 9eec4e1918cdbe7369ced4a75cc7ee619ae4026b Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:58:58 +0200 Subject: [PATCH 022/114] Add missing documentation Revisit JavaDoc warnings and add necessary documentation. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Device.java | 8 ++++++++ src/main/java/org/libvirt/DomainSnapshot.java | 1 + src/main/java/org/libvirt/Interface.java | 13 +++++++++---- src/main/java/org/libvirt/NetworkFilter.java | 1 + src/main/java/org/libvirt/Secret.java | 8 ++++++++ 5 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/libvirt/Device.java b/src/main/java/org/libvirt/Device.java index c3fbf42..f754082 100644 --- a/src/main/java/org/libvirt/Device.java +++ b/src/main/java/org/libvirt/Device.java @@ -54,6 +54,7 @@ public int destroy() throws LibvirtException { * Dettach the node device from the node itself so that it may be assigned * to a guest domain. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int detach() throws LibvirtException { @@ -85,6 +86,7 @@ public int free() throws LibvirtException { /** * Returns the name of the device * + * @return 0 on success or -1 on error * @throws LibvirtException */ public String getName() throws LibvirtException { @@ -94,6 +96,7 @@ public String getName() throws LibvirtException { /** * Returns the number of capabilities which the instance has. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int getNumberOfCapabilities() throws LibvirtException { @@ -103,6 +106,7 @@ public int getNumberOfCapabilities() throws LibvirtException { /** * Returns the parent of the device * + * @return String or null * @throws LibvirtException */ public String getParent() throws LibvirtException { @@ -112,6 +116,7 @@ public String getParent() throws LibvirtException { /** * Returns the XML description of the device * + * @return String or null * @throws LibvirtException */ public String getXMLDescription() throws LibvirtException { @@ -121,6 +126,7 @@ public String getXMLDescription() throws LibvirtException { /** * List the capabilities of the device * + * @return String or null * @throws LibvirtException */ public String[] listCapabilities() throws LibvirtException { @@ -139,6 +145,7 @@ public String[] listCapabilities() throws LibvirtException { /** * ReAttach a device to the node. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int reAttach() throws LibvirtException { @@ -149,6 +156,7 @@ public int reAttach() throws LibvirtException { * Reset a previously dettached node device to the node before or after * assigning it to a guest. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int reset() throws LibvirtException { diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index 0516ff4..ef18bf3 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -67,6 +67,7 @@ public int free() throws LibvirtException { /** * Fetches an XML document describing attributes of the snapshot. * + * @throws org.libvirt.LibvirtException * @see Libvirt Documentation * @return the XML document */ diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index 8549119..e2a23f7 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -39,14 +39,14 @@ public class Interface { } /** - * Activate an interface (i.e. call "ifup"). - *

+ * Activate an interface (i.e. call "ifup").

* If there was an open network config transaction at the time * this interface was defined (that is, if * virInterfaceChangeBegin() had been called), the interface will * be brought back down (and then undefined) if * virInterfaceChangeRollback() is called. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int create() throws LibvirtException { @@ -54,8 +54,7 @@ public int create() throws LibvirtException { } /** - * Deactivate an interface (i.e. call "ifdown"). - *

+ * Deactivate an interface (i.e. call "ifdown").

* This does not remove the interface from the config, and does * not free the associated virInterfacePtr object. *

@@ -66,6 +65,7 @@ public int create() throws LibvirtException { * the interface definition will also bring the interface back * up. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int destroy() throws LibvirtException { @@ -97,6 +97,7 @@ public int free() throws LibvirtException { /** * Returns the mac string of the interface * + * @return String or null * @throws LibvirtException */ public String getMACString() throws LibvirtException { @@ -106,6 +107,7 @@ public String getMACString() throws LibvirtException { /** * Returns the name of the interface * + * @return String or null * @throws LibvirtException */ public String getName() throws LibvirtException { @@ -115,6 +117,8 @@ public String getName() throws LibvirtException { /** * Returns the XML description for theinterface * + * @param flags + * @return String or null * @throws LibvirtException */ public String getXMLDescription(int flags) throws LibvirtException { @@ -138,6 +142,7 @@ public int isActive() throws LibvirtException { * Undefine an interface, ie remove it from the config. This does not free * the associated virInterfacePtr object. * + * @return 0 on success or -1 on error * @throws LibvirtException */ public int undefine() throws LibvirtException { diff --git a/src/main/java/org/libvirt/NetworkFilter.java b/src/main/java/org/libvirt/NetworkFilter.java index 9ecd4f3..c185eaa 100644 --- a/src/main/java/org/libvirt/NetworkFilter.java +++ b/src/main/java/org/libvirt/NetworkFilter.java @@ -84,6 +84,7 @@ public String getUUIDString() throws LibvirtException { /** * Fetches an XML document describing attributes of the network filter. * + * @throws org.libvirt.LibvirtException * @see Libvirt * Documentation diff --git a/src/main/java/org/libvirt/Secret.java b/src/main/java/org/libvirt/Secret.java index 52d2063..9696d0f 100644 --- a/src/main/java/org/libvirt/Secret.java +++ b/src/main/java/org/libvirt/Secret.java @@ -102,6 +102,7 @@ public String getUUIDString() throws LibvirtException { * This is just kept for backward compatibility * * @return the value of the secret, or null on failure. + * @throws org.libvirt.LibvirtException */ public String getValue() throws LibvirtException { String returnValue; @@ -117,6 +118,7 @@ public String getValue() throws LibvirtException { * Fetches the value of the secret as a byte array * * @return the value of the secret, or null on failure. + * @throws org.libvirt.LibvirtException */ public byte[] getByteValue() throws LibvirtException { SizeTByReference value_size = new SizeTByReference(); @@ -131,6 +133,7 @@ public byte[] getByteValue() throws LibvirtException { * Fetches an XML document describing attributes of the secret. * * @return the XML document + * @throws org.libvirt.LibvirtException */ public String getXMLDesc() throws LibvirtException { return processError(libvirt.virSecretGetXMLDesc(VSP, 0)).toString(); @@ -139,7 +142,9 @@ public String getXMLDesc() throws LibvirtException { /** * Sets the value of the secret * + * @param value * @return ignore (always 0) + * @throws org.libvirt.LibvirtException */ public int setValue(String value) throws LibvirtException { return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length()), 0)); @@ -148,7 +153,9 @@ public int setValue(String value) throws LibvirtException { /** * Sets the value of the secret * + * @param value * @return ignore (always 0) + * @throws org.libvirt.LibvirtException */ public int setValue(byte[] value) throws LibvirtException { return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length), 0)); @@ -158,6 +165,7 @@ public int setValue(byte[] value) throws LibvirtException { * Undefines, but does not free, the Secret. * * @return ignore (always 0) + * @throws org.libvirt.LibvirtException */ public int undefine() throws LibvirtException { return processError(libvirt.virSecretUndefine(VSP)); From 8f6038e4e10dc3ca49d7c011d47bc164d2c7d2f0 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:03 +0200 Subject: [PATCH 023/114] Whitespace cleanup Checkstyle grouse about whitespace damage. Revisit the code and do a cleanup. No functional change. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 2 +- .../java/org/libvirt/ConnectAuthDefault.java | 12 ++++++---- src/main/java/org/libvirt/Error.java | 2 +- src/main/java/org/libvirt/SchedParameter.java | 6 ++--- .../java/org/libvirt/event/DomainEvent.java | 2 +- src/main/java/org/libvirt/jna/CString.java | 8 +++---- src/main/java/org/libvirt/jna/Libvirt.java | 22 +++++++++---------- .../org/libvirt/jna/SizeTByReference.java | 4 ++-- .../org/libvirt/jna/virDomainBlockStats.java | 4 ++-- .../org/libvirt/jna/virDomainMemoryStats.java | 6 ++--- 10 files changed, 36 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 0852cd1..df99ca5 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -1884,7 +1884,7 @@ public Stream streamNew(int flags) throws LibvirtException { * @throws LibvirtException */ public boolean isConnected() throws LibvirtException { - return ( ( VCP != null ) ? true : false ); + return ((VCP != null) ? true : false); } /** diff --git a/src/main/java/org/libvirt/ConnectAuthDefault.java b/src/main/java/org/libvirt/ConnectAuthDefault.java index a06f221..29bb351 100644 --- a/src/main/java/org/libvirt/ConnectAuthDefault.java +++ b/src/main/java/org/libvirt/ConnectAuthDefault.java @@ -14,14 +14,18 @@ public final class ConnectAuthDefault extends ConnectAuth { public ConnectAuthDefault() { - credType = new CredentialType[] { CredentialType.VIR_CRED_AUTHNAME, CredentialType.VIR_CRED_ECHOPROMPT, - CredentialType.VIR_CRED_REALM, CredentialType.VIR_CRED_PASSPHRASE, CredentialType.VIR_CRED_NOECHOPROMPT }; + credType = new CredentialType[] { + CredentialType.VIR_CRED_AUTHNAME, + CredentialType.VIR_CRED_ECHOPROMPT, + CredentialType.VIR_CRED_REALM, + CredentialType.VIR_CRED_PASSPHRASE, + CredentialType.VIR_CRED_NOECHOPROMPT }; } @Override public int callback(Credential[] cred) { - try (BufferedReader in = - new BufferedReader(new InputStreamReader(System.in, "UTF-8"))) { + try (BufferedReader in = + new BufferedReader(new InputStreamReader(System.in, "UTF-8"))) { for (Credential c : cred) { String response = ""; switch (c.type) { diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index c7c72f8..96217cb 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -18,7 +18,7 @@ public class Error implements Serializable { * values.length}, otherwise the last item of {@code values}. */ private static final T safeElementAt(final int n, final T[] values) { - assert(n >= 0 && values.length > 0); + assert (n >= 0 && values.length > 0); int idx = Math.min(n, values.length - 1); return values[idx]; diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index 967c0ee..c09a808 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -91,10 +91,10 @@ public static virSchedParameter toNative(SchedParameter param) { public static byte[] copyOf(byte[] original, int length) { byte[] returnValue = new byte[length]; - int originalLength = original.length ; - Arrays.fill(returnValue, (byte)0); + int originalLength = original.length; + Arrays.fill(returnValue, (byte) 0); System.arraycopy(original, 0, returnValue, 0, originalLength); - return returnValue ; + return returnValue; } /** diff --git a/src/main/java/org/libvirt/event/DomainEvent.java b/src/main/java/org/libvirt/event/DomainEvent.java index 56234ad..3420967 100644 --- a/src/main/java/org/libvirt/event/DomainEvent.java +++ b/src/main/java/org/libvirt/event/DomainEvent.java @@ -60,7 +60,7 @@ public DomainEventType getType() { * {@link DomainEventDetail} interface */ public & DomainEventDetail> T getDetail() { - @SuppressWarnings("unchecked") T detail = (T)this.type.safeAt(this.detail); + @SuppressWarnings("unchecked") T detail = (T) this.type.safeAt(this.detail); return detail; } diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index 5091886..d30e8d9 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -45,13 +45,13 @@ public String toString() { // N.B. could be replaced with Pointer.getString(0L, "UTF-8") // available in JNA >= 4.x final long len = ptr.indexOf(0, NUL); - assert (len != -1): "C-Strings must be \\0 terminated."; - assert (len <= Integer.MAX_VALUE): "string length exceeded " + Integer.MAX_VALUE; + assert (len != -1) : "C-Strings must be \\0 terminated."; + assert (len <= Integer.MAX_VALUE) : "string length exceeded " + Integer.MAX_VALUE; if (len == 0) { string = ""; } else { - final byte[] data = ptr.getByteArray(0, (int)len); + final byte[] data = ptr.getByteArray(0, (int) len); string = new String(data, UTF8); } @@ -66,7 +66,7 @@ public String toString() { public CString fromNative(Object nativeValue, FromNativeContext context) { if (nativeValue == null) return null; - return new CString((Pointer)nativeValue); + return new CString((Pointer) nativeValue); } private void free(Pointer ptr) { diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 024e268..bfac664 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -119,22 +119,22 @@ interface VirErrorCallback extends Callback { * Stream callbacks */ interface VirStreamSinkFunc extends Callback { - int sinkCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque) ; + int sinkCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque); } interface VirStreamSourceFunc extends Callback { - int sourceCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque) ; + int sourceCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque); } interface VirStreamEventCallback extends Callback { - void eventCallback(StreamPointer virStreamPointer, int events, Pointer opaque) ; + void eventCallback(StreamPointer virStreamPointer, int events, Pointer opaque); } /** * Generic Callbacks */ interface VirFreeCallback extends Callback { - void freeCallback(Pointer opaque) ; + void freeCallback(Pointer opaque); } /* @@ -204,11 +204,11 @@ int virConnectRegisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectC Pointer opaque, Pointer freeOpaque); int virConnectUnregisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectCloseFunc cb); - int virConnectDomainEventDeregisterAny(ConnectionPointer virConnectPtr, int callbackID) ; + int virConnectDomainEventDeregisterAny(ConnectionPointer virConnectPtr, int callbackID); void virConnSetErrorFunc(ConnectionPointer virConnectPtr, Pointer userData, VirErrorCallback callback); int virConnectIsAlive(ConnectionPointer virConnectPtr); - int virConnectIsEncrypted(ConnectionPointer virConnectPtr) ; - int virConnectIsSecure(ConnectionPointer virConnectPtr) ; + int virConnectIsEncrypted(ConnectionPointer virConnectPtr); + int virConnectIsSecure(ConnectionPointer virConnectPtr); CString virConnectFindStoragePoolSources(ConnectionPointer virConnectPtr, String type, String srcSpec, int flags); CString virConnectGetCapabilities(ConnectionPointer virConnectPtr); CString virConnectGetHostname(ConnectionPointer virConnectPtr); @@ -467,14 +467,14 @@ StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, int virSecretUndefine(SecretPointer virSecretPtr); //Stream Methods - int virStreamAbort(StreamPointer virStreamPtr) ; + int virStreamAbort(StreamPointer virStreamPtr); int virStreamEventAddCallback(StreamPointer virStreamPtr, int events, Libvirt.VirStreamEventCallback cb, Pointer opaque, Libvirt.VirFreeCallback ff); int virStreamEventUpdateCallback(StreamPointer virStreamPtr, int events); int virStreamEventRemoveCallback(StreamPointer virStreamPtr); - int virStreamFinish(StreamPointer virStreamPtr) ; - int virStreamFree(StreamPointer virStreamPtr) ; - StreamPointer virStreamNew(ConnectionPointer virConnectPtr, int flags) ; + int virStreamFinish(StreamPointer virStreamPtr); + int virStreamFree(StreamPointer virStreamPtr); + StreamPointer virStreamNew(ConnectionPointer virConnectPtr, int flags); int virStreamSend(StreamPointer virStreamPtr, ByteBuffer data, SizeT size); int virStreamSendAll(StreamPointer virStreamPtr, Libvirt.VirStreamSourceFunc handler, Pointer opaque); int virStreamRecv(StreamPointer virStreamPtr, ByteBuffer data, SizeT length); diff --git a/src/main/java/org/libvirt/jna/SizeTByReference.java b/src/main/java/org/libvirt/jna/SizeTByReference.java index 24a4677..ff3aa31 100644 --- a/src/main/java/org/libvirt/jna/SizeTByReference.java +++ b/src/main/java/org/libvirt/jna/SizeTByReference.java @@ -21,10 +21,10 @@ public void setValue(long value) { Pointer p = getPointer(); switch (Native.SIZE_T_SIZE) { case 2: - p.setShort(0, (short)value); + p.setShort(0, (short) value); break; case 4: - p.setInt(0, (int)value); + p.setInt(0, (int) value); break; case 8: p.setLong(0, value); diff --git a/src/main/java/org/libvirt/jna/virDomainBlockStats.java b/src/main/java/org/libvirt/jna/virDomainBlockStats.java index e48629a..36b05e4 100644 --- a/src/main/java/org/libvirt/jna/virDomainBlockStats.java +++ b/src/main/java/org/libvirt/jna/virDomainBlockStats.java @@ -11,11 +11,11 @@ public class virDomainBlockStats extends Structure { public long rd_req; // this is a long long in the code, so a long mapping is // correct - public long rd_bytes;// this is a long long in the code, so a long mapping + public long rd_bytes; // this is a long long in the code, so a long mapping // is correct public long wr_req; // this is a long long in the code, so a long mapping is // correct - public long wr_bytes;// this is a long long in the code, so a long mapping + public long wr_bytes; // this is a long long in the code, so a long mapping // is correct public long errs; // this is a long long in the code, so a long mapping is // correct diff --git a/src/main/java/org/libvirt/jna/virDomainMemoryStats.java b/src/main/java/org/libvirt/jna/virDomainMemoryStats.java index dfbd3f9..faa53f9 100644 --- a/src/main/java/org/libvirt/jna/virDomainMemoryStats.java +++ b/src/main/java/org/libvirt/jna/virDomainMemoryStats.java @@ -6,10 +6,10 @@ import com.sun.jna.Structure; public class virDomainMemoryStats extends Structure { - public int tag ; - public long val ; + public int tag; + public long val; - private static final List fields = Arrays.asList( "tag", "val"); + private static final List fields = Arrays.asList("tag", "val"); @Override protected List getFieldOrder() { From 980ca3392e72cbe8132c8e1e903e0add98983451 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:04 +0200 Subject: [PATCH 024/114] Javadoc: Escape tag in documentation Description of XML tags in Javadoc need to be escaped. Add missing escape sequence. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Domain.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 7056f13..1a2b23b 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -342,10 +342,10 @@ public void blockPeek(String disk, long offset, ByteBuffer buffer) throws Libvir /** * Returns block device (disk) stats for block devices attached to this * domain. The path parameter is the name of the block device. Get this by - * calling virDomainGetXMLDesc and finding the attribute - * within //domain/devices/disk. (For example, "xvda"). Domains may have - * more than one block device. To get stats for each you should make - * multiple calls to this function. Individual fields within the + * calling virDomainGetXMLDesc and finding the {@code } + * attribute within //domain/devices/disk. (For example, "xvda"). Domains + * may have more than one block device. To get stats for each you should + * make multiple calls to this function. Individual fields within the * DomainBlockStats object may be returned as -1, which indicates that the * hypervisor does not support that particular statistic. * From abb0acbfbe73fcbfb059fa88865d65a0135d2948 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:05 +0200 Subject: [PATCH 025/114] Mark methods and parameter final To inhibit unnoticed modifications these methods and parameter can be marked immutable with the modifiere final. Add modifier final, where appropriate. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/BitFlags.java | 2 +- .../java/org/libvirt/CPUCompareResult.java | 4 +- src/main/java/org/libvirt/Connect.java | 238 +++++++++++------- src/main/java/org/libvirt/ConnectAuth.java | 6 +- .../java/org/libvirt/ConnectAuthDefault.java | 2 +- src/main/java/org/libvirt/Device.java | 2 +- src/main/java/org/libvirt/Domain.java | 127 ++++++---- .../java/org/libvirt/DomainBlockInfo.java | 8 +- .../java/org/libvirt/DomainBlockStats.java | 2 +- src/main/java/org/libvirt/DomainInfo.java | 2 +- .../org/libvirt/DomainInterfaceStats.java | 2 +- src/main/java/org/libvirt/DomainJobInfo.java | 26 +- src/main/java/org/libvirt/DomainSnapshot.java | 5 +- src/main/java/org/libvirt/Error.java | 8 +- src/main/java/org/libvirt/ErrorCallback.java | 2 +- src/main/java/org/libvirt/ErrorException.java | 2 +- src/main/java/org/libvirt/ErrorHandler.java | 10 +- src/main/java/org/libvirt/Interface.java | 4 +- src/main/java/org/libvirt/Library.java | 6 +- .../java/org/libvirt/LibvirtException.java | 2 +- .../java/org/libvirt/MemoryAddressMode.java | 2 +- .../java/org/libvirt/MemoryStatistic.java | 6 +- src/main/java/org/libvirt/Network.java | 6 +- src/main/java/org/libvirt/NetworkFilter.java | 2 +- src/main/java/org/libvirt/NodeInfo.java | 2 +- .../org/libvirt/SchedBooleanParameter.java | 4 +- .../org/libvirt/SchedDoubleParameter.java | 2 +- .../java/org/libvirt/SchedIntParameter.java | 2 +- .../java/org/libvirt/SchedLongParameter.java | 2 +- src/main/java/org/libvirt/SchedParameter.java | 6 +- .../java/org/libvirt/SchedUintParameter.java | 2 +- .../java/org/libvirt/SchedUlongParameter.java | 2 +- src/main/java/org/libvirt/Secret.java | 6 +- src/main/java/org/libvirt/SecurityLabel.java | 8 +- src/main/java/org/libvirt/SecurityModel.java | 6 +- src/main/java/org/libvirt/StoragePool.java | 24 +- .../java/org/libvirt/StoragePoolInfo.java | 5 +- src/main/java/org/libvirt/StorageVol.java | 9 +- src/main/java/org/libvirt/StorageVolInfo.java | 4 +- src/main/java/org/libvirt/Stream.java | 27 +- src/main/java/org/libvirt/VcpuInfo.java | 2 +- .../java/org/libvirt/event/DomainEvent.java | 2 +- .../org/libvirt/event/DomainEventType.java | 2 +- src/main/java/org/libvirt/jna/CString.java | 7 +- src/main/java/org/libvirt/jna/SizeT.java | 2 +- .../org/libvirt/jna/SizeTByReference.java | 4 +- 46 files changed, 352 insertions(+), 254 deletions(-) diff --git a/src/main/java/org/libvirt/BitFlags.java b/src/main/java/org/libvirt/BitFlags.java index f078c6c..22488a2 100644 --- a/src/main/java/org/libvirt/BitFlags.java +++ b/src/main/java/org/libvirt/BitFlags.java @@ -6,7 +6,7 @@ public interface BitFlags { final class BitFlagsHelper { // bitwise-OR - static int OR(BitFlags[] flags) { + final static int OR(final BitFlags[] flags) { int ret = 0; for (BitFlags f: flags) { ret |= f.getBit(); diff --git a/src/main/java/org/libvirt/CPUCompareResult.java b/src/main/java/org/libvirt/CPUCompareResult.java index 67e35a9..c18d3ba 100644 --- a/src/main/java/org/libvirt/CPUCompareResult.java +++ b/src/main/java/org/libvirt/CPUCompareResult.java @@ -15,13 +15,13 @@ public enum CPUCompareResult { } } - public static CPUCompareResult get(int value) { + public static CPUCompareResult get(final int value) { return lookup.get(value); } private final int returnCode; - CPUCompareResult(int returnCode) { + CPUCompareResult(final int returnCode) { this.returnCode = returnCode; } diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index df99ca5..d0d003e 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -53,26 +53,28 @@ private static final class RegisteredEventListener { @SuppressWarnings("unused") public final Libvirt.VirDomainEventCallback callback; - public RegisteredEventListener(Libvirt.VirDomainEventCallback callback, int callbackId) { + public RegisteredEventListener(final Libvirt.VirDomainEventCallback callback, + final int callbackId) { this.callback = callback; this.callbackId = callbackId; } } @SuppressWarnings("unchecked") - private static HashMap[] makeHashMapArray(int size) { + private static HashMap[] makeHashMapArray(final int size) { return new HashMap[size]; } private class CloseFunc implements Libvirt.VirConnectCloseFunc { final ConnectionCloseListener listener; - CloseFunc(ConnectionCloseListener l) { + CloseFunc(final ConnectionCloseListener l) { this.listener = l; } @Override - public void callback(ConnectionPointer VCP, int reason, Pointer opaque) { + public void callback(final ConnectionPointer VCP, final int reason, + final Pointer opaque) { this.listener.onClose(Connect.this, getConstant(ConnectionCloseReason.class, reason)); } @@ -107,7 +109,7 @@ public enum OpenFlags implements BitFlags { /** Don't try to resolve URI aliases */ NO_ALIASES(2); - OpenFlags(int v) { + OpenFlags(final int v) { this.value = v; } @@ -131,7 +133,7 @@ public int getBit() { * @deprecated Use {@link #getLibVersion} instead. */ @Deprecated - public static long connectionVersion(Connect conn) { + public static long connectionVersion(final Connect conn) { LongByReference libVer = new LongByReference(); int result = Libvirt.INSTANCE.virConnectGetLibVersion(conn.VCP, libVer); return result != -1 ? libVer.getValue() : -1; @@ -140,7 +142,7 @@ public static long connectionVersion(Connect conn) { /** * Helper function to convert bytes into ints for the UUID calls */ - public static int[] convertUUIDBytes(byte bytes[]) { + public static int[] convertUUIDBytes(final byte bytes[]) { int[] returnValue = new int[Libvirt.VIR_UUID_BUFLEN]; for (int x = 0; x < Libvirt.VIR_UUID_BUFLEN; x++) { // For some reason, the higher bytes come back wierd. @@ -153,7 +155,7 @@ public static int[] convertUUIDBytes(byte bytes[]) { /** * Helper function to convert UUIDs into a stirng for the UUID calls */ - public static byte[] createUUIDBytes(int[] UUID) { + public static byte[] createUUIDBytes(final int[] UUID) { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; for (int x = 0; x < Libvirt.VIR_UUID_BUFLEN; x++) { bytes[x] = (byte) UUID[x]; @@ -183,7 +185,8 @@ public long getLibVersion() throws LibvirtException { * @param callback * a Class to perform the callback */ - public static void setErrorCallback(Libvirt.VirErrorCallback callback) throws LibvirtException { + public static void setErrorCallback(final Libvirt.VirErrorCallback callback) + throws LibvirtException { Libvirt.INSTANCE.virSetErrorFunc(null, callback); } @@ -211,7 +214,7 @@ public int hashCode() { * @see java.lang.Object#equals(java.lang.Object) */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) @@ -234,7 +237,7 @@ else if (VCP.equals(other.VCP)) /** * Protected constructor to return a Connection with ConnectionPointer */ - Connect(ConnectionPointer ptr) { + Connect(final ConnectionPointer ptr) { VCP = ptr; } @@ -247,7 +250,7 @@ else if (VCP.equals(other.VCP)) * structure */ @Deprecated - Connect(long VCP) { + Connect(final long VCP) { throw new RuntimeException("No longer supported"); } @@ -259,7 +262,7 @@ else if (VCP.equals(other.VCP)) * @throws LibvirtException * @see The URI documentation */ - public Connect(String uri) throws LibvirtException { + public Connect(final String uri) throws LibvirtException { this(uri, null, 0); } @@ -272,7 +275,7 @@ public Connect(String uri) throws LibvirtException { * @throws LibvirtException * @see The URI documentation */ - public Connect(URI uri, OpenFlags... flags) throws LibvirtException { + public Connect(final URI uri, final OpenFlags... flags) throws LibvirtException { this(uri, null, flags); } @@ -286,7 +289,7 @@ public Connect(URI uri, OpenFlags... flags) throws LibvirtException { * @throws LibvirtException * @see The URI documentation */ - public Connect(String uri, boolean readOnly) throws LibvirtException { + public Connect(final String uri, final boolean readOnly) throws LibvirtException { this(uri, null, readOnly ? OpenFlags.READONLY.getBit() : 0); } @@ -302,7 +305,8 @@ public Connect(String uri, boolean readOnly) throws LibvirtException { * @throws LibvirtException * @see The URI documentation */ - public Connect(String uri, ConnectAuth auth, int flags) throws LibvirtException { + public Connect(final String uri, final ConnectAuth auth, final int flags) + throws LibvirtException { virConnectAuth vAuth = null; if (auth != null) { @@ -338,7 +342,8 @@ public Connect(String uri, ConnectAuth auth, int flags) throws LibvirtException * @throws LibvirtException * @see The URI documentation */ - public Connect(URI uri, ConnectAuth auth, OpenFlags... flags) throws LibvirtException { + public Connect(final URI uri, final ConnectAuth auth, final OpenFlags... flags) + throws LibvirtException { this(uri.toString(), auth, OR(flags)); } @@ -353,7 +358,7 @@ public Connect(URI uri, ConnectAuth auth, OpenFlags... flags) throws LibvirtExce * @throws LibvirtException * @see The URI documentation */ - public Connect(URI uri, ConnectAuth auth) throws LibvirtException { + public Connect(final URI uri, final ConnectAuth auth) throws LibvirtException { this(uri.toString(), auth, 0); } @@ -366,7 +371,7 @@ public Connect(URI uri, ConnectAuth auth) throws LibvirtException { * @return XML description of the computed CPU or NULL on error. * @throws LibvirtException */ - public String baselineCPU(String[] xmlCPUs) throws LibvirtException { + public String baselineCPU(final String[] xmlCPUs) throws LibvirtException { CString result = libvirt.virConnectBaselineCPU(VCP, xmlCPUs, xmlCPUs.length, 0); return processError(result).toString(); } @@ -442,7 +447,7 @@ public void unregisterCloseListener() throws LibvirtException { * @return comparison result according to enum CPUCompareResult * @throws LibvirtException */ - public CPUCompareResult compareCPU(String xmlDesc) throws LibvirtException { + public CPUCompareResult compareCPU(final String xmlDesc) throws LibvirtException { int rawResult = processError(libvirt.virConnectCompareCPU(VCP, xmlDesc, 0)); return CPUCompareResult.get(rawResult); } @@ -456,7 +461,7 @@ public CPUCompareResult compareCPU(String xmlDesc) throws LibvirtException { * @return the Device object * @throws LibvirtException */ - public Device deviceCreateXML(String xmlDesc) throws LibvirtException { + public Device deviceCreateXML(final String xmlDesc) throws LibvirtException { DevicePointer ptr = processError(libvirt.virNodeDeviceCreateXML(VCP, xmlDesc, 0)); return new Device(this, ptr); } @@ -469,7 +474,7 @@ public Device deviceCreateXML(String xmlDesc) throws LibvirtException { * @return Device object * @throws LibvirtException */ - public Device deviceLookupByName(String name) throws LibvirtException { + public Device deviceLookupByName(final String name) throws LibvirtException { DevicePointer ptr = processError(libvirt.virNodeDeviceLookupByName(VCP, name)); return new Device(this, ptr); } @@ -488,7 +493,8 @@ public Device deviceLookupByName(String name) throws LibvirtException { * @see The XML format * description */ - public Domain domainCreateLinux(String xmlDesc, int flags) throws LibvirtException { + public Domain domainCreateLinux(final String xmlDesc, final int flags) + throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainCreateLinux(VCP, xmlDesc, flags)); return new Domain(this, ptr); @@ -503,7 +509,8 @@ public Domain domainCreateLinux(String xmlDesc, int flags) throws LibvirtExcepti * @see The XML format * description */ - public Domain domainCreateXML(String xmlDesc, int flags) throws LibvirtException { + public Domain domainCreateXML(final String xmlDesc, final int flags) + throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainCreateXML(VCP, xmlDesc, flags)); return new Domain(this, ptr); } @@ -517,7 +524,7 @@ public Domain domainCreateXML(String xmlDesc, int flags) throws LibvirtException * @see The XML format * description */ - public Domain domainDefineXML(String xmlDesc) throws LibvirtException { + public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainDefineXML(VCP, xmlDesc)); return new Domain(this, ptr); } @@ -534,7 +541,8 @@ public Domain domainDefineXML(String xmlDesc) throws LibvirtException { * href="http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny" * >virConnectDomainEventDeregisterAny */ - private void domainEventDeregister(int eventID, EventListener l) throws LibvirtException { + private void domainEventDeregister(final int eventID, final EventListener l) + throws LibvirtException { if (l == null) return; @@ -548,9 +556,10 @@ private void domainEventDeregister(int eventID, EventListener l) throws LibvirtE processError(libvirt.virConnectDomainEventDeregisterAny(VCP, listener.callbackId)); } - private void domainEventRegister(Domain domain, int eventID, Libvirt.VirDomainEventCallback cb, EventListener l) - throws LibvirtException - { + private void domainEventRegister(final Domain domain, final int eventID, + final Libvirt.VirDomainEventCallback cb, + final EventListener l) + throws LibvirtException { Map handlers = eventListeners[eventID]; if (handlers == null) { @@ -568,17 +577,19 @@ private void domainEventRegister(Domain domain, int eventID, Libvirt.VirDomainEv handlers.put(l, new RegisteredEventListener(cb, ret)); } - void domainEventRegister(Domain domain, final IOErrorListener cb) throws LibvirtException { + void domainEventRegister(final Domain domain, final IOErrorListener cb) + throws LibvirtException { if (cb == null) throw new IllegalArgumentException("IOError callback cannot be null"); Libvirt.VirConnectDomainEventIOErrorCallback virCB = new Libvirt.VirConnectDomainEventIOErrorCallback() { @Override - public void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, - String srcPath, - String devAlias, - int action, - Pointer opaque) { + public void eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, + final String srcPath, + final String devAlias, + final int action, + final Pointer opaque) { assert VCP.equals(virConnectPtr); try { @@ -611,15 +622,16 @@ public void addIOErrorListener(final IOErrorListener l) throws LibvirtException domainEventRegister(null, l); } - void domainEventRegister(Domain domain, final RebootListener cb) throws LibvirtException { + void domainEventRegister(final Domain domain, final RebootListener cb) + throws LibvirtException { if (cb == null) throw new IllegalArgumentException("RebootCallback cannot be null"); Libvirt.VirConnectDomainEventGenericCallback virCB = new Libvirt.VirConnectDomainEventGenericCallback() { @Override - public void eventCallback(ConnectionPointer virConnectPtr, - DomainPointer virDomainPointer, - Pointer opaque) { + public void eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, + final Pointer opaque) { assert VCP.equals(virConnectPtr); try { @@ -634,16 +646,18 @@ public void eventCallback(ConnectionPointer virConnectPtr, domainEventRegister(domain, DomainEventID.REBOOT, virCB, cb); } - void domainEventRegister(Domain domain, final LifecycleListener cb) throws LibvirtException { + void domainEventRegister(final Domain domain, final LifecycleListener cb) + throws LibvirtException { if (cb == null) throw new IllegalArgumentException("LifecycleCallback cannot be null"); Libvirt.VirConnectDomainEventCallback virCB = new Libvirt.VirConnectDomainEventCallback() { @Override - public int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + public int eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, final int eventCode, final int detailCode, - Pointer opaque) { + final Pointer opaque) { assert VCP.equals(virConnectPtr); try { @@ -685,15 +699,18 @@ public void addLifecycleListener(final LifecycleListener l) throws LibvirtExcept domainEventRegister(null, l); } - void domainEventRegister(Domain domain, final PMWakeupListener cb) throws LibvirtException { + void domainEventRegister(final Domain domain, final PMWakeupListener cb) + throws LibvirtException { if (cb == null) throw new IllegalArgumentException("PMWakeupCallback cannot be null"); Libvirt.VirDomainEventCallback virCB = new Libvirt.VirConnectDomainEventPMChangeCallback() { @Override - public void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, - int reason, Pointer opaque) { + public void eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, + final int reason, + final Pointer opaque) { assert VCP.equals(virConnectPtr); try { @@ -708,15 +725,18 @@ public void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDoma domainEventRegister(domain, DomainEventID.PMWAKEUP, virCB, cb); } - void domainEventRegister(Domain domain, final PMSuspendListener cb) throws LibvirtException { + void domainEventRegister(final Domain domain, final PMSuspendListener cb) + throws LibvirtException { if (cb == null) throw new IllegalArgumentException("PMSuspendCallback cannot be null"); Libvirt.VirDomainEventCallback virCB = new Libvirt.VirConnectDomainEventPMChangeCallback() { @Override - public void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, - int reason, Pointer opaque) { + public void eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, + final int reason, + final Pointer opaque) { assert VCP.equals(virConnectPtr); try { @@ -812,7 +832,7 @@ public void removePMWakeupListener(final PMWakeupListener l) throws LibvirtExcep * href="http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny" * >virConnectDomainEventDeregisterAny */ - public void removeLifecycleListener(LifecycleListener l) throws LibvirtException { + public void removeLifecycleListener(final LifecycleListener l) throws LibvirtException { domainEventDeregister(DomainEventID.LIFECYCLE, l); } @@ -844,7 +864,7 @@ public void addRebootListener(final RebootListener l) throws LibvirtException { * href="http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventDeregisterAny" * >virConnectDomainEventDeregisterAny */ - public void removeIOErrorListener(IOErrorListener l) throws LibvirtException { + public void removeIOErrorListener(final IOErrorListener l) throws LibvirtException { domainEventDeregister(DomainEventID.IO_ERROR, l); } @@ -856,7 +876,7 @@ public void removeIOErrorListener(IOErrorListener l) throws LibvirtException { * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByID(int id) throws LibvirtException { + public Domain domainLookupByID(final int id) throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainLookupByID(VCP, id)); return new Domain(this, ptr); } @@ -869,7 +889,7 @@ public Domain domainLookupByID(int id) throws LibvirtException { * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByName(String name) throws LibvirtException { + public Domain domainLookupByName(final String name) throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainLookupByName(VCP, name)); return new Domain(this, ptr); } @@ -884,7 +904,7 @@ public Domain domainLookupByName(String name) throws LibvirtException { * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByUUID(int[] UUID) throws LibvirtException { + public Domain domainLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); DomainPointer ptr = processError(libvirt.virDomainLookupByUUID(VCP, uuidBytes)); return new Domain(this, ptr); @@ -898,7 +918,7 @@ public Domain domainLookupByUUID(int[] UUID) throws LibvirtException { * @return a new domain object * @throws LibvirtException */ - public Domain domainLookupByUUID(UUID uuid) throws LibvirtException { + public Domain domainLookupByUUID(final UUID uuid) throws LibvirtException { return domainLookupByUUIDString(uuid.toString()); } @@ -910,7 +930,7 @@ public Domain domainLookupByUUID(UUID uuid) throws LibvirtException { * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByUUIDString(String UUID) throws LibvirtException { + public Domain domainLookupByUUIDString(final String UUID) throws LibvirtException { DomainPointer ptr = processError(libvirt.virDomainLookupByUUIDString(VCP, UUID)); return new Domain(this, ptr); } @@ -923,7 +943,9 @@ public Domain domainLookupByUUIDString(String UUID) throws LibvirtException { * @return domain XML as String, or {@code null} on error * @throws LibvirtException */ - public String domainXMLFromNative(String nativeFormat, String nativeConfig, int flags) throws LibvirtException { + public String domainXMLFromNative(final String nativeFormat, + final String nativeConfig, final int flags) + throws LibvirtException { CString result = libvirt.virConnectDomainXMLFromNative(VCP, nativeFormat, nativeConfig, 0); return processError(result).toString(); } @@ -936,7 +958,9 @@ public String domainXMLFromNative(String nativeFormat, String nativeConfig, int * @return domain XML as String, or {@code null} on error * @throws LibvirtException */ - public String domainXMLToNative(String nativeFormat, String domainXML, int flags) throws LibvirtException { + public String domainXMLToNative(final String nativeFormat, + final String domainXML, final int flags) + throws LibvirtException { CString returnValue = libvirt.virConnectDomainXMLToNative(VCP, nativeFormat, domainXML, 0); return processError(returnValue).toString(); } @@ -966,7 +990,9 @@ protected void finalize() throws LibvirtException { * discovered source. * @throws LibvirtException */ - public String findStoragePoolSources(String type, String srcSpecs, int flags) throws LibvirtException { + public String findStoragePoolSources(final String type, final String srcSpecs, + final int flags) + throws LibvirtException { CString returnValue = libvirt.virConnectFindStoragePoolSources(VCP, type, srcSpecs, flags); return processError(returnValue).toString(); } @@ -986,7 +1012,8 @@ public String getCapabilities() throws LibvirtException { /** * NUMA Support */ - public long getCellsFreeMemory(int startCells, int maxCells) throws LibvirtException { + public long getCellsFreeMemory(final int startCells, final int maxCells) + throws LibvirtException { LongByReference returnValue = new LongByReference(); processError(libvirt.virNodeGetCellsFreeMemory(VCP, returnValue, @@ -1028,7 +1055,7 @@ public String getHostName() throws LibvirtException { * {@link #getVersion()} instead. */ @Deprecated - public long getHypervisorVersion(String type) throws LibvirtException { + public long getHypervisorVersion(final String type) throws LibvirtException { LongByReference libVer = new LongByReference(); LongByReference typeVer = new LongByReference(); processError(libvirt.virGetVersion(libVer, type, typeVer)); @@ -1059,7 +1086,7 @@ public long getLibVirVersion() throws LibvirtException { * @return the number of CPUs * @throws LibvirtException */ - public int getMaxVcpus(String type) throws LibvirtException { + public int getMaxVcpus(final String type) throws LibvirtException { return processError(libvirt.virConnectGetMaxVcpus(VCP, type)); } @@ -1139,7 +1166,8 @@ public long getVersion() throws LibvirtException { * @return the Interface object * @throws LibvirtException */ - public Interface interfaceDefineXML(String xmlDesc) throws LibvirtException { + public Interface interfaceDefineXML(final String xmlDesc) + throws LibvirtException { InterfacePointer ptr = processError(libvirt.virInterfaceDefineXML(VCP, xmlDesc, 0)); return new Interface(this, ptr); } @@ -1149,7 +1177,8 @@ public Interface interfaceDefineXML(String xmlDesc) throws LibvirtException { * * @throws LibvirtException */ - public Interface interfaceLookupByMACString(String mac) throws LibvirtException { + public Interface interfaceLookupByMACString(final String mac) + throws LibvirtException { InterfacePointer ptr = processError(libvirt.virInterfaceLookupByMACString(VCP, mac)); return new Interface(this, ptr); } @@ -1159,7 +1188,8 @@ public Interface interfaceLookupByMACString(String mac) throws LibvirtException * * @throws LibvirtException */ - public Interface interfaceLookupByName(String name) throws LibvirtException { + public Interface interfaceLookupByName(final String name) + throws LibvirtException { InterfacePointer ptr = processError(libvirt.virInterfaceLookupByName(VCP, name)); return new Interface(this, ptr); } @@ -1268,7 +1298,8 @@ public String[] listDefinedStoragePools() throws LibvirtException { * @param capabilityName * optional capability name */ - public String[] listDevices(String capabilityName) throws LibvirtException { + public String[] listDevices(final String capabilityName) + throws LibvirtException { int maxDevices = numOfDevices(capabilityName); if (maxDevices > 0) { CString[] names = new CString[maxDevices]; @@ -1395,7 +1426,7 @@ public String[] listStoragePools() throws LibvirtException { * @see The XML format * description */ - public Network networkCreateXML(String xmlDesc) throws LibvirtException { + public Network networkCreateXML(final String xmlDesc) throws LibvirtException { NetworkPointer ptr = processError(libvirt.virNetworkCreateXML(VCP, xmlDesc)); return new Network(this, ptr); } @@ -1411,7 +1442,7 @@ public Network networkCreateXML(String xmlDesc) throws LibvirtException { * @see The XML format * description */ - public Network networkDefineXML(String xmlDesc) throws LibvirtException { + public Network networkDefineXML(final String xmlDesc) throws LibvirtException { NetworkPointer ptr = processError(libvirt.virNetworkDefineXML(VCP, xmlDesc)); return new Network(this, ptr); } @@ -1427,7 +1458,8 @@ public Network networkDefineXML(String xmlDesc) throws LibvirtException { * href="http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterDefineXML" * > Libvirt Documentation */ - public NetworkFilter networkFilterDefineXML(String xmlDesc) throws LibvirtException { + public NetworkFilter networkFilterDefineXML(final String xmlDesc) + throws LibvirtException { NetworkFilterPointer ptr = processError(libvirt.virNWFilterDefineXML(VCP, xmlDesc)); return new NetworkFilter(this, ptr); } @@ -1443,7 +1475,8 @@ public NetworkFilter networkFilterDefineXML(String xmlDesc) throws LibvirtExcept * href="http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByName" * > Libvirt Documentation */ - public NetworkFilter networkFilterLookupByName(String name) throws LibvirtException { + public NetworkFilter networkFilterLookupByName(final String name) + throws LibvirtException { NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByName(VCP, name)); return new NetworkFilter(this, ptr); } @@ -1458,7 +1491,8 @@ public NetworkFilter networkFilterLookupByName(String name) throws LibvirtExcept * @return the network filter object * @throws LibvirtException */ - public NetworkFilter networkFilterLookupByUUID(int[] UUID) throws LibvirtException { + public NetworkFilter networkFilterLookupByUUID(final int[] UUID) + throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByUUID(VCP, uuidBytes)); return new NetworkFilter(this, ptr); @@ -1472,7 +1506,8 @@ public NetworkFilter networkFilterLookupByUUID(int[] UUID) throws LibvirtExcepti * @return a new network filter object * @throws LibvirtException */ - public NetworkFilter networkFilterLookupByUUID(UUID uuid) throws LibvirtException { + public NetworkFilter networkFilterLookupByUUID(final UUID uuid) + throws LibvirtException { return networkFilterLookupByUUIDString(uuid.toString()); } @@ -1484,7 +1519,8 @@ public NetworkFilter networkFilterLookupByUUID(UUID uuid) throws LibvirtExceptio * @return the Network Filter object * @throws LibvirtException */ - public NetworkFilter networkFilterLookupByUUIDString(String UUID) throws LibvirtException { + public NetworkFilter networkFilterLookupByUUIDString(final String UUID) + throws LibvirtException { NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByUUIDString(VCP, UUID)); return new NetworkFilter(this, ptr); } @@ -1497,7 +1533,8 @@ public NetworkFilter networkFilterLookupByUUIDString(String UUID) throws Libvirt * @return The Network object found * @throws LibvirtException */ - public Network networkLookupByName(String name) throws LibvirtException { + public Network networkLookupByName(final String name) + throws LibvirtException { NetworkPointer ptr = processError(libvirt.virNetworkLookupByName(VCP, name)); return new Network(this, ptr); } @@ -1514,7 +1551,8 @@ public Network networkLookupByName(String name) throws LibvirtException { * @deprecated use the UUIDString or UUID API. */ @Deprecated - public Network networkLookupByUUID(int[] UUID) throws LibvirtException { + public Network networkLookupByUUID(final int[] UUID) + throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); NetworkPointer ptr = processError(libvirt.virNetworkLookupByUUID(VCP, uuidBytes)); return new Network(this, ptr); @@ -1528,7 +1566,7 @@ public Network networkLookupByUUID(int[] UUID) throws LibvirtException { * @return a new network object * @throws LibvirtException */ - public Network networkLookupByUUID(UUID uuid) throws LibvirtException { + public Network networkLookupByUUID(final UUID uuid) throws LibvirtException { return networkLookupByUUIDString(uuid.toString()); } @@ -1540,7 +1578,7 @@ public Network networkLookupByUUID(UUID uuid) throws LibvirtException { * @return The Network object found * @throws LibvirtException */ - public Network networkLookupByUUIDString(String UUID) throws LibvirtException { + public Network networkLookupByUUIDString(final String UUID) throws LibvirtException { NetworkPointer ptr = processError(libvirt.virNetworkLookupByUUIDString(VCP, UUID)); return new Network(this, ptr); } @@ -1604,7 +1642,8 @@ public int numOfDefinedStoragePools() throws LibvirtException { * @return the number of inactive domains * @throws LibvirtException */ - public int numOfDevices(String capabilityName) throws LibvirtException { + public int numOfDevices(final String capabilityName) + throws LibvirtException { return processError(libvirt.virNodeNumOfDevices(VCP, capabilityName, 0)); } @@ -1674,7 +1713,7 @@ public int numOfStoragePools() throws LibvirtException { * the path of the saved file on the remote host * @throws LibvirtException */ - public void restore(String from) throws LibvirtException { + public void restore(final String from) throws LibvirtException { processError(libvirt.virDomainRestore(VCP, from)); } @@ -1690,7 +1729,7 @@ public void restore(String from) throws LibvirtException { * @return the Secret object * @throws LibvirtException */ - public Secret secretDefineXML(String xmlDesc) throws LibvirtException { + public Secret secretDefineXML(final String xmlDesc) throws LibvirtException { SecretPointer ptr = processError(libvirt.virSecretDefineXML(VCP, xmlDesc, 0)); return new Secret(this, ptr); } @@ -1705,7 +1744,7 @@ public Secret secretDefineXML(String xmlDesc) throws LibvirtException { * @return the Secret object * @throws LibvirtException */ - public Secret secretLookupByUUID(int[] UUID) throws LibvirtException { + public Secret secretLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); SecretPointer ptr = processError(libvirt.virSecretLookupByUUID(VCP, uuidBytes)); return new Secret(this, ptr); @@ -1719,7 +1758,7 @@ public Secret secretLookupByUUID(int[] UUID) throws LibvirtException { * @return a new domain object * @throws LibvirtException */ - public Secret secretLookupByUUID(UUID uuid) throws LibvirtException { + public Secret secretLookupByUUID(final UUID uuid) throws LibvirtException { return secretLookupByUUIDString(uuid.toString()); } @@ -1731,12 +1770,14 @@ public Secret secretLookupByUUID(UUID uuid) throws LibvirtException { * @return the Domain object * @throws LibvirtException */ - public Secret secretLookupByUUIDString(String UUID) throws LibvirtException { + public Secret secretLookupByUUIDString(final String UUID) + throws LibvirtException { SecretPointer ptr = processError(libvirt.virSecretLookupByUUIDString(VCP, UUID)); return new Secret(this, ptr); } - public void setConnectionErrorCallback(Libvirt.VirErrorCallback callback) throws LibvirtException { + public void setConnectionErrorCallback(final Libvirt.VirErrorCallback callback) + throws LibvirtException { libvirt.virConnSetErrorFunc(VCP, null, callback); } @@ -1749,7 +1790,7 @@ public void setConnectionErrorCallback(Libvirt.VirErrorCallback callback) throws * in kilobytes * @throws LibvirtException */ - public void setDom0Memory(long memory) throws LibvirtException { + public void setDom0Memory(final long memory) throws LibvirtException { processError(libvirt.virDomainSetMemory(null, new NativeLong(memory))); } @@ -1765,7 +1806,8 @@ public void setDom0Memory(long memory) throws LibvirtException { * @return StoragePool object * @throws LibvirtException */ - public StoragePool storagePoolCreateXML(String xmlDesc, int flags) throws LibvirtException { + public StoragePool storagePoolCreateXML(final String xmlDesc, final int flags) + throws LibvirtException { StoragePoolPointer ptr = processError(libvirt.virStoragePoolCreateXML(VCP, xmlDesc, flags)); return new StoragePool(this, ptr); } @@ -1781,7 +1823,8 @@ public StoragePool storagePoolCreateXML(String xmlDesc, int flags) throws Libvir * @return StoragePool object * @throws LibvirtException */ - public StoragePool storagePoolDefineXML(String xml, int flags) throws LibvirtException { + public StoragePool storagePoolDefineXML(final String xml, final int flags) + throws LibvirtException { StoragePoolPointer ptr = processError(libvirt.virStoragePoolDefineXML(VCP, xml, flags)); return new StoragePool(this, ptr); } @@ -1794,7 +1837,8 @@ public StoragePool storagePoolDefineXML(String xml, int flags) throws LibvirtExc * @return StoragePool object * @throws LibvirtException */ - public StoragePool storagePoolLookupByName(String name) throws LibvirtException { + public StoragePool storagePoolLookupByName(final String name) + throws LibvirtException { StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByName(VCP, name)); return new StoragePool(this, ptr); } @@ -1809,7 +1853,8 @@ public StoragePool storagePoolLookupByName(String name) throws LibvirtException * @deprecated Use the UUIDString or UUID APIs. */ @Deprecated - public StoragePool storagePoolLookupByUUID(int[] UUID) throws LibvirtException { + public StoragePool storagePoolLookupByUUID(final int[] UUID) + throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByUUID(VCP, uuidBytes)); return new StoragePool(this, ptr); @@ -1823,7 +1868,8 @@ public StoragePool storagePoolLookupByUUID(int[] UUID) throws LibvirtException { * @return a new network object * @throws LibvirtException */ - public StoragePool storagePoolLookupByUUID(UUID uuid) throws LibvirtException { + public StoragePool storagePoolLookupByUUID(final UUID uuid) + throws LibvirtException { return storagePoolLookupByUUIDString(uuid.toString()); } @@ -1835,7 +1881,8 @@ public StoragePool storagePoolLookupByUUID(UUID uuid) throws LibvirtException { * @return VirStoragePool object * @throws LibvirtException */ - public StoragePool storagePoolLookupByUUIDString(String UUID) throws LibvirtException { + public StoragePool storagePoolLookupByUUIDString(final String UUID) + throws LibvirtException { StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByUUIDString(VCP, UUID)); return new StoragePool(this, ptr); } @@ -1847,7 +1894,8 @@ public StoragePool storagePoolLookupByUUIDString(String UUID) throws LibvirtExce * globally unique key * @return a storage volume */ - public StorageVol storageVolLookupByKey(String key) throws LibvirtException { + public StorageVol storageVolLookupByKey(final String key) + throws LibvirtException { StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByKey(VCP, key)); return new StorageVol(this, sPtr); } @@ -1859,7 +1907,8 @@ public StorageVol storageVolLookupByKey(String key) throws LibvirtException { * locally unique path * @return a storage volume */ - public StorageVol storageVolLookupByPath(String path) throws LibvirtException { + public StorageVol storageVolLookupByPath(final String path) + throws LibvirtException { StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByPath(VCP, path)); return new StorageVol(this, sPtr); } @@ -1872,7 +1921,7 @@ public StorageVol storageVolLookupByPath(String path) throws LibvirtException { * use Stream.VIR_STREAM_NONBLOCK if non-blocking is required * @return the new object */ - public Stream streamNew(int flags) throws LibvirtException { + public Stream streamNew(final int flags) throws LibvirtException { StreamPointer sPtr = processError(libvirt.virStreamNew(VCP, flags)); return new Stream(this, sPtr); } @@ -1929,7 +1978,8 @@ public boolean isAlive() throws LibvirtException { * @param count number of messages that can be sent in a row * @return {@code true} when successful, {@code false} otherwise. */ - public boolean setKeepAlive(int interval, int count) throws LibvirtException { + public boolean setKeepAlive(final int interval, final int count) + throws LibvirtException { return (0 == processError(libvirt.virConnectSetKeepAlive(VCP, interval, count))); } } diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index 5db6afb..c2a349b 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -44,7 +44,8 @@ public static class Credential { * @param challenge * @param defresult */ - Credential(int type, String prompt, String challenge, String defresult) { + Credential(final int type, final String prompt, final String challenge, + final String defresult) { switch (type) { case 1: this.type = CredentialType.VIR_CRED_USERNAME; @@ -169,7 +170,8 @@ public int mapToInt() { */ public CredentialType credType[]; - public int authCallback(virConnectCredential cred, int ncred, Pointer cbdata) { + public int authCallback(final virConnectCredential cred, final int ncred, + final Pointer cbdata) { virConnectCredential[] nativeCreds = (virConnectCredential[]) cred.toArray(ncred); Credential[] creds = new Credential[ncred]; for (int x = 0; x < ncred; x++) { diff --git a/src/main/java/org/libvirt/ConnectAuthDefault.java b/src/main/java/org/libvirt/ConnectAuthDefault.java index 29bb351..f4dfaa5 100644 --- a/src/main/java/org/libvirt/ConnectAuthDefault.java +++ b/src/main/java/org/libvirt/ConnectAuthDefault.java @@ -23,7 +23,7 @@ public ConnectAuthDefault() { } @Override - public int callback(Credential[] cred) { + public int callback(final Credential[] cred) { try (BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "UTF-8"))) { for (Credential c : cred) { diff --git a/src/main/java/org/libvirt/Device.java b/src/main/java/org/libvirt/Device.java index f754082..9ade86b 100644 --- a/src/main/java/org/libvirt/Device.java +++ b/src/main/java/org/libvirt/Device.java @@ -28,7 +28,7 @@ public class Device { * @param VDP * the native virDomainPtr */ - Device(Connect virConnect, DevicePointer VDP) { + Device(final Connect virConnect, final DevicePointer VDP) { this.virConnect = virConnect; this.VDP = VDP; } diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 1a2b23b..7911291 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -168,7 +168,7 @@ public int hashCode() { * @see java.lang.Object#equals(java.lang.Object) */ @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) @@ -207,7 +207,7 @@ public boolean equals(Object obj) { * @param VDP * the native virDomainPtr */ - Domain(Connect virConnect, DomainPointer VDP) { + Domain(final Connect virConnect, final DomainPointer VDP) { assert virConnect != null; this.virConnect = virConnect; @@ -222,7 +222,8 @@ public boolean equals(Object obj) { * since the virDomainPtr passed is only valid for the duration of * execution of the callback. */ - static Domain constructIncRef(Connect virConnect, DomainPointer VDP) throws LibvirtException { + static Domain constructIncRef(final Connect virConnect, final DomainPointer VDP) + throws LibvirtException { processError(libvirt.virDomainRef(VDP)); return new Domain(virConnect, VDP); @@ -253,7 +254,7 @@ public int abortJob() throws LibvirtException { * XML description of one device * @throws LibvirtException */ - public void attachDevice(String xmlDesc) throws LibvirtException { + public void attachDevice(final String xmlDesc) throws LibvirtException { processError(libvirt.virDomainAttachDevice(VDP, xmlDesc)); } @@ -269,7 +270,8 @@ public void attachDevice(String xmlDesc) throws LibvirtException { * the an OR'ed set of virDomainDeviceModifyFlags * @throws LibvirtException */ - public void attachDeviceFlags(String xmlDesc, int flags) throws LibvirtException { + public void attachDeviceFlags(final String xmlDesc, final int flags) + throws LibvirtException { processError(libvirt.virDomainAttachDeviceFlags(VDP, xmlDesc, flags)); } @@ -282,7 +284,7 @@ public void attachDeviceFlags(String xmlDesc, int flags) throws LibvirtException * @return the info * @throws LibvirtException */ - public DomainBlockInfo blockInfo(String path) throws LibvirtException { + public DomainBlockInfo blockInfo(final String path) throws LibvirtException { virDomainBlockInfo info = new virDomainBlockInfo(); processError(libvirt.virDomainGetBlockInfo(VDP, path, info, 0)); return new DomainBlockInfo(info); @@ -319,7 +321,8 @@ public DomainBlockInfo blockInfo(String path) throws LibvirtException { * @param offset the offset within block device * @param buffer the buffer receiving the data */ - public void blockPeek(String disk, long offset, ByteBuffer buffer) throws LibvirtException { + public void blockPeek(final String disk, final long offset, + final ByteBuffer buffer) throws LibvirtException { SizeT size = new SizeT(); // older libvirt has a limitation on the size of data @@ -354,7 +357,7 @@ public void blockPeek(String disk, long offset, ByteBuffer buffer) throws Libvir * @return the statistics in a DomainBlockStats object * @throws LibvirtException */ - public DomainBlockStats blockStats(String path) throws LibvirtException { + public DomainBlockStats blockStats(final String path) throws LibvirtException { virDomainBlockStats stats = new virDomainBlockStats(); processError(libvirt.virDomainBlockStats(VDP, path, stats, new SizeT(stats.size()))); return new DomainBlockStats(stats); @@ -371,7 +374,8 @@ public DomainBlockStats blockStats(String path) throws LibvirtException { * bitwise OR'ed values of {@link BlockResizeFlags} * @throws LibvirtException */ - public void blockResize(String disk, long size, int flags) throws LibvirtException { + public void blockResize(final String disk, final long size, final int flags) + throws LibvirtException { processError(libvirt.virDomainBlockResize(VDP, disk, size, flags)); } @@ -386,7 +390,7 @@ public void blockResize(String disk, long size, int flags) throws LibvirtExcepti * extra flags, currently unused * @throws LibvirtException */ - public void coreDump(String to, int flags) throws LibvirtException { + public void coreDump(final String to, final int flags) throws LibvirtException { processError(libvirt.virDomainCoreDump(VDP, to, flags)); } @@ -394,7 +398,7 @@ public void coreDump(String to, int flags) throws LibvirtException { * It returns the length (in bytes) required to store the complete CPU map * between a single virtual & all physical CPUs of a domain. */ - public int cpuMapLength(int maxCpus) { + public int cpuMapLength(final int maxCpus) { return (((maxCpus) + 7) / 8); } @@ -417,7 +421,7 @@ public int create() throws LibvirtException { * @return ignore (always 0) * @throws LibvirtException */ - public int create(int flags) throws LibvirtException { + public int create(final int flags) throws LibvirtException { return processError(libvirt.virDomainCreateWithFlags(VDP, flags)); } @@ -443,7 +447,7 @@ public void destroy() throws LibvirtException { * XML description of one device * @throws LibvirtException */ - public void detachDevice(String xmlDesc) throws LibvirtException { + public void detachDevice(final String xmlDesc) throws LibvirtException { processError(libvirt.virDomainDetachDevice(VDP, xmlDesc)); } @@ -457,7 +461,8 @@ public void detachDevice(String xmlDesc) throws LibvirtException { * XML description of one device * @throws LibvirtException */ - public void detachDeviceFlags(String xmlDesc, int flags) throws LibvirtException { + public void detachDeviceFlags(final String xmlDesc, final int flags) + throws LibvirtException { processError(libvirt.virDomainDetachDeviceFlags(VDP, xmlDesc, flags)); } @@ -734,7 +739,7 @@ public VcpuInfo[] getVcpusInfo() throws LibvirtException { * @see The XML * Description format */ - public String getXMLDesc(int flags) throws LibvirtException { + public String getXMLDesc(final int flags) throws LibvirtException { return processError(libvirt.virDomainGetXMLDesc(VDP, flags)).toString(); } @@ -776,7 +781,8 @@ public int hasManagedSaveImage() throws LibvirtException { * @return the statistics in a DomainInterfaceStats object * @throws LibvirtException */ - public DomainInterfaceStats interfaceStats(String path) throws LibvirtException { + public DomainInterfaceStats interfaceStats(final String path) + throws LibvirtException { virDomainInterfaceStats stats = new virDomainInterfaceStats(); processError(libvirt.virDomainInterfaceStats(VDP, path, stats, new SizeT(stats.size()))); return new DomainInterfaceStats(stats); @@ -862,8 +868,9 @@ public int managedSaveRemove() throws LibvirtException { * @param mode the mode which determines whether the given addresses * are interpreted as virtual or physical addresses */ - public void memoryPeek(long start, ByteBuffer buffer, MemoryAddressMode mode) throws LibvirtException - { + public void memoryPeek(final long start, final ByteBuffer buffer, + final MemoryAddressMode mode) + throws LibvirtException { SizeT size = new SizeT(); // older libvirt has a limitation on the size of data @@ -891,7 +898,8 @@ public void memoryPeek(long start, ByteBuffer buffer, MemoryAddressMode mode) th * @return the collection of stats * @throws LibvirtException */ - public MemoryStatistic[] memoryStats(int number) throws LibvirtException { + public MemoryStatistic[] memoryStats(final int number) + throws LibvirtException { virDomainMemoryStats[] stats = new virDomainMemoryStats[number]; MemoryStatistic[] returnStats = null; int result = processError(libvirt.virDomainMemoryStats(VDP, stats, number, 0)); @@ -970,7 +978,10 @@ public MemoryStatistic[] memoryStats(int number) throws LibvirtException { * the scope of the destination connection (dconn). * @throws LibvirtException if the migration fails */ - public Domain migrate(Connect dconn, long flags, String dxml, String dname, String uri, long bandwidth) throws LibvirtException { + public Domain migrate(final Connect dconn, final long flags, + final String dxml, final String dname, + final String uri, final long bandwidth) + throws LibvirtException { DomainPointer newPtr = processError(libvirt.virDomainMigrate2(VDP, dconn.VCP, dxml, new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); return new Domain(dconn, newPtr); @@ -1020,8 +1031,12 @@ public Domain migrate(Connect dconn, long flags, String dxml, String dname, Stri * connection (dconn). * @throws LibvirtException */ - public Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth) throws LibvirtException { - DomainPointer newPtr = processError(libvirt.virDomainMigrate(VDP, dconn.VCP, new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); + public Domain migrate(final Connect dconn, final long flags, + final String dname, final String uri, + final long bandwidth) + throws LibvirtException { + DomainPointer newPtr = processError(libvirt.virDomainMigrate(VDP, dconn.VCP, + new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); return new Domain(dconn, newPtr); } @@ -1037,7 +1052,8 @@ public Domain migrate(Connect dconn, long flags, String dname, String uri, long * @return always 0 * @throws LibvirtException */ - public int migrateSetMaxDowntime(long downtime) throws LibvirtException { + public int migrateSetMaxDowntime(final long downtime) + throws LibvirtException { return processError(libvirt.virDomainMigrateSetMaxDowntime(VDP, downtime, 0)); } @@ -1071,7 +1087,10 @@ public int migrateSetMaxDowntime(long downtime) throws LibvirtException { * @return 0 if successful * @throws LibvirtException */ - public int migrateToURI(String dconnuri, String miguri, String dxml, long flags, String dname, long bandwidth) throws LibvirtException { + public int migrateToURI(final String dconnuri, final String miguri, + final String dxml, final long flags, + final String dname, final long bandwidth) + throws LibvirtException { return processError(libvirt.virDomainMigrateToURI2(VDP, dconnuri, miguri, dxml, new NativeLong(flags), dname, new NativeLong(bandwidth))); @@ -1096,22 +1115,28 @@ dxml, new NativeLong(flags), * @return 0 if successful, -1 if not * @throws LibvirtException */ - public int migrateToURI(String uri, long flags, String dname, long bandwidth) throws LibvirtException { - return processError(libvirt.virDomainMigrateToURI(VDP, uri, new NativeLong(flags), dname, new NativeLong(bandwidth))); + public int migrateToURI(final String uri, final long flags, + final String dname, final long bandwidth) + throws LibvirtException { + return processError(libvirt.virDomainMigrateToURI(VDP, uri, + new NativeLong(flags), dname, new NativeLong(bandwidth))); } /** * Enter the given power management suspension target level. */ - public void PMsuspend(SuspendTarget target) throws LibvirtException { + public void PMsuspend(final SuspendTarget target) throws LibvirtException { PMsuspendFor(target, 0, TimeUnit.SECONDS); } /** * Enter the given power management suspension target level for the given duration. */ - public void PMsuspendFor(SuspendTarget target, long duration, TimeUnit unit) throws LibvirtException { - processError(libvirt.virDomainPMSuspendForDuration(this.VDP, target.ordinal(), unit.toSeconds(duration), 0)); + public void PMsuspendFor(final SuspendTarget target, final long duration, + final TimeUnit unit) + throws LibvirtException { + processError(libvirt.virDomainPMSuspendForDuration(this.VDP, + target.ordinal(), unit.toSeconds(duration), 0)); } /** @@ -1140,7 +1165,8 @@ public void PMwakeup() throws LibvirtException { * least significant bit. * @throws LibvirtException */ - public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException { + public void pinVcpu(final int vcpu, final int[] cpumap) + throws LibvirtException { byte[] packedMap = new byte[cpumap.length]; for (int x = 0; x < cpumap.length; x++) { packedMap[x] = (byte) cpumap[x]; @@ -1157,7 +1183,7 @@ public void pinVcpu(int vcpu, int[] cpumap) throws LibvirtException { * extra flags for the reboot operation, not used yet * @throws LibvirtException */ - public void reboot(int flags) throws LibvirtException { + public void reboot(final int flags) throws LibvirtException { processError(libvirt.virDomainReboot(VDP, flags)); } @@ -1276,7 +1302,8 @@ public void reset() throws LibvirtException { * @return 0 if the creation is successful * @throws LibvirtException */ - public int revertToSnapshot(DomainSnapshot snapshot) throws LibvirtException { + public int revertToSnapshot(final DomainSnapshot snapshot) + throws LibvirtException { return processError(libvirt.virDomainRevertToSnapshot(snapshot.VDSP, 0)); } @@ -1290,11 +1317,12 @@ public int revertToSnapshot(DomainSnapshot snapshot) throws LibvirtException { * path for the output file * @throws LibvirtException */ - public void save(String to) throws LibvirtException { + public void save(final String to) throws LibvirtException { processError(libvirt.virDomainSave(VDP, to)); } - public String screenshot(Stream stream, int screen) throws LibvirtException { + public String screenshot(final Stream stream, final int screen) + throws LibvirtException { CString mimeType = libvirt.virDomainScreenshot(this.VDP, stream.getVSP(), screen, 0); processError(mimeType); stream.markReadable(); @@ -1308,7 +1336,7 @@ public String screenshot(Stream stream, int screen) throws LibvirtException { * @param autostart * @throws LibvirtException */ - public void setAutostart(boolean autostart) throws LibvirtException { + public void setAutostart(final boolean autostart) throws LibvirtException { int autoValue = autostart ? 1 : 0; processError(libvirt.virDomainSetAutostart(VDP, autoValue)); } @@ -1321,7 +1349,7 @@ public void setAutostart(boolean autostart) throws LibvirtException { * the amount memory in kilobytes * @throws LibvirtException */ - public void setMaxMemory(long memory) throws LibvirtException { + public void setMaxMemory(final long memory) throws LibvirtException { processError(libvirt.virDomainSetMaxMemory(VDP, new NativeLong(memory))); } @@ -1334,7 +1362,7 @@ public void setMaxMemory(long memory) throws LibvirtException { * in kilobytes * @throws LibvirtException */ - public void setMemory(long memory) throws LibvirtException { + public void setMemory(final long memory) throws LibvirtException { processError(libvirt.virDomainSetMemory(VDP, new NativeLong(memory))); } @@ -1345,7 +1373,8 @@ public void setMemory(long memory) throws LibvirtException { * an array of SchedParameter objects to be changed * @throws LibvirtException */ - public void setSchedulerParameters(SchedParameter[] params) throws LibvirtException { + public void setSchedulerParameters(final SchedParameter[] params) + throws LibvirtException { virSchedParameter[] input = new virSchedParameter[params.length]; for (int x = 0; x < params.length; x++) { input[x] = SchedParameter.toNative(params[x]); @@ -1363,7 +1392,7 @@ public void setSchedulerParameters(SchedParameter[] params) throws LibvirtExcept * the new number of virtual CPUs for this domain * @throws LibvirtException */ - public void setVcpus(int nvcpus) throws LibvirtException { + public void setVcpus(final int nvcpus) throws LibvirtException { processError(libvirt.virDomainSetVcpus(VDP, nvcpus)); } @@ -1374,7 +1403,9 @@ public void setVcpus(int nvcpus) throws LibvirtException { * @param holdtime the duration that the keys will be held (in milliseconds) * @param keys the key codes to be send */ - public void sendKey(KeycodeSet codeset, int holdtime, int... keys) throws LibvirtException { + public void sendKey(final KeycodeSet codeset, final int holdtime, + final int... keys) + throws LibvirtException { processError(libvirt.virDomainSendKey(this.VDP, codeset.ordinal(), holdtime, keys, keys.length, 0)); } @@ -1405,7 +1436,8 @@ public void shutdown() throws LibvirtException { * @return the snapshot * @throws LibvirtException */ - public DomainSnapshot snapshotCreateXML(String xmlDesc, int flags) throws LibvirtException { + public DomainSnapshot snapshotCreateXML(final String xmlDesc, final int flags) + throws LibvirtException { DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotCreateXML(VDP, xmlDesc, flags)); return new DomainSnapshot(virConnect, ptr); } @@ -1426,7 +1458,8 @@ public DomainSnapshot snapshotCreateXML(String xmlDesc, int flags) throws Libvir * @return the snapshot, or null on Error * @throws LibvirtException */ - public DomainSnapshot snapshotCreateXML(String xmlDesc) throws LibvirtException { + public DomainSnapshot snapshotCreateXML(final String xmlDesc) + throws LibvirtException { return snapshotCreateXML(xmlDesc, 0); } @@ -1453,7 +1486,7 @@ public DomainSnapshot snapshotCurrent() throws LibvirtException { * @return The list of names, or null if an error * @throws LibvirtException */ - public String[] snapshotListNames(int flags) throws LibvirtException { + public String[] snapshotListNames(final int flags) throws LibvirtException { int num = snapshotNum(); if (num > 0) { CString[] names = new CString[num]; @@ -1493,7 +1526,8 @@ public String[] snapshotListNames() throws LibvirtException { * @return The located snapshot * @throws LibvirtException */ - public DomainSnapshot snapshotLookupByName(String name) throws LibvirtException { + public DomainSnapshot snapshotLookupByName(final String name) + throws LibvirtException { DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotLookupByName(VDP, name, 0)); return new DomainSnapshot(virConnect, ptr); } @@ -1538,7 +1572,7 @@ public void undefine() throws LibvirtException { * flags for undefining the domain. See virDomainUndefineFlagsValues for more information * @throws LibvirtException */ - public void undefine(int flags) throws LibvirtException { + public void undefine(final int flags) throws LibvirtException { processError(libvirt.virDomainUndefineFlags(VDP, flags)); } @@ -1553,7 +1587,8 @@ public void undefine(int flags) throws LibvirtException { * @return always 0 * @throws LibvirtException */ - public int updateDeviceFlags(String xml, int flags) throws LibvirtException { + public int updateDeviceFlags(final String xml, final int flags) + throws LibvirtException { return processError(libvirt.virDomainUpdateDeviceFlags(VDP, xml, flags)); } diff --git a/src/main/java/org/libvirt/DomainBlockInfo.java b/src/main/java/org/libvirt/DomainBlockInfo.java index 8f1bbe1..a26c098 100644 --- a/src/main/java/org/libvirt/DomainBlockInfo.java +++ b/src/main/java/org/libvirt/DomainBlockInfo.java @@ -7,7 +7,7 @@ public class DomainBlockInfo { protected long allocation; protected long physical; - public DomainBlockInfo(virDomainBlockInfo info) { + public DomainBlockInfo(final virDomainBlockInfo info) { capacity = info.capacity; allocation = info.allocation; physical = info.physical; @@ -25,15 +25,15 @@ public long getPhysical() { return physical; } - public void setAllocation(long allocation) { + public void setAllocation(final long allocation) { this.allocation = allocation; } - public void setCapacity(long capacity) { + public void setCapacity(final long capacity) { this.capacity = capacity; } - public void setPhysical(long physical) { + public void setPhysical(final long physical) { this.physical = physical; } diff --git a/src/main/java/org/libvirt/DomainBlockStats.java b/src/main/java/org/libvirt/DomainBlockStats.java index dfd8a5e..54bfb54 100644 --- a/src/main/java/org/libvirt/DomainBlockStats.java +++ b/src/main/java/org/libvirt/DomainBlockStats.java @@ -18,7 +18,7 @@ public class DomainBlockStats { public DomainBlockStats() { } - public DomainBlockStats(virDomainBlockStats vStats) { + public DomainBlockStats(final virDomainBlockStats vStats) { rd_req = vStats.rd_req; rd_bytes = vStats.rd_bytes; wr_req = vStats.wr_req; diff --git a/src/main/java/org/libvirt/DomainInfo.java b/src/main/java/org/libvirt/DomainInfo.java index d87349a..116528b 100644 --- a/src/main/java/org/libvirt/DomainInfo.java +++ b/src/main/java/org/libvirt/DomainInfo.java @@ -70,7 +70,7 @@ public DomainInfo() { } - public DomainInfo(virDomainInfo info) { + public DomainInfo(final virDomainInfo info) { cpuTime = info.cpuTime; maxMem = info.maxMem.longValue(); memory = info.memory.longValue(); diff --git a/src/main/java/org/libvirt/DomainInterfaceStats.java b/src/main/java/org/libvirt/DomainInterfaceStats.java index eab5c44..465b4b9 100644 --- a/src/main/java/org/libvirt/DomainInterfaceStats.java +++ b/src/main/java/org/libvirt/DomainInterfaceStats.java @@ -22,7 +22,7 @@ public DomainInterfaceStats() { } - public DomainInterfaceStats(virDomainInterfaceStats vStats) { + public DomainInterfaceStats(final virDomainInterfaceStats vStats) { rx_bytes = vStats.rx_bytes; rx_packets = vStats.rx_packets; rx_errs = vStats.rx_errs; diff --git a/src/main/java/org/libvirt/DomainJobInfo.java b/src/main/java/org/libvirt/DomainJobInfo.java index 7eb319e..3a588c6 100644 --- a/src/main/java/org/libvirt/DomainJobInfo.java +++ b/src/main/java/org/libvirt/DomainJobInfo.java @@ -16,7 +16,7 @@ public class DomainJobInfo { protected long fileProcessed; protected long fileRemaining; - public DomainJobInfo(virDomainJobInfo info) { + public DomainJobInfo(final virDomainJobInfo info) { type = info.type; timeElapsed = info.timeElapsed; timeRemaining = info.timeRemaining; @@ -79,51 +79,51 @@ public int getType() { return type; } - public void setDataProcessed(long dataProcessed) { + public void setDataProcessed(final long dataProcessed) { this.dataProcessed = dataProcessed; } - public void setDataRemaining(long dataRemaining) { + public void setDataRemaining(final long dataRemaining) { this.dataRemaining = dataRemaining; } - public void setDataTotal(long dataTotal) { + public void setDataTotal(final long dataTotal) { this.dataTotal = dataTotal; } - public void setFileProcessed(long fileProcessed) { + public void setFileProcessed(final long fileProcessed) { this.fileProcessed = fileProcessed; } - public void setFileRemaining(long fileRemaining) { + public void setFileRemaining(final long fileRemaining) { this.fileRemaining = fileRemaining; } - public void setFileTotal(long fileTotal) { + public void setFileTotal(final long fileTotal) { this.fileTotal = fileTotal; } - public void setMemProcessed(long memProcessed) { + public void setMemProcessed(final long memProcessed) { this.memProcessed = memProcessed; } - public void setMemRemaining(long memRemaining) { + public void setMemRemaining(final long memRemaining) { this.memRemaining = memRemaining; } - public void setMemTotal(long memTotal) { + public void setMemTotal(final long memTotal) { this.memTotal = memTotal; } - public void setTimeElapsed(long timeElapsed) { + public void setTimeElapsed(final long timeElapsed) { this.timeElapsed = timeElapsed; } - public void setTimeRemaining(long timeRemaining) { + public void setTimeRemaining(final long timeRemaining) { this.timeRemaining = timeRemaining; } - public void setType(int type) { + public void setType(final int type) { this.type = type; } diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index ef18bf3..2d154f2 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -16,7 +16,8 @@ public class DomainSnapshot { */ private final Connect virConnect; - public DomainSnapshot(Connect virConnect, DomainSnapshotPointer VDSP) { + public DomainSnapshot(final Connect virConnect, + final DomainSnapshotPointer VDSP) { this.VDSP = VDSP; this.virConnect = virConnect; } @@ -32,7 +33,7 @@ public DomainSnapshot(Connect virConnect, DomainSnapshotPointer VDSP) { * @return ignore (always 0) * @throws LibvirtException */ - public int delete(int flags) throws LibvirtException { + public int delete(final int flags) throws LibvirtException { int success = 0; if (VDSP != null) { success = processError(libvirt.virDomainSnapshotDelete(VDSP, flags)); diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index 96217cb..ea11f90 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -124,7 +124,7 @@ public static enum ErrorDomain { /** unknown error domain */ VIR_FROM_UNKNOWN; // must be the last entry! - protected static final ErrorDomain wrap(int value) { + protected static final ErrorDomain wrap(final int value) { return safeElementAt(value, values()); } } @@ -142,7 +142,7 @@ public static enum ErrorLevel { VIR_ERR_UNKNOWN; /* must be the last entry! */ - protected static final ErrorLevel wrap(int value) { + protected static final ErrorLevel wrap(final int value) { return safeElementAt(value, values()); } } @@ -313,7 +313,7 @@ public static enum ErrorNumber { /** unknown error */ VIR_ERR_UNKNOWN; // must be the last entry! - protected static final ErrorNumber wrap(int value) { + protected static final ErrorNumber wrap(final int value) { return safeElementAt(value, values()); } } @@ -333,7 +333,7 @@ protected static final ErrorNumber wrap(int value) { private final int int1; private final int int2; - public Error(virError vError) { + public Error(final virError vError) { code = ErrorNumber.wrap(vError.code); domain = ErrorDomain.wrap(vError.domain); level = ErrorLevel.wrap(vError.level); diff --git a/src/main/java/org/libvirt/ErrorCallback.java b/src/main/java/org/libvirt/ErrorCallback.java index 2ce1096..daf6fdf 100644 --- a/src/main/java/org/libvirt/ErrorCallback.java +++ b/src/main/java/org/libvirt/ErrorCallback.java @@ -13,7 +13,7 @@ * */ public class ErrorCallback implements Libvirt.VirErrorCallback { - public void errorCallback(Pointer userData, virError error) { + public void errorCallback(final Pointer userData, final virError error) { // By default, do nothing. This will silence the default // logging done by the C code. Other users can override this // and do more interesting things. diff --git a/src/main/java/org/libvirt/ErrorException.java b/src/main/java/org/libvirt/ErrorException.java index f7f9ca0..86b3314 100644 --- a/src/main/java/org/libvirt/ErrorException.java +++ b/src/main/java/org/libvirt/ErrorException.java @@ -10,7 +10,7 @@ public class ErrorException extends Exception { private static final long serialVersionUID = -4329050530233404971L; - public ErrorException(String message) { + public ErrorException(final String message) { super(message); } diff --git a/src/main/java/org/libvirt/ErrorHandler.java b/src/main/java/org/libvirt/ErrorHandler.java index 05b5254..d143eb9 100644 --- a/src/main/java/org/libvirt/ErrorHandler.java +++ b/src/main/java/org/libvirt/ErrorHandler.java @@ -36,7 +36,7 @@ private static final void processError() throws LibvirtException { * @return {@code ret} * @throws LibvirtException */ - static final int processError(int ret) throws LibvirtException { + static final int processError(final int ret) throws LibvirtException { if (ret == -1) processError(); return ret; } @@ -48,22 +48,22 @@ static final int processError(int ret) throws LibvirtException { * @return {@code arg} * @throws LibvirtException */ - static final T processError(T arg) throws LibvirtException { + static final T processError(final T arg) throws LibvirtException { if (arg == null) processError(); return arg; } - static final Pointer processError(Pointer arg) throws LibvirtException { + static final Pointer processError(final Pointer arg) throws LibvirtException { if (arg == null) processError(); return arg; } - static final String processError(String str) throws LibvirtException { + static final String processError(final String str) throws LibvirtException { if (str == null) processError(); return str; } - static final long processErrorIfZero(long ret) throws LibvirtException { + static final long processErrorIfZero(final long ret) throws LibvirtException { if (ret == 0) processError(); return ret; } diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index e2a23f7..10f0907 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -33,7 +33,7 @@ public class Interface { * @param VIP * the native virInterfacePtr */ - Interface(Connect virConnect, InterfacePointer VIP) { + Interface(final Connect virConnect, final InterfacePointer VIP) { this.virConnect = virConnect; this.VIP = VIP; } @@ -121,7 +121,7 @@ public String getName() throws LibvirtException { * @return String or null * @throws LibvirtException */ - public String getXMLDescription(int flags) throws LibvirtException { + public String getXMLDescription(final int flags) throws LibvirtException { return processError(libvirt.virInterfaceGetXMLDesc(VIP, flags)).toString(); } diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index 27daacb..7ffc8eb 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -27,7 +27,7 @@ public final class Library { private static AtomicInteger timerID = new AtomicInteger(-1); private static VirEventTimeoutCallback timer = new VirEventTimeoutCallback() { @Override - public void tick(int id, Pointer p) { + public void tick(final int id, final Pointer p) { // disable myself again right after being triggered libvirt.virEventUpdateTimeout(id, -1); } @@ -72,7 +72,7 @@ public static long getVersion() throws LibvirtException { /** * Free memory pointed to by ptr. */ - static void free(Pointer ptr) { + static void free(final Pointer ptr) { Native.free(Pointer.nativeValue(ptr)); Pointer.nativeValue(ptr, 0L); } @@ -84,7 +84,7 @@ static void free(Pointer ptr) { * \note The memory used by the elements of the original array * is freed. */ - static String[] toStringArray(CString[] cstrarr, final int size) { + static String[] toStringArray(final CString[] cstrarr, final int size) { int i = 0; try { final String[] result = new String[size]; diff --git a/src/main/java/org/libvirt/LibvirtException.java b/src/main/java/org/libvirt/LibvirtException.java index f9546be..5e9a633 100644 --- a/src/main/java/org/libvirt/LibvirtException.java +++ b/src/main/java/org/libvirt/LibvirtException.java @@ -13,7 +13,7 @@ public class LibvirtException extends Exception { private Error virError; - LibvirtException(Error virError) { + LibvirtException(final Error virError) { super(virError.getMessage()); this.virError = virError; } diff --git a/src/main/java/org/libvirt/MemoryAddressMode.java b/src/main/java/org/libvirt/MemoryAddressMode.java index c16edea..9f9f2e1 100644 --- a/src/main/java/org/libvirt/MemoryAddressMode.java +++ b/src/main/java/org/libvirt/MemoryAddressMode.java @@ -9,7 +9,7 @@ public enum MemoryAddressMode { private final int value; - MemoryAddressMode(int v) { + MemoryAddressMode(final int v) { this.value = v; } diff --git a/src/main/java/org/libvirt/MemoryStatistic.java b/src/main/java/org/libvirt/MemoryStatistic.java index a4f77d1..d89db4d 100644 --- a/src/main/java/org/libvirt/MemoryStatistic.java +++ b/src/main/java/org/libvirt/MemoryStatistic.java @@ -7,7 +7,7 @@ public class MemoryStatistic { protected int tag; protected long val; - public MemoryStatistic(virDomainMemoryStats stat) { + public MemoryStatistic(final virDomainMemoryStats stat) { tag = stat.tag; val = stat.val; } @@ -20,11 +20,11 @@ public long getValue() { return val; } - public void setTag(int tag) { + public void setTag(final int tag) { this.tag = tag; } - public void setValue(long val) { + public void setValue(final long val) { this.val = val; } diff --git a/src/main/java/org/libvirt/Network.java b/src/main/java/org/libvirt/Network.java index e9e5de1..d0c8ae4 100644 --- a/src/main/java/org/libvirt/Network.java +++ b/src/main/java/org/libvirt/Network.java @@ -31,7 +31,7 @@ public class Network { * @param virConnect * @param VNP */ - Network(Connect virConnect, NetworkPointer VNP) { + Network(final Connect virConnect, final NetworkPointer VNP) { this.virConnect = virConnect; this.VNP = VNP; } @@ -160,7 +160,7 @@ public String getUUIDString() throws LibvirtException { * @return The XML representation of this network * @throws LibvirtException */ - public String getXMLDesc(int flags) throws LibvirtException { + public String getXMLDesc(final int flags) throws LibvirtException { return processError(libvirt.virNetworkGetXMLDesc(VNP, flags)).toString(); } @@ -199,7 +199,7 @@ public int isPersistent() throws LibvirtException { * whether the network should be automatically started 0 or 1 * @throws LibvirtException */ - public void setAutostart(boolean autostart) throws LibvirtException { + public void setAutostart(final boolean autostart) throws LibvirtException { int autoValue = autostart ? 1 : 0; processError(libvirt.virNetworkSetAutostart(VNP, autoValue)); } diff --git a/src/main/java/org/libvirt/NetworkFilter.java b/src/main/java/org/libvirt/NetworkFilter.java index c185eaa..2e42f7a 100644 --- a/src/main/java/org/libvirt/NetworkFilter.java +++ b/src/main/java/org/libvirt/NetworkFilter.java @@ -18,7 +18,7 @@ public class NetworkFilter { */ private final Connect virConnect; - public NetworkFilter(Connect virConnect, NetworkFilterPointer NFP) { + public NetworkFilter(final Connect virConnect, final NetworkFilterPointer NFP) { this.NFP = NFP; this.virConnect = virConnect; } diff --git a/src/main/java/org/libvirt/NodeInfo.java b/src/main/java/org/libvirt/NodeInfo.java index f6f3ddf..dd721c0 100644 --- a/src/main/java/org/libvirt/NodeInfo.java +++ b/src/main/java/org/libvirt/NodeInfo.java @@ -44,7 +44,7 @@ public class NodeInfo { public NodeInfo() { } - public NodeInfo(virNodeInfo vInfo) { + public NodeInfo(final virNodeInfo vInfo) { model = Native.toString(vInfo.model); memory = vInfo.memory.longValue(); cpus = vInfo.cpus; diff --git a/src/main/java/org/libvirt/SchedBooleanParameter.java b/src/main/java/org/libvirt/SchedBooleanParameter.java index e0f48e0..87527cb 100644 --- a/src/main/java/org/libvirt/SchedBooleanParameter.java +++ b/src/main/java/org/libvirt/SchedBooleanParameter.java @@ -16,11 +16,11 @@ public SchedBooleanParameter() { } - public SchedBooleanParameter(boolean value) { + public SchedBooleanParameter(final boolean value) { this.value = value; } - public SchedBooleanParameter(byte value) { + public SchedBooleanParameter(final byte value) { this.value = ((value) != 0) ? true : false; } diff --git a/src/main/java/org/libvirt/SchedDoubleParameter.java b/src/main/java/org/libvirt/SchedDoubleParameter.java index a34e2ed..27736b1 100644 --- a/src/main/java/org/libvirt/SchedDoubleParameter.java +++ b/src/main/java/org/libvirt/SchedDoubleParameter.java @@ -16,7 +16,7 @@ public SchedDoubleParameter() { } - public SchedDoubleParameter(double value) { + public SchedDoubleParameter(final double value) { this.value = value; } diff --git a/src/main/java/org/libvirt/SchedIntParameter.java b/src/main/java/org/libvirt/SchedIntParameter.java index 7a22526..6266516 100644 --- a/src/main/java/org/libvirt/SchedIntParameter.java +++ b/src/main/java/org/libvirt/SchedIntParameter.java @@ -10,7 +10,7 @@ public SchedIntParameter() { } - public SchedIntParameter(int value) { + public SchedIntParameter(final int value) { this.value = value; } diff --git a/src/main/java/org/libvirt/SchedLongParameter.java b/src/main/java/org/libvirt/SchedLongParameter.java index b1d4452..cddf50c 100644 --- a/src/main/java/org/libvirt/SchedLongParameter.java +++ b/src/main/java/org/libvirt/SchedLongParameter.java @@ -16,7 +16,7 @@ public SchedLongParameter() { } - public SchedLongParameter(long value) { + public SchedLongParameter(final long value) { this.value = value; } diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index c09a808..837ad1c 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -17,7 +17,7 @@ */ public abstract class SchedParameter { - public static SchedParameter create(virSchedParameter vParam) { + public static SchedParameter create(final virSchedParameter vParam) { SchedParameter returnValue = null; if (vParam != null) { switch (vParam.type) { @@ -49,7 +49,7 @@ public static SchedParameter create(virSchedParameter vParam) { return returnValue; } - public static virSchedParameter toNative(SchedParameter param) { + public static virSchedParameter toNative(final SchedParameter param) { virSchedParameter returnValue = new virSchedParameter(); returnValue.value = new virSchedParameterValue(); try { @@ -89,7 +89,7 @@ public static virSchedParameter toNative(SchedParameter param) { return returnValue; } - public static byte[] copyOf(byte[] original, int length) { + public static byte[] copyOf(final byte[] original, final int length) { byte[] returnValue = new byte[length]; int originalLength = original.length; Arrays.fill(returnValue, (byte) 0); diff --git a/src/main/java/org/libvirt/SchedUintParameter.java b/src/main/java/org/libvirt/SchedUintParameter.java index 1a5aefa..421de2f 100644 --- a/src/main/java/org/libvirt/SchedUintParameter.java +++ b/src/main/java/org/libvirt/SchedUintParameter.java @@ -17,7 +17,7 @@ public SchedUintParameter() { } - public SchedUintParameter(int value) { + public SchedUintParameter(final int value) { this.value = value; } diff --git a/src/main/java/org/libvirt/SchedUlongParameter.java b/src/main/java/org/libvirt/SchedUlongParameter.java index 0abe712..6a25d33 100644 --- a/src/main/java/org/libvirt/SchedUlongParameter.java +++ b/src/main/java/org/libvirt/SchedUlongParameter.java @@ -16,7 +16,7 @@ public SchedUlongParameter() { } - public SchedUlongParameter(long value) { + public SchedUlongParameter(final long value) { this.value = value; } diff --git a/src/main/java/org/libvirt/Secret.java b/src/main/java/org/libvirt/Secret.java index 9696d0f..10aaa65 100644 --- a/src/main/java/org/libvirt/Secret.java +++ b/src/main/java/org/libvirt/Secret.java @@ -27,7 +27,7 @@ public class Secret { */ private final Connect virConnect; - Secret(Connect virConnect, SecretPointer VSP) { + Secret(final Connect virConnect, final SecretPointer VSP) { this.virConnect = virConnect; this.VSP = VSP; } @@ -146,7 +146,7 @@ public String getXMLDesc() throws LibvirtException { * @return ignore (always 0) * @throws org.libvirt.LibvirtException */ - public int setValue(String value) throws LibvirtException { + public int setValue(final String value) throws LibvirtException { return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length()), 0)); } @@ -157,7 +157,7 @@ public int setValue(String value) throws LibvirtException { * @return ignore (always 0) * @throws org.libvirt.LibvirtException */ - public int setValue(byte[] value) throws LibvirtException { + public int setValue(final byte[] value) throws LibvirtException { return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length), 0)); } diff --git a/src/main/java/org/libvirt/SecurityLabel.java b/src/main/java/org/libvirt/SecurityLabel.java index 60132ba..b50fe02 100644 --- a/src/main/java/org/libvirt/SecurityLabel.java +++ b/src/main/java/org/libvirt/SecurityLabel.java @@ -9,11 +9,11 @@ * @see Domain#getSecurityLabel */ public final class SecurityLabel { - private String label; - private boolean enforced; - private static byte NUL = 0; + private final String label; + private final boolean enforced; + private static final byte NUL = 0; - SecurityLabel(Libvirt.SecurityLabel seclabel) { + SecurityLabel(final Libvirt.SecurityLabel seclabel) { label = Native.toString(seclabel.label, "UTF-8"); enforced = seclabel.enforcing == 1; } diff --git a/src/main/java/org/libvirt/SecurityModel.java b/src/main/java/org/libvirt/SecurityModel.java index b41835f..35f9ed2 100644 --- a/src/main/java/org/libvirt/SecurityModel.java +++ b/src/main/java/org/libvirt/SecurityModel.java @@ -9,10 +9,10 @@ * @see Connect#getSecurityModel */ public final class SecurityModel { - private String model; - private String doi; + private final String model; + private final String doi; - SecurityModel(Libvirt.SecurityModel secmodel) { + SecurityModel(final Libvirt.SecurityModel secmodel) { model = Native.toString(secmodel.model, "UTF-8"); doi = Native.toString(secmodel.doi, "UTF-8"); } diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index 55172f2..bc23083 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -62,7 +62,7 @@ static final class DeleteFlags { * @param VSPP * the native virStoragePoolPtr */ - StoragePool(Connect virConnect, StoragePoolPointer VSPP) { + StoragePool(final Connect virConnect, final StoragePoolPointer VSPP) { this.virConnect = virConnect; this.VSPP = VSPP; } @@ -73,7 +73,7 @@ static final class DeleteFlags { * @param flags * future flags, use 0 for now */ - public void build(int flags) throws LibvirtException { + public void build(final int flags) throws LibvirtException { processError(libvirt.virStoragePoolBuild(VSPP, flags)); } @@ -83,7 +83,7 @@ public void build(int flags) throws LibvirtException { * @param flags * future flags, use 0 for now */ - public void create(int flags) throws LibvirtException { + public void create(final int flags) throws LibvirtException { processError(libvirt.virStoragePoolCreate(VSPP, flags)); } @@ -94,7 +94,7 @@ public void create(int flags) throws LibvirtException { * @param flags * flags for obliteration process */ - public void delete(int flags) throws LibvirtException { + public void delete(final int flags) throws LibvirtException { processError(libvirt.virStoragePoolDelete(VSPP, flags)); } @@ -206,7 +206,7 @@ public String getUUIDString() throws LibvirtException { * flags for XML format options (set of virDomainXMLFlags) * @return a XML document -java @throws LibvirtException */ - public String getXMLDesc(int flags) throws LibvirtException { + public String getXMLDesc(final int flags) throws LibvirtException { return processError(libvirt.virStoragePoolGetXMLDesc(VSPP, flags)).toString(); } @@ -276,7 +276,7 @@ public int numOfVolumes() throws LibvirtException { * flags to control refresh behaviour (currently unused, use 0) * @throws LibvirtException */ - public void refresh(int flags) throws LibvirtException { + public void refresh(final int flags) throws LibvirtException { processError(libvirt.virStoragePoolRefresh(VSPP, flags)); } @@ -287,7 +287,7 @@ public void refresh(int flags) throws LibvirtException { * new flag setting * @throws LibvirtException */ - public void setAutostart(int autostart) throws LibvirtException { + public void setAutostart(final int autostart) throws LibvirtException { libvirt.virStoragePoolSetAutostart(VSPP, autostart); } @@ -302,7 +302,8 @@ public void setAutostart(int autostart) throws LibvirtException { * @return the storage volume * @throws LibvirtException */ - public StorageVol storageVolCreateXML(String xmlDesc, int flags) throws LibvirtException { + public StorageVol storageVolCreateXML(final String xmlDesc, final int flags) + throws LibvirtException { StorageVolPointer sPtr = processError(libvirt.virStorageVolCreateXML(VSPP, xmlDesc, flags)); return new StorageVol(virConnect, sPtr); } @@ -315,7 +316,9 @@ public StorageVol storageVolCreateXML(String xmlDesc, int flags) throws LibvirtE * @return The storage volume * @throws LibvirtException */ - public StorageVol storageVolCreateXMLFrom(String xmlDesc, StorageVol cloneVolume, int flags) + public StorageVol storageVolCreateXMLFrom(final String xmlDesc, + final StorageVol cloneVolume, + final int flags) throws LibvirtException { StorageVolPointer sPtr = processError(libvirt.virStorageVolCreateXMLFrom(VSPP, xmlDesc, cloneVolume.VSVP, flags)); return new StorageVol(virConnect, sPtr); @@ -330,7 +333,8 @@ public StorageVol storageVolCreateXMLFrom(String xmlDesc, StorageVol cloneVolume * @return a StorageVol object, or {@code null} if not found. * @throws LibvirtException */ - public StorageVol storageVolLookupByName(String name) throws LibvirtException { + public StorageVol storageVolLookupByName(final String name) + throws LibvirtException { StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByName(VSPP, name)); return (sPtr == null) ? null : new StorageVol(virConnect, sPtr); diff --git a/src/main/java/org/libvirt/StoragePoolInfo.java b/src/main/java/org/libvirt/StoragePoolInfo.java index 0ac8fa9..0c46e3f 100644 --- a/src/main/java/org/libvirt/StoragePoolInfo.java +++ b/src/main/java/org/libvirt/StoragePoolInfo.java @@ -56,7 +56,8 @@ public static enum StoragePoolState { * @param allocation * @param available */ - StoragePoolInfo(int state, long capacity, long allocation, long available) { + StoragePoolInfo(final int state, final long capacity, + final long allocation, final long available) { switch (state) { case 0: this.state = StoragePoolState.VIR_STORAGE_POOL_INACTIVE; @@ -78,7 +79,7 @@ public static enum StoragePoolState { this.available = available; } - StoragePoolInfo(virStoragePoolInfo vInfo) { + StoragePoolInfo(final virStoragePoolInfo vInfo) { this(vInfo.state, vInfo.capacity, vInfo.allocation, vInfo.available); } diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index 6991db3..7b6d9f7 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -70,7 +70,7 @@ public static enum Type { * @param VSVP * the native virStorageVolPtr */ - StorageVol(Connect virConnect, StorageVolPointer VSVP) { + StorageVol(final Connect virConnect, final StorageVolPointer VSVP) { this.virConnect = virConnect; this.VSVP = VSVP; } @@ -82,7 +82,7 @@ public static enum Type { * future flags, use 0 for now * @throws LibvirtException */ - public void delete(int flags) throws LibvirtException { + public void delete(final int flags) throws LibvirtException { processError(libvirt.virStorageVolDelete(VSVP, flags)); } @@ -172,7 +172,7 @@ public String getPath() throws LibvirtException { * @return the XML document * @throws LibvirtException */ - public String getXMLDesc(int flags) throws LibvirtException { + public String getXMLDesc(final int flags) throws LibvirtException { return processError(libvirt.virStorageVolGetXMLDesc(VSVP, flags)).toString(); } @@ -209,7 +209,8 @@ public int wipe() throws LibvirtException { * @return ignore (always 0) * @throws LibvirtException */ - public int resize(long capacity, int flags) throws LibvirtException { + public int resize(final long capacity, final int flags) + throws LibvirtException { return processError(libvirt.virStorageVolResize(VSVP, capacity, flags)); } } diff --git a/src/main/java/org/libvirt/StorageVolInfo.java b/src/main/java/org/libvirt/StorageVolInfo.java index 23dbb7a..315751a 100644 --- a/src/main/java/org/libvirt/StorageVolInfo.java +++ b/src/main/java/org/libvirt/StorageVolInfo.java @@ -41,7 +41,7 @@ public static enum VirStorageVolType { * @param capacity * @param allocation */ - StorageVolInfo(int type, long capacity, long allocation) { + StorageVolInfo(final int type, final long capacity, final long allocation) { switch (type) { case 0: this.type = VirStorageVolType.VIR_STORAGE_VOL_FILE; @@ -56,7 +56,7 @@ public static enum VirStorageVolType { this.allocation = allocation; } - StorageVolInfo(virStorageVolInfo volInfo) { + StorageVolInfo(final virStorageVolInfo volInfo) { this(volInfo.type, volInfo.capacity, volInfo.allocation); } diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 3d081a3..842f8ac 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -52,7 +52,7 @@ public class Stream implements ByteChannel { /** * The Connect Object that represents the Hypervisor of this Domain */ - private Connect virConnect; + private final Connect virConnect; private final static int CLOSED = 0; private final static int READABLE = 1; @@ -104,7 +104,7 @@ private void markEOF() { state |= EOF; } - Stream(Connect virConnect, StreamPointer VSP) { + Stream(final Connect virConnect, final StreamPointer VSP) { this.virConnect = virConnect; this.VSP = VSP; } @@ -135,7 +135,8 @@ public int abort() throws LibvirtException { * @return ignore (always 0) * @throws LibvirtException */ - public int addCallback(int events, Libvirt.VirStreamEventCallback cb) throws LibvirtException { + public int addCallback(final int events, final Libvirt.VirStreamEventCallback cb) + throws LibvirtException { return processError(libvirt.virStreamEventAddCallback(VSP, events, cb, null, null)); } @@ -187,18 +188,18 @@ StreamPointer getVSP() { * @return the number of bytes read, -1 on error, -2 if the buffer is empty * @throws LibvirtException */ - public int receive(byte[] data) throws LibvirtException { + public int receive(final byte[] data) throws LibvirtException { return receive(ByteBuffer.wrap(data)); } - protected int receive(ByteBuffer buffer) throws LibvirtException { + protected int receive(final ByteBuffer buffer) throws LibvirtException { int returnValue = processError(libvirt.virStreamRecv(VSP, buffer, new SizeT(buffer.remaining()))); buffer.position(buffer.position() + returnValue); return returnValue; } @Override - public int read(ByteBuffer buffer) throws IOException { + public int read(final ByteBuffer buffer) throws IOException { if (!isOpen()) throw new ClosedChannelException(); if (!isReadable()) throw new NonReadableChannelException(); if (isEOF()) return -1; @@ -223,7 +224,7 @@ public int read(ByteBuffer buffer) throws IOException { } @Override - public int write(ByteBuffer buffer) throws IOException { + public int write(final ByteBuffer buffer) throws IOException { if (!isOpen()) throw new ClosedChannelException(); if (!isWritable()) throw new NonWritableChannelException(); @@ -273,7 +274,8 @@ public boolean isOpen() { * @return ignore (always 0) * @throws LibvirtException */ - public int receiveAll(Libvirt.VirStreamSinkFunc handler) throws LibvirtException { + public int receiveAll(final Libvirt.VirStreamSinkFunc handler) + throws LibvirtException { return processError(libvirt.virStreamRecvAll(VSP, handler, null)); } @@ -297,11 +299,11 @@ public int removeCallback() throws LibvirtException { * full * @throws LibvirtException */ - public int send(byte[] data) throws LibvirtException { + public int send(final byte[] data) throws LibvirtException { return send(ByteBuffer.wrap(data)); } - protected int send(ByteBuffer buffer) throws LibvirtException { + protected int send(final ByteBuffer buffer) throws LibvirtException { SizeT size = new SizeT(buffer.remaining()); int returnValue = processError(libvirt.virStreamSend(VSP, buffer, size)); buffer.position(buffer.position() + returnValue); @@ -319,7 +321,8 @@ protected int send(ByteBuffer buffer) throws LibvirtException { * @return ignore (always 0) * @throws LibvirtException */ - public int sendAll(Libvirt.VirStreamSourceFunc handler) throws LibvirtException { + public int sendAll(final Libvirt.VirStreamSourceFunc handler) + throws LibvirtException { return processError(libvirt.virStreamSendAll(VSP, handler, null)); } @@ -332,7 +335,7 @@ public int sendAll(Libvirt.VirStreamSourceFunc handler) throws LibvirtException * @return ignore (always 0) * @throws LibvirtException */ - public int updateCallback(int events) throws LibvirtException { + public int updateCallback(final int events) throws LibvirtException { return processError(libvirt.virStreamEventUpdateCallback(VSP, events)); } } diff --git a/src/main/java/org/libvirt/VcpuInfo.java b/src/main/java/org/libvirt/VcpuInfo.java index 6728fe9..60e7f0b 100644 --- a/src/main/java/org/libvirt/VcpuInfo.java +++ b/src/main/java/org/libvirt/VcpuInfo.java @@ -20,7 +20,7 @@ public VcpuInfo() { } - public VcpuInfo(virVcpuInfo vVcpu) { + public VcpuInfo(final virVcpuInfo vVcpu) { number = vVcpu.number; cpuTime = vVcpu.cpuTime; cpu = vVcpu.cpu; diff --git a/src/main/java/org/libvirt/event/DomainEvent.java b/src/main/java/org/libvirt/event/DomainEvent.java index 3420967..6dec16a 100644 --- a/src/main/java/org/libvirt/event/DomainEvent.java +++ b/src/main/java/org/libvirt/event/DomainEvent.java @@ -40,7 +40,7 @@ public final class DomainEvent { private final DomainEventType type; private final int detail; - public DomainEvent(DomainEventType type, int code) { + public DomainEvent(final DomainEventType type, final int code) { this.type = type; this.detail = code; } diff --git a/src/main/java/org/libvirt/event/DomainEventType.java b/src/main/java/org/libvirt/event/DomainEventType.java index c42043d..38fd2a0 100644 --- a/src/main/java/org/libvirt/event/DomainEventType.java +++ b/src/main/java/org/libvirt/event/DomainEventType.java @@ -42,7 +42,7 @@ public enum DomainEventType { private final Object[] details; - DomainEventType(Object[] d) { + DomainEventType(final Object[] d) { details = d; } diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index d30e8d9..f99466b 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -24,7 +24,7 @@ public CString() { super(); } - public CString(Pointer p) { + public CString(final Pointer p) { super(p); } @@ -63,13 +63,14 @@ public String toString() { } @Override - public CString fromNative(Object nativeValue, FromNativeContext context) { + public CString fromNative(final Object nativeValue, + final FromNativeContext context) { if (nativeValue == null) return null; return new CString((Pointer) nativeValue); } - private void free(Pointer ptr) { + private void free(final Pointer ptr) { assert ptr != null; Native.free(Pointer.nativeValue(ptr)); diff --git a/src/main/java/org/libvirt/jna/SizeT.java b/src/main/java/org/libvirt/jna/SizeT.java index 02e8f18..e906869 100644 --- a/src/main/java/org/libvirt/jna/SizeT.java +++ b/src/main/java/org/libvirt/jna/SizeT.java @@ -8,7 +8,7 @@ */ public final class SizeT extends IntegerType { public SizeT() { this(0); } - public SizeT(long value) { + public SizeT(final long value) { /* The third argument determines whether this class represents * an unsigned integer type. When extracting a value into a * larger-sized container (e.g. 4 byte native type into Java diff --git a/src/main/java/org/libvirt/jna/SizeTByReference.java b/src/main/java/org/libvirt/jna/SizeTByReference.java index ff3aa31..5edc765 100644 --- a/src/main/java/org/libvirt/jna/SizeTByReference.java +++ b/src/main/java/org/libvirt/jna/SizeTByReference.java @@ -12,12 +12,12 @@ public SizeTByReference() { this(0); } - public SizeTByReference(long value) { + public SizeTByReference(final long value) { super(Native.SIZE_T_SIZE); setValue(value); } - public void setValue(long value) { + public void setValue(final long value) { Pointer p = getPointer(); switch (Native.SIZE_T_SIZE) { case 2: From b7bead0a72ce730e09ceb92f8256a7a55f4cda4b Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:06 +0200 Subject: [PATCH 026/114] Trim linelength Trim overlengthy source code lines for better readability. While at it convert some inline comments to JavaDoc. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 221 +++++++----- src/main/java/org/libvirt/Domain.java | 185 +++++----- src/main/java/org/libvirt/DomainInfo.java | 3 +- .../org/libvirt/DomainInterfaceStats.java | 5 +- src/main/java/org/libvirt/DomainJobInfo.java | 9 +- src/main/java/org/libvirt/DomainSnapshot.java | 3 +- src/main/java/org/libvirt/Error.java | 6 +- src/main/java/org/libvirt/NodeInfo.java | 4 +- src/main/java/org/libvirt/StoragePool.java | 12 +- .../java/org/libvirt/StoragePoolInfo.java | 3 +- src/main/java/org/libvirt/StorageVol.java | 6 +- .../org/libvirt/event/LifecycleListener.java | 3 +- src/main/java/org/libvirt/jna/Libvirt.java | 323 ++++++++++++------ 13 files changed, 487 insertions(+), 296 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index d0d003e..4003ba0 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -44,7 +44,8 @@ public class Connect { // registered event listeners by DomainEventID - private Map[] eventListeners = makeHashMapArray(DomainEventID.LAST); + private Map[] eventListeners = + makeHashMapArray(DomainEventID.LAST); private static final class RegisteredEventListener { public final int callbackId; @@ -537,9 +538,9 @@ public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { * @param l the event listener * @throws LibvirtException * - * @see virConnectDomainEventDeregisterAny + * @see + * + virConnectDomainEventDeregisterAny */ private void domainEventDeregister(final int eventID, final EventListener l) throws LibvirtException { @@ -570,7 +571,10 @@ private void domainEventRegister(final Domain domain, final int eventID, } DomainPointer ptr = domain == null ? null : domain.VDP; - int ret = processError(libvirt.virConnectDomainEventRegisterAny(VCP, ptr, eventID, cb, null, null)); + int ret = + processError(libvirt.virConnectDomainEventRegisterAny(VCP, ptr, + eventID, cb, + null, null)); // track the handler // Note: it is important that the callback does not get GCed @@ -582,7 +586,8 @@ void domainEventRegister(final Domain domain, final IOErrorListener cb) if (cb == null) throw new IllegalArgumentException("IOError callback cannot be null"); - Libvirt.VirConnectDomainEventIOErrorCallback virCB = new Libvirt.VirConnectDomainEventIOErrorCallback() { + Libvirt.VirConnectDomainEventIOErrorCallback virCB = + new Libvirt.VirConnectDomainEventIOErrorCallback() { @Override public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, @@ -611,9 +616,9 @@ public void eventCallback(final ConnectionPointer virConnectPtr, * Adds the specified I/O error listener to receive I/O error events * for domains of this connection. * - * @see Libvirt - * Documentation + * @see + * + Libvirt Documentation * @param l * the I/O error listener * @throws LibvirtException on failure @@ -627,7 +632,8 @@ void domainEventRegister(final Domain domain, final RebootListener cb) if (cb == null) throw new IllegalArgumentException("RebootCallback cannot be null"); - Libvirt.VirConnectDomainEventGenericCallback virCB = new Libvirt.VirConnectDomainEventGenericCallback() { + Libvirt.VirConnectDomainEventGenericCallback virCB = + new Libvirt.VirConnectDomainEventGenericCallback() { @Override public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, @@ -651,7 +657,8 @@ void domainEventRegister(final Domain domain, final LifecycleListener cb) if (cb == null) throw new IllegalArgumentException("LifecycleCallback cannot be null"); - Libvirt.VirConnectDomainEventCallback virCB = new Libvirt.VirConnectDomainEventCallback() { + Libvirt.VirConnectDomainEventCallback virCB = + new Libvirt.VirConnectDomainEventCallback() { @Override public int eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, @@ -690,12 +697,12 @@ public int eventCallback(final ConnectionPointer virConnectPtr, * * @see #removeLifecycleListener * @see Domain#addLifecycleListener - * @see virConnectDomainEventRegisterAny + * @see + * + virConnectDomainEventRegisterAny */ - public void addLifecycleListener(final LifecycleListener l) throws LibvirtException - { + public void addLifecycleListener(final LifecycleListener l) + throws LibvirtException { domainEventRegister(null, l); } @@ -711,7 +718,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, final int reason, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert VCP.equals(virConnectPtr); try { Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -760,9 +767,9 @@ public void eventCallback(final ConnectionPointer virConnectPtr, * * @see #removePMSuspendListener * @see Domain#addPMSuspendListener - * @see virConnectDomainEventRegisterAny + * @see + * + virConnectDomainEventRegisterAny * * @since 1.5.2 */ @@ -777,9 +784,9 @@ public void addPMSuspendListener(final PMSuspendListener l) throws LibvirtExcept * @param l the PMSuspend listener * @throws LibvirtException * - * @see virConnectDomainEventDeregisterAny + * @see + * + virConnectDomainEventDeregisterAny * * @since 1.5.2 */ @@ -796,9 +803,9 @@ public void removePMSuspendListener(final PMSuspendListener l) throws LibvirtExc * * @see #removePMWakeupListener * @see Domain#addPMWakeupListener - * @see virConnectDomainEventRegisterAny + * @see + * + virConnectDomainEventRegisterAny * * @since 1.5.2 */ @@ -813,9 +820,9 @@ public void addPMWakeupListener(final PMWakeupListener l) throws LibvirtExceptio * @param l the PMWakeup listener * @throws LibvirtException * - * @see virConnectDomainEventDeregisterAny + * @see + * + virConnectDomainEventDeregisterAny */ public void removePMWakeupListener(final PMWakeupListener l) throws LibvirtException { domainEventDeregister(DomainEventID.PMWAKEUP, l); @@ -828,9 +835,9 @@ public void removePMWakeupListener(final PMWakeupListener l) throws LibvirtExcep * @param l the lifecycle event listener * @throws LibvirtException * - * @see virConnectDomainEventDeregisterAny + * @see + * + virConnectDomainEventDeregisterAny */ public void removeLifecycleListener(final LifecycleListener l) throws LibvirtException { domainEventDeregister(DomainEventID.LIFECYCLE, l); @@ -844,9 +851,9 @@ public void removeLifecycleListener(final LifecycleListener l) throws LibvirtExc * @throws LibvirtException on failure * * @see Domain#addRebootListener - * @see virConnectDomainEventRegisterAny + * @see + * + virConnectDomainEventRegisterAny * @since 1.5.2 */ public void addRebootListener(final RebootListener l) throws LibvirtException { @@ -860,9 +867,9 @@ public void addRebootListener(final RebootListener l) throws LibvirtException { * @param l the I/O error listener * @throws LibvirtException * - * @see virConnectDomainEventDeregisterAny + * @see + * + virConnectDomainEventDeregisterAny */ public void removeIOErrorListener(final IOErrorListener l) throws LibvirtException { domainEventDeregister(DomainEventID.IO_ERROR, l); @@ -946,7 +953,9 @@ public Domain domainLookupByUUIDString(final String UUID) throws LibvirtExceptio public String domainXMLFromNative(final String nativeFormat, final String nativeConfig, final int flags) throws LibvirtException { - CString result = libvirt.virConnectDomainXMLFromNative(VCP, nativeFormat, nativeConfig, 0); + CString result = + libvirt.virConnectDomainXMLFromNative(VCP, nativeFormat, + nativeConfig, 0); return processError(result).toString(); } @@ -961,7 +970,8 @@ public String domainXMLFromNative(final String nativeFormat, public String domainXMLToNative(final String nativeFormat, final String domainXML, final int flags) throws LibvirtException { - CString returnValue = libvirt.virConnectDomainXMLToNative(VCP, nativeFormat, domainXML, 0); + CString returnValue = + libvirt.virConnectDomainXMLToNative(VCP, nativeFormat, domainXML, 0); return processError(returnValue).toString(); } @@ -993,7 +1003,8 @@ protected void finalize() throws LibvirtException { public String findStoragePoolSources(final String type, final String srcSpecs, final int flags) throws LibvirtException { - CString returnValue = libvirt.virConnectFindStoragePoolSources(VCP, type, srcSpecs, flags); + CString returnValue = + libvirt.virConnectFindStoragePoolSources(VCP, type, srcSpecs, flags); return processError(returnValue).toString(); } @@ -1002,8 +1013,8 @@ public String findStoragePoolSources(final String type, final String srcSpecs, * * @return an XML String describing the capabilities. * @throws LibvirtException - * @see The XML format - * description + * @see + The XML format description */ public String getCapabilities() throws LibvirtException { return processError(libvirt.virConnectGetCapabilities(VCP)).toString(); @@ -1168,7 +1179,8 @@ public long getVersion() throws LibvirtException { */ public Interface interfaceDefineXML(final String xmlDesc) throws LibvirtException { - InterfacePointer ptr = processError(libvirt.virInterfaceDefineXML(VCP, xmlDesc, 0)); + InterfacePointer ptr = + processError(libvirt.virInterfaceDefineXML(VCP, xmlDesc, 0)); return new Interface(this, ptr); } @@ -1179,7 +1191,8 @@ public Interface interfaceDefineXML(final String xmlDesc) */ public Interface interfaceLookupByMACString(final String mac) throws LibvirtException { - InterfacePointer ptr = processError(libvirt.virInterfaceLookupByMACString(VCP, mac)); + InterfacePointer ptr = + processError(libvirt.virInterfaceLookupByMACString(VCP, mac)); return new Interface(this, ptr); } @@ -1190,16 +1203,17 @@ public Interface interfaceLookupByMACString(final String mac) */ public Interface interfaceLookupByName(final String name) throws LibvirtException { - InterfacePointer ptr = processError(libvirt.virInterfaceLookupByName(VCP, name)); + InterfacePointer ptr = + processError(libvirt.virInterfaceLookupByName(VCP, name)); return new Interface(this, ptr); } /** * Determine if the connection is encrypted * - * @see Libvirt - * Documentation + * @see + * + Libvirt Documentation * @return 1 if encrypted, 0 if not encrypted * @throws LibvirtException */ @@ -1210,9 +1224,9 @@ public int isEncrypted() throws LibvirtException { /** * Determine if the connection is secure * - * @see Libvirt - * Documentation + * @see + * + Libvirt Documentation * @return 1 if secure, 0 if not secure * @throws LibvirtException */ @@ -1231,7 +1245,9 @@ public String[] listDefinedDomains() throws LibvirtException { int maxnames = numOfDefinedDomains(); if (maxnames > 0) { final CString[] names = new CString[maxnames]; - final int n = processError(libvirt.virConnectListDefinedDomains(VCP, names, maxnames)); + final int n = + processError(libvirt.virConnectListDefinedDomains(VCP, names, + maxnames)); return Library.toStringArray(names, n); } else { return Library.NO_STRINGS; @@ -1249,7 +1265,8 @@ public String[] listDefinedInterfaces() throws LibvirtException { final int max = numOfDefinedInterfaces(); if (max > 0) { final CString[] ifs = new CString[max]; - final int n = processError(libvirt.virConnectListDefinedInterfaces(VCP, ifs, max)); + final int n = + processError(libvirt.virConnectListDefinedInterfaces(VCP, ifs, max)); return Library.toStringArray(ifs, n); } else { return Library.NO_STRINGS; @@ -1267,7 +1284,9 @@ public String[] listDefinedNetworks() throws LibvirtException { int maxnames = numOfDefinedNetworks(); if (maxnames > 0) { final CString[] names = new CString[maxnames]; - final int n = processError(libvirt.virConnectListDefinedNetworks(VCP, names, maxnames)); + final int n = + processError(libvirt.virConnectListDefinedNetworks(VCP, names, + maxnames)); return Library.toStringArray(names, n); } else { return Library.NO_STRINGS; @@ -1285,7 +1304,9 @@ public String[] listDefinedStoragePools() throws LibvirtException { int num = numOfDefinedStoragePools(); if (num > 0) { CString[] pools = new CString[num]; - final int n = processError(libvirt.virConnectListDefinedStoragePools(VCP, pools, num)); + final int n = + processError(libvirt.virConnectListDefinedStoragePools(VCP, + pools, num)); return Library.toStringArray(pools, n); } else { return Library.NO_STRINGS; @@ -1303,7 +1324,9 @@ public String[] listDevices(final String capabilityName) int maxDevices = numOfDevices(capabilityName); if (maxDevices > 0) { CString[] names = new CString[maxDevices]; - final int n = processError(libvirt.virNodeListDevices(VCP, capabilityName, names, maxDevices, 0)); + final int n = + processError(libvirt.virNodeListDevices(VCP, capabilityName, + names, maxDevices, 0)); return Library.toStringArray(names, n); } else { return Library.NO_STRINGS; @@ -1337,7 +1360,8 @@ public String[] listInterfaces() throws LibvirtException { int num = numOfInterfaces(); if (num > 0) { CString[] ifs = new CString[num]; - final int n = processError(libvirt.virConnectListInterfaces(VCP, ifs, num)); + final int n = + processError(libvirt.virConnectListInterfaces(VCP, ifs, num)); return Library.toStringArray(ifs, n); } else { return Library.NO_STRINGS; @@ -1354,7 +1378,9 @@ public String[] listNetworkFilters() throws LibvirtException { int maxnames = numOfNetworkFilters(); if (maxnames > 0) { CString[] names = new CString[maxnames]; - final int n = processError(libvirt.virConnectListNWFilters(VCP, names, maxnames)); + final int n = + processError(libvirt.virConnectListNWFilters(VCP, names, + maxnames)); return Library.toStringArray(names, n); } else { return Library.NO_STRINGS; @@ -1372,7 +1398,9 @@ public String[] listNetworks() throws LibvirtException { int maxnames = numOfNetworks(); if (maxnames > 0) { CString[] names = new CString[maxnames]; - final int n = processError(libvirt.virConnectListNetworks(VCP, names, maxnames)); + final int n = + processError(libvirt.virConnectListNetworks(VCP, names, + maxnames)); return Library.toStringArray(names, n); } else { return Library.NO_STRINGS; @@ -1389,7 +1417,8 @@ public String[] listSecrets() throws LibvirtException { int num = numOfSecrets(); if (num > 0) { CString[] returnValue = new CString[num]; - final int n = processError(libvirt.virConnectListSecrets(VCP, returnValue, num)); + final int n = + processError(libvirt.virConnectListSecrets(VCP, returnValue, num)); return Library.toStringArray(returnValue, n); } else { return Library.NO_STRINGS; @@ -1407,7 +1436,8 @@ public String[] listStoragePools() throws LibvirtException { int num = numOfStoragePools(); if (num > 0) { CString[] returnValue = new CString[num]; - final int n = processError(libvirt.virConnectListStoragePools(VCP, returnValue, num)); + final int n = + processError(libvirt.virConnectListStoragePools(VCP, returnValue, num)); return Library.toStringArray(returnValue, n); } else { return Library.NO_STRINGS; @@ -1439,8 +1469,8 @@ public Network networkCreateXML(final String xmlDesc) throws LibvirtException { * @param xmlDesc * @return the resulting Network object * @throws LibvirtException - * @see The XML format - * description + * @see + The XML format description */ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { NetworkPointer ptr = processError(libvirt.virNetworkDefineXML(VCP, xmlDesc)); @@ -1454,9 +1484,9 @@ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { * the descirption of the filter * @return the new filer * @throws LibvirtException - * @see Libvirt Documentation + * @see + * + Libvirt Documentation */ public NetworkFilter networkFilterDefineXML(final String xmlDesc) throws LibvirtException { @@ -1471,13 +1501,14 @@ public NetworkFilter networkFilterDefineXML(final String xmlDesc) * name of network filter to fetch * @return network filter object * @throws LibvirtException - * @see Libvirt Documentation + * @see + * + Libvirt Documentation */ public NetworkFilter networkFilterLookupByName(final String name) throws LibvirtException { - NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByName(VCP, name)); + NetworkFilterPointer ptr = + processError(libvirt.virNWFilterLookupByName(VCP, name)); return new NetworkFilter(this, ptr); } @@ -1494,7 +1525,8 @@ public NetworkFilter networkFilterLookupByName(final String name) public NetworkFilter networkFilterLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); - NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByUUID(VCP, uuidBytes)); + NetworkFilterPointer ptr = + processError(libvirt.virNWFilterLookupByUUID(VCP, uuidBytes)); return new NetworkFilter(this, ptr); } @@ -1521,7 +1553,8 @@ public NetworkFilter networkFilterLookupByUUID(final UUID uuid) */ public NetworkFilter networkFilterLookupByUUIDString(final String UUID) throws LibvirtException { - NetworkFilterPointer ptr = processError(libvirt.virNWFilterLookupByUUIDString(VCP, UUID)); + NetworkFilterPointer ptr = + processError(libvirt.virNWFilterLookupByUUIDString(VCP, UUID)); return new NetworkFilter(this, ptr); } @@ -1535,7 +1568,8 @@ public NetworkFilter networkFilterLookupByUUIDString(final String UUID) */ public Network networkLookupByName(final String name) throws LibvirtException { - NetworkPointer ptr = processError(libvirt.virNetworkLookupByName(VCP, name)); + NetworkPointer ptr = + processError(libvirt.virNetworkLookupByName(VCP, name)); return new Network(this, ptr); } @@ -1554,7 +1588,8 @@ public Network networkLookupByName(final String name) public Network networkLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); - NetworkPointer ptr = processError(libvirt.virNetworkLookupByUUID(VCP, uuidBytes)); + NetworkPointer ptr = + processError(libvirt.virNetworkLookupByUUID(VCP, uuidBytes)); return new Network(this, ptr); } @@ -1578,8 +1613,10 @@ public Network networkLookupByUUID(final UUID uuid) throws LibvirtException { * @return The Network object found * @throws LibvirtException */ - public Network networkLookupByUUIDString(final String UUID) throws LibvirtException { - NetworkPointer ptr = processError(libvirt.virNetworkLookupByUUIDString(VCP, UUID)); + public Network networkLookupByUUIDString(final String UUID) + throws LibvirtException { + NetworkPointer ptr = + processError(libvirt.virNetworkLookupByUUIDString(VCP, UUID)); return new Network(this, ptr); } @@ -1730,7 +1767,8 @@ public void restore(final String from) throws LibvirtException { * @throws LibvirtException */ public Secret secretDefineXML(final String xmlDesc) throws LibvirtException { - SecretPointer ptr = processError(libvirt.virSecretDefineXML(VCP, xmlDesc, 0)); + SecretPointer ptr = + processError(libvirt.virSecretDefineXML(VCP, xmlDesc, 0)); return new Secret(this, ptr); } @@ -1746,7 +1784,8 @@ public Secret secretDefineXML(final String xmlDesc) throws LibvirtException { */ public Secret secretLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); - SecretPointer ptr = processError(libvirt.virSecretLookupByUUID(VCP, uuidBytes)); + SecretPointer ptr = + processError(libvirt.virSecretLookupByUUID(VCP, uuidBytes)); return new Secret(this, ptr); } @@ -1772,7 +1811,8 @@ public Secret secretLookupByUUID(final UUID uuid) throws LibvirtException { */ public Secret secretLookupByUUIDString(final String UUID) throws LibvirtException { - SecretPointer ptr = processError(libvirt.virSecretLookupByUUIDString(VCP, UUID)); + SecretPointer ptr = + processError(libvirt.virSecretLookupByUUIDString(VCP, UUID)); return new Secret(this, ptr); } @@ -1808,7 +1848,8 @@ public void setDom0Memory(final long memory) throws LibvirtException { */ public StoragePool storagePoolCreateXML(final String xmlDesc, final int flags) throws LibvirtException { - StoragePoolPointer ptr = processError(libvirt.virStoragePoolCreateXML(VCP, xmlDesc, flags)); + StoragePoolPointer ptr = + processError(libvirt.virStoragePoolCreateXML(VCP, xmlDesc, flags)); return new StoragePool(this, ptr); } @@ -1825,7 +1866,8 @@ public StoragePool storagePoolCreateXML(final String xmlDesc, final int flags) */ public StoragePool storagePoolDefineXML(final String xml, final int flags) throws LibvirtException { - StoragePoolPointer ptr = processError(libvirt.virStoragePoolDefineXML(VCP, xml, flags)); + StoragePoolPointer ptr = + processError(libvirt.virStoragePoolDefineXML(VCP, xml, flags)); return new StoragePool(this, ptr); } @@ -1839,7 +1881,8 @@ public StoragePool storagePoolDefineXML(final String xml, final int flags) */ public StoragePool storagePoolLookupByName(final String name) throws LibvirtException { - StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByName(VCP, name)); + StoragePoolPointer ptr = + processError(libvirt.virStoragePoolLookupByName(VCP, name)); return new StoragePool(this, ptr); } @@ -1856,7 +1899,8 @@ public StoragePool storagePoolLookupByName(final String name) public StoragePool storagePoolLookupByUUID(final int[] UUID) throws LibvirtException { byte[] uuidBytes = Connect.createUUIDBytes(UUID); - StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByUUID(VCP, uuidBytes)); + StoragePoolPointer ptr = + processError(libvirt.virStoragePoolLookupByUUID(VCP, uuidBytes)); return new StoragePool(this, ptr); } @@ -1883,7 +1927,8 @@ public StoragePool storagePoolLookupByUUID(final UUID uuid) */ public StoragePool storagePoolLookupByUUIDString(final String UUID) throws LibvirtException { - StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByUUIDString(VCP, UUID)); + StoragePoolPointer ptr = + processError(libvirt.virStoragePoolLookupByUUIDString(VCP, UUID)); return new StoragePool(this, ptr); } @@ -1896,7 +1941,8 @@ public StoragePool storagePoolLookupByUUIDString(final String UUID) */ public StorageVol storageVolLookupByKey(final String key) throws LibvirtException { - StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByKey(VCP, key)); + StorageVolPointer sPtr = + processError(libvirt.virStorageVolLookupByKey(VCP, key)); return new StorageVol(this, sPtr); } @@ -1909,7 +1955,8 @@ public StorageVol storageVolLookupByKey(final String key) */ public StorageVol storageVolLookupByPath(final String path) throws LibvirtException { - StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByPath(VCP, path)); + StorageVolPointer sPtr = + processError(libvirt.virStorageVolLookupByPath(VCP, path)); return new StorageVol(this, sPtr); } diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 7911291..07d3e71 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -47,104 +47,114 @@ public static final class BlockResizeFlags { static final class CreateFlags { static final int VIR_DOMAIN_NONE = 0; - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE = (1 << 0); /* Restore or alter - metadata */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT = (1 << 1); /* With redefine, make - snapshot current */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = (1 << 2); /* Make snapshot without - remembering it */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_HALT = (1 << 3); /* Stop running guest - after snapshot */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = (1 << 4); /* disk snapshot, not - system checkpoint */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = (1 << 5); /* reuse any existing - external files */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = (1 << 6); /* use guest agent to - quiesce all mounted - file systems within - the domain */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC = (1 << 7); /* atomically avoid - partial changes */ + /** Restore or alter metadata */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE = (1 << 0); + + /** With redefine, make snapshot current */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT = (1 << 1); + + /** Make snapshot without remembering it */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = (1 << 2); + + /** Stop running guest after snapshot */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_HALT = (1 << 3); + + /** disk snapshot, not system checkpoint */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = (1 << 4); + + /** reuse any existing external files */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = (1 << 5); + + /** use guest agent to quiesce all mounted file systems within the domain */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = (1 << 6); + + /* atomically avoid partial changes */ + static final int VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC = (1 << 7); } static final class MigrateFlags { - static final int VIR_MIGRATE_LIVE = (1 << 0); /* live migration */ - static final int VIR_MIGRATE_PEER2PEER = (1 << 1); /* direct source -> dest host control channel */ - /* Note the less-common spelling that we're stuck with: - VIR_MIGRATE_TUNNELLED should be VIR_MIGRATE_TUNNELED */ - static final int VIR_MIGRATE_TUNNELLED = (1 << 2); /* tunnel migration data over libvirtd connection */ - static final int VIR_MIGRATE_PERSIST_DEST = (1 << 3); /* persist the VM on the destination */ - static final int VIR_MIGRATE_UNDEFINE_SOURCE = (1 << 4); /* undefine the VM on the source */ - static final int VIR_MIGRATE_PAUSED = (1 << 5); /* pause on remote side */ - static final int VIR_MIGRATE_NON_SHARED_DISK = (1 << 6); /* migration with non-shared storage with full disk copy */ - static final int VIR_MIGRATE_NON_SHARED_INC = (1 << 7); /* migration with non-shared storage with incremental copy */ - /* (same base image shared between source and destination) */ - static final int VIR_MIGRATE_CHANGE_PROTECTION = (1 << 8); /* protect for changing domain configuration through the - * whole migration process; this will be used automatically - * when supported */ - static final int VIR_MIGRATE_UNSAFE = (1 << 9); /* force migration even if it is considered unsafe */ + /** live migration */ + static final int VIR_MIGRATE_LIVE = (1 << 0); + + /** direct source -> dest host control channel */ + static final int VIR_MIGRATE_PEER2PEER = (1 << 1); + + /** tunnel migration data over libvirtd connection + * @apiNote Note the less-common spelling that we're stuck with: + * VIR_MIGRATE_TUNNELLED should be VIR_MIGRATE_TUNNELED + */ + static final int VIR_MIGRATE_TUNNELLED = (1 << 2); + + /** persist the VM on the destination */ + static final int VIR_MIGRATE_PERSIST_DEST = (1 << 3); + + /** undefine the VM on the source */ + static final int VIR_MIGRATE_UNDEFINE_SOURCE = (1 << 4); + + /** pause on remote side */ + static final int VIR_MIGRATE_PAUSED = (1 << 5); + + /** migration with non-shared storage with full disk copy */ + static final int VIR_MIGRATE_NON_SHARED_DISK = (1 << 6); + + /** migration with non-shared storage with incremental copy + * (same base image shared between source and destination) + */ + static final int VIR_MIGRATE_NON_SHARED_INC = (1 << 7); + + /** protect for changing domain configuration through the + * whole migration process; this will be used automatically + * when supported + */ + static final int VIR_MIGRATE_CHANGE_PROTECTION = (1 << 8); + + /** force migration even if it is considered unsafe */ + static final int VIR_MIGRATE_UNSAFE = (1 << 9); } static final class XMLFlags { - /** - * dump security sensitive information too - */ + /** dump security sensitive information too */ static final int VIR_DOMAIN_XML_SECURE = 1; - /** - * dump inactive domain information - */ + + /** dump inactive domain information*/ static final int VIR_DOMAIN_XML_INACTIVE = 2; - static final int VIR_DOMAIN_XML_UPDATE_CPU = (1 << 2); /* update guest CPU requirements according to host CPU */ + + /** update guest CPU requirements according to host CPU */ + static final int VIR_DOMAIN_XML_UPDATE_CPU = (1 << 2); } public static final class UndefineFlags { - /** - * Also remove any managed save - */ + /** Also remove any managed save */ public static final int MANAGED_SAVE = (1 << 0); - /** - * If last use of domain, then also remove any snapshot metadata - */ + + /** If last use of domain, then also remove any snapshot metadata */ public static final int SNAPSHOTS_METADATA = (1 << 1); } public static final class SnapshotListFlags { - /** - * Filter by snapshots with no parents, when listing a domain - */ + /** Filter by snapshots with no parents, when listing a domain */ public static final int ROOTS = (1 << 0); - /** - * List all descendants, not just children, when listing a snapshot - */ + /** List all descendants, not just children, when listing a snapshot */ + public static final int DESCENDANTS = (1 << 0); - /** For historical reasons, groups do not use contiguous bits. */ + /** @apiNote For historical reasons, groups do not use contiguous bits. */ - /** - * Filter by snapshots with no children - */ + /** Filter by snapshots with no children */ public static final int LEAVES = (1 << 2); - /** - * Filter by snapshots that have children - */ + /** Filter by snapshots that have children */ public static final int NO_LEAVES = (1 << 3); - /** - * Filter by snapshots which have metadata - */ + /** Filter by snapshots which have metadata */ public static final int METADATA = (1 << 1); - /** - * Filter by snapshots with no metadata - */ + /** Filter by snapshots with no metadata */ public static final int NO_METADATA = (1 << 4); } - /** - * the native virDomainPtr. - */ + /** the native virDomainPtr. */ DomainPointer VDP; /* (non-Javadoc) @@ -193,9 +203,7 @@ public boolean equals(final Object obj) { } } - /** - * The Connect Object that represents the Hypervisor of this Domain - */ + /** The Connect Object that represents the Hypervisor of this Domain */ private final Connect virConnect; /** @@ -261,9 +269,8 @@ public void attachDevice(final String xmlDesc) throws LibvirtException { /** * Creates a virtual device attachment to backend. * - * @see Libvirt - * Documentation + * @see + Libvirt Documentation * @param xmlDesc * XML description of one device * @param flags @@ -983,7 +990,8 @@ public Domain migrate(final Connect dconn, final long flags, final String uri, final long bandwidth) throws LibvirtException { DomainPointer newPtr = - processError(libvirt.virDomainMigrate2(VDP, dconn.VCP, dxml, new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); + processError(libvirt.virDomainMigrate2(VDP, dconn.VCP, dxml, + new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); return new Domain(dconn, newPtr); } @@ -1225,7 +1233,8 @@ public void addIOErrorListener(final IOErrorListener cb) throws LibvirtException * >virConnectDomainEventRegisterAny * @since 1.5.2 */ - public void addRebootListener(final RebootListener l) throws LibvirtException { + public void addRebootListener(final RebootListener l) + throws LibvirtException { virConnect.domainEventRegister(this, l); } @@ -1241,8 +1250,8 @@ public void addRebootListener(final RebootListener l) throws LibvirtException { * href="http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny" * >virConnectDomainEventRegisterAny */ - public void addLifecycleListener(final LifecycleListener l) throws LibvirtException - { + public void addLifecycleListener(final LifecycleListener l) + throws LibvirtException { virConnect.domainEventRegister(this, l); } @@ -1260,8 +1269,8 @@ public void addLifecycleListener(final LifecycleListener l) throws LibvirtExcept * * @since 1.5.2 */ - public void addPMWakeupListener(final PMWakeupListener l) throws LibvirtException - { + public void addPMWakeupListener(final PMWakeupListener l) + throws LibvirtException { virConnect.domainEventRegister(this, l); } @@ -1279,8 +1288,8 @@ public void addPMWakeupListener(final PMWakeupListener l) throws LibvirtExceptio * * @since 1.5.2 */ - public void addPMSuspendListener(final PMSuspendListener l) throws LibvirtException - { + public void addPMSuspendListener(final PMSuspendListener l) + throws LibvirtException { virConnect.domainEventRegister(this, l); } @@ -1565,11 +1574,14 @@ public void undefine() throws LibvirtException { } /** - * Undefines this domain but does not stop if it it is running. With option for passing flags + * Undefines this domain but does not stop if it it is running. + * With option for passing flags * - * @see Libvirt Documentation + * @see + Libvirt Documentation * @param flags - * flags for undefining the domain. See virDomainUndefineFlagsValues for more information + * flags for undefining the domain. + * See virDomainUndefineFlagsValues for more information * @throws LibvirtException */ public void undefine(final int flags) throws LibvirtException { @@ -1579,7 +1591,8 @@ public void undefine(final int flags) throws LibvirtException { /** * Change a virtual device on a domain * - * @see Libvirt Documentation + * @see + Libvirt Documentation * @param xml * the xml to update with * @param flags diff --git a/src/main/java/org/libvirt/DomainInfo.java b/src/main/java/org/libvirt/DomainInfo.java index 116528b..7f71ab5 100644 --- a/src/main/java/org/libvirt/DomainInfo.java +++ b/src/main/java/org/libvirt/DomainInfo.java @@ -80,6 +80,7 @@ public DomainInfo(final virDomainInfo info) { @Override public String toString() { - return String.format("state:%s%nmaxMem:%d%nmemory:%d%nnrVirtCpu:%d%ncpuTime:%d%n", state, maxMem, memory, nrVirtCpu, cpuTime); + return String.format("state:%s%nmaxMem:%d%nmemory:%d%nnrVirtCpu:%d%ncpuTime:%d%n", + state, maxMem, memory, nrVirtCpu, cpuTime); } } diff --git a/src/main/java/org/libvirt/DomainInterfaceStats.java b/src/main/java/org/libvirt/DomainInterfaceStats.java index 465b4b9..b890d1c 100644 --- a/src/main/java/org/libvirt/DomainInterfaceStats.java +++ b/src/main/java/org/libvirt/DomainInterfaceStats.java @@ -35,7 +35,10 @@ public DomainInterfaceStats(final virDomainInterfaceStats vStats) { @Override public String toString() { - return String.format("rx_bytes:%d%nrx_packets:%d%nrx_errs:%d%nrx_drop:%d%ntx_bytes:%d%ntx_packets:%d%ntx_errs:%d%ntx_drop:%d%n", rx_bytes, rx_packets, rx_errs, rx_drop, tx_bytes, tx_packets, tx_errs, tx_drop); + return String.format("rx_bytes:%d%nrx_packets:%d%nrx_errs:%d%nrx_drop:%d%n" + + "tx_bytes:%d%ntx_packets:%d%ntx_errs:%d%ntx_drop:%d%n", + rx_bytes, rx_packets, rx_errs, rx_drop, + tx_bytes, tx_packets, tx_errs, tx_drop); } } diff --git a/src/main/java/org/libvirt/DomainJobInfo.java b/src/main/java/org/libvirt/DomainJobInfo.java index 3a588c6..d4303fa 100644 --- a/src/main/java/org/libvirt/DomainJobInfo.java +++ b/src/main/java/org/libvirt/DomainJobInfo.java @@ -129,6 +129,13 @@ public void setType(final int type) { @Override public String toString() { - return String.format("type:%d%ntimeElapsed:%d%ntimeRemaining:%d%ndataTotal:%d%ndataProcessed:%d%ndataRemaining:%d%nmemTotal:%d%nmemProcessed:%d%nmemRemaining:%d%nfileTotal:%d%nfileProcessed:%d%nfileRemaining:%d%n", type, timeElapsed, timeRemaining, dataTotal, dataProcessed, dataRemaining, memTotal, memProcessed, memRemaining, fileTotal, fileProcessed, fileRemaining); + return String.format("type:%d%ntimeElapsed:%d%ntimeRemaining:%d%n" + + "dataTotal:%d%ndataProcessed:%d%ndataRemaining:%d%n" + + "memTotal:%d%nmemProcessed:%d%nmemRemaining:%d%n" + + "fileTotal:%d%nfileProcessed:%d%nfileRemaining:%d%n", + type, timeElapsed, timeRemaining, + dataTotal, dataProcessed, dataRemaining, + memTotal, memProcessed, memRemaining, + fileTotal, fileProcessed, fileRemaining); } } diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index 2d154f2..3625854 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -69,7 +69,8 @@ public int free() throws LibvirtException { * Fetches an XML document describing attributes of the snapshot. * * @throws org.libvirt.LibvirtException - * @see Libvirt Documentation + * @see + Libvirt Documentation * @return the XML document */ public String getXMLDesc() throws LibvirtException { diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index ea11f90..643e46d 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -485,6 +485,10 @@ public boolean hasNet() { @Override public String toString() { - return String.format("level:%s%ncode:%s%ndomain:%s%nhasConn:%b%nhasDom:%b%nhasNet:%b%nmessage:%s%nstr1:%s%nstr2:%s%nstr3:%s%nint1:%d%nint2:%d%n", level, code, domain, hasConn(), hasDom(), hasNet(), message, str1, str2, str3, int1, int2); + return String.format("level:%s%ncode:%s%ndomain:%s%n" + + "hasConn:%b%nhasDom:%b%nhasNet:%b%n" + + "message:%s%nstr1:%s%nstr2:%s%nstr3:%s%nint1:%d%nint2:%d%n", + level, code, domain, hasConn(), hasDom(), hasNet(), + message, str1, str2, str3, int1, int2); } } diff --git a/src/main/java/org/libvirt/NodeInfo.java b/src/main/java/org/libvirt/NodeInfo.java index dd721c0..25699cf 100644 --- a/src/main/java/org/libvirt/NodeInfo.java +++ b/src/main/java/org/libvirt/NodeInfo.java @@ -65,6 +65,8 @@ public int maxCpus() { @Override public String toString() { - return String.format("model:%s%nmemory:%d%ncpus:%d%nmhz:%d%nnodes:%d%nsockets:%d%ncores:%d%nthreads:%d%n", model, memory, cpus, mhz, nodes, sockets, cores, threads); + return String.format("model:%s%nmemory:%d%ncpus:%d%nmhz:%d%n" + + "nodes:%d%nsockets:%d%ncores:%d%nthreads:%d%n", + model, memory, cpus, mhz, nodes, sockets, cores, threads); } } diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index bc23083..cc1ad8a 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -228,8 +228,8 @@ public int isActive() throws LibvirtException { * it will still exist after shutting down * * @see Libvirt - * Documentation + * href="http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolIsPersistent"> + Libvirt Documentation * @return 1 if persistent, 0 if transient * @throws LibvirtException */ @@ -304,7 +304,8 @@ public void setAutostart(final int autostart) throws LibvirtException { */ public StorageVol storageVolCreateXML(final String xmlDesc, final int flags) throws LibvirtException { - StorageVolPointer sPtr = processError(libvirt.virStorageVolCreateXML(VSPP, xmlDesc, flags)); + StorageVolPointer sPtr = + processError(libvirt.virStorageVolCreateXML(VSPP, xmlDesc, flags)); return new StorageVol(virConnect, sPtr); } @@ -320,7 +321,10 @@ public StorageVol storageVolCreateXMLFrom(final String xmlDesc, final StorageVol cloneVolume, final int flags) throws LibvirtException { - StorageVolPointer sPtr = processError(libvirt.virStorageVolCreateXMLFrom(VSPP, xmlDesc, cloneVolume.VSVP, flags)); + StorageVolPointer sPtr = + processError(libvirt.virStorageVolCreateXMLFrom(VSPP, xmlDesc, + cloneVolume.VSVP, + flags)); return new StorageVol(virConnect, sPtr); } diff --git a/src/main/java/org/libvirt/StoragePoolInfo.java b/src/main/java/org/libvirt/StoragePoolInfo.java index 0c46e3f..85375af 100644 --- a/src/main/java/org/libvirt/StoragePoolInfo.java +++ b/src/main/java/org/libvirt/StoragePoolInfo.java @@ -85,6 +85,7 @@ public static enum StoragePoolState { @Override public String toString() { - return String.format("state:%s%ncapacity:%d%nallocation:%d%navailable:%d%n", state, capacity, allocation, available); + return String.format("state:%s%ncapacity:%d%nallocation:%d%navailable:%d%n", + state, capacity, allocation, available); } } diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index 7b6d9f7..19bc274 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -190,7 +190,8 @@ public StoragePool storagePoolLookupByVolume() throws LibvirtException { /** * Ensure data previously on a volume is not accessible to future reads * - * @see Libvirt Documentation + * @see + Libvirt Documentation * @return ignore (always 0) * @throws LibvirtException */ @@ -201,7 +202,8 @@ public int wipe() throws LibvirtException { /** * Resize a volume * - * @see Libvirt Documentation + * @see + Libvirt Documentation * @param capacity * new capacity for volume * @param flags diff --git a/src/main/java/org/libvirt/event/LifecycleListener.java b/src/main/java/org/libvirt/event/LifecycleListener.java index 78d7419..1f7d7f6 100644 --- a/src/main/java/org/libvirt/event/LifecycleListener.java +++ b/src/main/java/org/libvirt/event/LifecycleListener.java @@ -5,7 +5,8 @@ /** * Interface for receiving events occurring on a domain. * - * @see virConnectDomainEventCallback + * @see + virConnectDomainEventCallback */ public interface LifecycleListener extends EventListener { diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index bfac664..075cf65 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -84,7 +84,8 @@ interface VirConnectCloseFunc extends Callback { interface VirDomainEventCallback extends Callback {} interface VirConnectDomainEventIOErrorCallback extends VirDomainEventCallback { - void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + void eventCallback(ConnectionPointer virConnectPtr, + DomainPointer virDomainPointer, String srcPath, String devAlias, int action, @@ -92,11 +93,13 @@ void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPoint } interface VirConnectDomainEventGenericCallback extends VirDomainEventCallback { - void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, Pointer opaque); + void eventCallback(ConnectionPointer virConnectPtr, + DomainPointer virDomainPointer, Pointer opaque); } interface VirConnectDomainEventCallback extends VirDomainEventCallback { - int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + int eventCallback(ConnectionPointer virConnectPtr, + DomainPointer virDomainPointer, int event, int detail, Pointer opaque); @@ -104,7 +107,8 @@ int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointe // PMWakeup and PMSuspend have the same callback interface. interface VirConnectDomainEventPMChangeCallback extends VirDomainEventCallback { - void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + void eventCallback(ConnectionPointer virConnectPtr, + DomainPointer virDomainPointer, int reason, Pointer opaque); } @@ -119,11 +123,13 @@ interface VirErrorCallback extends Callback { * Stream callbacks */ interface VirStreamSinkFunc extends Callback { - int sinkCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque); + int sinkCallback(StreamPointer virStreamPtr, String data, + NativeLong nbytes, Pointer opaque); } interface VirStreamSourceFunc extends Callback { - int sourceCallback(StreamPointer virStreamPtr, String data, NativeLong nbytes, Pointer opaque); + int sourceCallback(StreamPointer virStreamPtr, String data, + NativeLong nbytes, Pointer opaque); } interface VirStreamEventCallback extends Callback { @@ -144,7 +150,8 @@ interface VirEventTimeoutCallback extends Callback { void tick(int timerID, Pointer opaque); } - Libvirt INSTANCE = (Libvirt) Native.loadLibrary(Platform.isWindows() ? "virt-0" : "virt", Libvirt.class); + Libvirt INSTANCE = + (Libvirt) Native.loadLibrary(Platform.isWindows() ? "virt-0" : "virt", Libvirt.class); // Constants we need public static int VIR_UUID_BUFLEN = 16; @@ -152,7 +159,8 @@ interface VirEventTimeoutCallback extends Callback { public static int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80; // Connection Functions - CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, String[] xmlCPUs, int ncpus, int flags); + CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, + String[] xmlCPUs, int ncpus, int flags); /// /// Structure definitions @@ -198,36 +206,54 @@ protected List getFieldOrder() { int virConnectCompareCPU(ConnectionPointer virConnectPtr, String xmlDesc, int flags); // Register Domain Event Callbacks - int virConnectDomainEventRegisterAny(ConnectionPointer virConnectPtr, DomainPointer virDomainPtr, int eventID, VirDomainEventCallback cb, Pointer opaque, Libvirt.VirFreeCallback freecb); + int virConnectDomainEventRegisterAny(ConnectionPointer virConnectPtr, + DomainPointer virDomainPtr, int eventID, VirDomainEventCallback cb, + Pointer opaque, Libvirt.VirFreeCallback freecb); - int virConnectRegisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectCloseFunc cb, + int virConnectRegisterCloseCallback(ConnectionPointer virConnectPtr, + VirConnectCloseFunc cb, Pointer opaque, Pointer freeOpaque); - int virConnectUnregisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectCloseFunc cb); + int virConnectUnregisterCloseCallback(ConnectionPointer virConnectPtr, + VirConnectCloseFunc cb); int virConnectDomainEventDeregisterAny(ConnectionPointer virConnectPtr, int callbackID); - void virConnSetErrorFunc(ConnectionPointer virConnectPtr, Pointer userData, VirErrorCallback callback); + void virConnSetErrorFunc(ConnectionPointer virConnectPtr, Pointer userData, + VirErrorCallback callback); int virConnectIsAlive(ConnectionPointer virConnectPtr); int virConnectIsEncrypted(ConnectionPointer virConnectPtr); int virConnectIsSecure(ConnectionPointer virConnectPtr); - CString virConnectFindStoragePoolSources(ConnectionPointer virConnectPtr, String type, String srcSpec, int flags); + CString virConnectFindStoragePoolSources(ConnectionPointer virConnectPtr, + String type, String srcSpec, int flags); CString virConnectGetCapabilities(ConnectionPointer virConnectPtr); CString virConnectGetHostname(ConnectionPointer virConnectPtr); - int virConnectGetLibVersion(ConnectionPointer virConnectPtr, LongByReference libVer); + int virConnectGetLibVersion(ConnectionPointer virConnectPtr, + LongByReference libVer); int virConnectGetMaxVcpus(ConnectionPointer virConnectPtr, String type); CString virConnectGetSysinfo(ConnectionPointer virConnectPtr, int flags); String virConnectGetType(ConnectionPointer virConnectPtr); CString virConnectGetURI(ConnectionPointer virConnectPtr); - int virConnectGetVersion(ConnectionPointer virConnectPtr, LongByReference hvVer); - int virConnectListDefinedDomains(ConnectionPointer virConnectPtr, CString[] name, int maxnames); - int virConnectListDefinedNetworks(ConnectionPointer virConnectPtr, CString[] name, int maxnames); - int virConnectListDefinedStoragePools(ConnectionPointer virConnectPtr, CString[] names, int maxnames); - int virConnectListDefinedInterfaces(ConnectionPointer virConnectPtr, CString[] name, int maxNames); - int virConnectListDomains(ConnectionPointer virConnectPtr, int[] ids, int maxnames); - int virConnectListInterfaces(ConnectionPointer virConnectPtr, CString[] name, int maxNames); - int virConnectListNetworks(ConnectionPointer virConnectPtr, CString[] name, int maxnames); - int virConnectListNWFilters(ConnectionPointer virConnectPtr, CString[] name, int maxnames); - int virConnectListSecrets(ConnectionPointer virConnectPtr, CString[] uids, int maxUids); - int virConnectListStoragePools(ConnectionPointer virConnectPtr, CString[] names, int maxnames); + int virConnectGetVersion(ConnectionPointer virConnectPtr, + LongByReference hvVer); + int virConnectListDefinedDomains(ConnectionPointer virConnectPtr, + CString[] name, int maxnames); + int virConnectListDefinedNetworks(ConnectionPointer virConnectPtr, + CString[] name, int maxnames); + int virConnectListDefinedStoragePools(ConnectionPointer virConnectPtr, + CString[] names, int maxnames); + int virConnectListDefinedInterfaces(ConnectionPointer virConnectPtr, + CString[] name, int maxNames); + int virConnectListDomains(ConnectionPointer virConnectPtr, + int[] ids, int maxnames); + int virConnectListInterfaces(ConnectionPointer virConnectPtr, + CString[] name, int maxNames); + int virConnectListNetworks(ConnectionPointer virConnectPtr, + CString[] name, int maxnames); + int virConnectListNWFilters(ConnectionPointer virConnectPtr, + CString[] name, int maxnames); + int virConnectListSecrets(ConnectionPointer virConnectPtr, + CString[] uids, int maxUids); + int virConnectListStoragePools(ConnectionPointer virConnectPtr, + CString[] names, int maxnames); int virConnectNumOfDefinedDomains(ConnectionPointer virConnectPtr); int virConnectNumOfDefinedNetworks(ConnectionPointer virConnectPtr); int virConnectNumOfDefinedInterfaces(ConnectionPointer virConnectPtr); @@ -241,7 +267,8 @@ int virConnectRegisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectC ConnectionPointer virConnectOpen(String name); ConnectionPointer virConnectOpenAuth(String name, virConnectAuth auth, int flags); ConnectionPointer virConnectOpenReadOnly(String name); - int virConnectSetKeepAlive(ConnectionPointer virConnectPtr, int interval, int count); + int virConnectSetKeepAlive(ConnectionPointer virConnectPtr, + int interval, int count); /** * @deprecated as of libvirt 0.6.0, all errors reported in the @@ -252,13 +279,17 @@ int virConnectRegisterCloseCallback(ConnectionPointer virConnectPtr, VirConnectC @Deprecated virError virConnGetLastError(ConnectionPointer virConnectPtr); void virConnResetLastError(ConnectionPointer virConnectPtr); - CString virConnectDomainXMLFromNative(ConnectionPointer virConnectPtr, String nativeFormat, - String nativeConfig, int flags); - CString virConnectDomainXMLToNative(ConnectionPointer virConnectPtr, String nativeFormat, String domainXML, - int flags); + CString virConnectDomainXMLFromNative(ConnectionPointer virConnectPtr, + String nativeFormat, + String nativeConfig, + int flags); + CString virConnectDomainXMLToNative(ConnectionPointer virConnectPtr, + String nativeFormat, String domainXML, + int flags); // Global functions - int virGetVersion(LongByReference libVer, String type, LongByReference typeVer); + int virGetVersion(LongByReference libVer, String type, + LongByReference typeVer); int virInitialize(); int virCopyLastError(virError error); virError virGetLastError(); @@ -272,23 +303,32 @@ CString virConnectDomainXMLToNative(ConnectionPointer virConnectPtr, String nati // Domain functions int virDomainAbortJob(DomainPointer virDomainPtr); int virDomainAttachDevice(DomainPointer virDomainPtr, String deviceXML); - int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, String deviceXML, int flags); - int virDomainBlockPeek(DomainPointer virDomainPtr, String disk, long offset, SizeT size, + int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, + String deviceXML, int flags); + int virDomainBlockPeek(DomainPointer virDomainPtr, + String disk, long offset, SizeT size, ByteBuffer buffer, int flags); - int virDomainBlockStats(DomainPointer virDomainPtr, String path, virDomainBlockStats stats, SizeT size); - int virDomainBlockResize(DomainPointer virDomainPtr, String disk, long size, int flags); + int virDomainBlockStats(DomainPointer virDomainPtr, String path, + virDomainBlockStats stats, SizeT size); + int virDomainBlockResize(DomainPointer virDomainPtr, + String disk, long size, int flags); int virDomainCoreDump(DomainPointer virDomainPtr, String to, int flags); int virDomainCreate(DomainPointer virDomainPtr); int virDomainCreateWithFlags(DomainPointer virDomainPtr, int flags); - DomainPointer virDomainCreateLinux(ConnectionPointer virConnectPtr, String xmlDesc, int flags); - DomainPointer virDomainCreateXML(ConnectionPointer virConnectPtr, String xmlDesc, int flags); - DomainPointer virDomainDefineXML(ConnectionPointer virConnectPtr, String xmlDesc); + DomainPointer virDomainCreateLinux(ConnectionPointer virConnectPtr, + String xmlDesc, int flags); + DomainPointer virDomainCreateXML(ConnectionPointer virConnectPtr, + String xmlDesc, int flags); + DomainPointer virDomainDefineXML(ConnectionPointer virConnectPtr, + String xmlDesc); int virDomainDestroy(DomainPointer virDomainPtr); int virDomainDetachDevice(DomainPointer virDomainPtr, String deviceXML); - int virDomainDetachDeviceFlags(DomainPointer virDomainPtr, String deviceXML, int flags); + int virDomainDetachDeviceFlags(DomainPointer virDomainPtr, + String deviceXML, int flags); int virDomainFree(DomainPointer virDomainPtr); int virDomainGetAutostart(DomainPointer virDomainPtr, IntByReference value); - int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, virDomainBlockInfo info, int flags); + int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, + virDomainBlockInfo info, int flags); int virDomainGetID(DomainPointer virDomainPtr); int virDomainGetInfo(DomainPointer virDomainPtr, virDomainInfo vInfo); int virDomainGetJobInfo(DomainPointer virDomainPtr, virDomainJobInfo vInfo); @@ -296,39 +336,58 @@ int virDomainBlockPeek(DomainPointer virDomainPtr, String disk, long offset, Siz int virDomainGetMaxVcpus(DomainPointer virDomainPtr); String virDomainGetName(DomainPointer virDomainPtr); CString virDomainGetOSType(DomainPointer virDomainPtr); - int virDomainGetSchedulerParameters(DomainPointer virDomainPtr, virSchedParameter[] params, - IntByReference nparams); - CString virDomainGetSchedulerType(DomainPointer virDomainPtr, IntByReference nparams); - int virDomainGetSecurityLabel(DomainPointer virDomainPtr, SecurityLabel seclabel); + int virDomainGetSchedulerParameters(DomainPointer virDomainPtr, + virSchedParameter[] params, + IntByReference nparams); + CString virDomainGetSchedulerType(DomainPointer virDomainPtr, + IntByReference nparams); + int virDomainGetSecurityLabel(DomainPointer virDomainPtr, + SecurityLabel seclabel); int virDomainGetUUID(DomainPointer virDomainPtr, byte[] uuidString); int virDomainGetUUIDString(DomainPointer virDomainPtr, byte[] uuidString); - int virDomainGetVcpus(DomainPointer virDomainPtr, virVcpuInfo[] info, int maxInfo, byte[] cpumaps, int maplen); + int virDomainGetVcpus(DomainPointer virDomainPtr, virVcpuInfo[] info, + int maxInfo, byte[] cpumaps, int maplen); CString virDomainGetXMLDesc(DomainPointer virDomainPtr, int flags); int virDomainHasCurrentSnapshot(DomainPointer virDomainPtr, int flags); int virDomainHasManagedSaveImage(DomainPointer virDomainPtr, int flags); - int virDomainInterfaceStats(DomainPointer virDomainPtr, String path, virDomainInterfaceStats stats, SizeT size); + int virDomainInterfaceStats(DomainPointer virDomainPtr, String path, + virDomainInterfaceStats stats, SizeT size); int virDomainIsActive(DomainPointer virDomainPtr); int virDomainIsPersistent(DomainPointer virDomainPtr); int virDomainIsUpdated(DomainPointer virDomainPtr); DomainPointer virDomainLookupByID(ConnectionPointer virConnectPtr, int id); - DomainPointer virDomainLookupByName(ConnectionPointer virConnectPtr, String name); - DomainPointer virDomainLookupByUUID(ConnectionPointer virConnectPtr, byte[] uuidBytes); - DomainPointer virDomainLookupByUUIDString(ConnectionPointer virConnectPtr, String uuidstr); + DomainPointer virDomainLookupByName(ConnectionPointer virConnectPtr, + String name); + DomainPointer virDomainLookupByUUID(ConnectionPointer virConnectPtr, + byte[] uuidBytes); + DomainPointer virDomainLookupByUUIDString(ConnectionPointer virConnectPtr, + String uuidstr); int virDomainManagedSave(DomainPointer virDomainPtr, int flags); int virDomainManagedSaveRemove(DomainPointer virDomainPtr, int flags); - int virDomainMemoryPeek(DomainPointer virDomainPtr, long start, SizeT size, ByteBuffer buffer, int flags); - DomainPointer virDomainMigrate(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, - NativeLong flags, String dname, String uri, NativeLong bandwidth); - DomainPointer virDomainMigrate2(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, - String dxml, NativeLong flags, String dname, String uri, NativeLong bandwidth); - int virDomainMigrateSetMaxDowntime(DomainPointer virDomainPtr, long downtime, int flags); + int virDomainMemoryPeek(DomainPointer virDomainPtr, long start, SizeT size, + ByteBuffer buffer, int flags); + DomainPointer virDomainMigrate(DomainPointer virDomainPtr, + ConnectionPointer virConnectPtr, + NativeLong flags, String dname, + String uri, NativeLong bandwidth); + DomainPointer virDomainMigrate2(DomainPointer virDomainPtr, + ConnectionPointer virConnectPtr, String dxml, + NativeLong flags, String dname, String uri, + NativeLong bandwidth); + int virDomainMigrateSetMaxDowntime(DomainPointer virDomainPtr, + long downtime, int flags); int virDomainMigrateToURI(DomainPointer virDomainPtr, String duri, NativeLong flags, String dname, NativeLong bandwidth); - int virDomainMigrateToURI2(DomainPointer virDomainPtr, String dconnuri, String miguri, - String dxml, NativeLong flags, String dname, NativeLong bandwidth); - int virDomainMemoryStats(DomainPointer virDomainPtr, virDomainMemoryStats[] stats, int nr_stats, int flags); - int virDomainPinVcpu(DomainPointer virDomainPtr, int vcpu, byte[] cpumap, int maplen); - int virDomainPMSuspendForDuration(DomainPointer virDomainPtr, int target, long duration, int flags); + int virDomainMigrateToURI2(DomainPointer virDomainPtr, + String dconnuri, String miguri, + String dxml, NativeLong flags, + String dname, NativeLong bandwidth); + int virDomainMemoryStats(DomainPointer virDomainPtr, + virDomainMemoryStats[] stats, int nr_stats, int flags); + int virDomainPinVcpu(DomainPointer virDomainPtr, + int vcpu, byte[] cpumap, int maplen); + int virDomainPMSuspendForDuration(DomainPointer virDomainPtr, + int target, long duration, int flags); int virDomainPMWakeup(DomainPointer virDomainPtr, int flags); int virDomainReboot(DomainPointer virDomainPtr, int flags); int virDomainRef(DomainPointer virDomainPtr); @@ -337,16 +396,20 @@ int virDomainMigrateToURI2(DomainPointer virDomainPtr, String dconnuri, String m int virDomainRevertToSnapshot(DomainSnapshotPointer virDomainSnapshotPtr, int flags); int virDomainResume(DomainPointer virDomainPtr); int virDomainSave(DomainPointer virDomainPtr, String to); - int virDomainSendKey(DomainPointer virDomainPtr, int codeset, int holdtime, int[] keycodes, int nkeycodes, int flags); - CString virDomainScreenshot(DomainPointer virDomainPtr, StreamPointer virStreamPtr, int screen, int flags); + int virDomainSendKey(DomainPointer virDomainPtr, int codeset, int holdtime, + int[] keycodes, int nkeycodes, int flags); + CString virDomainScreenshot(DomainPointer virDomainPtr, + StreamPointer virStreamPtr, int screen, int flags); int virDomainSetAutostart(DomainPointer virDomainPtr, int autoStart); int virDomainSetMaxMemory(DomainPointer virDomainPtr, NativeLong maxMemory); int virDomainSetMemory(DomainPointer virDomainPtr, NativeLong maxMemory); - int virDomainSetSchedulerParameters(DomainPointer virDomainPtr, virSchedParameter[] params, int nparams); + int virDomainSetSchedulerParameters(DomainPointer virDomainPtr, + virSchedParameter[] params, int nparams); int virDomainSetVcpus(DomainPointer virDomainPtr, int nvcpus); int virDomainShutdown(DomainPointer virDomainPtr); int virDomainSuspend(DomainPointer virDomainPtr); - int virDomainUpdateDeviceFlags(DomainPointer virDomainPtr, String xml, int flags); + int virDomainUpdateDeviceFlags(DomainPointer virDomainPtr, + String xml, int flags); int virDomainUndefine(DomainPointer virDomainPtr); int virDomainUndefineFlags(DomainPointer virDomainPtr, int flags); @@ -372,33 +435,40 @@ int virDomainMigrateToURI2(DomainPointer virDomainPtr, String dconnuri, String m // Node functions int virNodeGetInfo(ConnectionPointer virConnectPtr, virNodeInfo virNodeInfo); - int virNodeGetCellsFreeMemory(ConnectionPointer virConnectPtr, LongByReference freeMems, int startCell, - int maxCells); + int virNodeGetCellsFreeMemory(ConnectionPointer virConnectPtr, + LongByReference freeMems, + int startCell, int maxCells); long virNodeGetFreeMemory(ConnectionPointer virConnectPtr); int virNodeGetSecurityModel(ConnectionPointer virConnectPtr, SecurityModel secmodel); // Node/Device functions - int virNodeNumOfDevices(ConnectionPointer virConnectPtr, String capabilityName, int flags); - int virNodeListDevices(ConnectionPointer virConnectPtr, String capabilityName, CString[] names, int maxnames, - int flags); + int virNodeNumOfDevices(ConnectionPointer virConnectPtr, + String capabilityName, int flags); + int virNodeListDevices(ConnectionPointer virConnectPtr, + String capabilityName, CString[] names, int maxnames, + int flags); DevicePointer virNodeDeviceLookupByName(ConnectionPointer virConnectPtr, String name); String virNodeDeviceGetName(DevicePointer virDevicePointer); String virNodeDeviceGetParent(DevicePointer virDevicePointer); int virNodeDeviceNumOfCaps(DevicePointer virDevicePointer); - int virNodeDeviceListCaps(DevicePointer virDevicePointer, CString[] names, int maxNames); + int virNodeDeviceListCaps(DevicePointer virDevicePointer, + CString[] names, int maxNames); CString virNodeDeviceGetXMLDesc(DevicePointer virDevicePointer, int flags); int virNodeDeviceFree(DevicePointer virDevicePointer); int virNodeDeviceDettach(DevicePointer virDevicePointer); int virNodeDeviceReAttach(DevicePointer virDevicePointer); int virNodeDeviceReset(DevicePointer virDevicePointer); - DevicePointer virNodeDeviceCreateXML(ConnectionPointer virConnectPtr, String xml, int flags); + DevicePointer virNodeDeviceCreateXML(ConnectionPointer virConnectPtr, + String xml, int flags); int virNodeDeviceDestroy(DevicePointer virDevicePointer); // Storage Pool int virStoragePoolBuild(StoragePoolPointer storagePoolPtr, int flags); int virStoragePoolCreate(StoragePoolPointer storagePoolPtr, int flags); - StoragePoolPointer virStoragePoolCreateXML(ConnectionPointer virConnectPtr, String xml, int flags); - StoragePoolPointer virStoragePoolDefineXML(ConnectionPointer virConnectPtr, String xml, int flags); + StoragePoolPointer virStoragePoolCreateXML(ConnectionPointer virConnectPtr, + String xml, int flags); + StoragePoolPointer virStoragePoolDefineXML(ConnectionPointer virConnectPtr, + String xml, int flags); int virStoragePoolDelete(StoragePoolPointer storagePoolPtr, int flags); int virStoragePoolDestroy(StoragePoolPointer storagePoolPtr); int virStoragePoolFree(StoragePoolPointer storagePoolPtr); @@ -408,12 +478,16 @@ int virNodeListDevices(ConnectionPointer virConnectPtr, String capabilityName, C int virStoragePoolGetUUID(StoragePoolPointer storagePoolPtr, byte[] uuidString); int virStoragePoolGetUUIDString(StoragePoolPointer storagePoolPtr, byte[] uuidString); CString virStoragePoolGetXMLDesc(StoragePoolPointer storagePoolPtr, int flags); - int virStoragePoolListVolumes(StoragePoolPointer storagePoolPtr, CString[] names, int maxnames); + int virStoragePoolListVolumes(StoragePoolPointer storagePoolPtr, + CString[] names, int maxnames); int virStoragePoolIsActive(StoragePoolPointer storagePoolPtr); int virStoragePoolIsPersistent(StoragePoolPointer storagePoolPtr); - StoragePoolPointer virStoragePoolLookupByName(ConnectionPointer virConnectPtr, String name); - StoragePoolPointer virStoragePoolLookupByUUID(ConnectionPointer virConnectPtr, byte[] uuidBytes); - StoragePoolPointer virStoragePoolLookupByUUIDString(ConnectionPointer virConnectPtr, String uuidstr); + StoragePoolPointer virStoragePoolLookupByName(ConnectionPointer virConnectPtr, + String name); + StoragePoolPointer virStoragePoolLookupByUUID(ConnectionPointer virConnectPtr, + byte[] uuidBytes); + StoragePoolPointer virStoragePoolLookupByUUIDString(ConnectionPointer virConnectPtr, + String uuidstr); StoragePoolPointer virStoragePoolLookupByVolume(StorageVolPointer storageVolPtr); int virStoragePoolNumOfVolumes(StoragePoolPointer storagePoolPtr); int virStoragePoolRefresh(StoragePoolPointer storagePoolPtr, int flags); @@ -421,9 +495,12 @@ int virNodeListDevices(ConnectionPointer virConnectPtr, String capabilityName, C int virStoragePoolUndefine(StoragePoolPointer storagePoolPtr); // Storage Vol - StorageVolPointer virStorageVolCreateXML(StoragePoolPointer storagePoolPtr, String xml, int flags); - StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, String xml, - StorageVolPointer cloneVolume, int flags); + StorageVolPointer virStorageVolCreateXML(StoragePoolPointer storagePoolPtr, + String xml, int flags); + StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, + String xml, + StorageVolPointer cloneVolume, + int flags); int virStorageVolDelete(StorageVolPointer storageVolPtr, int flags); int virStorageVolFree(StorageVolPointer storageVolPtr); int virStorageVolGetInfo(StorageVolPointer storageVolPtr, virStorageVolInfo info); @@ -431,79 +508,107 @@ StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, String virStorageVolGetName(StorageVolPointer storageVolPtr); CString virStorageVolGetPath(StorageVolPointer storageVolPtr); CString virStorageVolGetXMLDesc(StorageVolPointer storageVolPtr, int flags); - StorageVolPointer virStorageVolLookupByKey(ConnectionPointer virConnectPtr, String name); - StorageVolPointer virStorageVolLookupByName(StoragePoolPointer storagePoolPtr, String name); - StorageVolPointer virStorageVolLookupByPath(ConnectionPointer virConnectPtr, String path); + StorageVolPointer virStorageVolLookupByKey(ConnectionPointer virConnectPtr, + String name); + StorageVolPointer virStorageVolLookupByName(StoragePoolPointer storagePoolPtr, + String name); + StorageVolPointer virStorageVolLookupByPath(ConnectionPointer virConnectPtr, + String path); int virStorageVolWipe(StorageVolPointer storageVolPtr, int flags); - int virStorageVolResize(StorageVolPointer storageVolPtr, long capacity, int flags); + int virStorageVolResize(StorageVolPointer storageVolPtr, + long capacity, int flags); // Interface Methods int virInterfaceCreate(InterfacePointer virDevicePointer, int flags); - InterfacePointer virInterfaceDefineXML(ConnectionPointer virConnectPtr, String xml, int flags); + InterfacePointer virInterfaceDefineXML(ConnectionPointer virConnectPtr, + String xml, int flags); int virInterfaceDestroy(InterfacePointer virDevicePointer, int flags); int virInterfaceFree(InterfacePointer virDevicePointer); String virInterfaceGetName(InterfacePointer virInterfacePtr); String virInterfaceGetMACString(InterfacePointer virInterfacePtr); CString virInterfaceGetXMLDesc(InterfacePointer virInterfacePtr, int flags); int virInterfaceIsActive(InterfacePointer virDevicePointer); - InterfacePointer virInterfaceLookupByMACString(ConnectionPointer virConnectPtr, String mac); - InterfacePointer virInterfaceLookupByName(ConnectionPointer virConnectPtr, String name); + InterfacePointer virInterfaceLookupByMACString(ConnectionPointer virConnectPtr, + String mac); + InterfacePointer virInterfaceLookupByName(ConnectionPointer virConnectPtr, + String name); int virInterfaceUndefine(InterfacePointer virDevicePointer); // Secret Methods int virSecretFree(SecretPointer virSecretPtr); - SecretPointer virSecretDefineXML(ConnectionPointer virConnectPtr, String xml, int flags); + SecretPointer virSecretDefineXML(ConnectionPointer virConnectPtr, + String xml, int flags); int virSecretGetUUID(SecretPointer virSecretPtr, byte[] uuidString); int virSecretGetUUIDString(SecretPointer virSecretPtr, byte[] uuidString); String virSecretGetUsageID(SecretPointer virSecretPtr); int virSecretGetUsageType(SecretPointer virSecretPtr); - Pointer virSecretGetValue(SecretPointer virSecretPtr, SizeTByReference value_size, int flags); + Pointer virSecretGetValue(SecretPointer virSecretPtr, + SizeTByReference value_size, int flags); CString virSecretGetXMLDesc(SecretPointer virSecretPtr, int flags); - SecretPointer virSecretLookupByUsage(ConnectionPointer virConnectPtr, int usageType, String usageID); - SecretPointer virSecretLookupByUUID(ConnectionPointer virConnectPtr, byte[] uuidBytes); - SecretPointer virSecretLookupByUUIDString(ConnectionPointer virConnectPtr, String uuidstr); - int virSecretSetValue(SecretPointer virSecretPtr, String value, SizeT value_size, int flags); - int virSecretSetValue(SecretPointer virSecretPtr, byte[] value, SizeT value_size, int flags); + SecretPointer virSecretLookupByUsage(ConnectionPointer virConnectPtr, + int usageType, String usageID); + SecretPointer virSecretLookupByUUID(ConnectionPointer virConnectPtr, + byte[] uuidBytes); + SecretPointer virSecretLookupByUUIDString(ConnectionPointer virConnectPtr, + String uuidstr); + int virSecretSetValue(SecretPointer virSecretPtr, + String value, SizeT value_size, int flags); + int virSecretSetValue(SecretPointer virSecretPtr, + byte[] value, SizeT value_size, int flags); int virSecretUndefine(SecretPointer virSecretPtr); //Stream Methods int virStreamAbort(StreamPointer virStreamPtr); - int virStreamEventAddCallback(StreamPointer virStreamPtr, int events, Libvirt.VirStreamEventCallback cb, - Pointer opaque, Libvirt.VirFreeCallback ff); + int virStreamEventAddCallback(StreamPointer virStreamPtr, int events, + Libvirt.VirStreamEventCallback cb, + Pointer opaque, Libvirt.VirFreeCallback ff); int virStreamEventUpdateCallback(StreamPointer virStreamPtr, int events); int virStreamEventRemoveCallback(StreamPointer virStreamPtr); int virStreamFinish(StreamPointer virStreamPtr); int virStreamFree(StreamPointer virStreamPtr); StreamPointer virStreamNew(ConnectionPointer virConnectPtr, int flags); int virStreamSend(StreamPointer virStreamPtr, ByteBuffer data, SizeT size); - int virStreamSendAll(StreamPointer virStreamPtr, Libvirt.VirStreamSourceFunc handler, Pointer opaque); + int virStreamSendAll(StreamPointer virStreamPtr, + Libvirt.VirStreamSourceFunc handler, Pointer opaque); int virStreamRecv(StreamPointer virStreamPtr, ByteBuffer data, SizeT length); - int virStreamRecvAll(StreamPointer virStreamPtr, Libvirt.VirStreamSinkFunc handler, Pointer opaque); + int virStreamRecvAll(StreamPointer virStreamPtr, + Libvirt.VirStreamSinkFunc handler, Pointer opaque); //DomainSnapshot Methods - DomainSnapshotPointer virDomainSnapshotCreateXML(DomainPointer virDomainPtr, String xmlDesc, int flags); - DomainSnapshotPointer virDomainSnapshotCurrent(DomainPointer virDomainPtr, int flags); - int virDomainSnapshotDelete(DomainSnapshotPointer virDomainSnapshotPtr, int flags); - CString virDomainSnapshotGetXMLDesc(DomainSnapshotPointer virDomainSnapshotPtr, int flags); + DomainSnapshotPointer virDomainSnapshotCreateXML(DomainPointer virDomainPtr, + String xmlDesc, int flags); + DomainSnapshotPointer virDomainSnapshotCurrent(DomainPointer virDomainPtr, + int flags); + int virDomainSnapshotDelete(DomainSnapshotPointer virDomainSnapshotPtr, + int flags); + CString virDomainSnapshotGetXMLDesc(DomainSnapshotPointer virDomainSnapshotPtr, + int flags); int virDomainSnapshotFree(DomainSnapshotPointer virDomainSnapshotPtr); - int virDomainSnapshotListNames(DomainPointer virDomainPtr, CString[] names, int nameslen, int flags); - DomainSnapshotPointer virDomainSnapshotLookupByName(DomainPointer virDomainPtr, String name, int flags); + int virDomainSnapshotListNames(DomainPointer virDomainPtr, + CString[] names, int nameslen, int flags); + DomainSnapshotPointer virDomainSnapshotLookupByName(DomainPointer virDomainPtr, + String name, int flags); int virDomainSnapshotNum(DomainPointer virDomainPtr, int flags); // Network Filter Methods CString virNWFilterGetXMLDesc(NetworkFilterPointer virNWFilterPtr, int flags); - NetworkFilterPointer virNWFilterDefineXML(ConnectionPointer virConnectPtr, String xml); + NetworkFilterPointer virNWFilterDefineXML(ConnectionPointer virConnectPtr, + String xml); int virNWFilterFree(NetworkFilterPointer virNWFilterPtr); - NetworkFilterPointer virNWFilterLookupByName(ConnectionPointer virConnectPtr, String name); - NetworkFilterPointer virNWFilterLookupByUUID(ConnectionPointer virConnectPtr, byte[] uuidBytes); - NetworkFilterPointer virNWFilterLookupByUUIDString(ConnectionPointer virConnectPtr, String uuidstr); + NetworkFilterPointer virNWFilterLookupByName(ConnectionPointer virConnectPtr, + String name); + NetworkFilterPointer virNWFilterLookupByUUID(ConnectionPointer virConnectPtr, + byte[] uuidBytes); + NetworkFilterPointer virNWFilterLookupByUUIDString(ConnectionPointer virConnectPtr, + String uuidstr); String virNWFilterGetName(NetworkFilterPointer virNWFilterPtr); int virNWFilterGetUUID(NetworkFilterPointer virNWFilterPtr, byte[] uuidString); int virNWFilterGetUUIDString(NetworkFilterPointer virNWFilterPtr, byte[] uuidString); int virNWFilterUndefine(NetworkFilterPointer virNWFilterPtr); // Event functions - int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, Pointer opaque, Pointer ff); + int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, + Pointer opaque, Pointer ff); int virEventRemoveTimeout(int timer); void virEventUpdateTimeout(int timer, int timeout); } From 99d008ca6b331dbdfec23e40bf79b3eb83282026 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:07 +0200 Subject: [PATCH 027/114] Add missing braces If statements require braces according to the Java styleguide. Add the missing braces. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 52 ++++++++++++++------- src/main/java/org/libvirt/Domain.java | 30 ++++++++---- src/main/java/org/libvirt/ErrorHandler.java | 25 ++++++++-- src/main/java/org/libvirt/Library.java | 13 ++++-- src/main/java/org/libvirt/Stream.java | 37 +++++++++++---- src/main/java/org/libvirt/jna/CString.java | 12 +++-- 6 files changed, 121 insertions(+), 48 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 4003ba0..702489b 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -216,17 +216,24 @@ public int hashCode() { */ @Override public boolean equals(final Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + + if (obj == null) { return false; - if (!(obj instanceof Connect)) + } + + if (!(obj instanceof Connect)) { return false; + } + Connect other = (Connect) obj; - if (VCP == null) + if (VCP == null) { return (other.VCP == null); - else if (VCP.equals(other.VCP)) + } else if (VCP.equals(other.VCP)) { return true; + } try { return getURI().equals(other.getURI()); @@ -391,7 +398,9 @@ public int close() throws LibvirtException { // if the connection has been closed (i.e. the reference count is // down to zero), forget about the registered close function - if (success == 0) registeredCloseFunc = null; + if (success == 0) { + registeredCloseFunc = null; + } // If leave an invalid pointer dangling around JVM crashes and burns // if someone tries to call a method on us @@ -544,17 +553,21 @@ public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { */ private void domainEventDeregister(final int eventID, final EventListener l) throws LibvirtException { - if (l == null) + if (l == null) { return; + } Map handlers = eventListeners[eventID]; - if (handlers == null) return; + if (handlers == null) { + return; + } RegisteredEventListener listener = handlers.remove(l); - if (listener != null) + if (listener != null) { processError(libvirt.virConnectDomainEventDeregisterAny(VCP, listener.callbackId)); + } } private void domainEventRegister(final Domain domain, final int eventID, @@ -583,8 +596,9 @@ private void domainEventRegister(final Domain domain, final int eventID, void domainEventRegister(final Domain domain, final IOErrorListener cb) throws LibvirtException { - if (cb == null) + if (cb == null) { throw new IllegalArgumentException("IOError callback cannot be null"); + } Libvirt.VirConnectDomainEventIOErrorCallback virCB = new Libvirt.VirConnectDomainEventIOErrorCallback() { @@ -629,8 +643,9 @@ public void addIOErrorListener(final IOErrorListener l) throws LibvirtException void domainEventRegister(final Domain domain, final RebootListener cb) throws LibvirtException { - if (cb == null) + if (cb == null) { throw new IllegalArgumentException("RebootCallback cannot be null"); + } Libvirt.VirConnectDomainEventGenericCallback virCB = new Libvirt.VirConnectDomainEventGenericCallback() { @@ -654,8 +669,9 @@ public void eventCallback(final ConnectionPointer virConnectPtr, void domainEventRegister(final Domain domain, final LifecycleListener cb) throws LibvirtException { - if (cb == null) + if (cb == null) { throw new IllegalArgumentException("LifecycleCallback cannot be null"); + } Libvirt.VirConnectDomainEventCallback virCB = new Libvirt.VirConnectDomainEventCallback() { @@ -708,8 +724,9 @@ public void addLifecycleListener(final LifecycleListener l) void domainEventRegister(final Domain domain, final PMWakeupListener cb) throws LibvirtException { - if (cb == null) + if (cb == null) { throw new IllegalArgumentException("PMWakeupCallback cannot be null"); + } Libvirt.VirDomainEventCallback virCB = new Libvirt.VirConnectDomainEventPMChangeCallback() { @@ -734,8 +751,9 @@ public void eventCallback(final ConnectionPointer virConnectPtr, void domainEventRegister(final Domain domain, final PMSuspendListener cb) throws LibvirtException { - if (cb == null) + if (cb == null) { throw new IllegalArgumentException("PMSuspendCallback cannot be null"); + } Libvirt.VirDomainEventCallback virCB = new Libvirt.VirConnectDomainEventPMChangeCallback() { @@ -1109,11 +1127,11 @@ public SecurityModel getSecurityModel() throws LibvirtException { processError(libvirt.virNodeGetSecurityModel(this.VCP, secmodel)); - if (secmodel.model[0] == 0) + if (secmodel.model[0] == 0) { return null; - else + } else { return new SecurityModel(secmodel); - + } } /** diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 07d3e71..2d49aca 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -179,22 +179,33 @@ public int hashCode() { */ @Override public boolean equals(final Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + + if (obj == null) { return false; - if (!(obj instanceof Domain)) + } + + if (!(obj instanceof Domain)) { return false; + } + Domain other = (Domain) obj; // return false when this domain belongs to // a different hypervisor than the other - if (!this.virConnect.equals(other.virConnect)) + if (!this.virConnect.equals(other.virConnect)) { return false; + } - if (VDP == null) return (other.VDP == null); + if (VDP == null) { + return (other.VDP == null); + } - if (VDP.equals(other.VDP)) return true; + if (VDP.equals(other.VDP)) { + return true; + } try { return Arrays.equals(getUUID(), other.getUUID()); @@ -661,10 +672,11 @@ public SecurityLabel getSecurityLabel() throws LibvirtException { processError(libvirt.virDomainGetSecurityLabel(this.VDP, seclabel)); - if (seclabel.label[0] == 0) + if (seclabel.label[0] == 0) { return null; - else + } else { return new SecurityLabel(seclabel); + } } /** @@ -1312,7 +1324,7 @@ public void reset() throws LibvirtException { * @throws LibvirtException */ public int revertToSnapshot(final DomainSnapshot snapshot) - throws LibvirtException { + throws LibvirtException { return processError(libvirt.virDomainRevertToSnapshot(snapshot.VDSP, 0)); } diff --git a/src/main/java/org/libvirt/ErrorHandler.java b/src/main/java/org/libvirt/ErrorHandler.java index d143eb9..2e52ac4 100644 --- a/src/main/java/org/libvirt/ErrorHandler.java +++ b/src/main/java/org/libvirt/ErrorHandler.java @@ -37,7 +37,10 @@ private static final void processError() throws LibvirtException { * @throws LibvirtException */ static final int processError(final int ret) throws LibvirtException { - if (ret == -1) processError(); + if (ret == -1) { + processError(); + } + return ret; } @@ -49,22 +52,34 @@ static final int processError(final int ret) throws LibvirtException { * @throws LibvirtException */ static final T processError(final T arg) throws LibvirtException { - if (arg == null) processError(); + if (arg == null) { + processError(); + } + return arg; } static final Pointer processError(final Pointer arg) throws LibvirtException { - if (arg == null) processError(); + if (arg == null) { + processError(); + } + return arg; } static final String processError(final String str) throws LibvirtException { - if (str == null) processError(); + if (str == null) { + processError(); + } + return str; } static final long processErrorIfZero(final long ret) throws LibvirtException { - if (ret == 0) processError(); + if (ret == 0) { + processError(); + } + return ret; } } diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index 7ffc8eb..3722a9a 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -94,7 +94,9 @@ static String[] toStringArray(final CString[] cstrarr, final int size) { return result; } catch (RuntimeException e) { for (; i < size; ++i) { - if (cstrarr[i] != null) cstrarr[i].free(); + if (cstrarr[i] != null) { + cstrarr[i].free(); + } } throw e; } @@ -170,8 +172,9 @@ public static void runEventLoop() throws LibvirtException, InterruptedException runLoop.set(true); do { processEvent(); - if (Thread.interrupted()) + if (Thread.interrupted()) { throw new InterruptedException(); + } } while (runLoop.get()); } @@ -187,8 +190,9 @@ public static void stopEventLoop() throws LibvirtException { if (runLoop.getAndSet(false)) { // fire the timer immediately int timer = timerID.get(); - if (timer >= 0) + if (timer >= 0) { libvirt.virEventUpdateTimeout(timer, 0); + } } } @@ -202,8 +206,9 @@ public static void stopEventLoop() throws LibvirtException { * @throws IllegalArgumentException if {@code ordinal} is negative */ static > T getConstant(final Class c, final int ordinal) { - if (ordinal < 0) + if (ordinal < 0) { throw new IllegalArgumentException("ordinal must be >= 0"); + } T[] a = c.getEnumConstants(); diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 842f8ac..45f0f6d 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -200,9 +200,17 @@ protected int receive(final ByteBuffer buffer) throws LibvirtException { @Override public int read(final ByteBuffer buffer) throws IOException { - if (!isOpen()) throw new ClosedChannelException(); - if (!isReadable()) throw new NonReadableChannelException(); - if (isEOF()) return -1; + if (!isOpen()) { + throw new ClosedChannelException(); + } + + if (!isReadable()) { + throw new NonReadableChannelException(); + } + + if (isEOF()) { + return -1; + } try { int ret = receive(buffer); @@ -225,8 +233,13 @@ public int read(final ByteBuffer buffer) throws IOException { @Override public int write(final ByteBuffer buffer) throws IOException { - if (!isOpen()) throw new ClosedChannelException(); - if (!isWritable()) throw new NonWritableChannelException(); + if (!isOpen()) { + throw new ClosedChannelException(); + } + + if (!isWritable()) { + throw new NonWritableChannelException(); + } int pos = buffer.position(); @@ -234,8 +247,9 @@ public int write(final ByteBuffer buffer) throws IOException { while (buffer.hasRemaining()) { int ret = send(buffer); - if (ret == -2) + if (ret == -2) { throw new UnsupportedOperationException("non-blocking I/O stream not yet supported"); + } } return buffer.position() - pos; } catch (LibvirtException e) { @@ -245,8 +259,11 @@ public int write(final ByteBuffer buffer) throws IOException { protected void closeStream() throws LibvirtException { if (isOpen() && !isEOF()) { - if (isWritable()) finish(); - else if (isReadable()) abort(); + if (isWritable()) { + finish(); + } else if (isReadable()) { + abort(); + } } this.state = CLOSED; } @@ -275,7 +292,7 @@ public boolean isOpen() { * @throws LibvirtException */ public int receiveAll(final Libvirt.VirStreamSinkFunc handler) - throws LibvirtException { + throws LibvirtException { return processError(libvirt.virStreamRecvAll(VSP, handler, null)); } @@ -322,7 +339,7 @@ protected int send(final ByteBuffer buffer) throws LibvirtException { * @throws LibvirtException */ public int sendAll(final Libvirt.VirStreamSourceFunc handler) - throws LibvirtException { + throws LibvirtException { return processError(libvirt.virStreamSendAll(VSP, handler, null)); } diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index f99466b..20f3ca5 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -39,7 +39,9 @@ public String toString() { if (string == null) { final Pointer ptr = getPointer(); - if (ptr == null) return "(null)"; + if (ptr == null) { + return "(null)"; + } try { // N.B. could be replaced with Pointer.getString(0L, "UTF-8") @@ -65,7 +67,9 @@ public String toString() { @Override public CString fromNative(final Object nativeValue, final FromNativeContext context) { - if (nativeValue == null) return null; + if (nativeValue == null) { + return null; + } return new CString((Pointer) nativeValue); } @@ -82,6 +86,8 @@ private void free(final Pointer ptr) { */ public void free() { final Pointer ptr = getPointer(); - if (ptr != null) free(ptr); + if (ptr != null) { + free(ptr); + } } } From 668570e61028d73a94ae88519daef7a8240e4195 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:08 +0200 Subject: [PATCH 028/114] Use Java style brackets Instead of using C style brackets convert to Java style. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 2 +- src/main/java/org/libvirt/ConnectAuth.java | 2 +- src/main/java/org/libvirt/event/IOErrorAction.java | 2 +- src/main/java/org/libvirt/jna/Libvirt.java | 6 +++--- src/main/java/org/libvirt/jna/virNodeInfo.java | 2 +- src/main/java/org/libvirt/jna/virSchedParameter.java | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 702489b..9b00b61 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -143,7 +143,7 @@ public static long connectionVersion(final Connect conn) { /** * Helper function to convert bytes into ints for the UUID calls */ - public static int[] convertUUIDBytes(final byte bytes[]) { + public static int[] convertUUIDBytes(final byte[] bytes) { int[] returnValue = new int[Libvirt.VIR_UUID_BUFLEN]; for (int x = 0; x < Libvirt.VIR_UUID_BUFLEN; x++) { // For some reason, the higher bytes come back wierd. diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index c2a349b..0021565 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -168,7 +168,7 @@ public int mapToInt() { /** * List of supported ConnectCredential.CredentialType values */ - public CredentialType credType[]; + public CredentialType[] credType; public int authCallback(final virConnectCredential cred, final int ncred, final Pointer cbdata) { diff --git a/src/main/java/org/libvirt/event/IOErrorAction.java b/src/main/java/org/libvirt/event/IOErrorAction.java index bfda1de..97b82a8 100644 --- a/src/main/java/org/libvirt/event/IOErrorAction.java +++ b/src/main/java/org/libvirt/event/IOErrorAction.java @@ -21,7 +21,7 @@ public enum IOErrorAction { */ UNKNOWN; - private static final IOErrorAction vals[] = IOErrorAction.values(); + private static final IOErrorAction[] vals = IOErrorAction.values(); static { // make sure that the enum constants have the correct diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 075cf65..9805b30 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -170,7 +170,7 @@ static class SecurityLabel extends Structure { private static final int VIR_SECURITY_LABEL_BUFLEN = 4096 + 1; private static final List fields = Arrays.asList("label", "enforcing"); - public byte label[] = new byte[VIR_SECURITY_LABEL_BUFLEN]; + public byte[] label = new byte[VIR_SECURITY_LABEL_BUFLEN]; public int enforcing; @Override @@ -185,8 +185,8 @@ static class SecurityModel extends Structure { private static final List fields = Arrays.asList("model", "doi"); - public byte model[] = new byte[VIR_SECURITY_MODEL_BUFLEN]; - public byte doi[] = new byte[VIR_SECURITY_DOI_BUFLEN]; + public byte[] model = new byte[VIR_SECURITY_MODEL_BUFLEN]; + public byte[] doi = new byte[VIR_SECURITY_DOI_BUFLEN]; @Override protected List getFieldOrder() { diff --git a/src/main/java/org/libvirt/jna/virNodeInfo.java b/src/main/java/org/libvirt/jna/virNodeInfo.java index d59714b..1f8876d 100644 --- a/src/main/java/org/libvirt/jna/virNodeInfo.java +++ b/src/main/java/org/libvirt/jna/virNodeInfo.java @@ -16,7 +16,7 @@ public static class ByReference extends virNodeInfo implements Structure.ByRefer public static class ByValue extends virNodeInfo implements Structure.ByValue { }; - public byte model[] = new byte[32]; + public byte[] model = new byte[32]; public NativeLong memory; public int cpus; public int mhz; diff --git a/src/main/java/org/libvirt/jna/virSchedParameter.java b/src/main/java/org/libvirt/jna/virSchedParameter.java index f3787a9..e08712d 100644 --- a/src/main/java/org/libvirt/jna/virSchedParameter.java +++ b/src/main/java/org/libvirt/jna/virSchedParameter.java @@ -9,7 +9,7 @@ * JNA mapping for the virSchedParameter structure */ public class virSchedParameter extends Structure { - public byte field[] = new byte[Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH]; + public byte[] field = new byte[Libvirt.VIR_DOMAIN_SCHED_FIELD_LENGTH]; public int type; public virSchedParameterValue value; From 09e64e3e106046532d804c6508da311629595fac Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:09 +0200 Subject: [PATCH 029/114] Remove redundant modifier Interfaces are abstract by definition so the abstract modifier on the interface is redundant. Classes inside of interfaces are public and static by definition, so the public and static modifiers on the inner classes are redundant. Fields in interfaces and annotations are automatically public, static and final, so these modifiers are redundant as well. Remove redundant modifier and use a common modifier order. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/BitFlags.java | 4 +- src/main/java/org/libvirt/Connect.java | 32 ++-- src/main/java/org/libvirt/ConnectAuth.java | 2 +- src/main/java/org/libvirt/DomainInfo.java | 2 +- src/main/java/org/libvirt/Error.java | 14 +- src/main/java/org/libvirt/ErrorHandler.java | 2 +- src/main/java/org/libvirt/Library.java | 6 +- .../java/org/libvirt/StoragePoolInfo.java | 2 +- src/main/java/org/libvirt/StorageVol.java | 2 +- src/main/java/org/libvirt/StorageVolInfo.java | 2 +- src/main/java/org/libvirt/Stream.java | 10 +- src/main/java/org/libvirt/VcpuInfo.java | 2 +- src/main/java/org/libvirt/jna/CString.java | 16 +- src/main/java/org/libvirt/jna/Libvirt.java | 148 +++++++++--------- 14 files changed, 122 insertions(+), 122 deletions(-) diff --git a/src/main/java/org/libvirt/BitFlags.java b/src/main/java/org/libvirt/BitFlags.java index 22488a2..196142b 100644 --- a/src/main/java/org/libvirt/BitFlags.java +++ b/src/main/java/org/libvirt/BitFlags.java @@ -6,7 +6,7 @@ public interface BitFlags { final class BitFlagsHelper { // bitwise-OR - final static int OR(final BitFlags[] flags) { + static int OR(final BitFlags[] flags) { int ret = 0; for (BitFlags f: flags) { ret |= f.getBit(); @@ -14,5 +14,5 @@ final static int OR(final BitFlags[] flags) { return ret; } - final static BitFlags[] NONE = {}; + static final BitFlags[] NONE = {}; } diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 9b00b61..498a8a7 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -54,8 +54,8 @@ private static final class RegisteredEventListener { @SuppressWarnings("unused") public final Libvirt.VirDomainEventCallback callback; - public RegisteredEventListener(final Libvirt.VirDomainEventCallback callback, - final int callbackId) { + RegisteredEventListener(final Libvirt.VirDomainEventCallback callback, + final int callbackId) { this.callback = callback; this.callbackId = callbackId; } @@ -87,20 +87,20 @@ public void callback(final ConnectionPointer VCP, final int reason, * Event IDs. */ private interface DomainEventID { - static final int LIFECYCLE = 0; - static final int REBOOT = 1; - static final int RTC_CHANGE = 2; - static final int WATCHDOG = 3; - static final int IO_ERROR = 4; - static final int GRAPHICS = 5; - static final int IO_ERROR_REASON = 6; - static final int CONTROL_ERROR = 7; - static final int BLOCK_JOB = 8; - static final int DISK_CHANGE = 9; - static final int TRAY_CHANGE = 10; - static final int PMWAKEUP = 11; - static final int PMSUSPEND = 12; - static final int LAST = 13; + int LIFECYCLE = 0; + int REBOOT = 1; + int RTC_CHANGE = 2; + int WATCHDOG = 3; + int IO_ERROR = 4; + int GRAPHICS = 5; + int IO_ERROR_REASON = 6; + int CONTROL_ERROR = 7; + int BLOCK_JOB = 8; + int DISK_CHANGE = 9; + int TRAY_CHANGE = 10; + int PMWAKEUP = 11; + int PMSUSPEND = 12; + int LAST = 13; } public enum OpenFlags implements BitFlags { diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index 0021565..361e30d 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -88,7 +88,7 @@ public static class Credential { * @author stoty * */ - public static enum CredentialType { + public enum CredentialType { /** * Fake credential so that the ordinal value equls the c value. diff --git a/src/main/java/org/libvirt/DomainInfo.java b/src/main/java/org/libvirt/DomainInfo.java index 7f71ab5..e46c4d3 100644 --- a/src/main/java/org/libvirt/DomainInfo.java +++ b/src/main/java/org/libvirt/DomainInfo.java @@ -13,7 +13,7 @@ public class DomainInfo { * @author stoty * */ - public static enum DomainState { + public enum DomainState { /** * no state */ diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index 643e46d..c44c6fd 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -17,14 +17,14 @@ public class Error implements Serializable { * @return n-th item of {@code values} when {@code n < * values.length}, otherwise the last item of {@code values}. */ - private static final T safeElementAt(final int n, final T[] values) { + private static T safeElementAt(final int n, final T[] values) { assert (n >= 0 && values.length > 0); int idx = Math.min(n, values.length - 1); return values[idx]; } - public static enum ErrorDomain { + public enum ErrorDomain { VIR_FROM_NONE, /** Error at Xen hypervisor layer */ VIR_FROM_XEN, @@ -124,12 +124,12 @@ public static enum ErrorDomain { /** unknown error domain */ VIR_FROM_UNKNOWN; // must be the last entry! - protected static final ErrorDomain wrap(final int value) { + protected static ErrorDomain wrap(final int value) { return safeElementAt(value, values()); } } - public static enum ErrorLevel { + public enum ErrorLevel { VIR_ERR_NONE, /** * A simple warning @@ -142,12 +142,12 @@ public static enum ErrorLevel { VIR_ERR_UNKNOWN; /* must be the last entry! */ - protected static final ErrorLevel wrap(final int value) { + protected static ErrorLevel wrap(final int value) { return safeElementAt(value, values()); } } - public static enum ErrorNumber { + public enum ErrorNumber { VIR_ERR_OK, /** internal error */ VIR_ERR_INTERNAL_ERROR, @@ -313,7 +313,7 @@ public static enum ErrorNumber { /** unknown error */ VIR_ERR_UNKNOWN; // must be the last entry! - protected static final ErrorNumber wrap(final int value) { + protected static ErrorNumber wrap(final int value) { return safeElementAt(value, values()); } } diff --git a/src/main/java/org/libvirt/ErrorHandler.java b/src/main/java/org/libvirt/ErrorHandler.java index 2e52ac4..99d726e 100644 --- a/src/main/java/org/libvirt/ErrorHandler.java +++ b/src/main/java/org/libvirt/ErrorHandler.java @@ -15,7 +15,7 @@ */ public class ErrorHandler { - private static final void processError() throws LibvirtException { + private static void processError() throws LibvirtException { virError vError = libvirt.virGetLastError(); if (vError != null) { Error error = new Error(vError); diff --git a/src/main/java/org/libvirt/Library.java b/src/main/java/org/libvirt/Library.java index 3722a9a..73de760 100644 --- a/src/main/java/org/libvirt/Library.java +++ b/src/main/java/org/libvirt/Library.java @@ -33,12 +33,12 @@ public void tick(final int id, final Pointer p) { } }; - final static Libvirt libvirt; - final static LibvirtQemu libvirtQemu; + static final Libvirt libvirt; + static final LibvirtQemu libvirtQemu; // an empty string array constant // prefer this over creating empty arrays dynamically. - final static String[] NO_STRINGS = {}; + static final String[] NO_STRINGS = {}; // Load the native part static { diff --git a/src/main/java/org/libvirt/StoragePoolInfo.java b/src/main/java/org/libvirt/StoragePoolInfo.java index 85375af..308f561 100644 --- a/src/main/java/org/libvirt/StoragePoolInfo.java +++ b/src/main/java/org/libvirt/StoragePoolInfo.java @@ -7,7 +7,7 @@ */ public class StoragePoolInfo { - public static enum StoragePoolState { + public enum StoragePoolState { /** * Not running */ diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index 19bc274..c648022 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -39,7 +39,7 @@ public static final class ResizeFlags { public static final int SHRINK = 4; } - public static enum Type { + public enum Type { /** * Regular file based volumes */ diff --git a/src/main/java/org/libvirt/StorageVolInfo.java b/src/main/java/org/libvirt/StorageVolInfo.java index 315751a..13e5fa9 100644 --- a/src/main/java/org/libvirt/StorageVolInfo.java +++ b/src/main/java/org/libvirt/StorageVolInfo.java @@ -7,7 +7,7 @@ */ public class StorageVolInfo { - public static enum VirStorageVolType { + public enum VirStorageVolType { /** * Regular file based volumes */ diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 45f0f6d..6c4d627 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -54,11 +54,11 @@ public class Stream implements ByteChannel { */ private final Connect virConnect; - private final static int CLOSED = 0; - private final static int READABLE = 1; - private final static int WRITABLE = 2; - private final static int OPEN = READABLE | WRITABLE; - private final static int EOF = 4; + private static final int CLOSED = 0; + private static final int READABLE = 1; + private static final int WRITABLE = 2; + private static final int OPEN = READABLE | WRITABLE; + private static final int EOF = 4; /* The status of the stream. A stream starts its live in the * "CLOSED" state. diff --git a/src/main/java/org/libvirt/VcpuInfo.java b/src/main/java/org/libvirt/VcpuInfo.java index 60e7f0b..f94917d 100644 --- a/src/main/java/org/libvirt/VcpuInfo.java +++ b/src/main/java/org/libvirt/VcpuInfo.java @@ -6,7 +6,7 @@ * Stats about a cpu. */ public class VcpuInfo { - public static enum VcpuState { + public enum VcpuState { VIR_VCPU_OFFLINE, VIR_VCPU_RUNNING, VIR_VCPU_BLOCKED } diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index 20f3ca5..d186119 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -16,8 +16,8 @@ */ public class CString extends PointerType { // all strings in libvirt are UTF-8 encoded - private final static Charset UTF8 = Charset.forName("UTF-8"); - private final static byte NUL = 0; + private static final Charset UTF8 = Charset.forName("UTF-8"); + private static final byte NUL = 0; private String string = null; public CString() { @@ -40,8 +40,8 @@ public String toString() { final Pointer ptr = getPointer(); if (ptr == null) { - return "(null)"; - } + return "(null)"; + } try { // N.B. could be replaced with Pointer.getString(0L, "UTF-8") @@ -68,8 +68,8 @@ public String toString() { public CString fromNative(final Object nativeValue, final FromNativeContext context) { if (nativeValue == null) { - return null; - } + return null; + } return new CString((Pointer) nativeValue); } @@ -87,7 +87,7 @@ private void free(final Pointer ptr) { public void free() { final Pointer ptr = getPointer(); if (ptr != null) { - free(ptr); - } + free(ptr); + } } } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 9805b30..894b848 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -154,9 +154,9 @@ interface VirEventTimeoutCallback extends Callback { (Libvirt) Native.loadLibrary(Platform.isWindows() ? "virt-0" : "virt", Libvirt.class); // Constants we need - public static int VIR_UUID_BUFLEN = 16; - public static int VIR_UUID_STRING_BUFLEN = (36 + 1); - public static int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80; + int VIR_UUID_BUFLEN = 16; + int VIR_UUID_STRING_BUFLEN = (36 + 1); + int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80; // Connection Functions CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, @@ -166,7 +166,7 @@ CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, /// Structure definitions /// - static class SecurityLabel extends Structure { + class SecurityLabel extends Structure { private static final int VIR_SECURITY_LABEL_BUFLEN = 4096 + 1; private static final List fields = Arrays.asList("label", "enforcing"); @@ -179,7 +179,7 @@ protected List getFieldOrder() { } }; - static class SecurityModel extends Structure { + class SecurityModel extends Structure { private static final int VIR_SECURITY_MODEL_BUFLEN = 256 + 1; private static final int VIR_SECURITY_DOI_BUFLEN = 256 + 1; @@ -227,33 +227,33 @@ CString virConnectFindStoragePoolSources(ConnectionPointer virConnectPtr, CString virConnectGetCapabilities(ConnectionPointer virConnectPtr); CString virConnectGetHostname(ConnectionPointer virConnectPtr); int virConnectGetLibVersion(ConnectionPointer virConnectPtr, - LongByReference libVer); + LongByReference libVer); int virConnectGetMaxVcpus(ConnectionPointer virConnectPtr, String type); CString virConnectGetSysinfo(ConnectionPointer virConnectPtr, int flags); String virConnectGetType(ConnectionPointer virConnectPtr); CString virConnectGetURI(ConnectionPointer virConnectPtr); int virConnectGetVersion(ConnectionPointer virConnectPtr, - LongByReference hvVer); + LongByReference hvVer); int virConnectListDefinedDomains(ConnectionPointer virConnectPtr, - CString[] name, int maxnames); + CString[] name, int maxnames); int virConnectListDefinedNetworks(ConnectionPointer virConnectPtr, - CString[] name, int maxnames); + CString[] name, int maxnames); int virConnectListDefinedStoragePools(ConnectionPointer virConnectPtr, - CString[] names, int maxnames); + CString[] names, int maxnames); int virConnectListDefinedInterfaces(ConnectionPointer virConnectPtr, - CString[] name, int maxNames); + CString[] name, int maxNames); int virConnectListDomains(ConnectionPointer virConnectPtr, - int[] ids, int maxnames); + int[] ids, int maxnames); int virConnectListInterfaces(ConnectionPointer virConnectPtr, - CString[] name, int maxNames); + CString[] name, int maxNames); int virConnectListNetworks(ConnectionPointer virConnectPtr, - CString[] name, int maxnames); + CString[] name, int maxnames); int virConnectListNWFilters(ConnectionPointer virConnectPtr, - CString[] name, int maxnames); + CString[] name, int maxnames); int virConnectListSecrets(ConnectionPointer virConnectPtr, - CString[] uids, int maxUids); + CString[] uids, int maxUids); int virConnectListStoragePools(ConnectionPointer virConnectPtr, - CString[] names, int maxnames); + CString[] names, int maxnames); int virConnectNumOfDefinedDomains(ConnectionPointer virConnectPtr); int virConnectNumOfDefinedNetworks(ConnectionPointer virConnectPtr); int virConnectNumOfDefinedInterfaces(ConnectionPointer virConnectPtr); @@ -268,7 +268,7 @@ int virConnectListStoragePools(ConnectionPointer virConnectPtr, ConnectionPointer virConnectOpenAuth(String name, virConnectAuth auth, int flags); ConnectionPointer virConnectOpenReadOnly(String name); int virConnectSetKeepAlive(ConnectionPointer virConnectPtr, - int interval, int count); + int interval, int count); /** * @deprecated as of libvirt 0.6.0, all errors reported in the @@ -281,7 +281,7 @@ int virConnectSetKeepAlive(ConnectionPointer virConnectPtr, void virConnResetLastError(ConnectionPointer virConnectPtr); CString virConnectDomainXMLFromNative(ConnectionPointer virConnectPtr, String nativeFormat, - String nativeConfig, + String nativeConfig, int flags); CString virConnectDomainXMLToNative(ConnectionPointer virConnectPtr, String nativeFormat, String domainXML, @@ -289,7 +289,7 @@ CString virConnectDomainXMLToNative(ConnectionPointer virConnectPtr, // Global functions int virGetVersion(LongByReference libVer, String type, - LongByReference typeVer); + LongByReference typeVer); int virInitialize(); int virCopyLastError(virError error); virError virGetLastError(); @@ -304,14 +304,14 @@ int virGetVersion(LongByReference libVer, String type, int virDomainAbortJob(DomainPointer virDomainPtr); int virDomainAttachDevice(DomainPointer virDomainPtr, String deviceXML); int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, - String deviceXML, int flags); + String deviceXML, int flags); int virDomainBlockPeek(DomainPointer virDomainPtr, - String disk, long offset, SizeT size, + String disk, long offset, SizeT size, ByteBuffer buffer, int flags); int virDomainBlockStats(DomainPointer virDomainPtr, String path, virDomainBlockStats stats, SizeT size); int virDomainBlockResize(DomainPointer virDomainPtr, - String disk, long size, int flags); + String disk, long size, int flags); int virDomainCoreDump(DomainPointer virDomainPtr, String to, int flags); int virDomainCreate(DomainPointer virDomainPtr); int virDomainCreateWithFlags(DomainPointer virDomainPtr, int flags); @@ -324,7 +324,7 @@ DomainPointer virDomainDefineXML(ConnectionPointer virConnectPtr, int virDomainDestroy(DomainPointer virDomainPtr); int virDomainDetachDevice(DomainPointer virDomainPtr, String deviceXML); int virDomainDetachDeviceFlags(DomainPointer virDomainPtr, - String deviceXML, int flags); + String deviceXML, int flags); int virDomainFree(DomainPointer virDomainPtr); int virDomainGetAutostart(DomainPointer virDomainPtr, IntByReference value); int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, @@ -337,12 +337,12 @@ int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, String virDomainGetName(DomainPointer virDomainPtr); CString virDomainGetOSType(DomainPointer virDomainPtr); int virDomainGetSchedulerParameters(DomainPointer virDomainPtr, - virSchedParameter[] params, - IntByReference nparams); + virSchedParameter[] params, + IntByReference nparams); CString virDomainGetSchedulerType(DomainPointer virDomainPtr, - IntByReference nparams); + IntByReference nparams); int virDomainGetSecurityLabel(DomainPointer virDomainPtr, - SecurityLabel seclabel); + SecurityLabel seclabel); int virDomainGetUUID(DomainPointer virDomainPtr, byte[] uuidString); int virDomainGetUUIDString(DomainPointer virDomainPtr, byte[] uuidString); int virDomainGetVcpus(DomainPointer virDomainPtr, virVcpuInfo[] info, @@ -357,37 +357,37 @@ int virDomainInterfaceStats(DomainPointer virDomainPtr, String path, int virDomainIsUpdated(DomainPointer virDomainPtr); DomainPointer virDomainLookupByID(ConnectionPointer virConnectPtr, int id); DomainPointer virDomainLookupByName(ConnectionPointer virConnectPtr, - String name); + String name); DomainPointer virDomainLookupByUUID(ConnectionPointer virConnectPtr, - byte[] uuidBytes); + byte[] uuidBytes); DomainPointer virDomainLookupByUUIDString(ConnectionPointer virConnectPtr, - String uuidstr); + String uuidstr); int virDomainManagedSave(DomainPointer virDomainPtr, int flags); int virDomainManagedSaveRemove(DomainPointer virDomainPtr, int flags); int virDomainMemoryPeek(DomainPointer virDomainPtr, long start, SizeT size, ByteBuffer buffer, int flags); DomainPointer virDomainMigrate(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, - NativeLong flags, String dname, - String uri, NativeLong bandwidth); + NativeLong flags, String dname, + String uri, NativeLong bandwidth); DomainPointer virDomainMigrate2(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, String dxml, NativeLong flags, String dname, String uri, NativeLong bandwidth); int virDomainMigrateSetMaxDowntime(DomainPointer virDomainPtr, - long downtime, int flags); + long downtime, int flags); int virDomainMigrateToURI(DomainPointer virDomainPtr, String duri, NativeLong flags, String dname, NativeLong bandwidth); int virDomainMigrateToURI2(DomainPointer virDomainPtr, - String dconnuri, String miguri, + String dconnuri, String miguri, String dxml, NativeLong flags, - String dname, NativeLong bandwidth); + String dname, NativeLong bandwidth); int virDomainMemoryStats(DomainPointer virDomainPtr, virDomainMemoryStats[] stats, int nr_stats, int flags); int virDomainPinVcpu(DomainPointer virDomainPtr, - int vcpu, byte[] cpumap, int maplen); + int vcpu, byte[] cpumap, int maplen); int virDomainPMSuspendForDuration(DomainPointer virDomainPtr, - int target, long duration, int flags); + int target, long duration, int flags); int virDomainPMWakeup(DomainPointer virDomainPtr, int flags); int virDomainReboot(DomainPointer virDomainPtr, int flags); int virDomainRef(DomainPointer virDomainPtr); @@ -409,7 +409,7 @@ int virDomainSetSchedulerParameters(DomainPointer virDomainPtr, int virDomainShutdown(DomainPointer virDomainPtr); int virDomainSuspend(DomainPointer virDomainPtr); int virDomainUpdateDeviceFlags(DomainPointer virDomainPtr, - String xml, int flags); + String xml, int flags); int virDomainUndefine(DomainPointer virDomainPtr); int virDomainUndefineFlags(DomainPointer virDomainPtr, int flags); @@ -437,7 +437,7 @@ int virDomainUpdateDeviceFlags(DomainPointer virDomainPtr, int virNodeGetInfo(ConnectionPointer virConnectPtr, virNodeInfo virNodeInfo); int virNodeGetCellsFreeMemory(ConnectionPointer virConnectPtr, LongByReference freeMems, - int startCell, int maxCells); + int startCell, int maxCells); long virNodeGetFreeMemory(ConnectionPointer virConnectPtr); int virNodeGetSecurityModel(ConnectionPointer virConnectPtr, SecurityModel secmodel); @@ -452,14 +452,14 @@ int virNodeListDevices(ConnectionPointer virConnectPtr, String virNodeDeviceGetParent(DevicePointer virDevicePointer); int virNodeDeviceNumOfCaps(DevicePointer virDevicePointer); int virNodeDeviceListCaps(DevicePointer virDevicePointer, - CString[] names, int maxNames); + CString[] names, int maxNames); CString virNodeDeviceGetXMLDesc(DevicePointer virDevicePointer, int flags); int virNodeDeviceFree(DevicePointer virDevicePointer); int virNodeDeviceDettach(DevicePointer virDevicePointer); int virNodeDeviceReAttach(DevicePointer virDevicePointer); int virNodeDeviceReset(DevicePointer virDevicePointer); DevicePointer virNodeDeviceCreateXML(ConnectionPointer virConnectPtr, - String xml, int flags); + String xml, int flags); int virNodeDeviceDestroy(DevicePointer virDevicePointer); // Storage Pool @@ -479,15 +479,15 @@ StoragePoolPointer virStoragePoolDefineXML(ConnectionPointer virConnectPtr, int virStoragePoolGetUUIDString(StoragePoolPointer storagePoolPtr, byte[] uuidString); CString virStoragePoolGetXMLDesc(StoragePoolPointer storagePoolPtr, int flags); int virStoragePoolListVolumes(StoragePoolPointer storagePoolPtr, - CString[] names, int maxnames); + CString[] names, int maxnames); int virStoragePoolIsActive(StoragePoolPointer storagePoolPtr); int virStoragePoolIsPersistent(StoragePoolPointer storagePoolPtr); StoragePoolPointer virStoragePoolLookupByName(ConnectionPointer virConnectPtr, - String name); + String name); StoragePoolPointer virStoragePoolLookupByUUID(ConnectionPointer virConnectPtr, - byte[] uuidBytes); + byte[] uuidBytes); StoragePoolPointer virStoragePoolLookupByUUIDString(ConnectionPointer virConnectPtr, - String uuidstr); + String uuidstr); StoragePoolPointer virStoragePoolLookupByVolume(StorageVolPointer storageVolPtr); int virStoragePoolNumOfVolumes(StoragePoolPointer storagePoolPtr); int virStoragePoolRefresh(StoragePoolPointer storagePoolPtr, int flags); @@ -496,11 +496,11 @@ StoragePoolPointer virStoragePoolLookupByUUIDString(ConnectionPointer virConnect // Storage Vol StorageVolPointer virStorageVolCreateXML(StoragePoolPointer storagePoolPtr, - String xml, int flags); + String xml, int flags); StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, - String xml, - StorageVolPointer cloneVolume, - int flags); + String xml, + StorageVolPointer cloneVolume, + int flags); int virStorageVolDelete(StorageVolPointer storageVolPtr, int flags); int virStorageVolFree(StorageVolPointer storageVolPtr); int virStorageVolGetInfo(StorageVolPointer storageVolPtr, virStorageVolInfo info); @@ -509,19 +509,19 @@ StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, CString virStorageVolGetPath(StorageVolPointer storageVolPtr); CString virStorageVolGetXMLDesc(StorageVolPointer storageVolPtr, int flags); StorageVolPointer virStorageVolLookupByKey(ConnectionPointer virConnectPtr, - String name); + String name); StorageVolPointer virStorageVolLookupByName(StoragePoolPointer storagePoolPtr, - String name); + String name); StorageVolPointer virStorageVolLookupByPath(ConnectionPointer virConnectPtr, - String path); + String path); int virStorageVolWipe(StorageVolPointer storageVolPtr, int flags); int virStorageVolResize(StorageVolPointer storageVolPtr, - long capacity, int flags); + long capacity, int flags); // Interface Methods int virInterfaceCreate(InterfacePointer virDevicePointer, int flags); InterfacePointer virInterfaceDefineXML(ConnectionPointer virConnectPtr, - String xml, int flags); + String xml, int flags); int virInterfaceDestroy(InterfacePointer virDevicePointer, int flags); int virInterfaceFree(InterfacePointer virDevicePointer); String virInterfaceGetName(InterfacePointer virInterfacePtr); @@ -529,32 +529,32 @@ InterfacePointer virInterfaceDefineXML(ConnectionPointer virConnectPtr, CString virInterfaceGetXMLDesc(InterfacePointer virInterfacePtr, int flags); int virInterfaceIsActive(InterfacePointer virDevicePointer); InterfacePointer virInterfaceLookupByMACString(ConnectionPointer virConnectPtr, - String mac); + String mac); InterfacePointer virInterfaceLookupByName(ConnectionPointer virConnectPtr, - String name); + String name); int virInterfaceUndefine(InterfacePointer virDevicePointer); // Secret Methods int virSecretFree(SecretPointer virSecretPtr); SecretPointer virSecretDefineXML(ConnectionPointer virConnectPtr, - String xml, int flags); + String xml, int flags); int virSecretGetUUID(SecretPointer virSecretPtr, byte[] uuidString); int virSecretGetUUIDString(SecretPointer virSecretPtr, byte[] uuidString); String virSecretGetUsageID(SecretPointer virSecretPtr); int virSecretGetUsageType(SecretPointer virSecretPtr); Pointer virSecretGetValue(SecretPointer virSecretPtr, - SizeTByReference value_size, int flags); + SizeTByReference value_size, int flags); CString virSecretGetXMLDesc(SecretPointer virSecretPtr, int flags); SecretPointer virSecretLookupByUsage(ConnectionPointer virConnectPtr, - int usageType, String usageID); + int usageType, String usageID); SecretPointer virSecretLookupByUUID(ConnectionPointer virConnectPtr, - byte[] uuidBytes); + byte[] uuidBytes); SecretPointer virSecretLookupByUUIDString(ConnectionPointer virConnectPtr, - String uuidstr); + String uuidstr); int virSecretSetValue(SecretPointer virSecretPtr, - String value, SizeT value_size, int flags); + String value, SizeT value_size, int flags); int virSecretSetValue(SecretPointer virSecretPtr, - byte[] value, SizeT value_size, int flags); + byte[] value, SizeT value_size, int flags); int virSecretUndefine(SecretPointer virSecretPtr); //Stream Methods @@ -569,20 +569,20 @@ int virStreamEventAddCallback(StreamPointer virStreamPtr, int events, StreamPointer virStreamNew(ConnectionPointer virConnectPtr, int flags); int virStreamSend(StreamPointer virStreamPtr, ByteBuffer data, SizeT size); int virStreamSendAll(StreamPointer virStreamPtr, - Libvirt.VirStreamSourceFunc handler, Pointer opaque); + Libvirt.VirStreamSourceFunc handler, Pointer opaque); int virStreamRecv(StreamPointer virStreamPtr, ByteBuffer data, SizeT length); int virStreamRecvAll(StreamPointer virStreamPtr, - Libvirt.VirStreamSinkFunc handler, Pointer opaque); + Libvirt.VirStreamSinkFunc handler, Pointer opaque); //DomainSnapshot Methods DomainSnapshotPointer virDomainSnapshotCreateXML(DomainPointer virDomainPtr, String xmlDesc, int flags); DomainSnapshotPointer virDomainSnapshotCurrent(DomainPointer virDomainPtr, - int flags); + int flags); int virDomainSnapshotDelete(DomainSnapshotPointer virDomainSnapshotPtr, - int flags); + int flags); CString virDomainSnapshotGetXMLDesc(DomainSnapshotPointer virDomainSnapshotPtr, - int flags); + int flags); int virDomainSnapshotFree(DomainSnapshotPointer virDomainSnapshotPtr); int virDomainSnapshotListNames(DomainPointer virDomainPtr, CString[] names, int nameslen, int flags); @@ -593,14 +593,14 @@ DomainSnapshotPointer virDomainSnapshotLookupByName(DomainPointer virDomainPtr, // Network Filter Methods CString virNWFilterGetXMLDesc(NetworkFilterPointer virNWFilterPtr, int flags); NetworkFilterPointer virNWFilterDefineXML(ConnectionPointer virConnectPtr, - String xml); + String xml); int virNWFilterFree(NetworkFilterPointer virNWFilterPtr); NetworkFilterPointer virNWFilterLookupByName(ConnectionPointer virConnectPtr, - String name); + String name); NetworkFilterPointer virNWFilterLookupByUUID(ConnectionPointer virConnectPtr, - byte[] uuidBytes); + byte[] uuidBytes); NetworkFilterPointer virNWFilterLookupByUUIDString(ConnectionPointer virConnectPtr, - String uuidstr); + String uuidstr); String virNWFilterGetName(NetworkFilterPointer virNWFilterPtr); int virNWFilterGetUUID(NetworkFilterPointer virNWFilterPtr, byte[] uuidString); int virNWFilterGetUUIDString(NetworkFilterPointer virNWFilterPtr, byte[] uuidString); @@ -608,7 +608,7 @@ NetworkFilterPointer virNWFilterLookupByUUIDString(ConnectionPointer virConnectP // Event functions int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, - Pointer opaque, Pointer ff); + Pointer opaque, Pointer ff); int virEventRemoveTimeout(int timer); void virEventUpdateTimeout(int timer, int timeout); } From c00e8c377e4622b2445e9f360466742a6d4f1816 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:10 +0200 Subject: [PATCH 030/114] Reformat constructor Reformat a constructor according to the Java styleguide. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/jna/SizeT.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/jna/SizeT.java b/src/main/java/org/libvirt/jna/SizeT.java index e906869..2c4cb14 100644 --- a/src/main/java/org/libvirt/jna/SizeT.java +++ b/src/main/java/org/libvirt/jna/SizeT.java @@ -7,7 +7,10 @@ * Represents the native {@code size_t} data type. */ public final class SizeT extends IntegerType { - public SizeT() { this(0); } + public SizeT() { + this(0); + } + public SizeT(final long value) { /* The third argument determines whether this class represents * an unsigned integer type. When extracting a value into a From cc32738b051d18efa7306f210c46544f1834b443 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:11 +0200 Subject: [PATCH 031/114] Rename according to Java style The Java style guide define some naming conventions. Rename methods, parameter, fields etc. where appropriate. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 286 +++++++++--------- src/main/java/org/libvirt/Device.java | 36 +-- src/main/java/org/libvirt/Domain.java | 172 +++++------ .../org/libvirt/DomainInterfaceStats.java | 2 + src/main/java/org/libvirt/DomainSnapshot.java | 20 +- src/main/java/org/libvirt/Interface.java | 28 +- src/main/java/org/libvirt/Network.java | 38 +-- src/main/java/org/libvirt/NetworkFilter.java | 22 +- src/main/java/org/libvirt/Secret.java | 34 +-- src/main/java/org/libvirt/StoragePool.java | 56 ++-- src/main/java/org/libvirt/StorageVol.java | 32 +- src/main/java/org/libvirt/Stream.java | 34 +-- src/main/java/org/libvirt/jna/Libvirt.java | 18 +- .../java/org/libvirt/jna/virConnectAuth.java | 4 +- .../org/libvirt/jna/virConnectCredential.java | 4 +- .../org/libvirt/jna/virDomainBlockInfo.java | 4 +- .../org/libvirt/jna/virDomainBlockStats.java | 6 +- .../java/org/libvirt/jna/virDomainInfo.java | 4 +- .../libvirt/jna/virDomainInterfaceStats.java | 6 +- .../org/libvirt/jna/virDomainJobInfo.java | 4 +- .../org/libvirt/jna/virDomainMemoryStats.java | 4 +- .../org/libvirt/jna/virSchedParameter.java | 4 +- .../org/libvirt/jna/virStoragePoolInfo.java | 4 +- .../org/libvirt/jna/virStorageVolInfo.java | 4 +- .../java/org/libvirt/jna/virVcpuInfo.java | 4 +- 25 files changed, 418 insertions(+), 412 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 498a8a7..0b8383c 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -74,7 +74,7 @@ private class CloseFunc implements Libvirt.VirConnectCloseFunc { } @Override - public void callback(final ConnectionPointer VCP, final int reason, + public void callback(final ConnectionPointer vcp, final int reason, final Pointer opaque) { this.listener.onClose(Connect.this, getConstant(ConnectionCloseReason.class, reason)); @@ -136,7 +136,7 @@ public int getBit() { @Deprecated public static long connectionVersion(final Connect conn) { LongByReference libVer = new LongByReference(); - int result = Libvirt.INSTANCE.virConnectGetLibVersion(conn.VCP, libVer); + int result = Libvirt.INSTANCE.virConnectGetLibVersion(conn.vcp, libVer); return result != -1 ? libVer.getValue() : -1; } @@ -154,12 +154,12 @@ public static int[] convertUUIDBytes(final byte[] bytes) { } /** - * Helper function to convert UUIDs into a stirng for the UUID calls + * Helper function to convert UUIDs into a stirng for the uuid calls */ - public static byte[] createUUIDBytes(final int[] UUID) { + public static byte[] createUUIDBytes(final int[] uuid) { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; for (int x = 0; x < Libvirt.VIR_UUID_BUFLEN; x++) { - bytes[x] = (byte) UUID[x]; + bytes[x] = (byte) uuid[x]; } return bytes; } @@ -176,7 +176,7 @@ public static byte[] createUUIDBytes(final int[] UUID) { */ public long getLibVersion() throws LibvirtException { LongByReference libVer = new LongByReference(); - processError(libvirt.virConnectGetLibVersion(this.VCP, libVer)); + processError(libvirt.virConnectGetLibVersion(this.vcp, libVer)); return libVer.getValue(); } @@ -194,7 +194,7 @@ public static void setErrorCallback(final Libvirt.VirErrorCallback callback) /** * The native virConnectPtr. */ - protected ConnectionPointer VCP; + protected ConnectionPointer vcp; /* (non-Javadoc) * @see java.lang.Object#hashCode() @@ -204,7 +204,7 @@ public int hashCode() { final int prime = 31; int result = 1; try { - result = prime * result + ((VCP == null) ? 0 : this.getURI().hashCode()); + result = prime * result + ((vcp == null) ? 0 : this.getURI().hashCode()); } catch (LibvirtException e) { throw new RuntimeException("libvirt error testing connection equality", e); } @@ -229,9 +229,9 @@ public boolean equals(final Object obj) { } Connect other = (Connect) obj; - if (VCP == null) { - return (other.VCP == null); - } else if (VCP.equals(other.VCP)) { + if (vcp == null) { + return (other.vcp == null); + } else if (vcp.equals(other.vcp)) { return true; } @@ -246,19 +246,19 @@ public boolean equals(final Object obj) { * Protected constructor to return a Connection with ConnectionPointer */ Connect(final ConnectionPointer ptr) { - VCP = ptr; + vcp = ptr; } /** * Construct a Connect object from a known native virConnectPtr For use when * native libvirt returns a virConnectPtr, i.e. error handling. * - * @param VCP + * @param vcp * the virConnectPtr pointing to an existing native virConnect * structure */ @Deprecated - Connect(final long VCP) { + Connect(final long vcp) { throw new RuntimeException("No longer supported"); } @@ -333,9 +333,9 @@ public Connect(final String uri, final ConnectAuth auth, final int flags) vAuth.credtype = mem.share(0); } - VCP = libvirt.virConnectOpenAuth(uri, vAuth, flags); + vcp = libvirt.virConnectOpenAuth(uri, vAuth, flags); // Check for an error - processError(VCP); + processError(vcp); } /** @@ -380,7 +380,7 @@ public Connect(final URI uri, final ConnectAuth auth) throws LibvirtException { * @throws LibvirtException */ public String baselineCPU(final String[] xmlCPUs) throws LibvirtException { - CString result = libvirt.virConnectBaselineCPU(VCP, xmlCPUs, xmlCPUs.length, 0); + CString result = libvirt.virConnectBaselineCPU(vcp, xmlCPUs, xmlCPUs.length, 0); return processError(result).toString(); } @@ -393,8 +393,8 @@ public String baselineCPU(final String[] xmlCPUs) throws LibvirtException { */ public int close() throws LibvirtException { int success = 0; - if (VCP != null) { - success = libvirt.virConnectClose(VCP); + if (vcp != null) { + success = libvirt.virConnectClose(vcp); // if the connection has been closed (i.e. the reference count is // down to zero), forget about the registered close function @@ -406,7 +406,7 @@ public int close() throws LibvirtException { // if someone tries to call a method on us // We rely on the underlying libvirt error handling to detect that // it's called with a null virConnectPointer - VCP = null; + vcp = null; } return processError(success); } @@ -424,7 +424,7 @@ public int close() throws LibvirtException { public void registerCloseListener(final ConnectionCloseListener l) throws LibvirtException { CloseFunc cf = new CloseFunc(l); - processError(libvirt.virConnectRegisterCloseCallback(this.VCP, + processError(libvirt.virConnectRegisterCloseCallback(this.vcp, cf, null, null)); @@ -441,7 +441,7 @@ public void registerCloseListener(final ConnectionCloseListener l) throws Libvir */ public void unregisterCloseListener() throws LibvirtException { if (this.registeredCloseFunc != null) { - processError(libvirt.virConnectUnregisterCloseCallback(this.VCP, + processError(libvirt.virConnectUnregisterCloseCallback(this.vcp, this.registeredCloseFunc)); this.registeredCloseFunc = null; } @@ -458,7 +458,7 @@ public void unregisterCloseListener() throws LibvirtException { * @throws LibvirtException */ public CPUCompareResult compareCPU(final String xmlDesc) throws LibvirtException { - int rawResult = processError(libvirt.virConnectCompareCPU(VCP, xmlDesc, 0)); + int rawResult = processError(libvirt.virConnectCompareCPU(vcp, xmlDesc, 0)); return CPUCompareResult.get(rawResult); } @@ -472,7 +472,7 @@ public CPUCompareResult compareCPU(final String xmlDesc) throws LibvirtException * @throws LibvirtException */ public Device deviceCreateXML(final String xmlDesc) throws LibvirtException { - DevicePointer ptr = processError(libvirt.virNodeDeviceCreateXML(VCP, xmlDesc, 0)); + DevicePointer ptr = processError(libvirt.virNodeDeviceCreateXML(vcp, xmlDesc, 0)); return new Device(this, ptr); } @@ -485,7 +485,7 @@ public Device deviceCreateXML(final String xmlDesc) throws LibvirtException { * @throws LibvirtException */ public Device deviceLookupByName(final String name) throws LibvirtException { - DevicePointer ptr = processError(libvirt.virNodeDeviceLookupByName(VCP, name)); + DevicePointer ptr = processError(libvirt.virNodeDeviceLookupByName(vcp, name)); return new Device(this, ptr); } @@ -505,7 +505,7 @@ public Device deviceLookupByName(final String name) throws LibvirtException { */ public Domain domainCreateLinux(final String xmlDesc, final int flags) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainCreateLinux(VCP, xmlDesc, flags)); + DomainPointer ptr = processError(libvirt.virDomainCreateLinux(vcp, xmlDesc, flags)); return new Domain(this, ptr); } @@ -521,7 +521,7 @@ public Domain domainCreateLinux(final String xmlDesc, final int flags) */ public Domain domainCreateXML(final String xmlDesc, final int flags) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainCreateXML(VCP, xmlDesc, flags)); + DomainPointer ptr = processError(libvirt.virDomainCreateXML(vcp, xmlDesc, flags)); return new Domain(this, ptr); } @@ -535,7 +535,7 @@ public Domain domainCreateXML(final String xmlDesc, final int flags) * description */ public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainDefineXML(VCP, xmlDesc)); + DomainPointer ptr = processError(libvirt.virDomainDefineXML(vcp, xmlDesc)); return new Domain(this, ptr); } @@ -566,7 +566,7 @@ private void domainEventDeregister(final int eventID, final EventListener l) RegisteredEventListener listener = handlers.remove(l); if (listener != null) { - processError(libvirt.virConnectDomainEventDeregisterAny(VCP, listener.callbackId)); + processError(libvirt.virConnectDomainEventDeregisterAny(vcp, listener.callbackId)); } } @@ -583,9 +583,9 @@ private void domainEventRegister(final Domain domain, final int eventID, return; } - DomainPointer ptr = domain == null ? null : domain.VDP; + DomainPointer ptr = domain == null ? null : domain.vdp; int ret = - processError(libvirt.virConnectDomainEventRegisterAny(VCP, ptr, + processError(libvirt.virConnectDomainEventRegisterAny(vcp, ptr, eventID, cb, null, null)); @@ -609,7 +609,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, final String devAlias, final int action, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert vcp.equals(virConnectPtr); try { Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -653,7 +653,7 @@ void domainEventRegister(final Domain domain, final RebootListener cb) public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert vcp.equals(virConnectPtr); try { Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -681,7 +681,7 @@ public int eventCallback(final ConnectionPointer virConnectPtr, final int eventCode, final int detailCode, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert vcp.equals(virConnectPtr); try { Domain dom = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -735,7 +735,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, final int reason, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert vcp.equals(virConnectPtr); try { Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -762,7 +762,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, final DomainPointer virDomainPointer, final int reason, final Pointer opaque) { - assert VCP.equals(virConnectPtr); + assert vcp.equals(virConnectPtr); try { Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); @@ -902,7 +902,7 @@ public void removeIOErrorListener(final IOErrorListener l) throws LibvirtExcepti * @throws LibvirtException */ public Domain domainLookupByID(final int id) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainLookupByID(VCP, id)); + DomainPointer ptr = processError(libvirt.virDomainLookupByID(vcp, id)); return new Domain(this, ptr); } @@ -915,7 +915,7 @@ public Domain domainLookupByID(final int id) throws LibvirtException { * @throws LibvirtException */ public Domain domainLookupByName(final String name) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainLookupByName(VCP, name)); + DomainPointer ptr = processError(libvirt.virDomainLookupByName(vcp, name)); return new Domain(this, ptr); } @@ -924,14 +924,14 @@ public Domain domainLookupByName(final String name) throws LibvirtException { * contains an unpacked representation of the UUID, each int contains only * one byte. * - * @param UUID - * the UUID as an unpacked int array + * @param uuid + * the uuid as an unpacked int array * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByUUID(final int[] UUID) throws LibvirtException { - byte[] uuidBytes = Connect.createUUIDBytes(UUID); - DomainPointer ptr = processError(libvirt.virDomainLookupByUUID(VCP, uuidBytes)); + public Domain domainLookupByUUID(final int[] uuid) throws LibvirtException { + byte[] uuidBytes = Connect.createUUIDBytes(uuid); + DomainPointer ptr = processError(libvirt.virDomainLookupByUUID(vcp, uuidBytes)); return new Domain(this, ptr); } @@ -948,15 +948,15 @@ public Domain domainLookupByUUID(final UUID uuid) throws LibvirtException { } /** - * Looks up a domain based on its UUID in String form. + * Looks up a domain based on its uuid in String form. * - * @param UUID - * the UUID in canonical String representation + * @param uuid + * the uuid in canonical String representation * @return the Domain object * @throws LibvirtException */ - public Domain domainLookupByUUIDString(final String UUID) throws LibvirtException { - DomainPointer ptr = processError(libvirt.virDomainLookupByUUIDString(VCP, UUID)); + public Domain domainLookupByUUIDString(final String uuid) throws LibvirtException { + DomainPointer ptr = processError(libvirt.virDomainLookupByUUIDString(vcp, uuid)); return new Domain(this, ptr); } @@ -972,7 +972,7 @@ public String domainXMLFromNative(final String nativeFormat, final String nativeConfig, final int flags) throws LibvirtException { CString result = - libvirt.virConnectDomainXMLFromNative(VCP, nativeFormat, + libvirt.virConnectDomainXMLFromNative(vcp, nativeFormat, nativeConfig, 0); return processError(result).toString(); } @@ -989,7 +989,7 @@ public String domainXMLToNative(final String nativeFormat, final String domainXML, final int flags) throws LibvirtException { CString returnValue = - libvirt.virConnectDomainXMLToNative(VCP, nativeFormat, domainXML, 0); + libvirt.virConnectDomainXMLToNative(vcp, nativeFormat, domainXML, 0); return processError(returnValue).toString(); } @@ -1022,7 +1022,7 @@ public String findStoragePoolSources(final String type, final String srcSpecs, final int flags) throws LibvirtException { CString returnValue = - libvirt.virConnectFindStoragePoolSources(VCP, type, srcSpecs, flags); + libvirt.virConnectFindStoragePoolSources(vcp, type, srcSpecs, flags); return processError(returnValue).toString(); } @@ -1035,7 +1035,7 @@ public String findStoragePoolSources(final String type, final String srcSpecs, The XML format description */ public String getCapabilities() throws LibvirtException { - return processError(libvirt.virConnectGetCapabilities(VCP)).toString(); + return processError(libvirt.virConnectGetCapabilities(vcp)).toString(); } /** @@ -1044,7 +1044,7 @@ public String getCapabilities() throws LibvirtException { public long getCellsFreeMemory(final int startCells, final int maxCells) throws LibvirtException { LongByReference returnValue = new LongByReference(); - processError(libvirt.virNodeGetCellsFreeMemory(VCP, + processError(libvirt.virNodeGetCellsFreeMemory(vcp, returnValue, startCells, maxCells)); @@ -1055,7 +1055,7 @@ public long getCellsFreeMemory(final int startCells, final int maxCells) * Returns the free memory for the connection */ public long getFreeMemory() throws LibvirtException { - return processErrorIfZero(libvirt.virNodeGetFreeMemory(VCP)); + return processErrorIfZero(libvirt.virNodeGetFreeMemory(vcp)); } /** @@ -1067,7 +1067,7 @@ public long getFreeMemory() throws LibvirtException { * @throws LibvirtException */ public String getHostName() throws LibvirtException { - return processError(libvirt.virConnectGetHostname(VCP)).toString(); + return processError(libvirt.virConnectGetHostname(vcp)).toString(); } /** @@ -1116,7 +1116,7 @@ public long getLibVirVersion() throws LibvirtException { * @throws LibvirtException */ public int getMaxVcpus(final String type) throws LibvirtException { - return processError(libvirt.virConnectGetMaxVcpus(VCP, type)); + return processError(libvirt.virConnectGetMaxVcpus(vcp, type)); } /** @@ -1125,7 +1125,7 @@ public int getMaxVcpus(final String type) throws LibvirtException { public SecurityModel getSecurityModel() throws LibvirtException { Libvirt.SecurityModel secmodel = new Libvirt.SecurityModel(); - processError(libvirt.virNodeGetSecurityModel(this.VCP, secmodel)); + processError(libvirt.virNodeGetSecurityModel(this.vcp, secmodel)); if (secmodel.model[0] == 0) { return null; @@ -1146,7 +1146,7 @@ public SecurityModel getSecurityModel() throws LibvirtException { * @since 1.5.2 */ public String getSysinfo() throws LibvirtException { - return processError(libvirt.virConnectGetSysinfo(this.VCP, 0)).toString(); + return processError(libvirt.virConnectGetSysinfo(this.vcp, 0)).toString(); } /** @@ -1156,7 +1156,7 @@ public String getSysinfo() throws LibvirtException { * @throws LibvirtException */ public String getType() throws LibvirtException { - return processError(libvirt.virConnectGetType(VCP)); + return processError(libvirt.virConnectGetType(vcp)); } /** @@ -1169,7 +1169,7 @@ public String getType() throws LibvirtException { * @throws LibvirtException */ public String getURI() throws LibvirtException { - return processError(libvirt.virConnectGetURI(VCP)).toString(); + return processError(libvirt.virConnectGetURI(vcp)).toString(); } /** @@ -1183,7 +1183,7 @@ public String getURI() throws LibvirtException { */ public long getVersion() throws LibvirtException { LongByReference hvVer = new LongByReference(); - processError(libvirt.virConnectGetVersion(VCP, hvVer)); + processError(libvirt.virConnectGetVersion(vcp, hvVer)); return hvVer.getValue(); } @@ -1198,7 +1198,7 @@ public long getVersion() throws LibvirtException { public Interface interfaceDefineXML(final String xmlDesc) throws LibvirtException { InterfacePointer ptr = - processError(libvirt.virInterfaceDefineXML(VCP, xmlDesc, 0)); + processError(libvirt.virInterfaceDefineXML(vcp, xmlDesc, 0)); return new Interface(this, ptr); } @@ -1210,7 +1210,7 @@ public Interface interfaceDefineXML(final String xmlDesc) public Interface interfaceLookupByMACString(final String mac) throws LibvirtException { InterfacePointer ptr = - processError(libvirt.virInterfaceLookupByMACString(VCP, mac)); + processError(libvirt.virInterfaceLookupByMACString(vcp, mac)); return new Interface(this, ptr); } @@ -1222,7 +1222,7 @@ public Interface interfaceLookupByMACString(final String mac) public Interface interfaceLookupByName(final String name) throws LibvirtException { InterfacePointer ptr = - processError(libvirt.virInterfaceLookupByName(VCP, name)); + processError(libvirt.virInterfaceLookupByName(vcp, name)); return new Interface(this, ptr); } @@ -1236,7 +1236,7 @@ public Interface interfaceLookupByName(final String name) * @throws LibvirtException */ public int isEncrypted() throws LibvirtException { - return processError(libvirt.virConnectIsEncrypted(VCP)); + return processError(libvirt.virConnectIsEncrypted(vcp)); } /** @@ -1249,7 +1249,7 @@ public int isEncrypted() throws LibvirtException { * @throws LibvirtException */ public int isSecure() throws LibvirtException { - return processError(libvirt.virConnectIsSecure(VCP)); + return processError(libvirt.virConnectIsSecure(vcp)); } /** @@ -1264,7 +1264,7 @@ public String[] listDefinedDomains() throws LibvirtException { if (maxnames > 0) { final CString[] names = new CString[maxnames]; final int n = - processError(libvirt.virConnectListDefinedDomains(VCP, names, + processError(libvirt.virConnectListDefinedDomains(vcp, names, maxnames)); return Library.toStringArray(names, n); } else { @@ -1284,7 +1284,7 @@ public String[] listDefinedInterfaces() throws LibvirtException { if (max > 0) { final CString[] ifs = new CString[max]; final int n = - processError(libvirt.virConnectListDefinedInterfaces(VCP, ifs, max)); + processError(libvirt.virConnectListDefinedInterfaces(vcp, ifs, max)); return Library.toStringArray(ifs, n); } else { return Library.NO_STRINGS; @@ -1303,7 +1303,7 @@ public String[] listDefinedNetworks() throws LibvirtException { if (maxnames > 0) { final CString[] names = new CString[maxnames]; final int n = - processError(libvirt.virConnectListDefinedNetworks(VCP, names, + processError(libvirt.virConnectListDefinedNetworks(vcp, names, maxnames)); return Library.toStringArray(names, n); } else { @@ -1323,7 +1323,7 @@ public String[] listDefinedStoragePools() throws LibvirtException { if (num > 0) { CString[] pools = new CString[num]; final int n = - processError(libvirt.virConnectListDefinedStoragePools(VCP, + processError(libvirt.virConnectListDefinedStoragePools(vcp, pools, num)); return Library.toStringArray(pools, n); } else { @@ -1343,7 +1343,7 @@ public String[] listDevices(final String capabilityName) if (maxDevices > 0) { CString[] names = new CString[maxDevices]; final int n = - processError(libvirt.virNodeListDevices(VCP, capabilityName, + processError(libvirt.virNodeListDevices(vcp, capabilityName, names, maxDevices, 0)); return Library.toStringArray(names, n); } else { @@ -1362,7 +1362,7 @@ public int[] listDomains() throws LibvirtException { int[] ids = new int[maxids]; if (maxids > 0) { - processError(libvirt.virConnectListDomains(VCP, ids, maxids)); + processError(libvirt.virConnectListDomains(vcp, ids, maxids)); } return ids; } @@ -1379,7 +1379,7 @@ public String[] listInterfaces() throws LibvirtException { if (num > 0) { CString[] ifs = new CString[num]; final int n = - processError(libvirt.virConnectListInterfaces(VCP, ifs, num)); + processError(libvirt.virConnectListInterfaces(vcp, ifs, num)); return Library.toStringArray(ifs, n); } else { return Library.NO_STRINGS; @@ -1397,7 +1397,7 @@ public String[] listNetworkFilters() throws LibvirtException { if (maxnames > 0) { CString[] names = new CString[maxnames]; final int n = - processError(libvirt.virConnectListNWFilters(VCP, names, + processError(libvirt.virConnectListNWFilters(vcp, names, maxnames)); return Library.toStringArray(names, n); } else { @@ -1417,7 +1417,7 @@ public String[] listNetworks() throws LibvirtException { if (maxnames > 0) { CString[] names = new CString[maxnames]; final int n = - processError(libvirt.virConnectListNetworks(VCP, names, + processError(libvirt.virConnectListNetworks(vcp, names, maxnames)); return Library.toStringArray(names, n); } else { @@ -1436,7 +1436,7 @@ public String[] listSecrets() throws LibvirtException { if (num > 0) { CString[] returnValue = new CString[num]; final int n = - processError(libvirt.virConnectListSecrets(VCP, returnValue, num)); + processError(libvirt.virConnectListSecrets(vcp, returnValue, num)); return Library.toStringArray(returnValue, n); } else { return Library.NO_STRINGS; @@ -1455,7 +1455,7 @@ public String[] listStoragePools() throws LibvirtException { if (num > 0) { CString[] returnValue = new CString[num]; final int n = - processError(libvirt.virConnectListStoragePools(VCP, returnValue, num)); + processError(libvirt.virConnectListStoragePools(vcp, returnValue, num)); return Library.toStringArray(returnValue, n); } else { return Library.NO_STRINGS; @@ -1475,7 +1475,7 @@ public String[] listStoragePools() throws LibvirtException { * description */ public Network networkCreateXML(final String xmlDesc) throws LibvirtException { - NetworkPointer ptr = processError(libvirt.virNetworkCreateXML(VCP, xmlDesc)); + NetworkPointer ptr = processError(libvirt.virNetworkCreateXML(vcp, xmlDesc)); return new Network(this, ptr); } @@ -1491,7 +1491,7 @@ public Network networkCreateXML(final String xmlDesc) throws LibvirtException { The XML format description */ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { - NetworkPointer ptr = processError(libvirt.virNetworkDefineXML(VCP, xmlDesc)); + NetworkPointer ptr = processError(libvirt.virNetworkDefineXML(vcp, xmlDesc)); return new Network(this, ptr); } @@ -1508,7 +1508,7 @@ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { */ public NetworkFilter networkFilterDefineXML(final String xmlDesc) throws LibvirtException { - NetworkFilterPointer ptr = processError(libvirt.virNWFilterDefineXML(VCP, xmlDesc)); + NetworkFilterPointer ptr = processError(libvirt.virNWFilterDefineXML(vcp, xmlDesc)); return new NetworkFilter(this, ptr); } @@ -1526,7 +1526,7 @@ public NetworkFilter networkFilterDefineXML(final String xmlDesc) public NetworkFilter networkFilterLookupByName(final String name) throws LibvirtException { NetworkFilterPointer ptr = - processError(libvirt.virNWFilterLookupByName(VCP, name)); + processError(libvirt.virNWFilterLookupByName(vcp, name)); return new NetworkFilter(this, ptr); } @@ -1535,16 +1535,16 @@ public NetworkFilter networkFilterLookupByName(final String name) * contains an unpacked representation of the UUID, each int contains only * one byte. * - * @param UUID - * the UUID as an unpacked int array + * @param uuid + * the uuid as an unpacked int array * @return the network filter object * @throws LibvirtException */ - public NetworkFilter networkFilterLookupByUUID(final int[] UUID) + public NetworkFilter networkFilterLookupByUUID(final int[] uuid) throws LibvirtException { - byte[] uuidBytes = Connect.createUUIDBytes(UUID); + byte[] uuidBytes = Connect.createUUIDBytes(uuid); NetworkFilterPointer ptr = - processError(libvirt.virNWFilterLookupByUUID(VCP, uuidBytes)); + processError(libvirt.virNWFilterLookupByUUID(vcp, uuidBytes)); return new NetworkFilter(this, ptr); } @@ -1562,17 +1562,17 @@ public NetworkFilter networkFilterLookupByUUID(final UUID uuid) } /** - * Looks up a network filter based on its UUID in String form. + * Looks up a network filter based on its uuid in String form. * - * @param UUID - * the UUID in canonical String representation + * @param uuid + * the uuid in canonical String representation * @return the Network Filter object * @throws LibvirtException */ - public NetworkFilter networkFilterLookupByUUIDString(final String UUID) + public NetworkFilter networkFilterLookupByUUIDString(final String uuid) throws LibvirtException { NetworkFilterPointer ptr = - processError(libvirt.virNWFilterLookupByUUIDString(VCP, UUID)); + processError(libvirt.virNWFilterLookupByUUIDString(vcp, uuid)); return new NetworkFilter(this, ptr); } @@ -1587,7 +1587,7 @@ public NetworkFilter networkFilterLookupByUUIDString(final String UUID) public Network networkLookupByName(final String name) throws LibvirtException { NetworkPointer ptr = - processError(libvirt.virNetworkLookupByName(VCP, name)); + processError(libvirt.virNetworkLookupByName(vcp, name)); return new Network(this, ptr); } @@ -1596,18 +1596,18 @@ public Network networkLookupByName(final String name) * UUID Array contains an unpacked representation of the UUID, each int * contains only one byte. * - * @param UUID - * the UUID as an unpacked int array + * @param uuid + * the uuid as an unpacked int array * @return The Network object found * @throws LibvirtException * @deprecated use the UUIDString or UUID API. */ @Deprecated - public Network networkLookupByUUID(final int[] UUID) + public Network networkLookupByUUID(final int[] uuid) throws LibvirtException { - byte[] uuidBytes = Connect.createUUIDBytes(UUID); + byte[] uuidBytes = Connect.createUUIDBytes(uuid); NetworkPointer ptr = - processError(libvirt.virNetworkLookupByUUID(VCP, uuidBytes)); + processError(libvirt.virNetworkLookupByUUID(vcp, uuidBytes)); return new Network(this, ptr); } @@ -1624,17 +1624,17 @@ public Network networkLookupByUUID(final UUID uuid) throws LibvirtException { } /** - * Looks up a network based on its UUID represented as a String. + * Looks up a network based on its uuid represented as a String. * - * @param UUID - * the UUID in canonical String representation + * @param uuid + * the uuid in canonical String representation * @return The Network object found * @throws LibvirtException */ - public Network networkLookupByUUIDString(final String UUID) + public Network networkLookupByUUIDString(final String uuid) throws LibvirtException { NetworkPointer ptr = - processError(libvirt.virNetworkLookupByUUIDString(VCP, UUID)); + processError(libvirt.virNetworkLookupByUUIDString(vcp, uuid)); return new Network(this, ptr); } @@ -1647,7 +1647,7 @@ public Network networkLookupByUUIDString(final String UUID) */ public NodeInfo nodeInfo() throws LibvirtException { virNodeInfo vInfo = new virNodeInfo(); - processError(libvirt.virNodeGetInfo(VCP, vInfo)); + processError(libvirt.virNodeGetInfo(vcp, vInfo)); return new NodeInfo(vInfo); } @@ -1658,7 +1658,7 @@ public NodeInfo nodeInfo() throws LibvirtException { * @throws LibvirtException */ public int numOfDefinedDomains() throws LibvirtException { - return processError(libvirt.virConnectNumOfDefinedDomains(VCP)); + return processError(libvirt.virConnectNumOfDefinedDomains(vcp)); } /** @@ -1668,7 +1668,7 @@ public int numOfDefinedDomains() throws LibvirtException { * @throws LibvirtException */ public int numOfDefinedInterfaces() throws LibvirtException { - return processError(libvirt.virConnectNumOfDefinedInterfaces(VCP)); + return processError(libvirt.virConnectNumOfDefinedInterfaces(vcp)); } /** @@ -1678,7 +1678,7 @@ public int numOfDefinedInterfaces() throws LibvirtException { * @throws LibvirtException */ public int numOfDefinedNetworks() throws LibvirtException { - return processError(libvirt.virConnectNumOfDefinedNetworks(VCP)); + return processError(libvirt.virConnectNumOfDefinedNetworks(vcp)); } /** @@ -1688,7 +1688,7 @@ public int numOfDefinedNetworks() throws LibvirtException { * @throws LibvirtException */ public int numOfDefinedStoragePools() throws LibvirtException { - return processError(libvirt.virConnectNumOfDefinedStoragePools(VCP)); + return processError(libvirt.virConnectNumOfDefinedStoragePools(vcp)); } /** @@ -1699,7 +1699,7 @@ public int numOfDefinedStoragePools() throws LibvirtException { */ public int numOfDevices(final String capabilityName) throws LibvirtException { - return processError(libvirt.virNodeNumOfDevices(VCP, capabilityName, 0)); + return processError(libvirt.virNodeNumOfDevices(vcp, capabilityName, 0)); } /** @@ -1709,7 +1709,7 @@ public int numOfDevices(final String capabilityName) * @throws LibvirtException */ public int numOfDomains() throws LibvirtException { - return processError(libvirt.virConnectNumOfDomains(VCP)); + return processError(libvirt.virConnectNumOfDomains(vcp)); } /** @@ -1719,7 +1719,7 @@ public int numOfDomains() throws LibvirtException { * @throws LibvirtException */ public int numOfInterfaces() throws LibvirtException { - return processError(libvirt.virConnectNumOfInterfaces(VCP)); + return processError(libvirt.virConnectNumOfInterfaces(vcp)); } /** @@ -1729,7 +1729,7 @@ public int numOfInterfaces() throws LibvirtException { * @throws LibvirtException */ public int numOfNetworkFilters() throws LibvirtException { - return processError(libvirt.virConnectNumOfNWFilters(VCP)); + return processError(libvirt.virConnectNumOfNWFilters(vcp)); } /** @@ -1739,7 +1739,7 @@ public int numOfNetworkFilters() throws LibvirtException { * @throws LibvirtException */ public int numOfNetworks() throws LibvirtException { - return processError(libvirt.virConnectNumOfNetworks(VCP)); + return processError(libvirt.virConnectNumOfNetworks(vcp)); } /** @@ -1748,7 +1748,7 @@ public int numOfNetworks() throws LibvirtException { * @return the number of secrets */ public int numOfSecrets() throws LibvirtException { - return processError(libvirt.virConnectNumOfSecrets(VCP)); + return processError(libvirt.virConnectNumOfSecrets(vcp)); } /** @@ -1758,7 +1758,7 @@ public int numOfSecrets() throws LibvirtException { * @throws LibvirtException */ public int numOfStoragePools() throws LibvirtException { - return processError(libvirt.virConnectNumOfStoragePools(VCP)); + return processError(libvirt.virConnectNumOfStoragePools(vcp)); } /** @@ -1769,7 +1769,7 @@ public int numOfStoragePools() throws LibvirtException { * @throws LibvirtException */ public void restore(final String from) throws LibvirtException { - processError(libvirt.virDomainRestore(VCP, from)); + processError(libvirt.virDomainRestore(vcp, from)); } /** @@ -1786,7 +1786,7 @@ public void restore(final String from) throws LibvirtException { */ public Secret secretDefineXML(final String xmlDesc) throws LibvirtException { SecretPointer ptr = - processError(libvirt.virSecretDefineXML(VCP, xmlDesc, 0)); + processError(libvirt.virSecretDefineXML(vcp, xmlDesc, 0)); return new Secret(this, ptr); } @@ -1795,15 +1795,15 @@ public Secret secretDefineXML(final String xmlDesc) throws LibvirtException { * contains an unpacked representation of the UUID, each int contains only * one byte. * - * @param UUID - * the UUID as an unpacked int array + * @param uuid + * the uuid as an unpacked int array * @return the Secret object * @throws LibvirtException */ - public Secret secretLookupByUUID(final int[] UUID) throws LibvirtException { - byte[] uuidBytes = Connect.createUUIDBytes(UUID); + public Secret secretLookupByUUID(final int[] uuid) throws LibvirtException { + byte[] uuidBytes = Connect.createUUIDBytes(uuid); SecretPointer ptr = - processError(libvirt.virSecretLookupByUUID(VCP, uuidBytes)); + processError(libvirt.virSecretLookupByUUID(vcp, uuidBytes)); return new Secret(this, ptr); } @@ -1820,23 +1820,23 @@ public Secret secretLookupByUUID(final UUID uuid) throws LibvirtException { } /** - * Looks up a secret based on its UUID in String form. + * Looks up a secret based on its uuid in String form. * - * @param UUID - * the UUID in canonical String representation + * @param uuid + * the uuid in canonical String representation * @return the Domain object * @throws LibvirtException */ - public Secret secretLookupByUUIDString(final String UUID) + public Secret secretLookupByUUIDString(final String uuid) throws LibvirtException { SecretPointer ptr = - processError(libvirt.virSecretLookupByUUIDString(VCP, UUID)); + processError(libvirt.virSecretLookupByUUIDString(vcp, uuid)); return new Secret(this, ptr); } public void setConnectionErrorCallback(final Libvirt.VirErrorCallback callback) throws LibvirtException { - libvirt.virConnSetErrorFunc(VCP, null, callback); + libvirt.virConnSetErrorFunc(vcp, null, callback); } /** @@ -1867,7 +1867,7 @@ public void setDom0Memory(final long memory) throws LibvirtException { public StoragePool storagePoolCreateXML(final String xmlDesc, final int flags) throws LibvirtException { StoragePoolPointer ptr = - processError(libvirt.virStoragePoolCreateXML(VCP, xmlDesc, flags)); + processError(libvirt.virStoragePoolCreateXML(vcp, xmlDesc, flags)); return new StoragePool(this, ptr); } @@ -1885,7 +1885,7 @@ public StoragePool storagePoolCreateXML(final String xmlDesc, final int flags) public StoragePool storagePoolDefineXML(final String xml, final int flags) throws LibvirtException { StoragePoolPointer ptr = - processError(libvirt.virStoragePoolDefineXML(VCP, xml, flags)); + processError(libvirt.virStoragePoolDefineXML(vcp, xml, flags)); return new StoragePool(this, ptr); } @@ -1900,25 +1900,25 @@ public StoragePool storagePoolDefineXML(final String xml, final int flags) public StoragePool storagePoolLookupByName(final String name) throws LibvirtException { StoragePoolPointer ptr = - processError(libvirt.virStoragePoolLookupByName(VCP, name)); + processError(libvirt.virStoragePoolLookupByName(vcp, name)); return new StoragePool(this, ptr); } /** * Fetch a storage pool based on its globally unique id * - * @param UUID + * @param uuid * globally unique id of pool to fetch * @return a new network object * @throws LibvirtException * @deprecated Use the UUIDString or UUID APIs. */ @Deprecated - public StoragePool storagePoolLookupByUUID(final int[] UUID) + public StoragePool storagePoolLookupByUUID(final int[] uuid) throws LibvirtException { - byte[] uuidBytes = Connect.createUUIDBytes(UUID); + byte[] uuidBytes = Connect.createUUIDBytes(uuid); StoragePoolPointer ptr = - processError(libvirt.virStoragePoolLookupByUUID(VCP, uuidBytes)); + processError(libvirt.virStoragePoolLookupByUUID(vcp, uuidBytes)); return new StoragePool(this, ptr); } @@ -1938,15 +1938,15 @@ public StoragePool storagePoolLookupByUUID(final UUID uuid) /** * Fetch a storage pool based on its globally unique id * - * @param UUID + * @param uuid * globally unique id of pool to fetch * @return VirStoragePool object * @throws LibvirtException */ - public StoragePool storagePoolLookupByUUIDString(final String UUID) + public StoragePool storagePoolLookupByUUIDString(final String uuid) throws LibvirtException { StoragePoolPointer ptr = - processError(libvirt.virStoragePoolLookupByUUIDString(VCP, UUID)); + processError(libvirt.virStoragePoolLookupByUUIDString(vcp, uuid)); return new StoragePool(this, ptr); } @@ -1960,7 +1960,7 @@ public StoragePool storagePoolLookupByUUIDString(final String UUID) public StorageVol storageVolLookupByKey(final String key) throws LibvirtException { StorageVolPointer sPtr = - processError(libvirt.virStorageVolLookupByKey(VCP, key)); + processError(libvirt.virStorageVolLookupByKey(vcp, key)); return new StorageVol(this, sPtr); } @@ -1974,7 +1974,7 @@ public StorageVol storageVolLookupByKey(final String key) public StorageVol storageVolLookupByPath(final String path) throws LibvirtException { StorageVolPointer sPtr = - processError(libvirt.virStorageVolLookupByPath(VCP, path)); + processError(libvirt.virStorageVolLookupByPath(vcp, path)); return new StorageVol(this, sPtr); } @@ -1987,7 +1987,7 @@ public StorageVol storageVolLookupByPath(final String path) * @return the new object */ public Stream streamNew(final int flags) throws LibvirtException { - StreamPointer sPtr = processError(libvirt.virStreamNew(VCP, flags)); + StreamPointer sPtr = processError(libvirt.virStreamNew(vcp, flags)); return new Stream(this, sPtr); } @@ -1998,7 +1998,7 @@ public Stream streamNew(final int flags) throws LibvirtException { * @throws LibvirtException */ public boolean isConnected() throws LibvirtException { - return ((VCP != null) ? true : false); + return ((vcp != null) ? true : false); } /** @@ -2010,7 +2010,7 @@ public boolean isConnected() throws LibvirtException { * @return {@code true} if alive, {@code false} otherwise. */ public boolean isAlive() throws LibvirtException { - return (1 == processError(libvirt.virConnectIsAlive(VCP))); + return (1 == processError(libvirt.virConnectIsAlive(vcp))); } /** @@ -2045,6 +2045,6 @@ public boolean isAlive() throws LibvirtException { */ public boolean setKeepAlive(final int interval, final int count) throws LibvirtException { - return (0 == processError(libvirt.virConnectSetKeepAlive(VCP, interval, count))); + return (0 == processError(libvirt.virConnectSetKeepAlive(vcp, interval, count))); } } diff --git a/src/main/java/org/libvirt/Device.java b/src/main/java/org/libvirt/Device.java index 9ade86b..1125b2c 100644 --- a/src/main/java/org/libvirt/Device.java +++ b/src/main/java/org/libvirt/Device.java @@ -13,7 +13,7 @@ public class Device { /** * the native virDomainPtr. */ - DevicePointer VDP; + DevicePointer vdp; /** * The Connect Object that represents the Hypervisor of this Domain @@ -25,12 +25,12 @@ public class Device { * * @param virConnect * the Domain's hypervisor - * @param VDP + * @param vdp * the native virDomainPtr */ - Device(final Connect virConnect, final DevicePointer VDP) { + Device(final Connect virConnect, final DevicePointer vdp) { this.virConnect = virConnect; - this.VDP = VDP; + this.vdp = vdp; } /** @@ -42,9 +42,9 @@ public class Device { */ public int destroy() throws LibvirtException { int success = 0; - if (VDP != null) { - success = processError(libvirt.virNodeDeviceDestroy(VDP)); - VDP = null; + if (vdp != null) { + success = processError(libvirt.virNodeDeviceDestroy(vdp)); + vdp = null; } return success; @@ -58,7 +58,7 @@ public int destroy() throws LibvirtException { * @throws LibvirtException */ public int detach() throws LibvirtException { - return processError(libvirt.virNodeDeviceDettach(VDP)); + return processError(libvirt.virNodeDeviceDettach(vdp)); } @Override @@ -75,9 +75,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VDP != null) { - success = processError(libvirt.virNodeDeviceFree(VDP)); - VDP = null; + if (vdp != null) { + success = processError(libvirt.virNodeDeviceFree(vdp)); + vdp = null; } return success; @@ -90,7 +90,7 @@ public int free() throws LibvirtException { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virNodeDeviceGetName(VDP)); + return processError(libvirt.virNodeDeviceGetName(vdp)); } /** @@ -100,7 +100,7 @@ public String getName() throws LibvirtException { * @throws LibvirtException */ public int getNumberOfCapabilities() throws LibvirtException { - return processError(libvirt.virNodeDeviceNumOfCaps(VDP)); + return processError(libvirt.virNodeDeviceNumOfCaps(vdp)); } /** @@ -110,7 +110,7 @@ public int getNumberOfCapabilities() throws LibvirtException { * @throws LibvirtException */ public String getParent() throws LibvirtException { - return processError(libvirt.virNodeDeviceGetParent(VDP)); + return processError(libvirt.virNodeDeviceGetParent(vdp)); } /** @@ -120,7 +120,7 @@ public String getParent() throws LibvirtException { * @throws LibvirtException */ public String getXMLDescription() throws LibvirtException { - return processError(libvirt.virNodeDeviceGetXMLDesc(VDP, 0)).toString(); + return processError(libvirt.virNodeDeviceGetXMLDesc(vdp, 0)).toString(); } /** @@ -134,7 +134,7 @@ public String[] listCapabilities() throws LibvirtException { if (maxCaps > 0) { CString[] strings = new CString[maxCaps]; - int got = processError(libvirt.virNodeDeviceListCaps(VDP, strings, maxCaps)); + int got = processError(libvirt.virNodeDeviceListCaps(vdp, strings, maxCaps)); return Library.toStringArray(strings, got); } else { @@ -149,7 +149,7 @@ public String[] listCapabilities() throws LibvirtException { * @throws LibvirtException */ public int reAttach() throws LibvirtException { - return processError(libvirt.virNodeDeviceReAttach(VDP)); + return processError(libvirt.virNodeDeviceReAttach(vdp)); } /** @@ -160,6 +160,6 @@ public int reAttach() throws LibvirtException { * @throws LibvirtException */ public int reset() throws LibvirtException { - return processError(libvirt.virNodeDeviceReset(VDP)); + return processError(libvirt.virNodeDeviceReset(vdp)); } } diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 2d49aca..8da3f42 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -155,7 +155,7 @@ public static final class SnapshotListFlags { } /** the native virDomainPtr. */ - DomainPointer VDP; + DomainPointer vdp; /* (non-Javadoc) * @see java.lang.Object#hashCode() @@ -167,7 +167,7 @@ public int hashCode() { result = prime * result + ((virConnect == null) ? 0 : virConnect.hashCode()); try { - result = prime * result + ((VDP == null) ? 0 : Arrays.hashCode(this.getUUID())); + result = prime * result + ((vdp == null) ? 0 : Arrays.hashCode(this.getUUID())); } catch (LibvirtException e) { throw new RuntimeException("libvirt error testing domain equality", e); } @@ -199,11 +199,11 @@ public boolean equals(final Object obj) { return false; } - if (VDP == null) { - return (other.VDP == null); + if (vdp == null) { + return (other.vdp == null); } - if (VDP.equals(other.VDP)) { + if (vdp.equals(other.vdp)) { return true; } @@ -223,14 +223,14 @@ public boolean equals(final Object obj) { * * @param virConnect * the Domain's hypervisor - * @param VDP + * @param vdp * the native virDomainPtr */ - Domain(final Connect virConnect, final DomainPointer VDP) { + Domain(final Connect virConnect, final DomainPointer vdp) { assert virConnect != null; this.virConnect = virConnect; - this.VDP = VDP; + this.vdp = vdp; } /** @@ -241,11 +241,11 @@ public boolean equals(final Object obj) { * since the virDomainPtr passed is only valid for the duration of * execution of the callback. */ - static Domain constructIncRef(final Connect virConnect, final DomainPointer VDP) + static Domain constructIncRef(final Connect virConnect, final DomainPointer vdp) throws LibvirtException { - processError(libvirt.virDomainRef(VDP)); + processError(libvirt.virDomainRef(vdp)); - return new Domain(virConnect, VDP); + return new Domain(virConnect, vdp); } /** @@ -260,7 +260,7 @@ static Domain constructIncRef(final Connect virConnect, final DomainPointer VDP) * @throws LibvirtException */ public int abortJob() throws LibvirtException { - return processError(libvirt.virDomainAbortJob(VDP)); + return processError(libvirt.virDomainAbortJob(vdp)); } /** @@ -274,7 +274,7 @@ public int abortJob() throws LibvirtException { * @throws LibvirtException */ public void attachDevice(final String xmlDesc) throws LibvirtException { - processError(libvirt.virDomainAttachDevice(VDP, xmlDesc)); + processError(libvirt.virDomainAttachDevice(vdp, xmlDesc)); } /** @@ -290,7 +290,7 @@ public void attachDevice(final String xmlDesc) throws LibvirtException { */ public void attachDeviceFlags(final String xmlDesc, final int flags) throws LibvirtException { - processError(libvirt.virDomainAttachDeviceFlags(VDP, xmlDesc, flags)); + processError(libvirt.virDomainAttachDeviceFlags(vdp, xmlDesc, flags)); } /** @@ -304,7 +304,7 @@ public void attachDeviceFlags(final String xmlDesc, final int flags) */ public DomainBlockInfo blockInfo(final String path) throws LibvirtException { virDomainBlockInfo info = new virDomainBlockInfo(); - processError(libvirt.virDomainGetBlockInfo(VDP, path, info, 0)); + processError(libvirt.virDomainGetBlockInfo(vdp, path, info, 0)); return new DomainBlockInfo(info); } @@ -352,7 +352,7 @@ public void blockPeek(final String disk, final long offset, size.setValue(req); - processError(libvirt.virDomainBlockPeek(this.VDP, disk, offset, size, buffer, 0)); + processError(libvirt.virDomainBlockPeek(this.vdp, disk, offset, size, buffer, 0)); buffer.position(buffer.position() + req); } while (buffer.hasRemaining()); @@ -377,7 +377,7 @@ public void blockPeek(final String disk, final long offset, */ public DomainBlockStats blockStats(final String path) throws LibvirtException { virDomainBlockStats stats = new virDomainBlockStats(); - processError(libvirt.virDomainBlockStats(VDP, path, stats, new SizeT(stats.size()))); + processError(libvirt.virDomainBlockStats(vdp, path, stats, new SizeT(stats.size()))); return new DomainBlockStats(stats); } @@ -394,7 +394,7 @@ public DomainBlockStats blockStats(final String path) throws LibvirtException { */ public void blockResize(final String disk, final long size, final int flags) throws LibvirtException { - processError(libvirt.virDomainBlockResize(VDP, disk, size, flags)); + processError(libvirt.virDomainBlockResize(vdp, disk, size, flags)); } @@ -409,7 +409,7 @@ public void blockResize(final String disk, final long size, final int flags) * @throws LibvirtException */ public void coreDump(final String to, final int flags) throws LibvirtException { - processError(libvirt.virDomainCoreDump(VDP, to, flags)); + processError(libvirt.virDomainCoreDump(vdp, to, flags)); } /** @@ -428,7 +428,7 @@ public int cpuMapLength(final int maxCpus) { * @throws LibvirtException */ public int create() throws LibvirtException { - return processError(libvirt.virDomainCreate(VDP)); + return processError(libvirt.virDomainCreate(vdp)); } /** @@ -440,7 +440,7 @@ public int create() throws LibvirtException { * @throws LibvirtException */ public int create(final int flags) throws LibvirtException { - return processError(libvirt.virDomainCreateWithFlags(VDP, flags)); + return processError(libvirt.virDomainCreateWithFlags(vdp, flags)); } /** @@ -452,7 +452,7 @@ public int create(final int flags) throws LibvirtException { * @throws LibvirtException */ public void destroy() throws LibvirtException { - processError(libvirt.virDomainDestroy(VDP)); + processError(libvirt.virDomainDestroy(vdp)); } /** @@ -466,7 +466,7 @@ public void destroy() throws LibvirtException { * @throws LibvirtException */ public void detachDevice(final String xmlDesc) throws LibvirtException { - processError(libvirt.virDomainDetachDevice(VDP, xmlDesc)); + processError(libvirt.virDomainDetachDevice(vdp, xmlDesc)); } /** @@ -481,7 +481,7 @@ public void detachDevice(final String xmlDesc) throws LibvirtException { */ public void detachDeviceFlags(final String xmlDesc, final int flags) throws LibvirtException { - processError(libvirt.virDomainDetachDeviceFlags(VDP, xmlDesc, flags)); + processError(libvirt.virDomainDetachDeviceFlags(vdp, xmlDesc, flags)); } @Override @@ -498,9 +498,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VDP != null) { - success = processError(libvirt.virDomainFree(VDP)); - VDP = null; + if (vdp != null) { + success = processError(libvirt.virDomainFree(vdp)); + vdp = null; } return success; @@ -515,7 +515,7 @@ public int free() throws LibvirtException { */ public boolean getAutostart() throws LibvirtException { IntByReference autoStart = new IntByReference(); - processError(libvirt.virDomainGetAutostart(VDP, autoStart)); + processError(libvirt.virDomainGetAutostart(vdp, autoStart)); return autoStart.getValue() != 0 ? true : false; } @@ -535,7 +535,7 @@ public Connect getConnect() { * @throws LibvirtException */ public int getID() throws LibvirtException { - return processError(libvirt.virDomainGetID(VDP)); + return processError(libvirt.virDomainGetID(vdp)); } /** @@ -552,7 +552,7 @@ public int getID() throws LibvirtException { */ public DomainInfo getInfo() throws LibvirtException { virDomainInfo vInfo = new virDomainInfo(); - processError(libvirt.virDomainGetInfo(VDP, vInfo)); + processError(libvirt.virDomainGetInfo(vdp, vInfo)); return new DomainInfo(vInfo); } @@ -568,7 +568,7 @@ public DomainInfo getInfo() throws LibvirtException { */ public DomainJobInfo getJobInfo() throws LibvirtException { virDomainJobInfo vInfo = new virDomainJobInfo(); - processError(libvirt.virDomainGetJobInfo(VDP, vInfo)); + processError(libvirt.virDomainGetJobInfo(vdp, vInfo)); return new DomainJobInfo(vInfo); } @@ -580,7 +580,7 @@ public DomainJobInfo getJobInfo() throws LibvirtException { */ public long getMaxMemory() throws LibvirtException { // the memory size in kibibytes (blocks of 1024 bytes), or 0 in case of error. - NativeLong returnValue = libvirt.virDomainGetMaxMemory(VDP); + NativeLong returnValue = libvirt.virDomainGetMaxMemory(vdp); return processErrorIfZero(returnValue.longValue()); } @@ -594,7 +594,7 @@ public long getMaxMemory() throws LibvirtException { * @throws LibvirtException */ public int getMaxVcpus() throws LibvirtException { - return processError(libvirt.virDomainGetMaxVcpus(VDP)); + return processError(libvirt.virDomainGetMaxVcpus(vdp)); } /** @@ -604,7 +604,7 @@ public int getMaxVcpus() throws LibvirtException { * @throws LibvirtException never */ public String getName() throws LibvirtException { - return libvirt.virDomainGetName(VDP); + return libvirt.virDomainGetName(vdp); } /** @@ -614,7 +614,7 @@ public String getName() throws LibvirtException { * @throws LibvirtException */ public String getOSType() throws LibvirtException { - return processError(libvirt.virDomainGetOSType(VDP)).toString(); + return processError(libvirt.virDomainGetOSType(vdp)).toString(); } /** @@ -625,14 +625,14 @@ public String getOSType() throws LibvirtException { */ public SchedParameter[] getSchedulerParameters() throws LibvirtException { IntByReference nParams = new IntByReference(); - processError(libvirt.virDomainGetSchedulerType(VDP, nParams)); + processError(libvirt.virDomainGetSchedulerType(vdp, nParams)); int n = nParams.getValue(); if (n > 0) { virSchedParameter[] nativeParams = new virSchedParameter[n]; - processError(libvirt.virDomainGetSchedulerParameters(VDP, nativeParams, nParams)); + processError(libvirt.virDomainGetSchedulerParameters(vdp, nativeParams, nParams)); n = nParams.getValue(); SchedParameter[] returnValue = new SchedParameter[n]; @@ -657,7 +657,7 @@ public SchedParameter[] getSchedulerParameters() throws LibvirtException { * @throws LibvirtException */ public String getSchedulerType() throws LibvirtException { - return processError(libvirt.virDomainGetSchedulerType(VDP, null)).toString(); + return processError(libvirt.virDomainGetSchedulerType(vdp, null)).toString(); } /** @@ -670,7 +670,7 @@ public String getSchedulerType() throws LibvirtException { public SecurityLabel getSecurityLabel() throws LibvirtException { Libvirt.SecurityLabel seclabel = new Libvirt.SecurityLabel(); - processError(libvirt.virDomainGetSecurityLabel(this.VDP, seclabel)); + processError(libvirt.virDomainGetSecurityLabel(this.vdp, seclabel)); if (seclabel.label[0] == 0) { return null; @@ -688,7 +688,7 @@ public SecurityLabel getSecurityLabel() throws LibvirtException { */ public int[] getUUID() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; - processError(libvirt.virDomainGetUUID(VDP, bytes)); + processError(libvirt.virDomainGetUUID(vdp, bytes)); return Connect.convertUUIDBytes(bytes); } @@ -701,7 +701,7 @@ public int[] getUUID() throws LibvirtException { */ public String getUUIDString() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN]; - processError(libvirt.virDomainGetUUIDString(VDP, bytes)); + processError(libvirt.virDomainGetUUIDString(vdp, bytes)); return Native.toString(bytes); } @@ -722,7 +722,7 @@ public int[] getVcpusCpuMaps() throws LibvirtException { virVcpuInfo[] infos = new virVcpuInfo[cpuCount]; returnValue = new int[cpuCount * maplength]; byte[] cpumaps = new byte[cpuCount * maplength]; - processError(libvirt.virDomainGetVcpus(VDP, infos, cpuCount, cpumaps, maplength)); + processError(libvirt.virDomainGetVcpus(vdp, infos, cpuCount, cpumaps, maplength)); for (int x = 0; x < cpuCount * maplength; x++) { returnValue[x] = cpumaps[x]; } @@ -740,7 +740,7 @@ public VcpuInfo[] getVcpusInfo() throws LibvirtException { int cpuCount = getMaxVcpus(); VcpuInfo[] returnValue = new VcpuInfo[cpuCount]; virVcpuInfo[] infos = new virVcpuInfo[cpuCount]; - processError(libvirt.virDomainGetVcpus(VDP, infos, cpuCount, null, 0)); + processError(libvirt.virDomainGetVcpus(vdp, infos, cpuCount, null, 0)); for (int x = 0; x < cpuCount; x++) { returnValue[x] = new VcpuInfo(infos[x]); } @@ -759,7 +759,7 @@ public VcpuInfo[] getVcpusInfo() throws LibvirtException { * Description format */ public String getXMLDesc(final int flags) throws LibvirtException { - return processError(libvirt.virDomainGetXMLDesc(VDP, flags)).toString(); + return processError(libvirt.virDomainGetXMLDesc(vdp, flags)).toString(); } /** @@ -771,7 +771,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * @throws LibvirtException */ public int hasCurrentSnapshot() throws LibvirtException { - return processError(libvirt.virDomainHasCurrentSnapshot(VDP, 0)); + return processError(libvirt.virDomainHasCurrentSnapshot(vdp, 0)); } /** @@ -784,7 +784,7 @@ public int hasCurrentSnapshot() throws LibvirtException { * @throws LibvirtException */ public int hasManagedSaveImage() throws LibvirtException { - return processError(libvirt.virDomainHasManagedSaveImage(VDP, 0)); + return processError(libvirt.virDomainHasManagedSaveImage(vdp, 0)); } /** @@ -803,7 +803,7 @@ public int hasManagedSaveImage() throws LibvirtException { public DomainInterfaceStats interfaceStats(final String path) throws LibvirtException { virDomainInterfaceStats stats = new virDomainInterfaceStats(); - processError(libvirt.virDomainInterfaceStats(VDP, path, stats, new SizeT(stats.size()))); + processError(libvirt.virDomainInterfaceStats(vdp, path, stats, new SizeT(stats.size()))); return new DomainInterfaceStats(stats); } @@ -817,7 +817,7 @@ public DomainInterfaceStats interfaceStats(final String path) * @throws LibvirtException */ public int isActive() throws LibvirtException { - return processError(libvirt.virDomainIsActive(VDP)); + return processError(libvirt.virDomainIsActive(vdp)); } /** @@ -831,7 +831,7 @@ public int isActive() throws LibvirtException { * @throws LibvirtException */ public int isPersistent() throws LibvirtException { - return processError(libvirt.virDomainIsPersistent(VDP)); + return processError(libvirt.virDomainIsPersistent(vdp)); } @@ -839,7 +839,7 @@ public int isPersistent() throws LibvirtException { * Returns {@code true} if, and only if, this domain has been updated. */ public boolean isUpdated() throws LibvirtException { - return processError(libvirt.virDomainIsUpdated(this.VDP)) == 1; + return processError(libvirt.virDomainIsUpdated(this.vdp)) == 1; } /** @@ -852,7 +852,7 @@ public boolean isUpdated() throws LibvirtException { * @throws LibvirtException */ public int managedSave() throws LibvirtException { - return processError(libvirt.virDomainManagedSave(VDP, 0)); + return processError(libvirt.virDomainManagedSave(vdp, 0)); } /** @@ -865,7 +865,7 @@ public int managedSave() throws LibvirtException { * @throws LibvirtException */ public int managedSaveRemove() throws LibvirtException { - return processError(libvirt.virDomainManagedSaveRemove(VDP, 0)); + return processError(libvirt.virDomainManagedSaveRemove(vdp, 0)); } /** @@ -901,7 +901,7 @@ public void memoryPeek(final long start, final ByteBuffer buffer, size.setValue(req); - processError(libvirt.virDomainMemoryPeek(this.VDP, start, size, buffer, mode.getValue())); + processError(libvirt.virDomainMemoryPeek(this.vdp, start, size, buffer, mode.getValue())); buffer.position(buffer.position() + req); } while (buffer.hasRemaining()); @@ -921,7 +921,7 @@ public MemoryStatistic[] memoryStats(final int number) throws LibvirtException { virDomainMemoryStats[] stats = new virDomainMemoryStats[number]; MemoryStatistic[] returnStats = null; - int result = processError(libvirt.virDomainMemoryStats(VDP, stats, number, 0)); + int result = processError(libvirt.virDomainMemoryStats(vdp, stats, number, 0)); returnStats = new MemoryStatistic[result]; for (int x = 0; x < result; x++) { returnStats[x] = new MemoryStatistic(stats[x]); @@ -1002,7 +1002,7 @@ public Domain migrate(final Connect dconn, final long flags, final String uri, final long bandwidth) throws LibvirtException { DomainPointer newPtr = - processError(libvirt.virDomainMigrate2(VDP, dconn.VCP, dxml, + processError(libvirt.virDomainMigrate2(vdp, dconn.vcp, dxml, new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); return new Domain(dconn, newPtr); } @@ -1055,7 +1055,7 @@ public Domain migrate(final Connect dconn, final long flags, final String dname, final String uri, final long bandwidth) throws LibvirtException { - DomainPointer newPtr = processError(libvirt.virDomainMigrate(VDP, dconn.VCP, + DomainPointer newPtr = processError(libvirt.virDomainMigrate(vdp, dconn.vcp, new NativeLong(flags), dname, uri, new NativeLong(bandwidth))); return new Domain(dconn, newPtr); } @@ -1074,7 +1074,7 @@ public Domain migrate(final Connect dconn, final long flags, */ public int migrateSetMaxDowntime(final long downtime) throws LibvirtException { - return processError(libvirt.virDomainMigrateSetMaxDowntime(VDP, downtime, 0)); + return processError(libvirt.virDomainMigrateSetMaxDowntime(vdp, downtime, 0)); } /** @@ -1111,7 +1111,7 @@ public int migrateToURI(final String dconnuri, final String miguri, final String dxml, final long flags, final String dname, final long bandwidth) throws LibvirtException { - return processError(libvirt.virDomainMigrateToURI2(VDP, dconnuri, miguri, + return processError(libvirt.virDomainMigrateToURI2(vdp, dconnuri, miguri, dxml, new NativeLong(flags), dname, new NativeLong(bandwidth))); } @@ -1138,7 +1138,7 @@ dxml, new NativeLong(flags), public int migrateToURI(final String uri, final long flags, final String dname, final long bandwidth) throws LibvirtException { - return processError(libvirt.virDomainMigrateToURI(VDP, uri, + return processError(libvirt.virDomainMigrateToURI(vdp, uri, new NativeLong(flags), dname, new NativeLong(bandwidth))); } @@ -1155,7 +1155,7 @@ public void PMsuspend(final SuspendTarget target) throws LibvirtException { public void PMsuspendFor(final SuspendTarget target, final long duration, final TimeUnit unit) throws LibvirtException { - processError(libvirt.virDomainPMSuspendForDuration(this.VDP, + processError(libvirt.virDomainPMSuspendForDuration(this.vdp, target.ordinal(), unit.toSeconds(duration), 0)); } @@ -1168,7 +1168,7 @@ public void PMsuspendFor(final SuspendTarget target, final long duration, * elapse. */ public void PMwakeup() throws LibvirtException { - processError(libvirt.virDomainPMWakeup(this.VDP, 0)); + processError(libvirt.virDomainPMWakeup(this.vdp, 0)); } /** @@ -1191,7 +1191,7 @@ public void pinVcpu(final int vcpu, final int[] cpumap) for (int x = 0; x < cpumap.length; x++) { packedMap[x] = (byte) cpumap[x]; } - processError(libvirt.virDomainPinVcpu(VDP, vcpu, packedMap, cpumap.length)); + processError(libvirt.virDomainPinVcpu(vdp, vcpu, packedMap, cpumap.length)); } /** @@ -1204,7 +1204,7 @@ public void pinVcpu(final int vcpu, final int[] cpumap) * @throws LibvirtException */ public void reboot(final int flags) throws LibvirtException { - processError(libvirt.virDomainReboot(VDP, flags)); + processError(libvirt.virDomainReboot(vdp, flags)); } /** @@ -1215,7 +1215,7 @@ public void reboot(final int flags) throws LibvirtException { * @throws LibvirtException */ public void resume() throws LibvirtException { - processError(libvirt.virDomainResume(VDP)); + processError(libvirt.virDomainResume(vdp)); } /** @@ -1309,7 +1309,7 @@ public void addPMSuspendListener(final PMSuspendListener l) * Reset a domain immediately without any guest OS shutdown. */ public void reset() throws LibvirtException { - processError(libvirt.virDomainReset(this.VDP, 0)); + processError(libvirt.virDomainReset(this.vdp, 0)); } /** @@ -1325,7 +1325,7 @@ public void reset() throws LibvirtException { */ public int revertToSnapshot(final DomainSnapshot snapshot) throws LibvirtException { - return processError(libvirt.virDomainRevertToSnapshot(snapshot.VDSP, 0)); + return processError(libvirt.virDomainRevertToSnapshot(snapshot.vdsp, 0)); } /** @@ -1339,12 +1339,12 @@ public int revertToSnapshot(final DomainSnapshot snapshot) * @throws LibvirtException */ public void save(final String to) throws LibvirtException { - processError(libvirt.virDomainSave(VDP, to)); + processError(libvirt.virDomainSave(vdp, to)); } public String screenshot(final Stream stream, final int screen) throws LibvirtException { - CString mimeType = libvirt.virDomainScreenshot(this.VDP, stream.getVSP(), screen, 0); + CString mimeType = libvirt.virDomainScreenshot(this.vdp, stream.getVsp(), screen, 0); processError(mimeType); stream.markReadable(); return mimeType.toString(); @@ -1359,7 +1359,7 @@ public String screenshot(final Stream stream, final int screen) */ public void setAutostart(final boolean autostart) throws LibvirtException { int autoValue = autostart ? 1 : 0; - processError(libvirt.virDomainSetAutostart(VDP, autoValue)); + processError(libvirt.virDomainSetAutostart(vdp, autoValue)); } /** @@ -1371,7 +1371,7 @@ public void setAutostart(final boolean autostart) throws LibvirtException { * @throws LibvirtException */ public void setMaxMemory(final long memory) throws LibvirtException { - processError(libvirt.virDomainSetMaxMemory(VDP, new NativeLong(memory))); + processError(libvirt.virDomainSetMaxMemory(vdp, new NativeLong(memory))); } /** @@ -1384,7 +1384,7 @@ public void setMaxMemory(final long memory) throws LibvirtException { * @throws LibvirtException */ public void setMemory(final long memory) throws LibvirtException { - processError(libvirt.virDomainSetMemory(VDP, new NativeLong(memory))); + processError(libvirt.virDomainSetMemory(vdp, new NativeLong(memory))); } /** @@ -1400,7 +1400,7 @@ public void setSchedulerParameters(final SchedParameter[] params) for (int x = 0; x < params.length; x++) { input[x] = SchedParameter.toNative(params[x]); } - processError(libvirt.virDomainSetSchedulerParameters(VDP, input, params.length)); + processError(libvirt.virDomainSetSchedulerParameters(vdp, input, params.length)); } /** @@ -1414,7 +1414,7 @@ public void setSchedulerParameters(final SchedParameter[] params) * @throws LibvirtException */ public void setVcpus(final int nvcpus) throws LibvirtException { - processError(libvirt.virDomainSetVcpus(VDP, nvcpus)); + processError(libvirt.virDomainSetVcpus(vdp, nvcpus)); } /** @@ -1427,7 +1427,7 @@ public void setVcpus(final int nvcpus) throws LibvirtException { public void sendKey(final KeycodeSet codeset, final int holdtime, final int... keys) throws LibvirtException { - processError(libvirt.virDomainSendKey(this.VDP, codeset.ordinal(), + processError(libvirt.virDomainSendKey(this.vdp, codeset.ordinal(), holdtime, keys, keys.length, 0)); } @@ -1440,7 +1440,7 @@ public void sendKey(final KeycodeSet codeset, final int holdtime, * @throws LibvirtException */ public void shutdown() throws LibvirtException { - processError(libvirt.virDomainShutdown(VDP)); + processError(libvirt.virDomainShutdown(vdp)); } /** @@ -1459,7 +1459,7 @@ public void shutdown() throws LibvirtException { */ public DomainSnapshot snapshotCreateXML(final String xmlDesc, final int flags) throws LibvirtException { - DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotCreateXML(VDP, xmlDesc, flags)); + DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotCreateXML(vdp, xmlDesc, flags)); return new DomainSnapshot(virConnect, ptr); } @@ -1494,7 +1494,7 @@ public DomainSnapshot snapshotCreateXML(final String xmlDesc) * @throws LibvirtException */ public DomainSnapshot snapshotCurrent() throws LibvirtException { - DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotCurrent(VDP, 0)); + DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotCurrent(vdp, 0)); return new DomainSnapshot(virConnect, ptr); } @@ -1511,7 +1511,7 @@ public String[] snapshotListNames(final int flags) throws LibvirtException { int num = snapshotNum(); if (num > 0) { CString[] names = new CString[num]; - int got = processError(libvirt.virDomainSnapshotListNames(VDP, names, num, flags)); + int got = processError(libvirt.virDomainSnapshotListNames(vdp, names, num, flags)); return Library.toStringArray(names, got); } else { @@ -1549,7 +1549,7 @@ public String[] snapshotListNames() throws LibvirtException { */ public DomainSnapshot snapshotLookupByName(final String name) throws LibvirtException { - DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotLookupByName(VDP, name, 0)); + DomainSnapshotPointer ptr = processError(libvirt.virDomainSnapshotLookupByName(vdp, name, 0)); return new DomainSnapshot(virConnect, ptr); } @@ -1561,7 +1561,7 @@ public DomainSnapshot snapshotLookupByName(final String name) * Documentation */ public int snapshotNum() throws LibvirtException { - return processError(libvirt.virDomainSnapshotNum(VDP, 0)); + return processError(libvirt.virDomainSnapshotNum(vdp, 0)); } /** @@ -1573,7 +1573,7 @@ public int snapshotNum() throws LibvirtException { * @throws LibvirtException */ public void suspend() throws LibvirtException { - processError(libvirt.virDomainSuspend(VDP)); + processError(libvirt.virDomainSuspend(vdp)); } /** @@ -1582,7 +1582,7 @@ public void suspend() throws LibvirtException { * @throws LibvirtException */ public void undefine() throws LibvirtException { - processError(libvirt.virDomainUndefine(VDP)); + processError(libvirt.virDomainUndefine(vdp)); } /** @@ -1597,7 +1597,7 @@ public void undefine() throws LibvirtException { * @throws LibvirtException */ public void undefine(final int flags) throws LibvirtException { - processError(libvirt.virDomainUndefineFlags(VDP, flags)); + processError(libvirt.virDomainUndefineFlags(vdp, flags)); } /** @@ -1614,7 +1614,7 @@ public void undefine(final int flags) throws LibvirtException { */ public int updateDeviceFlags(final String xml, final int flags) throws LibvirtException { - return processError(libvirt.virDomainUpdateDeviceFlags(VDP, xml, flags)); + return processError(libvirt.virDomainUpdateDeviceFlags(vdp, xml, flags)); } /** @@ -1634,7 +1634,7 @@ public int updateDeviceFlags(final String xml, final int flags) * @throws LibvirtException */ public String qemuAgentCommand(String cmd, int timeout, int flags) throws LibvirtException { - CString result = libvirtQemu != null ? libvirtQemu.virDomainQemuAgentCommand(VDP, cmd, timeout, flags) : null; + CString result = libvirtQemu != null ? libvirtQemu.virDomainQemuAgentCommand(vdp, cmd, timeout, flags) : null; processError(result); return result.toString(); } @@ -1655,7 +1655,7 @@ public String qemuAgentCommand(String cmd, int timeout, int flags) throws Libvir */ public String qemuMonitorCommand(String cmd, int flags) throws LibvirtException { CStringByReference result = new CStringByReference(); - int cmdResult = libvirtQemu != null ? libvirtQemu.virDomainQemuMonitorCommand(VDP, cmd, result, flags) : -1; + int cmdResult = libvirtQemu != null ? libvirtQemu.virDomainQemuMonitorCommand(vdp, cmd, result, flags) : -1; processError(cmdResult); return result.getValue().toString(); } diff --git a/src/main/java/org/libvirt/DomainInterfaceStats.java b/src/main/java/org/libvirt/DomainInterfaceStats.java index b890d1c..d672917 100644 --- a/src/main/java/org/libvirt/DomainInterfaceStats.java +++ b/src/main/java/org/libvirt/DomainInterfaceStats.java @@ -9,6 +9,7 @@ * */ public class DomainInterfaceStats { + //CHECKSTYLE:OFF: MemberName - public interface: TODO: deprecate and rename public long rx_bytes; public long rx_packets; public long rx_errs; @@ -17,6 +18,7 @@ public class DomainInterfaceStats { public long tx_packets; public long tx_errs; public long tx_drop; + //CHECKSTYLE:ON: AvoidStarImport public DomainInterfaceStats() { diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index 3625854..e7587f8 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -9,7 +9,7 @@ public class DomainSnapshot { /** * the native virDomainSnapshotPtr. */ - DomainSnapshotPointer VDSP; + DomainSnapshotPointer vdsp; /** * The Connect Object that represents the Hypervisor of this Domain Snapshot @@ -17,8 +17,8 @@ public class DomainSnapshot { private final Connect virConnect; public DomainSnapshot(final Connect virConnect, - final DomainSnapshotPointer VDSP) { - this.VDSP = VDSP; + final DomainSnapshotPointer vdsp) { + this.vdsp = vdsp; this.virConnect = virConnect; } @@ -35,9 +35,9 @@ public DomainSnapshot(final Connect virConnect, */ public int delete(final int flags) throws LibvirtException { int success = 0; - if (VDSP != null) { - success = processError(libvirt.virDomainSnapshotDelete(VDSP, flags)); - VDSP = null; + if (vdsp != null) { + success = processError(libvirt.virDomainSnapshotDelete(vdsp, flags)); + vdsp = null; } return success; @@ -57,9 +57,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VDSP != null) { - success = processError(libvirt.virDomainSnapshotFree(VDSP)); - VDSP = null; + if (vdsp != null) { + success = processError(libvirt.virDomainSnapshotFree(vdsp)); + vdsp = null; } return success; @@ -74,6 +74,6 @@ public int free() throws LibvirtException { * @return the XML document */ public String getXMLDesc() throws LibvirtException { - return processError(libvirt.virDomainSnapshotGetXMLDesc(VDSP, 0)).toString(); + return processError(libvirt.virDomainSnapshotGetXMLDesc(vdsp, 0)).toString(); } } diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index 10f0907..2b56e2c 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -17,7 +17,7 @@ public class Interface { /** * the native virInterfacePtr. */ - InterfacePointer VIP; + InterfacePointer vip; /** * The Connect Object that represents the Hypervisor of this Interface @@ -30,12 +30,12 @@ public class Interface { * * @param virConnect * the Interfaces hypervisor - * @param VIP + * @param vip * the native virInterfacePtr */ - Interface(final Connect virConnect, final InterfacePointer VIP) { + Interface(final Connect virConnect, final InterfacePointer vip) { this.virConnect = virConnect; - this.VIP = VIP; + this.vip = vip; } /** @@ -50,7 +50,7 @@ public class Interface { * @throws LibvirtException */ public int create() throws LibvirtException { - return processError(libvirt.virInterfaceCreate(VIP, 0)); + return processError(libvirt.virInterfaceCreate(vip, 0)); } /** @@ -69,7 +69,7 @@ public int create() throws LibvirtException { * @throws LibvirtException */ public int destroy() throws LibvirtException { - return processError(libvirt.virInterfaceDestroy(VIP, 0)); + return processError(libvirt.virInterfaceDestroy(vip, 0)); } @Override @@ -86,9 +86,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VIP != null) { - success = processError(libvirt.virInterfaceFree(VIP)); - VIP = null; + if (vip != null) { + success = processError(libvirt.virInterfaceFree(vip)); + vip = null; } return success; @@ -101,7 +101,7 @@ public int free() throws LibvirtException { * @throws LibvirtException */ public String getMACString() throws LibvirtException { - return processError(libvirt.virInterfaceGetMACString(VIP)); + return processError(libvirt.virInterfaceGetMACString(vip)); } /** @@ -111,7 +111,7 @@ public String getMACString() throws LibvirtException { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virInterfaceGetName(VIP)); + return processError(libvirt.virInterfaceGetName(vip)); } /** @@ -122,7 +122,7 @@ public String getName() throws LibvirtException { * @throws LibvirtException */ public String getXMLDescription(final int flags) throws LibvirtException { - return processError(libvirt.virInterfaceGetXMLDesc(VIP, flags)).toString(); + return processError(libvirt.virInterfaceGetXMLDesc(vip, flags)).toString(); } /** @@ -135,7 +135,7 @@ public String getXMLDescription(final int flags) throws LibvirtException { * @throws LibvirtException */ public int isActive() throws LibvirtException { - return processError(libvirt.virInterfaceIsActive(VIP)); + return processError(libvirt.virInterfaceIsActive(vip)); } /** @@ -146,6 +146,6 @@ public int isActive() throws LibvirtException { * @throws LibvirtException */ public int undefine() throws LibvirtException { - return processError(libvirt.virInterfaceUndefine(VIP)); + return processError(libvirt.virInterfaceUndefine(vip)); } } diff --git a/src/main/java/org/libvirt/Network.java b/src/main/java/org/libvirt/Network.java index d0c8ae4..1eb80d3 100644 --- a/src/main/java/org/libvirt/Network.java +++ b/src/main/java/org/libvirt/Network.java @@ -16,7 +16,7 @@ public class Network { /** * The native virNetworkPtr */ - NetworkPointer VNP; + NetworkPointer vnp; /** * The Connect Object that represents the Hypervisor of this Network @@ -29,11 +29,11 @@ public class Network { * error handling. * * @param virConnect - * @param VNP + * @param vnp */ - Network(final Connect virConnect, final NetworkPointer VNP) { + Network(final Connect virConnect, final NetworkPointer vnp) { this.virConnect = virConnect; - this.VNP = VNP; + this.vnp = vnp; } /** @@ -43,7 +43,7 @@ public class Network { * @throws LibvirtException */ public void create() throws LibvirtException { - processError(libvirt.virNetworkCreate(VNP)); + processError(libvirt.virNetworkCreate(vnp)); } /** @@ -55,7 +55,7 @@ public void create() throws LibvirtException { * @throws LibvirtException */ public void destroy() throws LibvirtException { - processError(libvirt.virNetworkDestroy(VNP)); + processError(libvirt.virNetworkDestroy(vnp)); } @Override @@ -73,9 +73,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VNP != null) { - success = processError(libvirt.virNetworkFree(VNP)); - VNP = null; + if (vnp != null) { + success = processError(libvirt.virNetworkFree(vnp)); + vnp = null; } return success; @@ -90,7 +90,7 @@ public int free() throws LibvirtException { */ public boolean getAutostart() throws LibvirtException { IntByReference autoStart = new IntByReference(); - processError(libvirt.virNetworkGetAutostart(VNP, autoStart)); + processError(libvirt.virNetworkGetAutostart(vnp, autoStart)); return (autoStart.getValue() != 0) ? true : false; } @@ -102,7 +102,7 @@ public boolean getAutostart() throws LibvirtException { * @throws LibvirtException */ public String getBridgeName() throws LibvirtException { - return processError(libvirt.virNetworkGetBridgeName(VNP)).toString(); + return processError(libvirt.virNetworkGetBridgeName(vnp)).toString(); } /** @@ -121,7 +121,7 @@ public Connect getConnect() { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virNetworkGetName(VNP)); + return processError(libvirt.virNetworkGetName(vnp)); } /** @@ -133,7 +133,7 @@ public String getName() throws LibvirtException { */ public int[] getUUID() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; - processError(libvirt.virNetworkGetUUID(VNP, bytes)); + processError(libvirt.virNetworkGetUUID(vnp, bytes)); return Connect.convertUUIDBytes(bytes); } @@ -146,7 +146,7 @@ public int[] getUUID() throws LibvirtException { */ public String getUUIDString() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN]; - processError(libvirt.virNetworkGetUUIDString(VNP, bytes)); + processError(libvirt.virNetworkGetUUIDString(vnp, bytes)); return Native.toString(bytes); } @@ -161,7 +161,7 @@ public String getUUIDString() throws LibvirtException { * @throws LibvirtException */ public String getXMLDesc(final int flags) throws LibvirtException { - return processError(libvirt.virNetworkGetXMLDesc(VNP, flags)).toString(); + return processError(libvirt.virNetworkGetXMLDesc(vnp, flags)).toString(); } /** @@ -174,7 +174,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * @throws LibvirtException */ public int isActive() throws LibvirtException { - return processError(libvirt.virNetworkIsActive(VNP)); + return processError(libvirt.virNetworkIsActive(vnp)); } /** @@ -188,7 +188,7 @@ public int isActive() throws LibvirtException { * @throws LibvirtException */ public int isPersistent() throws LibvirtException { - return processError(libvirt.virNetworkIsPersistent(VNP)); + return processError(libvirt.virNetworkIsPersistent(vnp)); } /** @@ -201,7 +201,7 @@ public int isPersistent() throws LibvirtException { */ public void setAutostart(final boolean autostart) throws LibvirtException { int autoValue = autostart ? 1 : 0; - processError(libvirt.virNetworkSetAutostart(VNP, autoValue)); + processError(libvirt.virNetworkSetAutostart(vnp, autoValue)); } /** @@ -210,7 +210,7 @@ public void setAutostart(final boolean autostart) throws LibvirtException { * @throws LibvirtException */ public void undefine() throws LibvirtException { - processError(libvirt.virNetworkUndefine(VNP)); + processError(libvirt.virNetworkUndefine(vnp)); } } diff --git a/src/main/java/org/libvirt/NetworkFilter.java b/src/main/java/org/libvirt/NetworkFilter.java index 2e42f7a..b84ffa9 100644 --- a/src/main/java/org/libvirt/NetworkFilter.java +++ b/src/main/java/org/libvirt/NetworkFilter.java @@ -11,15 +11,15 @@ public class NetworkFilter { /** * the native virNWFilterPtr. */ - NetworkFilterPointer NFP; + NetworkFilterPointer nfp; /** * The Connect Object that represents the Hypervisor of this Filter */ private final Connect virConnect; - public NetworkFilter(final Connect virConnect, final NetworkFilterPointer NFP) { - this.NFP = NFP; + public NetworkFilter(final Connect virConnect, final NetworkFilterPointer nfp) { + this.nfp = nfp; this.virConnect = virConnect; } @@ -37,9 +37,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (NFP != null) { - success = processError(libvirt.virNWFilterFree(NFP)); - NFP = null; + if (nfp != null) { + success = processError(libvirt.virNWFilterFree(nfp)); + nfp = null; } return success; @@ -52,7 +52,7 @@ public int free() throws LibvirtException { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virNWFilterGetName(NFP)); + return processError(libvirt.virNWFilterGetName(nfp)); } /** @@ -64,7 +64,7 @@ public String getName() throws LibvirtException { */ public int[] getUUID() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; - processError(libvirt.virNWFilterGetUUID(NFP, bytes)); + processError(libvirt.virNWFilterGetUUID(nfp, bytes)); return Connect.convertUUIDBytes(bytes); } @@ -77,7 +77,7 @@ public int[] getUUID() throws LibvirtException { */ public String getUUIDString() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN]; - processError(libvirt.virNWFilterGetUUIDString(NFP, bytes)); + processError(libvirt.virNWFilterGetUUIDString(nfp, bytes)); return Native.toString(bytes); } @@ -91,7 +91,7 @@ public String getUUIDString() throws LibvirtException { * @return the XML document */ public String getXMLDesc() throws LibvirtException { - return processError(libvirt.virNWFilterGetXMLDesc(NFP, 0)).toString(); + return processError(libvirt.virNWFilterGetXMLDesc(nfp, 0)).toString(); } /** @@ -100,6 +100,6 @@ public String getXMLDesc() throws LibvirtException { * @throws LibvirtException */ public void undefine() throws LibvirtException { - processError(libvirt.virNWFilterUndefine(NFP)); + processError(libvirt.virNWFilterUndefine(nfp)); } } diff --git a/src/main/java/org/libvirt/Secret.java b/src/main/java/org/libvirt/Secret.java index 10aaa65..b963fb3 100644 --- a/src/main/java/org/libvirt/Secret.java +++ b/src/main/java/org/libvirt/Secret.java @@ -20,16 +20,16 @@ public class Secret { /** * the native virSecretPtr. */ - SecretPointer VSP; + SecretPointer vsp; /** * The Connect Object that represents the Hypervisor of this Domain */ private final Connect virConnect; - Secret(final Connect virConnect, final SecretPointer VSP) { + Secret(final Connect virConnect, final SecretPointer vsp) { this.virConnect = virConnect; - this.VSP = VSP; + this.vsp = vsp; } @Override @@ -45,9 +45,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VSP != null) { - success = processError(libvirt.virSecretFree(VSP)); - VSP = null; + if (vsp != null) { + success = processError(libvirt.virSecretFree(vsp)); + vsp = null; } return success; @@ -62,11 +62,11 @@ public int free() throws LibvirtException { * @throws LibvirtException */ public String getUsageID() throws LibvirtException { - return processError(libvirt.virSecretGetUsageID(VSP)); + return processError(libvirt.virSecretGetUsageID(vsp)); } public SecretUsageType getUsageType() throws LibvirtException { - final int ret = processError(libvirt.virSecretGetUsageType(this.VSP)); + final int ret = processError(libvirt.virSecretGetUsageType(this.vsp)); return Library.getConstant(SecretUsageType.class, ret); } @@ -79,7 +79,7 @@ public SecretUsageType getUsageType() throws LibvirtException { */ public int[] getUUID() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; - processError(libvirt.virSecretGetUUID(VSP, bytes)); + processError(libvirt.virSecretGetUUID(vsp, bytes)); return Connect.convertUUIDBytes(bytes); } @@ -92,7 +92,7 @@ public int[] getUUID() throws LibvirtException { */ public String getUUIDString() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN]; - processError(libvirt.virSecretGetUUIDString(VSP, bytes)); + processError(libvirt.virSecretGetUUIDString(vsp, bytes)); return Native.toString(bytes); } @@ -121,9 +121,9 @@ public String getValue() throws LibvirtException { * @throws org.libvirt.LibvirtException */ public byte[] getByteValue() throws LibvirtException { - SizeTByReference value_size = new SizeTByReference(); - Pointer value = processError(libvirt.virSecretGetValue(VSP, value_size, 0)); - ByteBuffer bb = value.getByteBuffer(0, value_size.getValue()); + SizeTByReference valueSize = new SizeTByReference(); + Pointer value = processError(libvirt.virSecretGetValue(vsp, valueSize, 0)); + ByteBuffer bb = value.getByteBuffer(0, valueSize.getValue()); byte[] returnValue = new byte[bb.remaining()]; bb.get(returnValue); return returnValue; @@ -136,7 +136,7 @@ public byte[] getByteValue() throws LibvirtException { * @throws org.libvirt.LibvirtException */ public String getXMLDesc() throws LibvirtException { - return processError(libvirt.virSecretGetXMLDesc(VSP, 0)).toString(); + return processError(libvirt.virSecretGetXMLDesc(vsp, 0)).toString(); } /** @@ -147,7 +147,7 @@ public String getXMLDesc() throws LibvirtException { * @throws org.libvirt.LibvirtException */ public int setValue(final String value) throws LibvirtException { - return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length()), 0)); + return processError(libvirt.virSecretSetValue(vsp, value, new SizeT(value.length()), 0)); } /** @@ -158,7 +158,7 @@ public int setValue(final String value) throws LibvirtException { * @throws org.libvirt.LibvirtException */ public int setValue(final byte[] value) throws LibvirtException { - return processError(libvirt.virSecretSetValue(VSP, value, new SizeT(value.length), 0)); + return processError(libvirt.virSecretSetValue(vsp, value, new SizeT(value.length), 0)); } /** @@ -168,6 +168,6 @@ public int setValue(final byte[] value) throws LibvirtException { * @throws org.libvirt.LibvirtException */ public int undefine() throws LibvirtException { - return processError(libvirt.virSecretUndefine(VSP)); + return processError(libvirt.virSecretUndefine(vsp)); } } diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index cc1ad8a..1c136a1 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -45,7 +45,7 @@ static final class DeleteFlags { /** * the native virStoragePoolPtr. */ - protected StoragePoolPointer VSPP; + protected StoragePoolPointer vspp; /** * The VirConnect Object that represents the Hypervisor of this Domain @@ -59,12 +59,12 @@ static final class DeleteFlags { * * @param virConnect * the Domain's hypervisor - * @param VSPP + * @param vspp * the native virStoragePoolPtr */ - StoragePool(final Connect virConnect, final StoragePoolPointer VSPP) { + StoragePool(final Connect virConnect, final StoragePoolPointer vspp) { this.virConnect = virConnect; - this.VSPP = VSPP; + this.vspp = vspp; } /** @@ -74,7 +74,7 @@ static final class DeleteFlags { * future flags, use 0 for now */ public void build(final int flags) throws LibvirtException { - processError(libvirt.virStoragePoolBuild(VSPP, flags)); + processError(libvirt.virStoragePoolBuild(vspp, flags)); } /** @@ -84,7 +84,7 @@ public void build(final int flags) throws LibvirtException { * future flags, use 0 for now */ public void create(final int flags) throws LibvirtException { - processError(libvirt.virStoragePoolCreate(VSPP, flags)); + processError(libvirt.virStoragePoolCreate(vspp, flags)); } /** @@ -95,7 +95,7 @@ public void create(final int flags) throws LibvirtException { * flags for obliteration process */ public void delete(final int flags) throws LibvirtException { - processError(libvirt.virStoragePoolDelete(VSPP, flags)); + processError(libvirt.virStoragePoolDelete(vspp, flags)); } /** @@ -105,7 +105,7 @@ public void delete(final int flags) throws LibvirtException { * This does not free the associated virStoragePoolPtr object. */ public void destroy() throws LibvirtException { - processError(libvirt.virStoragePoolDestroy(VSPP)); + processError(libvirt.virStoragePoolDestroy(vspp)); } @Override @@ -122,9 +122,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VSPP != null) { - success = processError(libvirt.virStoragePoolFree(VSPP)); - VSPP = null; + if (vspp != null) { + success = processError(libvirt.virStoragePoolFree(vspp)); + vspp = null; } return success; } @@ -138,7 +138,7 @@ public int free() throws LibvirtException { */ public boolean getAutostart() throws LibvirtException { IntByReference autoStart = new IntByReference(); - processError(libvirt.virStoragePoolGetAutostart(VSPP, autoStart)); + processError(libvirt.virStoragePoolGetAutostart(vspp, autoStart)); return autoStart.getValue() != 0 ? true : false; } @@ -160,7 +160,7 @@ public Connect getConnect() { */ public StoragePoolInfo getInfo() throws LibvirtException { virStoragePoolInfo vInfo = new virStoragePoolInfo(); - processError(libvirt.virStoragePoolGetInfo(VSPP, vInfo)); + processError(libvirt.virStoragePoolGetInfo(vspp, vInfo)); return new StoragePoolInfo(vInfo); } @@ -171,7 +171,7 @@ public StoragePoolInfo getInfo() throws LibvirtException { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virStoragePoolGetName(VSPP)); + return processError(libvirt.virStoragePoolGetName(vspp)); } /** @@ -182,7 +182,7 @@ public String getName() throws LibvirtException { */ public int[] getUUID() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_BUFLEN]; - processError(libvirt.virStoragePoolGetUUID(VSPP, bytes)); + processError(libvirt.virStoragePoolGetUUID(vspp, bytes)); return Connect.convertUUIDBytes(bytes); } @@ -194,7 +194,7 @@ public int[] getUUID() throws LibvirtException { */ public String getUUIDString() throws LibvirtException { byte[] bytes = new byte[Libvirt.VIR_UUID_STRING_BUFLEN]; - processError(libvirt.virStoragePoolGetUUIDString(VSPP, bytes)); + processError(libvirt.virStoragePoolGetUUIDString(vspp, bytes)); return Native.toString(bytes); } @@ -207,7 +207,7 @@ public String getUUIDString() throws LibvirtException { * @return a XML document -java @throws LibvirtException */ public String getXMLDesc(final int flags) throws LibvirtException { - return processError(libvirt.virStoragePoolGetXMLDesc(VSPP, flags)).toString(); + return processError(libvirt.virStoragePoolGetXMLDesc(vspp, flags)).toString(); } /** @@ -220,7 +220,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * @throws LibvirtException */ public int isActive() throws LibvirtException { - return processError(libvirt.virStoragePoolIsActive(VSPP)); + return processError(libvirt.virStoragePoolIsActive(vspp)); } /** @@ -234,7 +234,7 @@ public int isActive() throws LibvirtException { * @throws LibvirtException */ public int isPersistent() throws LibvirtException { - return processError(libvirt.virStoragePoolIsPersistent(VSPP)); + return processError(libvirt.virStoragePoolIsPersistent(vspp)); } /** @@ -249,7 +249,7 @@ public String[] listVolumes() throws LibvirtException { if (num > 0) { CString[] names = new CString[num]; - int got = processError(libvirt.virStoragePoolListVolumes(VSPP, names, num)); + int got = processError(libvirt.virStoragePoolListVolumes(vspp, names, num)); return Library.toStringArray(names, got); } else { @@ -264,7 +264,7 @@ public String[] listVolumes() throws LibvirtException { * @throws LibvirtException */ public int numOfVolumes() throws LibvirtException { - return processError(libvirt.virStoragePoolNumOfVolumes(VSPP)); + return processError(libvirt.virStoragePoolNumOfVolumes(vspp)); } /** @@ -277,7 +277,7 @@ public int numOfVolumes() throws LibvirtException { * @throws LibvirtException */ public void refresh(final int flags) throws LibvirtException { - processError(libvirt.virStoragePoolRefresh(VSPP, flags)); + processError(libvirt.virStoragePoolRefresh(vspp, flags)); } /** @@ -288,7 +288,7 @@ public void refresh(final int flags) throws LibvirtException { * @throws LibvirtException */ public void setAutostart(final int autostart) throws LibvirtException { - libvirt.virStoragePoolSetAutostart(VSPP, autostart); + libvirt.virStoragePoolSetAutostart(vspp, autostart); } /** @@ -305,7 +305,7 @@ public void setAutostart(final int autostart) throws LibvirtException { public StorageVol storageVolCreateXML(final String xmlDesc, final int flags) throws LibvirtException { StorageVolPointer sPtr = - processError(libvirt.virStorageVolCreateXML(VSPP, xmlDesc, flags)); + processError(libvirt.virStorageVolCreateXML(vspp, xmlDesc, flags)); return new StorageVol(virConnect, sPtr); } @@ -322,8 +322,8 @@ public StorageVol storageVolCreateXMLFrom(final String xmlDesc, final int flags) throws LibvirtException { StorageVolPointer sPtr = - processError(libvirt.virStorageVolCreateXMLFrom(VSPP, xmlDesc, - cloneVolume.VSVP, + processError(libvirt.virStorageVolCreateXMLFrom(vspp, xmlDesc, + cloneVolume.vsvp, flags)); return new StorageVol(virConnect, sPtr); } @@ -339,7 +339,7 @@ public StorageVol storageVolCreateXMLFrom(final String xmlDesc, */ public StorageVol storageVolLookupByName(final String name) throws LibvirtException { - StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByName(VSPP, name)); + StorageVolPointer sPtr = processError(libvirt.virStorageVolLookupByName(vspp, name)); return (sPtr == null) ? null : new StorageVol(virConnect, sPtr); } @@ -350,7 +350,7 @@ public StorageVol storageVolLookupByName(final String name) * @throws LibvirtException */ public void undefine() throws LibvirtException { - processError(libvirt.virStoragePoolUndefine(VSPP)); + processError(libvirt.virStoragePoolUndefine(vspp)); } } diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index c648022..119fe1a 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -53,7 +53,7 @@ public enum Type { /** * the native virStorageVolPtr. */ - StorageVolPointer VSVP; + StorageVolPointer vsvp; /** * The VirConnect Object that represents the Hypervisor of this Domain @@ -67,12 +67,12 @@ public enum Type { * * @param virConnect * the Domain's hypervisor - * @param VSVP + * @param vsvp * the native virStorageVolPtr */ - StorageVol(final Connect virConnect, final StorageVolPointer VSVP) { + StorageVol(final Connect virConnect, final StorageVolPointer vsvp) { this.virConnect = virConnect; - this.VSVP = VSVP; + this.vsvp = vsvp; } /** @@ -83,7 +83,7 @@ public enum Type { * @throws LibvirtException */ public void delete(final int flags) throws LibvirtException { - processError(libvirt.virStorageVolDelete(VSVP, flags)); + processError(libvirt.virStorageVolDelete(vsvp, flags)); } @Override @@ -100,9 +100,9 @@ protected void finalize() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VSVP != null) { - success = processError(libvirt.virStorageVolFree(VSVP)); - VSVP = null; + if (vsvp != null) { + success = processError(libvirt.virStorageVolFree(vsvp)); + vsvp = null; } return success; } @@ -126,7 +126,7 @@ public Connect getConnect() { */ public StorageVolInfo getInfo() throws LibvirtException { virStorageVolInfo vInfo = new virStorageVolInfo(); - processError(libvirt.virStorageVolGetInfo(VSVP, vInfo)); + processError(libvirt.virStorageVolGetInfo(vsvp, vInfo)); return new StorageVolInfo(vInfo); } @@ -138,7 +138,7 @@ public StorageVolInfo getInfo() throws LibvirtException { * @throws LibvirtException */ public String getKey() throws LibvirtException { - return processError(libvirt.virStorageVolGetKey(VSVP)); + return processError(libvirt.virStorageVolGetKey(vsvp)); } /** @@ -148,7 +148,7 @@ public String getKey() throws LibvirtException { * @throws LibvirtException */ public String getName() throws LibvirtException { - return processError(libvirt.virStorageVolGetName(VSVP)); + return processError(libvirt.virStorageVolGetName(vsvp)); } /** @@ -161,7 +161,7 @@ public String getName() throws LibvirtException { * @throws LibvirtException */ public String getPath() throws LibvirtException { - return processError(libvirt.virStorageVolGetPath(VSVP)).toString(); + return processError(libvirt.virStorageVolGetPath(vsvp)).toString(); } /** @@ -173,7 +173,7 @@ public String getPath() throws LibvirtException { * @throws LibvirtException */ public String getXMLDesc(final int flags) throws LibvirtException { - return processError(libvirt.virStorageVolGetXMLDesc(VSVP, flags)).toString(); + return processError(libvirt.virStorageVolGetXMLDesc(vsvp, flags)).toString(); } /** @@ -183,7 +183,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * @throws LibvirtException */ public StoragePool storagePoolLookupByVolume() throws LibvirtException { - StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByVolume(VSVP)); + StoragePoolPointer ptr = processError(libvirt.virStoragePoolLookupByVolume(vsvp)); return (ptr == null) ? null : new StoragePool(virConnect, ptr); } @@ -196,7 +196,7 @@ public StoragePool storagePoolLookupByVolume() throws LibvirtException { * @throws LibvirtException */ public int wipe() throws LibvirtException { - return processError(libvirt.virStorageVolWipe(VSVP, 0)); + return processError(libvirt.virStorageVolWipe(vsvp, 0)); } /** @@ -213,6 +213,6 @@ public int wipe() throws LibvirtException { */ public int resize(final long capacity, final int flags) throws LibvirtException { - return processError(libvirt.virStorageVolResize(VSVP, capacity, flags)); + return processError(libvirt.virStorageVolResize(vsvp, capacity, flags)); } } diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 6c4d627..3cf35f2 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -47,7 +47,7 @@ public class Stream implements ByteChannel { /** * the native virStreamPtr. */ - private StreamPointer VSP; + private StreamPointer vsp; /** * The Connect Object that represents the Hypervisor of this Domain @@ -104,9 +104,9 @@ private void markEOF() { state |= EOF; } - Stream(final Connect virConnect, final StreamPointer VSP) { + Stream(final Connect virConnect, final StreamPointer vsp) { this.virConnect = virConnect; - this.VSP = VSP; + this.vsp = vsp; } /** @@ -116,7 +116,7 @@ private void markEOF() { * @return ignore (always 0) */ public int abort() throws LibvirtException { - int returnValue = processError(libvirt.virStreamAbort(VSP)); + int returnValue = processError(libvirt.virStreamAbort(vsp)); this.state = CLOSED; return returnValue; } @@ -137,7 +137,7 @@ public int abort() throws LibvirtException { */ public int addCallback(final int events, final Libvirt.VirStreamEventCallback cb) throws LibvirtException { - return processError(libvirt.virStreamEventAddCallback(VSP, events, cb, null, null)); + return processError(libvirt.virStreamEventAddCallback(vsp, events, cb, null, null)); } @Override @@ -153,7 +153,7 @@ protected void finalize() throws LibvirtException { * @throws LibvirtException */ public int finish() throws LibvirtException { - int returnValue = processError(libvirt.virStreamFinish(VSP)); + int returnValue = processError(libvirt.virStreamFinish(vsp)); markEOF(); return returnValue; } @@ -167,17 +167,17 @@ public int finish() throws LibvirtException { */ public int free() throws LibvirtException { int success = 0; - if (VSP != null) { + if (vsp != null) { closeStream(); - success = processError(libvirt.virStreamFree(VSP)); - VSP = null; + success = processError(libvirt.virStreamFree(vsp)); + vsp = null; } return success; } - StreamPointer getVSP() { - return VSP; + StreamPointer getVsp() { + return vsp; } /** @@ -193,7 +193,7 @@ public int receive(final byte[] data) throws LibvirtException { } protected int receive(final ByteBuffer buffer) throws LibvirtException { - int returnValue = processError(libvirt.virStreamRecv(VSP, buffer, new SizeT(buffer.remaining()))); + int returnValue = processError(libvirt.virStreamRecv(vsp, buffer, new SizeT(buffer.remaining()))); buffer.position(buffer.position() + returnValue); return returnValue; } @@ -293,7 +293,7 @@ public boolean isOpen() { */ public int receiveAll(final Libvirt.VirStreamSinkFunc handler) throws LibvirtException { - return processError(libvirt.virStreamRecvAll(VSP, handler, null)); + return processError(libvirt.virStreamRecvAll(vsp, handler, null)); } /** @@ -304,7 +304,7 @@ public int receiveAll(final Libvirt.VirStreamSinkFunc handler) * @throws LibvirtException */ public int removeCallback() throws LibvirtException { - return processError(libvirt.virStreamEventRemoveCallback(VSP)); + return processError(libvirt.virStreamEventRemoveCallback(vsp)); } /** @@ -322,7 +322,7 @@ public int send(final byte[] data) throws LibvirtException { protected int send(final ByteBuffer buffer) throws LibvirtException { SizeT size = new SizeT(buffer.remaining()); - int returnValue = processError(libvirt.virStreamSend(VSP, buffer, size)); + int returnValue = processError(libvirt.virStreamSend(vsp, buffer, size)); buffer.position(buffer.position() + returnValue); return returnValue; } @@ -340,7 +340,7 @@ protected int send(final ByteBuffer buffer) throws LibvirtException { */ public int sendAll(final Libvirt.VirStreamSourceFunc handler) throws LibvirtException { - return processError(libvirt.virStreamSendAll(VSP, handler, null)); + return processError(libvirt.virStreamSendAll(vsp, handler, null)); } /** @@ -353,6 +353,6 @@ public int sendAll(final Libvirt.VirStreamSourceFunc handler) * @throws LibvirtException */ public int updateCallback(final int events) throws LibvirtException { - return processError(libvirt.virStreamEventUpdateCallback(VSP, events)); + return processError(libvirt.virStreamEventUpdateCallback(vsp, events)); } } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 894b848..6c0b6fc 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -67,7 +67,7 @@ interface VirConnectAuthCallback extends Callback { * Callback interface for connection closed events. */ interface VirConnectCloseFunc extends Callback { - void callback(ConnectionPointer VCP, int reason, Pointer opaque); + void callback(ConnectionPointer vcp, int reason, Pointer opaque); } /** @@ -168,14 +168,14 @@ CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, class SecurityLabel extends Structure { private static final int VIR_SECURITY_LABEL_BUFLEN = 4096 + 1; - private static final List fields = Arrays.asList("label", "enforcing"); + private static final List FIELDS = Arrays.asList("label", "enforcing"); public byte[] label = new byte[VIR_SECURITY_LABEL_BUFLEN]; public int enforcing; @Override protected List getFieldOrder() { - return fields; + return FIELDS; } }; @@ -183,14 +183,14 @@ class SecurityModel extends Structure { private static final int VIR_SECURITY_MODEL_BUFLEN = 256 + 1; private static final int VIR_SECURITY_DOI_BUFLEN = 256 + 1; - private static final List fields = Arrays.asList("model", "doi"); + private static final List FIELDS = Arrays.asList("model", "doi"); public byte[] model = new byte[VIR_SECURITY_MODEL_BUFLEN]; public byte[] doi = new byte[VIR_SECURITY_DOI_BUFLEN]; @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } @@ -383,7 +383,7 @@ int virDomainMigrateToURI2(DomainPointer virDomainPtr, String dxml, NativeLong flags, String dname, NativeLong bandwidth); int virDomainMemoryStats(DomainPointer virDomainPtr, - virDomainMemoryStats[] stats, int nr_stats, int flags); + virDomainMemoryStats[] stats, int nrStats, int flags); int virDomainPinVcpu(DomainPointer virDomainPtr, int vcpu, byte[] cpumap, int maplen); int virDomainPMSuspendForDuration(DomainPointer virDomainPtr, @@ -543,7 +543,7 @@ SecretPointer virSecretDefineXML(ConnectionPointer virConnectPtr, String virSecretGetUsageID(SecretPointer virSecretPtr); int virSecretGetUsageType(SecretPointer virSecretPtr); Pointer virSecretGetValue(SecretPointer virSecretPtr, - SizeTByReference value_size, int flags); + SizeTByReference valueSize, int flags); CString virSecretGetXMLDesc(SecretPointer virSecretPtr, int flags); SecretPointer virSecretLookupByUsage(ConnectionPointer virConnectPtr, int usageType, String usageID); @@ -552,9 +552,9 @@ SecretPointer virSecretLookupByUUID(ConnectionPointer virConnectPtr, SecretPointer virSecretLookupByUUIDString(ConnectionPointer virConnectPtr, String uuidstr); int virSecretSetValue(SecretPointer virSecretPtr, - String value, SizeT value_size, int flags); + String value, SizeT valueSize, int flags); int virSecretSetValue(SecretPointer virSecretPtr, - byte[] value, SizeT value_size, int flags); + byte[] value, SizeT valueSize, int flags); int virSecretUndefine(SecretPointer virSecretPtr); //Stream Methods diff --git a/src/main/java/org/libvirt/jna/virConnectAuth.java b/src/main/java/org/libvirt/jna/virConnectAuth.java index 0451348..05eb2fc 100644 --- a/src/main/java/org/libvirt/jna/virConnectAuth.java +++ b/src/main/java/org/libvirt/jna/virConnectAuth.java @@ -15,11 +15,11 @@ public class virConnectAuth extends Structure { public Libvirt.VirConnectAuthCallback cb; public Pointer cbdata; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "credtype", "ncredtype", "cb", "cbdata"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virConnectCredential.java b/src/main/java/org/libvirt/jna/virConnectCredential.java index 316b1f4..a7614bc 100644 --- a/src/main/java/org/libvirt/jna/virConnectCredential.java +++ b/src/main/java/org/libvirt/jna/virConnectCredential.java @@ -17,12 +17,12 @@ public class virConnectCredential extends Structure implements Structure.ByRefer public String result; public int resultlen; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "type", "prompt", "challenge", "defresult", "result", "resultlen"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainBlockInfo.java b/src/main/java/org/libvirt/jna/virDomainBlockInfo.java index 5a88ba3..696e97d 100644 --- a/src/main/java/org/libvirt/jna/virDomainBlockInfo.java +++ b/src/main/java/org/libvirt/jna/virDomainBlockInfo.java @@ -10,11 +10,11 @@ public class virDomainBlockInfo extends Structure { public long allocation; public long physical; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "capacity", "allocation", "physical"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainBlockStats.java b/src/main/java/org/libvirt/jna/virDomainBlockStats.java index 36b05e4..9f45788 100644 --- a/src/main/java/org/libvirt/jna/virDomainBlockStats.java +++ b/src/main/java/org/libvirt/jna/virDomainBlockStats.java @@ -9,6 +9,7 @@ * JNA mapping for the virDomainBlockStats structure */ public class virDomainBlockStats extends Structure { + //CHECKSTYLE:OFF: MemberName - public interface: TODO: deprecate and rename public long rd_req; // this is a long long in the code, so a long mapping is // correct public long rd_bytes; // this is a long long in the code, so a long mapping @@ -19,12 +20,13 @@ public class virDomainBlockStats extends Structure { // is correct public long errs; // this is a long long in the code, so a long mapping is // correct + //CHECKSTYLE:ON: MemberName - public interface: TODO: deprecate and rename - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "rd_req", "rd_bytes", "wr_req", "wr_bytes", "errs"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainInfo.java b/src/main/java/org/libvirt/jna/virDomainInfo.java index ff20d16..ffb4e99 100644 --- a/src/main/java/org/libvirt/jna/virDomainInfo.java +++ b/src/main/java/org/libvirt/jna/virDomainInfo.java @@ -16,11 +16,11 @@ public class virDomainInfo extends Structure { public short nrVirtCpu; public long cpuTime; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "state", "maxMem", "memory", "nrVirtCpu", "cpuTime"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainInterfaceStats.java b/src/main/java/org/libvirt/jna/virDomainInterfaceStats.java index 9b98aa8..31e2616 100644 --- a/src/main/java/org/libvirt/jna/virDomainInterfaceStats.java +++ b/src/main/java/org/libvirt/jna/virDomainInterfaceStats.java @@ -9,6 +9,7 @@ * JNA mapping for the virDomainInterfaceStats structure */ public class virDomainInterfaceStats extends Structure { + //CHECKSTYLE:OFF: MemberName - public interface: TODO: deprecate and rename public long rx_bytes; // this is a long long in the code, so a long mapping // is correct public long rx_packets; // this is a long long in the code, so a long @@ -25,13 +26,14 @@ public class virDomainInterfaceStats extends Structure { // is correct public long tx_drop; // this is a long long in the code, so a long mapping // is correct + //CHECKSTYLE:ON: MemberName - public interface: TODO: deprecate and rename - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "rx_bytes", "rx_packets", "rx_errs", "rx_drop", "tx_bytes", "tx_packets", "tx_errs", "tx_drop"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainJobInfo.java b/src/main/java/org/libvirt/jna/virDomainJobInfo.java index 1bab587..215c405 100644 --- a/src/main/java/org/libvirt/jna/virDomainJobInfo.java +++ b/src/main/java/org/libvirt/jna/virDomainJobInfo.java @@ -19,13 +19,13 @@ public class virDomainJobInfo extends Structure { public long fileProcessed; public long fileRemaining; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "type", "timeElapsed", "timeRemaining", "dataTotal", "dataProcessed", "dataRemaining", "memTotal", "memProcessed", "memRemaining", "fileTotal", "fileProcessed", "fileRemaining"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virDomainMemoryStats.java b/src/main/java/org/libvirt/jna/virDomainMemoryStats.java index faa53f9..aa75407 100644 --- a/src/main/java/org/libvirt/jna/virDomainMemoryStats.java +++ b/src/main/java/org/libvirt/jna/virDomainMemoryStats.java @@ -9,10 +9,10 @@ public class virDomainMemoryStats extends Structure { public int tag; public long val; - private static final List fields = Arrays.asList("tag", "val"); + private static final List FIELDS = Arrays.asList("tag", "val"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virSchedParameter.java b/src/main/java/org/libvirt/jna/virSchedParameter.java index e08712d..9161874 100644 --- a/src/main/java/org/libvirt/jna/virSchedParameter.java +++ b/src/main/java/org/libvirt/jna/virSchedParameter.java @@ -13,11 +13,11 @@ public class virSchedParameter extends Structure { public int type; public virSchedParameterValue value; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "field", "type", "value"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virStoragePoolInfo.java b/src/main/java/org/libvirt/jna/virStoragePoolInfo.java index 7077175..a2b1642 100644 --- a/src/main/java/org/libvirt/jna/virStoragePoolInfo.java +++ b/src/main/java/org/libvirt/jna/virStoragePoolInfo.java @@ -17,11 +17,11 @@ public class virStoragePoolInfo extends Structure { public long available; // this is a long long in the code, so a long mapping // is correct - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "state", "capacity", "allocation", "available"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virStorageVolInfo.java b/src/main/java/org/libvirt/jna/virStorageVolInfo.java index 8bf2d5c..75fab01 100644 --- a/src/main/java/org/libvirt/jna/virStorageVolInfo.java +++ b/src/main/java/org/libvirt/jna/virStorageVolInfo.java @@ -15,11 +15,11 @@ public class virStorageVolInfo extends Structure { public long allocation; // this is a long long in the code, so a long // mapping is correct - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "type", "capacity", "allocation"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } diff --git a/src/main/java/org/libvirt/jna/virVcpuInfo.java b/src/main/java/org/libvirt/jna/virVcpuInfo.java index bc1a539..c07caf0 100644 --- a/src/main/java/org/libvirt/jna/virVcpuInfo.java +++ b/src/main/java/org/libvirt/jna/virVcpuInfo.java @@ -15,11 +15,11 @@ public class virVcpuInfo extends Structure { // is correct public int cpu; - private static final List fields = Arrays.asList( + private static final List FIELDS = Arrays.asList( "number", "state", "cpuTime", "cpu"); @Override protected List getFieldOrder() { - return fields; + return FIELDS; } } From 55e0ba076703ff572e7bb6289d49a646e6a6a34f Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:12 +0200 Subject: [PATCH 032/114] Avoid magic constant values Add named constants for better readability of the code. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- .../org/libvirt/SchedBooleanParameter.java | 2 +- .../org/libvirt/SchedDoubleParameter.java | 2 +- .../java/org/libvirt/SchedIntParameter.java | 2 +- .../java/org/libvirt/SchedLongParameter.java | 2 +- src/main/java/org/libvirt/SchedParameter.java | 34 ++++++++++++------- .../java/org/libvirt/SchedUintParameter.java | 2 +- .../java/org/libvirt/SchedUlongParameter.java | 2 +- 7 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/libvirt/SchedBooleanParameter.java b/src/main/java/org/libvirt/SchedBooleanParameter.java index 87527cb..42b73d9 100644 --- a/src/main/java/org/libvirt/SchedBooleanParameter.java +++ b/src/main/java/org/libvirt/SchedBooleanParameter.java @@ -25,7 +25,7 @@ public SchedBooleanParameter(final byte value) { } public int getType() { - return 6; + return SCHED_PARAM_BOOLEAN; } public String getTypeAsString() { diff --git a/src/main/java/org/libvirt/SchedDoubleParameter.java b/src/main/java/org/libvirt/SchedDoubleParameter.java index 27736b1..86a8129 100644 --- a/src/main/java/org/libvirt/SchedDoubleParameter.java +++ b/src/main/java/org/libvirt/SchedDoubleParameter.java @@ -21,7 +21,7 @@ public SchedDoubleParameter(final double value) { } public int getType() { - return 5; + return SCHED_PARAM_DOUBLE; } public String getTypeAsString() { diff --git a/src/main/java/org/libvirt/SchedIntParameter.java b/src/main/java/org/libvirt/SchedIntParameter.java index 6266516..feeba1d 100644 --- a/src/main/java/org/libvirt/SchedIntParameter.java +++ b/src/main/java/org/libvirt/SchedIntParameter.java @@ -15,7 +15,7 @@ public SchedIntParameter(final int value) { } public int getType() { - return 1; + return SCHED_PARAM_INT; } public String getTypeAsString() { diff --git a/src/main/java/org/libvirt/SchedLongParameter.java b/src/main/java/org/libvirt/SchedLongParameter.java index cddf50c..9add4a9 100644 --- a/src/main/java/org/libvirt/SchedLongParameter.java +++ b/src/main/java/org/libvirt/SchedLongParameter.java @@ -21,7 +21,7 @@ public SchedLongParameter(final long value) { } public int getType() { - return 3; + return SCHED_PARAM_LONG; } public String getTypeAsString() { diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index 837ad1c..cb731ff 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -16,27 +16,37 @@ * */ public abstract class SchedParameter { + /** + * TODO: get generated constants from libvirt + */ + + protected static final int SCHED_PARAM_INT = 1; + protected static final int SCHED_PARAM_UINT = 2; + protected static final int SCHED_PARAM_LONG = 3; + protected static final int SCHED_PARAM_ULONG = 4; + protected static final int SCHED_PARAM_DOUBLE = 5; + protected static final int SCHED_PARAM_BOOLEAN = 6; public static SchedParameter create(final virSchedParameter vParam) { SchedParameter returnValue = null; if (vParam != null) { switch (vParam.type) { - case (1): + case (SCHED_PARAM_INT): returnValue = new SchedIntParameter(vParam.value.i); break; - case (2): + case (SCHED_PARAM_UINT): returnValue = new SchedUintParameter(vParam.value.i); break; - case (3): + case (SCHED_PARAM_LONG): returnValue = new SchedLongParameter(vParam.value.l); break; - case (4): + case (SCHED_PARAM_ULONG): returnValue = new SchedUlongParameter(vParam.value.l); break; - case (5): + case (SCHED_PARAM_DOUBLE): returnValue = new SchedDoubleParameter(vParam.value.d); break; - case (6): + case (SCHED_PARAM_BOOLEAN): returnValue = new SchedBooleanParameter(vParam.value.b); break; default: @@ -59,27 +69,27 @@ public static virSchedParameter toNative(final SchedParameter param) { } returnValue.type = param.getType(); switch (param.getType()) { - case (1): + case (SCHED_PARAM_INT): returnValue.value.i = ((SchedIntParameter) param).value; returnValue.value.setType(int.class); break; - case (2): + case (SCHED_PARAM_UINT): returnValue.value.i = ((SchedUintParameter) param).value; returnValue.value.setType(int.class); break; - case (3): + case (SCHED_PARAM_LONG): returnValue.value.l = ((SchedLongParameter) param).value; returnValue.value.setType(long.class); break; - case (4): + case (SCHED_PARAM_ULONG): returnValue.value.l = ((SchedUlongParameter) param).value; returnValue.value.setType(long.class); break; - case (5): + case (SCHED_PARAM_DOUBLE): returnValue.value.d = ((SchedDoubleParameter) param).value; returnValue.value.setType(double.class); break; - case (6): + case (SCHED_PARAM_BOOLEAN): returnValue.value.b = (byte) (((SchedBooleanParameter) param).value ? 1 : 0); returnValue.value.setType(byte.class); break; diff --git a/src/main/java/org/libvirt/SchedUintParameter.java b/src/main/java/org/libvirt/SchedUintParameter.java index 421de2f..940b4a9 100644 --- a/src/main/java/org/libvirt/SchedUintParameter.java +++ b/src/main/java/org/libvirt/SchedUintParameter.java @@ -22,7 +22,7 @@ public SchedUintParameter(final int value) { } public int getType() { - return 2; + return SCHED_PARAM_UINT; } public String getTypeAsString() { diff --git a/src/main/java/org/libvirt/SchedUlongParameter.java b/src/main/java/org/libvirt/SchedUlongParameter.java index 6a25d33..39bcdcc 100644 --- a/src/main/java/org/libvirt/SchedUlongParameter.java +++ b/src/main/java/org/libvirt/SchedUlongParameter.java @@ -21,7 +21,7 @@ public SchedUlongParameter(final long value) { } public int getType() { - return 4; + return SCHED_PARAM_ULONG; } public String getTypeAsString() { From f7f2253aab5f3ba0a81411467705c2b2bebc07b3 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:14 +0200 Subject: [PATCH 033/114] Rework enum switch case inquiry Enum entries may contain a defined value. Rework the lengthy enum switch case inquiry by using the defined values. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/ConnectAuth.java | 93 ++++++------------- .../java/org/libvirt/event/IOErrorAction.java | 25 +++-- 2 files changed, 39 insertions(+), 79 deletions(-) diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index 361e30d..87f8600 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -44,39 +44,9 @@ public static class Credential { * @param challenge * @param defresult */ - Credential(final int type, final String prompt, final String challenge, - final String defresult) { - switch (type) { - case 1: - this.type = CredentialType.VIR_CRED_USERNAME; - break; - case 2: - this.type = CredentialType.VIR_CRED_AUTHNAME; - break; - case 3: - this.type = CredentialType.VIR_CRED_LANGUAGE; - break; - case 4: - this.type = CredentialType.VIR_CRED_CNONCE; - break; - case 5: - this.type = CredentialType.VIR_CRED_PASSPHRASE; - break; - case 6: - this.type = CredentialType.VIR_CRED_ECHOPROMPT; - break; - case 7: - this.type = CredentialType.VIR_CRED_NOECHOPROMPT; - break; - case 8: - this.type = CredentialType.VIR_CRED_REALM; - break; - case 9: - this.type = CredentialType.VIR_CRED_EXTERNAL; - break; - default: - assert (false); - } + Credential(final int type, final String prompt, + final String challenge, final String defresult) { + this.type = CredentialType.mapFromInt(type); this.prompt = prompt; this.challenge = challenge; this.defresult = defresult; @@ -93,75 +63,68 @@ public enum CredentialType { /** * Fake credential so that the ordinal value equls the c value. */ - VIR_CRED_NONE, + VIR_CRED_NONE(0), /** * Identity to act as */ - VIR_CRED_USERNAME, + VIR_CRED_USERNAME(1), /** * Identify to authorize as */ - VIR_CRED_AUTHNAME, + VIR_CRED_AUTHNAME(2), /** * RFC 1766 languages, comma separated */ - VIR_CRED_LANGUAGE, + VIR_CRED_LANGUAGE(3), /** * client supplies a nonce */ - VIR_CRED_CNONCE, + VIR_CRED_CNONCE(4), /** * Passphrase secret */ - VIR_CRED_PASSPHRASE, + VIR_CRED_PASSPHRASE(5), /** * Challenge response */ - VIR_CRED_ECHOPROMPT, + VIR_CRED_ECHOPROMPT(6), /** * Challenge response */ - VIR_CRED_NOECHOPROMPT, + VIR_CRED_NOECHOPROMPT(7), /** * Authentication realm */ - VIR_CRED_REALM, + VIR_CRED_REALM(8), /** * Externally managed credential More may be added - expect the * unexpected */ - VIR_CRED_EXTERNAL; + VIR_CRED_EXTERNAL(9); + + private final int value; + + CredentialType(final int val) { + this.value = val; + } /** * Maps the java CredentialType Enum to libvirt's integer constant * * @return The integer equivalent */ - @SuppressWarnings("all") public int mapToInt() { - switch (this) { - case VIR_CRED_USERNAME: - return 1; - case VIR_CRED_AUTHNAME: - return 2; - case VIR_CRED_LANGUAGE: - return 3; - case VIR_CRED_CNONCE: - return 4; - case VIR_CRED_PASSPHRASE: - return 5; - case VIR_CRED_ECHOPROMPT: - return 6; - case VIR_CRED_NOECHOPROMPT: - return 7; - case VIR_CRED_REALM: - return 8; - case VIR_CRED_EXTERNAL: - return 9; + return value; + } + + public static CredentialType mapFromInt(final int t) { + for (CredentialType type : CredentialType.values()) { + if (t == type.value) { + return type; + } } - // We may never reach this point assert (false); - return 0; + return VIR_CRED_NONE; } } diff --git a/src/main/java/org/libvirt/event/IOErrorAction.java b/src/main/java/org/libvirt/event/IOErrorAction.java index 97b82a8..2b8001f 100644 --- a/src/main/java/org/libvirt/event/IOErrorAction.java +++ b/src/main/java/org/libvirt/event/IOErrorAction.java @@ -4,36 +4,33 @@ public enum IOErrorAction { /** * No action, I/O error ignored. */ - NONE, + NONE(0), /** * Guest CPUs are paused. */ - PAUSE, + PAUSE(1), /** * I/O error was reported to the guest OS. */ - REPORT, + REPORT(2), /** * An unknown action was taken. */ - UNKNOWN; + UNKNOWN(3); - private static final IOErrorAction[] vals = IOErrorAction.values(); + private final int value; - static { - // make sure that the enum constants have the correct - // ordinal number assigned in correspondence to the - // values of the virDomainEventIOErrorAction enum - // members + IOErrorAction(final int val) { + this.value = val; + } - assert NONE.ordinal() == 0; - assert PAUSE.ordinal() == 1; - assert REPORT.ordinal() == 2; + private static final IOErrorAction[] VALS = IOErrorAction.values(); + static { // must be the last constant - assert UNKNOWN.ordinal() == vals.length - 1; + assert UNKNOWN.value == VALS.length - 1; } } From c9cad9c084ad674fcf42bef1e66451cb19b17035 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:15 +0200 Subject: [PATCH 034/114] Add bitflag helper Instead of using the (1 << x) notation causing magic constant warnings introduce a bitflag helper function. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Domain.java | 61 +++++++++++++++------------ 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 8da3f42..f49d353 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -38,6 +38,13 @@ */ public class Domain { + private static int bit(final int i) { + return 1 << i; + } + + /** + * TODO: get generated constants from libvirt + */ public static final class BlockResizeFlags { /** * size is in bytes instead of KiB @@ -48,68 +55,68 @@ public static final class BlockResizeFlags { static final class CreateFlags { static final int VIR_DOMAIN_NONE = 0; /** Restore or alter metadata */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE = (1 << 0); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE = bit(0); /** With redefine, make snapshot current */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT = (1 << 1); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT = bit(1); /** Make snapshot without remembering it */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = (1 << 2); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = bit(2); /** Stop running guest after snapshot */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_HALT = (1 << 3); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_HALT = bit(3); /** disk snapshot, not system checkpoint */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = (1 << 4); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = bit(4); /** reuse any existing external files */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = (1 << 5); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = bit(5); /** use guest agent to quiesce all mounted file systems within the domain */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = (1 << 6); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = bit(6); /* atomically avoid partial changes */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC = (1 << 7); + static final int VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC = bit(7); } static final class MigrateFlags { /** live migration */ - static final int VIR_MIGRATE_LIVE = (1 << 0); + static final int VIR_MIGRATE_LIVE = bit(0); /** direct source -> dest host control channel */ - static final int VIR_MIGRATE_PEER2PEER = (1 << 1); + static final int VIR_MIGRATE_PEER2PEER = bit(1); /** tunnel migration data over libvirtd connection * @apiNote Note the less-common spelling that we're stuck with: * VIR_MIGRATE_TUNNELLED should be VIR_MIGRATE_TUNNELED */ - static final int VIR_MIGRATE_TUNNELLED = (1 << 2); + static final int VIR_MIGRATE_TUNNELLED = bit(2); /** persist the VM on the destination */ - static final int VIR_MIGRATE_PERSIST_DEST = (1 << 3); + static final int VIR_MIGRATE_PERSIST_DEST = bit(3); /** undefine the VM on the source */ - static final int VIR_MIGRATE_UNDEFINE_SOURCE = (1 << 4); + static final int VIR_MIGRATE_UNDEFINE_SOURCE = bit(4); /** pause on remote side */ - static final int VIR_MIGRATE_PAUSED = (1 << 5); + static final int VIR_MIGRATE_PAUSED = bit(5); /** migration with non-shared storage with full disk copy */ - static final int VIR_MIGRATE_NON_SHARED_DISK = (1 << 6); + static final int VIR_MIGRATE_NON_SHARED_DISK = bit(6); /** migration with non-shared storage with incremental copy * (same base image shared between source and destination) */ - static final int VIR_MIGRATE_NON_SHARED_INC = (1 << 7); + static final int VIR_MIGRATE_NON_SHARED_INC = bit(7); /** protect for changing domain configuration through the * whole migration process; this will be used automatically * when supported */ - static final int VIR_MIGRATE_CHANGE_PROTECTION = (1 << 8); + static final int VIR_MIGRATE_CHANGE_PROTECTION = bit(8); /** force migration even if it is considered unsafe */ - static final int VIR_MIGRATE_UNSAFE = (1 << 9); + static final int VIR_MIGRATE_UNSAFE = bit(9); } static final class XMLFlags { @@ -120,38 +127,38 @@ static final class XMLFlags { static final int VIR_DOMAIN_XML_INACTIVE = 2; /** update guest CPU requirements according to host CPU */ - static final int VIR_DOMAIN_XML_UPDATE_CPU = (1 << 2); + static final int VIR_DOMAIN_XML_UPDATE_CPU = bit(2); } public static final class UndefineFlags { /** Also remove any managed save */ - public static final int MANAGED_SAVE = (1 << 0); + public static final int MANAGED_SAVE = bit(0); /** If last use of domain, then also remove any snapshot metadata */ - public static final int SNAPSHOTS_METADATA = (1 << 1); + public static final int SNAPSHOTS_METADATA = bit(1); } public static final class SnapshotListFlags { /** Filter by snapshots with no parents, when listing a domain */ - public static final int ROOTS = (1 << 0); + public static final int ROOTS = bit(0); /** List all descendants, not just children, when listing a snapshot */ - public static final int DESCENDANTS = (1 << 0); + public static final int DESCENDANTS = bit(0); /** @apiNote For historical reasons, groups do not use contiguous bits. */ /** Filter by snapshots with no children */ - public static final int LEAVES = (1 << 2); + public static final int LEAVES = bit(2); /** Filter by snapshots that have children */ - public static final int NO_LEAVES = (1 << 3); + public static final int NO_LEAVES = bit(3); /** Filter by snapshots which have metadata */ - public static final int METADATA = (1 << 1); + public static final int METADATA = bit(1); /** Filter by snapshots with no metadata */ - public static final int NO_METADATA = (1 << 4); + public static final int NO_METADATA = bit(4); } /** the native virDomainPtr. */ From 74401d342fcef98e5f75236237a880fbcfd602f2 Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:16 +0200 Subject: [PATCH 035/114] Remove useless elvis operator There is no need for an elvis operator returning true and false for boolean values. Remove the useless elvis operator. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 2 +- src/main/java/org/libvirt/SchedBooleanParameter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 0b8383c..ef532cf 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -1998,7 +1998,7 @@ public Stream streamNew(final int flags) throws LibvirtException { * @throws LibvirtException */ public boolean isConnected() throws LibvirtException { - return ((vcp != null) ? true : false); + return vcp != null; } /** diff --git a/src/main/java/org/libvirt/SchedBooleanParameter.java b/src/main/java/org/libvirt/SchedBooleanParameter.java index 42b73d9..866cbdc 100644 --- a/src/main/java/org/libvirt/SchedBooleanParameter.java +++ b/src/main/java/org/libvirt/SchedBooleanParameter.java @@ -21,7 +21,7 @@ public SchedBooleanParameter(final boolean value) { } public SchedBooleanParameter(final byte value) { - this.value = ((value) != 0) ? true : false; + this.value = ((value) != 0); } public int getType() { From c31bcf960c087c6f9c48b617d86de59c13c260fd Mon Sep 17 00:00:00 2001 From: Benedikt Spranger Date: Wed, 20 May 2020 18:59:17 +0200 Subject: [PATCH 036/114] Remove useless parentheses Useless parentheses bedevil the source. Remove them. Signed-off-by: Benedikt Spranger Reviewed-by: Bastian Germann --- src/main/java/org/libvirt/Connect.java | 8 +++---- src/main/java/org/libvirt/ConnectAuth.java | 2 +- src/main/java/org/libvirt/Domain.java | 4 ++-- src/main/java/org/libvirt/Error.java | 2 +- src/main/java/org/libvirt/SchedParameter.java | 24 +++++++++---------- .../java/org/libvirt/StoragePoolInfo.java | 2 +- src/main/java/org/libvirt/StorageVolInfo.java | 2 +- src/main/java/org/libvirt/Stream.java | 2 +- src/main/java/org/libvirt/jna/CString.java | 4 ++-- src/main/java/org/libvirt/jna/Libvirt.java | 2 +- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index ef532cf..6f98b74 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -148,7 +148,7 @@ public static int[] convertUUIDBytes(final byte[] bytes) { for (int x = 0; x < Libvirt.VIR_UUID_BUFLEN; x++) { // For some reason, the higher bytes come back wierd. // We only want the lower 2 bytes. - returnValue[x] = (bytes[x] & 255); + returnValue[x] = bytes[x] & 255; } return returnValue; } @@ -230,7 +230,7 @@ public boolean equals(final Object obj) { Connect other = (Connect) obj; if (vcp == null) { - return (other.vcp == null); + return other.vcp == null; } else if (vcp.equals(other.vcp)) { return true; } @@ -2010,7 +2010,7 @@ public boolean isConnected() throws LibvirtException { * @return {@code true} if alive, {@code false} otherwise. */ public boolean isAlive() throws LibvirtException { - return (1 == processError(libvirt.virConnectIsAlive(vcp))); + return 1 == processError(libvirt.virConnectIsAlive(vcp)); } /** @@ -2045,6 +2045,6 @@ public boolean isAlive() throws LibvirtException { */ public boolean setKeepAlive(final int interval, final int count) throws LibvirtException { - return (0 == processError(libvirt.virConnectSetKeepAlive(vcp, interval, count))); + return 0 == processError(libvirt.virConnectSetKeepAlive(vcp, interval, count)); } } diff --git a/src/main/java/org/libvirt/ConnectAuth.java b/src/main/java/org/libvirt/ConnectAuth.java index 87f8600..b04034d 100644 --- a/src/main/java/org/libvirt/ConnectAuth.java +++ b/src/main/java/org/libvirt/ConnectAuth.java @@ -123,7 +123,7 @@ public static CredentialType mapFromInt(final int t) { return type; } } - assert (false); + assert false; return VIR_CRED_NONE; } } diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index f49d353..eac8bef 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -207,7 +207,7 @@ public boolean equals(final Object obj) { } if (vdp == null) { - return (other.vdp == null); + return other.vdp == null; } if (vdp.equals(other.vdp)) { @@ -424,7 +424,7 @@ public void coreDump(final String to, final int flags) throws LibvirtException { * between a single virtual & all physical CPUs of a domain. */ public int cpuMapLength(final int maxCpus) { - return (((maxCpus) + 7) / 8); + return (maxCpus + 7) / 8; } /** diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index c44c6fd..6737fb9 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -18,7 +18,7 @@ public class Error implements Serializable { * values.length}, otherwise the last item of {@code values}. */ private static T safeElementAt(final int n, final T[] values) { - assert (n >= 0 && values.length > 0); + assert n >= 0 && values.length > 0; int idx = Math.min(n, values.length - 1); return values[idx]; diff --git a/src/main/java/org/libvirt/SchedParameter.java b/src/main/java/org/libvirt/SchedParameter.java index cb731ff..8e4d127 100644 --- a/src/main/java/org/libvirt/SchedParameter.java +++ b/src/main/java/org/libvirt/SchedParameter.java @@ -31,22 +31,22 @@ public static SchedParameter create(final virSchedParameter vParam) { SchedParameter returnValue = null; if (vParam != null) { switch (vParam.type) { - case (SCHED_PARAM_INT): + case SCHED_PARAM_INT: returnValue = new SchedIntParameter(vParam.value.i); break; - case (SCHED_PARAM_UINT): + case SCHED_PARAM_UINT: returnValue = new SchedUintParameter(vParam.value.i); break; - case (SCHED_PARAM_LONG): + case SCHED_PARAM_LONG: returnValue = new SchedLongParameter(vParam.value.l); break; - case (SCHED_PARAM_ULONG): + case SCHED_PARAM_ULONG: returnValue = new SchedUlongParameter(vParam.value.l); break; - case (SCHED_PARAM_DOUBLE): + case SCHED_PARAM_DOUBLE: returnValue = new SchedDoubleParameter(vParam.value.d); break; - case (SCHED_PARAM_BOOLEAN): + case SCHED_PARAM_BOOLEAN: returnValue = new SchedBooleanParameter(vParam.value.b); break; default: @@ -69,27 +69,27 @@ public static virSchedParameter toNative(final SchedParameter param) { } returnValue.type = param.getType(); switch (param.getType()) { - case (SCHED_PARAM_INT): + case SCHED_PARAM_INT: returnValue.value.i = ((SchedIntParameter) param).value; returnValue.value.setType(int.class); break; - case (SCHED_PARAM_UINT): + case SCHED_PARAM_UINT: returnValue.value.i = ((SchedUintParameter) param).value; returnValue.value.setType(int.class); break; - case (SCHED_PARAM_LONG): + case SCHED_PARAM_LONG: returnValue.value.l = ((SchedLongParameter) param).value; returnValue.value.setType(long.class); break; - case (SCHED_PARAM_ULONG): + case SCHED_PARAM_ULONG: returnValue.value.l = ((SchedUlongParameter) param).value; returnValue.value.setType(long.class); break; - case (SCHED_PARAM_DOUBLE): + case SCHED_PARAM_DOUBLE: returnValue.value.d = ((SchedDoubleParameter) param).value; returnValue.value.setType(double.class); break; - case (SCHED_PARAM_BOOLEAN): + case SCHED_PARAM_BOOLEAN: returnValue.value.b = (byte) (((SchedBooleanParameter) param).value ? 1 : 0); returnValue.value.setType(byte.class); break; diff --git a/src/main/java/org/libvirt/StoragePoolInfo.java b/src/main/java/org/libvirt/StoragePoolInfo.java index 308f561..f3026a1 100644 --- a/src/main/java/org/libvirt/StoragePoolInfo.java +++ b/src/main/java/org/libvirt/StoragePoolInfo.java @@ -72,7 +72,7 @@ public enum StoragePoolState { this.state = StoragePoolState.VIR_STORAGE_POOL_DEGRADED; break; default: - assert (false); + assert false; } this.capacity = capacity; this.allocation = allocation; diff --git a/src/main/java/org/libvirt/StorageVolInfo.java b/src/main/java/org/libvirt/StorageVolInfo.java index 13e5fa9..52aa5ab 100644 --- a/src/main/java/org/libvirt/StorageVolInfo.java +++ b/src/main/java/org/libvirt/StorageVolInfo.java @@ -50,7 +50,7 @@ public enum VirStorageVolType { this.type = VirStorageVolType.VIR_STORAGE_VOL_BLOCK; break; default: - assert (false); + assert false; } this.capacity = capacity; this.allocation = allocation; diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 3cf35f2..41fb548 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -42,7 +42,7 @@ */ public class Stream implements ByteChannel { - public static final int VIR_STREAM_NONBLOCK = (1 << 0); + public static final int VIR_STREAM_NONBLOCK = 1; /** * the native virStreamPtr. diff --git a/src/main/java/org/libvirt/jna/CString.java b/src/main/java/org/libvirt/jna/CString.java index d186119..c623eff 100644 --- a/src/main/java/org/libvirt/jna/CString.java +++ b/src/main/java/org/libvirt/jna/CString.java @@ -47,8 +47,8 @@ public String toString() { // N.B. could be replaced with Pointer.getString(0L, "UTF-8") // available in JNA >= 4.x final long len = ptr.indexOf(0, NUL); - assert (len != -1) : "C-Strings must be \\0 terminated."; - assert (len <= Integer.MAX_VALUE) : "string length exceeded " + Integer.MAX_VALUE; + assert len != -1 : "C-Strings must be \\0 terminated."; + assert len <= Integer.MAX_VALUE : "string length exceeded " + Integer.MAX_VALUE; if (len == 0) { string = ""; diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 6c0b6fc..2c68a18 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -155,7 +155,7 @@ interface VirEventTimeoutCallback extends Callback { // Constants we need int VIR_UUID_BUFLEN = 16; - int VIR_UUID_STRING_BUFLEN = (36 + 1); + int VIR_UUID_STRING_BUFLEN = 36 + 1; int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80; // Connection Functions From 7481c0a3e11a1a26b54d1ee6d942c98dcf1fd9f5 Mon Sep 17 00:00:00 2001 From: Bastian Germann Date: Mon, 8 Jun 2020 22:09:01 +0200 Subject: [PATCH 037/114] Update the max compatible JNA version JNA 5.0.0 is the first JDK 10+ compatible version. It should be possible to use it as well. Update the maximum version to the latest release. Signed-off-by: Bastian Germann --- pom.xml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml.in b/pom.xml.in index 4f49a3a..8e23b96 100644 --- a/pom.xml.in +++ b/pom.xml.in @@ -27,7 +27,7 @@ net.java.dev.jna jna provided - [3.4.1,4.0.0] + [3.4.1,5.5.0] From 15c99f10406e61dc3cf49ab753820d0a0bc5c986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 3 Jul 2020 17:22:01 +0100 Subject: [PATCH 038/114] rpm: trim changelog from spec file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The changelog only makes sense in the context of the distro, so remove it from our upstream example spec. Signed-off-by: Daniel P. Berrangé --- libvirt-java.spec.in | 67 -------------------------------------------- 1 file changed, 67 deletions(-) diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index 74ebb1e..1473c8e 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -91,70 +91,3 @@ rm -rf %{buildroot} %{_javadocdir}/%{name} %changelog -* Fri Sep 20 2013 Daniel Veillard - 0.5.1 -- fix compatibility with java-1.6 - -* Fri Sep 13 2013 Daniel Veillard - 0.5.0 -- A few bug and portability fixes -- Some improvements and better migration and storage support - -* Fri Jul 6 2012 Daniel Veillard - 0.4.8-1 -- Add flags to StoragePoolRefresh -- use byte[] array for secretGetValue -- Fix for the jna parameter passing issue -- Added domain flags and error constants for libvirt 0.9.12 - -* Thu Feb 3 2011 Bryan Kearney - 0.4.7-1 -- Only throw errors on real errors. -- Remote non thread safe error reporting -- BZ 600819 Incorrect scheduler parameter value passed to native API. - -* Tue Jul 6 2010 Bryan Kearney - 0.4.6-1 -- Added libvirt support up to 0.8.2 API - -* Mon May 24 2010 Bryan Kearney - 0.4.5-1 -- Added libvirt support up to 0.8.1 API - -* Fri May 14 2010 Bryan Kearney - 0.4.3-1 -- Added libvirt API support for up to 0.7.1 -- Reduce java dependencies to 1.5 -- Improved packaging for javadocs -- Better Free/Close handling - -* Fri Jan 29 2010 Bryan Kearney - 0.4.2-1 -- Changed Scheduled Parameters to be a Union instead of a Struct. -- Better Pointer mappings in the error callback - -* Mon Jan 18 2010 Bryan Kearney - 0.4.1-1 -- Better null checking around Scheduled Parameters -- Added error function callback - -* Tue Dec 1 2009 Bryan Kearney - 0.4.0-2 -- Modified the dependency to be libvirt-client instead of libvirt. - -* Tue Nov 24 2009 Bryan Kearney - 0.4.0-1 -- Added libvirt APIs up through 0.7.0 - -* Tue Nov 24 2009 Bryan Kearney - 0.3.2-1 -- Added libvirt APIs up through 0.6.1 - -* Thu Oct 29 2009 Bryan Kearney - 0.3.1-1 -- Added maven building tools. -- Fixed connection and domain bugs found by Thomas Treutner - -* Wed Jul 29 2009 Bryan Kearney - 0.3.0-1 -- refactored the code to use jna (https://jna.dev.java.net/) - -* Fri Jul 18 2008 Daniel Veillard - 0.2.0-1 -- new release 0.2.0 -- finished cleanup of APIs - -* Thu Jul 3 2008 Daniel Veillard - 0.1.2-1 -- new release 0.1.2 - -* Tue Jul 1 2008 Daniel Veillard - 0.1.1-1 -- new release 0.1.1 - -* Tue Jun 24 2008 Daniel Veillard - 0.1.0-1 -- created - From 1d425618a5bebeff31281f9a3accd29fdb159952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 3 Jul 2020 17:24:28 +0100 Subject: [PATCH 039/114] Replace changelog with pointer to git logs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Maintaining a manual changelog is redundant with the use of git. Signed-off-by: Daniel P. Berrangé --- ChangeLog | 185 +++--------------------------------------------------- 1 file changed, 10 insertions(+), 175 deletions(-) diff --git a/ChangeLog b/ChangeLog index 44ffa73..f9a0fac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,180 +1,15 @@ -Deprecated, the log of changes can be found on the git server - http://libvirt.org/git/?p=libvirt-java.git;a=summary +libvirt-java ChangeLog +====================== -Thu Oct 29 2009 Bryan Kearney - * Added maven building tools. - * Fixed connection and domain bugs found by Thomas Treutner +The libvirt-java project doesn't include a detailed ChangeLog in its +release archives. -Wed Jul 29 2009 Bryan Kearney - * refactored the code to use jna (https://jna.dev.java.net/) +If you're interested in the full list of changes made to libvirt since +the project was started, you can clone the git repository from -Mon May 11 10:49:54 CEST 2009 Daniel Veillard + https://gitlab.com/libvirt/libvirt-java/ - * src/jni/org_libvirt_Domain.c: fix a cut and paste bug pointed out - by Zvi Dubitzky - -Wed Oct 29 14:28:50 CET 2008 Daniel Veillard - - * src/jni/Makefile.am: Include LIBVIRT_CFLAGS in the CFLAGS used for - the libvirt JNI sources, patch by David Lively - * AUTHORS: added sources for patches - -Thu Sep 4 10:53:07 CEST 2008 Daniel Veillard - - * src/org/libvirt/Connect.java: small doc patch from Thomas Fricke - -Wed Aug 20 18:03:43 CEST 2008 Daniel Veillard - - * src/org/libvirt/Error.java: patch from Daniel Schwager to make - org.libvirt.Error serializable - -Wed Aug 20 17:16:16 CEST 2008 Daniel Veillard - - * src/org/libvirt/StoragePoolInfo.java - src/org/libvirt/StorageVolInfo.java: missing semicolumn broke the - gcj javadoc - -Fri Aug 8 15:01:18 CEST 2008 Daniel Veillard - - * NEWS: release of 0.2.1 - * src/jni/org_libvirt_Connect.c src/jni/org_libvirt_Domain.c: fix a - couple of comments - -Fri Aug 8 14:27:29 CEST 2008 Daniel Veillard - - * src/jni/generic.h src/jni/org_libvirt_StoragePool.c - src/jni/org_libvirt_StorageVol.c src/org/libvirt/StoragePool.java - src/org/libvirt/StoragePoolInfo.java src/org/libvirt/StorageVol.java - src/org/libvirt/StorageVolInfo.java: oops forgotten a number of files - from the previous patch - -Tue Aug 5 11:08:31 CEST 2008 Daniel Veillard - - * src/org/libvirt/ErrorException.java src/org/libvirt/Connect.java - src/org/libvirt/LibvirtException.java src/org/libvirt/ConnectAuth.java - src/jni/org_libvirt_Connect.c src/jni/org_libvirt_Network.c - src/jni/Makefile.am src/jni/org_libvirt_Domain.c src/Makefile.am - src/org/libvirt/StorageVolInfo.java src/jni/org_libvirt_StoragePool.c - src/org/libvirt/StorageVol.java src/org/libvirt/StoragePoolInfo.java - src/org/libvirt/StoragePool.java src/jni/org_libvirt_StorageVol.c - src/jni/generic.h: big patch from Tóth István refactoring the - JNI binding code, removing leaks, and adding storage support - * configure.in: bumped version to 0.2.1 and required version to 0.4.1 - for an upcoming new release. - -Tue Jul 22 10:26:29 CEST 2008 Daniel Veillard - - * src/jni/org_libvirt_Connect.c: Tóth István found the bug when - an exception was raised at connection time. - -Mon Jul 21 09:51:30 CEST 2008 Daniel Veillard - - * src/jni/ConnectAuthCallbackBridge.c: patch from Tóth István - for the ConnectAuth jni code - * src/Makefile.am: augment make clean to remove jar and .class - -Fri Jul 18 16:32:14 CEST 2008 Daniel Veillard - - * libvirt-java.spec.in configure.in: release of 0.2.0 - * autogen.sh configure.in: trying to help on Solaris build - * README.in README: make README configured for version and prefix - * src/Makefile.am src/test.java src/jni/* src/org/libvirt/*: - renamed all entry points removing the vir or Vir prefixes in - public classes and methods, except for LibvirtException, - various cleanups and debug - -Fri Jul 18 13:29:51 CEST 2008 Daniel Veillard - - * libvirt-java.spec.in: remove the build and installation of a source - zip file. - * src/jni/VirConnectAuthCallbackBridge.c - src/jni/org_libvirt_VirConnect.c - src/org/libvirt/VirConnectAuth.java - src/org/libvirt/VirConnectCredential.java: remove - VirConnectCredential and make is a subclass of VirConnectAuth - -Thu Jul 3 17:45:34 CEST 2008 Daniel Veillard - - * configure.in libvirt-java.spec.in: release 0.1.2 - -Thu Jul 3 17:12:24 CEST 2008 Daniel Veillard - - * configure.in: cleanup - * libvirt-java.spec.in: do not try to activate parallel make - * src/jni/VirErrorHandler.c src/org/libvirt/LibvirtException.java - src/org/libvirt/VirDomainBlockStats.java src/org/libvirt/VirError.java - src/org/libvirt/VirConnect.java src/org/libvirt/VirNetwork.java: - the domain/network/conn fields of errors are deprecated now, - so removing them and fixing entry points, also fix more javadoc - warnings. - -Thu Jul 3 15:26:30 CEST 2008 Daniel Veillard - - * INSTALL configure.in libvirt-java.spec.in: revamped the - JVM detection based on JPackage and David Walluck feedback. - -Wed Jul 2 14:47:44 CEST 2008 Daniel Veillard - - * src/org/libvirt/VirDomain.java src/org/libvirt/VirNetwork.java: - fixing some javadoc HTML tags - -Wed Jul 2 13:58:36 CEST 2008 Daniel Veillard - - * configure.in src/Makefile.am: more portability stuff - -Tue Jul 1 16:58:46 CEST 2008 Daniel Veillard - - * Makefile.am configure.in libvirt-java.spec.in: cleanup, portability - and new release of 0.1.1 - -Tue Jul 1 15:32:23 CEST 2008 Daniel Veillard - - * configure.in: fix compilation problems related to jni_md.h - include paths, should be quite more portable now. - * aclocal.m4 config.guess config.sub: generated they should not - have been commited. - -Tue Jul 1 12:01:16 CEST 2008 Daniel Veillard - - * aclocal.m4 config.guess config.sub configure.in src/jni/Makefile.am: - add JDK detection hint and JNI include path, plus fixes for older - auto* tools. - -Mon Jun 30 15:08:32 CEST 2008 Daniel Veillard - - * libvirt-java.spec.in: rpmlint related cleanups - * src/Makefile.am src/test.java src/jni/Makefile.am - src/jni/VirConnectAuthCallbackBridge.[ch] - src/jni/org_libvirt_VirConnect.c src/jni/org_libvirt_VirDomain.c - src/jni/org_libvirt_VirNetwork.c src/org/libvirt/VirConnect.java - src/org/libvirt/VirConnectAuth.java - src/org/libvirt/VirConnectAuthDefault.java - src/org/libvirt/VirConnectCredential.java - src/org/libvirt/VirDomain.java src/org/libvirt/VirError.java - src/org/libvirt/VirSchedParameter.java: - new patch from Tóth István, various cleanups, added connection - auth support. - * src/jni/org_libvirt_VirDomain_CreateFlags.h - src/jni/org_libvirt_VirDomain_MigrateFlags.h: remove generated files - from CVS - -Wed Jun 25 15:00:41 CEST 2008 Daniel Veillard - - * INSTALL Makefile.am configure.in libvirt-java.pc.in - libvirt-java.spec.in src/Makefile.am src/jni/Makefile.am: - various cleanups following Tóth early feedback - -Wed Jun 25 07:21:02 CEST 2008 Daniel Veillard - - * README: added content from Tóth István - -Tue Jun 24 18:30:39 CEST 2008 Daniel Veillard - - * AUTHORS COPYING.LIB ChangeLog Makefile.am NEWS README aclocal.m4 - autogen.sh config.guess config.h.in config.sub configure.in - libvirt-java.pc.in libvirt-java.spec.in doc/Makefile.am - src/Makefile.am src/jni/Makefile.am: all the configure, make - and rpm stuff, first version - * src/test.java src/jni/*.[ch] src/org/libvirt/*.java: the sources - based on 0.0.1 from Tóth István +and browse them locally using your favorite git history viewer or, +alternatively, browse them online at + https://gitlab.com/libvirt/libvirt-java/-/commits/master From 61c0107188494b2bc403718ee1a8c950390c60de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 3 Jul 2020 17:29:09 +0100 Subject: [PATCH 040/114] set a relative directory for RPM builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel P. Berrangé --- build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.properties b/build.properties index c7c1a43..c00a9b8 100644 --- a/build.properties +++ b/build.properties @@ -4,5 +4,5 @@ libvirt.required=0.9.12 java.required=1.8.0 java.target=1.8 java.source=1.8 -rpm.topdir=/home/veillard/rpms +rpm.topdir=build/rpm jar.dir=/usr/share/java From e030f6a2d8ff6f234da4f149e0976b370e423aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 3 Jul 2020 17:25:30 +0100 Subject: [PATCH 041/114] Bump for release 0.5.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel P. Berrangé --- build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.properties b/build.properties index c00a9b8..67c528e 100644 --- a/build.properties +++ b/build.properties @@ -1,4 +1,4 @@ -version=0.5.1 +version=0.5.2 release=1 libvirt.required=0.9.12 java.required=1.8.0 From 9806651567d0345dc558d2dc2829da6323f4c20c Mon Sep 17 00:00:00 2001 From: Bastian Germann Date: Sun, 5 Jul 2020 13:20:29 +0200 Subject: [PATCH 042/114] Prevent NPE in qemuAgentCommand On result = null, qemuAgentCommand will throw a NullPointerException. Prevent this by constructing a CString from it. Signed-off-by: Bastian Germann --- src/main/java/org/libvirt/Domain.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index eac8bef..dfcc2dc 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1641,7 +1641,7 @@ public int updateDeviceFlags(final String xml, final int flags) * @throws LibvirtException */ public String qemuAgentCommand(String cmd, int timeout, int flags) throws LibvirtException { - CString result = libvirtQemu != null ? libvirtQemu.virDomainQemuAgentCommand(vdp, cmd, timeout, flags) : null; + CString result = libvirtQemu != null ? libvirtQemu.virDomainQemuAgentCommand(vdp, cmd, timeout, flags) : new CString(null); processError(result); return result.toString(); } From 55f0710857ae67f2f58f3cecbda8aec4b6dde6e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 4 Aug 2020 12:37:10 +0100 Subject: [PATCH 043/114] ci: refresh dockerfiles for changed libvirt build system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Libvirt changed from autotools to meson. All the containers need refreshing and the CI recipes updated. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 21 +++++----- ci/libvirt-centos-7.Dockerfile | 6 ++- ci/libvirt-centos-8.Dockerfile | 11 +++-- ci/libvirt-centos-stream.Dockerfile | 61 ++++++++++++++++++++++++++++ ci/libvirt-debian-10.Dockerfile | 9 +++- ci/libvirt-debian-sid.Dockerfile | 5 ++- ci/libvirt-fedora-31.Dockerfile | 9 +++- ci/libvirt-fedora-32.Dockerfile | 5 ++- ci/libvirt-fedora-rawhide.Dockerfile | 5 ++- ci/libvirt-opensuse-151.Dockerfile | 6 ++- ci/libvirt-ubuntu-1804.Dockerfile | 6 ++- ci/libvirt-ubuntu-2004.Dockerfile | 9 +++- ci/refresh | 2 +- 13 files changed, 126 insertions(+), 29 deletions(-) create mode 100644 ci/libvirt-centos-stream.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cb11858..70f445f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,18 +28,18 @@ stages: - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" - export SCRATCH_DIR="/tmp/scratch" - export VROOT="$SCRATCH_DIR/vroot" - - export LD_LIBRARY_PATH="$VROOT/lib" + - export LIBDIR="$VROOT/lib" + - export LD_LIBRARY_PATH="$LIBDIR" - export PATH="$VROOT/bin:$PATH" - - export PKG_CONFIG_PATH="$VROOT/lib/pkgconfig" + - export PKG_CONFIG_PATH="$LIBDIR/pkgconfig" script: - pushd "$PWD" - mkdir -p "$SCRATCH_DIR" - cd "$SCRATCH_DIR" - git clone --depth 1 https://gitlab.com/libvirt/libvirt.git - - mkdir libvirt/build - - cd libvirt/build - - ../autogen.sh --prefix="$VROOT" --without-libvirtd - - $MAKE install + - cd libvirt + - meson build -Ddriver_libvirtd=disabled "--prefix=$VROOT" "--libdir=$LIBDIR" + - ninja -C build install - popd - ant build jar docs - if test "$TESTS" != "skip" ; then ant test ; fi @@ -78,10 +78,10 @@ centos-8-container: variables: NAME: centos-8 -debian-9-container: +centos-stream-container: <<: *container_job_definition variables: - NAME: debian-9 + NAME: centos-stream debian-10-container: <<: *container_job_definition @@ -141,10 +141,11 @@ centos-8-dist-build: NAME: centos-8 TESTS: skip -debian-9-dist-build: +centos-stream-dist-build: <<: *dist_build_job_definition variables: - NAME: debian-9 + NAME: centos-stream + TESTS: skip debian-10-dist-build: <<: *dist_build_job_definition diff --git a/ci/libvirt-centos-7.Dockerfile b/ci/libvirt-centos-7.Dockerfile index 6e78a63..e5872b7 100644 --- a/ci/libvirt-centos-7.Dockerfile +++ b/ci/libvirt-centos-7.Dockerfile @@ -60,6 +60,7 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ ninja-build \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ python3-pip \ @@ -69,7 +70,8 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ yum autoremove -y && \ yum clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ @@ -77,7 +79,7 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) RUN pip3 install \ - meson==0.49.0 + meson==0.54.0 ENV LANG "en_US.UTF-8" diff --git a/ci/libvirt-centos-8.Dockerfile b/ci/libvirt-centos-8.Dockerfile index eb652a8..934f835 100644 --- a/ci/libvirt-centos-8.Dockerfile +++ b/ci/libvirt-centos-8.Dockerfile @@ -1,7 +1,7 @@ FROM centos:8 RUN dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled PowerTools -y && \ + dnf config-manager --set-enabled -y PowerTools && \ dnf install -y epel-release && \ dnf update -y && \ dnf install -y \ @@ -26,26 +26,31 @@ RUN dnf install 'dnf-command(config-manager)' -y && \ libvirt-devel \ lsof \ make \ - meson \ net-tools \ ninja-build \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ rpm-build \ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) +RUN pip3 install \ + meson==0.54.0 + ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/libvirt-centos-stream.Dockerfile b/ci/libvirt-centos-stream.Dockerfile new file mode 100644 index 0000000..01468d7 --- /dev/null +++ b/ci/libvirt-centos-stream.Dockerfile @@ -0,0 +1,61 @@ +FROM centos:8 + +RUN dnf install -y centos-release-stream && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y Stream-PowerTools && \ + dnf install -y epel-release && \ + dnf update -y && \ + dnf install -y \ + ant \ + autoconf \ + automake \ + bash \ + bash-completion \ + ca-certificates \ + ccache \ + chrony \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-devel \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + libtool \ + libvirt-devel \ + lsof \ + make \ + net-tools \ + ninja-build \ + patch \ + perl \ + perl-App-cpanminus \ + pkgconfig \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-wheel \ + rpm-build \ + screen \ + strace \ + sudo \ + vim \ + xz && \ + dnf autoremove -y && \ + dnf clean all -y && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + +RUN pip3 install \ + meson==0.54.0 + +ENV LANG "en_US.UTF-8" + +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/libvirt-debian-10.Dockerfile b/ci/libvirt-debian-10.Dockerfile index 8b85a8e..f5935e7 100644 --- a/ci/libvirt-debian-10.Dockerfile +++ b/ci/libvirt-debian-10.Dockerfile @@ -14,6 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ca-certificates \ ccache \ chrony \ + cpanminus \ gcc \ gdb \ gettext \ @@ -27,7 +28,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ locales \ lsof \ make \ - meson \ net-tools \ ninja-build \ openjdk-11-jdk-headless \ @@ -35,12 +35,14 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ perl \ pkgconf \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ screen \ strace \ sudo \ - vim && \ + vim \ + xz-utils && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -49,6 +51,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) +RUN pip3 install \ + meson==0.54.0 + ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/libvirt-debian-sid.Dockerfile b/ci/libvirt-debian-sid.Dockerfile index cf9803f..9d6dd5b 100644 --- a/ci/libvirt-debian-sid.Dockerfile +++ b/ci/libvirt-debian-sid.Dockerfile @@ -14,6 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ca-certificates \ ccache \ chrony \ + cpanminus \ gcc \ gdb \ gettext \ @@ -35,12 +36,14 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ perl \ pkgconf \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ screen \ strace \ sudo \ - vim && \ + vim \ + xz-utils && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/libvirt-fedora-31.Dockerfile b/ci/libvirt-fedora-31.Dockerfile index 0fe0e1f..c88ac6f 100644 --- a/ci/libvirt-fedora-31.Dockerfile +++ b/ci/libvirt-fedora-31.Dockerfile @@ -26,26 +26,31 @@ RUN dnf update -y && \ libvirt-devel \ lsof \ make \ - meson \ net-tools \ ninja-build \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ rpm-build \ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) +RUN pip3 install \ + meson==0.54.0 + ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/libvirt-fedora-32.Dockerfile b/ci/libvirt-fedora-32.Dockerfile index 79be180..eccb80b 100644 --- a/ci/libvirt-fedora-32.Dockerfile +++ b/ci/libvirt-fedora-32.Dockerfile @@ -31,15 +31,18 @@ RUN dnf update -y && \ ninja-build \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ rpm-build \ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ diff --git a/ci/libvirt-fedora-rawhide.Dockerfile b/ci/libvirt-fedora-rawhide.Dockerfile index dda8771..c1d6b30 100644 --- a/ci/libvirt-fedora-rawhide.Dockerfile +++ b/ci/libvirt-fedora-rawhide.Dockerfile @@ -32,15 +32,18 @@ RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ ninja-build \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ + python3-pip \ python3-setuptools \ python3-wheel \ rpm-build \ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ diff --git a/ci/libvirt-opensuse-151.Dockerfile b/ci/libvirt-opensuse-151.Dockerfile index a46f303..c5d8a89 100644 --- a/ci/libvirt-opensuse-151.Dockerfile +++ b/ci/libvirt-opensuse-151.Dockerfile @@ -30,6 +30,7 @@ RUN zypper update -y && \ ninja \ patch \ perl \ + perl-App-cpanminus \ pkgconfig \ python3 \ python3-pip \ @@ -39,14 +40,15 @@ RUN zypper update -y && \ screen \ strace \ sudo \ - vim && \ + vim \ + xz && \ zypper clean --all && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) RUN pip3 install \ - meson==0.49.0 + meson==0.54.0 ENV LANG "en_US.UTF-8" diff --git a/ci/libvirt-ubuntu-1804.Dockerfile b/ci/libvirt-ubuntu-1804.Dockerfile index 4e0fc1d..bc9d28b 100644 --- a/ci/libvirt-ubuntu-1804.Dockerfile +++ b/ci/libvirt-ubuntu-1804.Dockerfile @@ -14,6 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ca-certificates \ ccache \ chrony \ + cpanminus \ gcc \ gdb \ gettext \ @@ -40,7 +41,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ screen \ strace \ sudo \ - vim && \ + vim \ + xz-utils && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -50,7 +52,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) RUN pip3 install \ - meson==0.49.0 + meson==0.54.0 ENV LANG "en_US.UTF-8" diff --git a/ci/libvirt-ubuntu-2004.Dockerfile b/ci/libvirt-ubuntu-2004.Dockerfile index df5e877..c5edc1c 100644 --- a/ci/libvirt-ubuntu-2004.Dockerfile +++ b/ci/libvirt-ubuntu-2004.Dockerfile @@ -14,6 +14,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ca-certificates \ ccache \ chrony \ + cpanminus \ gcc \ gdb \ gettext \ @@ -35,7 +36,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ locales \ lsof \ make \ - meson \ net-tools \ ninja-build \ openjdk-11-jdk-headless \ @@ -44,13 +44,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ pkgconf \ python3 \ python3-docutils \ + python3-pip \ python3-setuptools \ python3-wheel \ screen \ strace \ sudo \ vim \ - xsltproc && \ + xsltproc \ + xz-utils && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -59,6 +61,9 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) +RUN pip3 install \ + meson==0.54.0 + ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/refresh b/ci/refresh index cf140e4..c659237 100755 --- a/ci/refresh +++ b/ci/refresh @@ -14,7 +14,7 @@ then exit 1 fi -HOSTS=$($LCITOOL hosts | grep -v freebsd) +HOSTS=$($LCITOOL hosts | grep -v -E '(freebsd|macos)') for host in $HOSTS do From 9eddeed136ff0a14cfa9688ad2b8473fc8ecec74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 23 Nov 2020 17:49:43 +0000 Subject: [PATCH 044/114] gitlab: move dockerfiles into ci/containers sub-directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This brings the repo into alignment with the main libvirt.git practice. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 2 +- ci/{ => containers}/README.rst | 0 ci/{ => containers}/libvirt-centos-7.Dockerfile | 0 ci/{ => containers}/libvirt-centos-8.Dockerfile | 0 ci/{ => containers}/libvirt-centos-stream.Dockerfile | 0 ci/{ => containers}/libvirt-debian-10.Dockerfile | 0 ci/{ => containers}/libvirt-debian-9.Dockerfile | 0 ci/{ => containers}/libvirt-debian-sid.Dockerfile | 0 ci/{ => containers}/libvirt-fedora-31.Dockerfile | 0 ci/{ => containers}/libvirt-fedora-32.Dockerfile | 0 ci/{ => containers}/libvirt-fedora-rawhide.Dockerfile | 0 ci/{ => containers}/libvirt-opensuse-151.Dockerfile | 0 ci/{ => containers}/libvirt-ubuntu-1804.Dockerfile | 0 ci/{ => containers}/libvirt-ubuntu-2004.Dockerfile | 0 ci/{ => containers}/refresh | 0 15 files changed, 1 insertion(+), 1 deletion(-) rename ci/{ => containers}/README.rst (100%) rename ci/{ => containers}/libvirt-centos-7.Dockerfile (100%) rename ci/{ => containers}/libvirt-centos-8.Dockerfile (100%) rename ci/{ => containers}/libvirt-centos-stream.Dockerfile (100%) rename ci/{ => containers}/libvirt-debian-10.Dockerfile (100%) rename ci/{ => containers}/libvirt-debian-9.Dockerfile (100%) rename ci/{ => containers}/libvirt-debian-sid.Dockerfile (100%) rename ci/{ => containers}/libvirt-fedora-31.Dockerfile (100%) rename ci/{ => containers}/libvirt-fedora-32.Dockerfile (100%) rename ci/{ => containers}/libvirt-fedora-rawhide.Dockerfile (100%) rename ci/{ => containers}/libvirt-opensuse-151.Dockerfile (100%) rename ci/{ => containers}/libvirt-ubuntu-1804.Dockerfile (100%) rename ci/{ => containers}/libvirt-ubuntu-2004.Dockerfile (100%) rename ci/{ => containers}/refresh (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 70f445f..89425c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,7 +16,7 @@ stages: - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" script: - docker pull "$TAG" || docker pull "$COMMON_TAG" || true - - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/libvirt-$NAME.Dockerfile" ci + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/libvirt-$NAME.Dockerfile" ci/containers - docker push "$TAG" after_script: - docker logout diff --git a/ci/README.rst b/ci/containers/README.rst similarity index 100% rename from ci/README.rst rename to ci/containers/README.rst diff --git a/ci/libvirt-centos-7.Dockerfile b/ci/containers/libvirt-centos-7.Dockerfile similarity index 100% rename from ci/libvirt-centos-7.Dockerfile rename to ci/containers/libvirt-centos-7.Dockerfile diff --git a/ci/libvirt-centos-8.Dockerfile b/ci/containers/libvirt-centos-8.Dockerfile similarity index 100% rename from ci/libvirt-centos-8.Dockerfile rename to ci/containers/libvirt-centos-8.Dockerfile diff --git a/ci/libvirt-centos-stream.Dockerfile b/ci/containers/libvirt-centos-stream.Dockerfile similarity index 100% rename from ci/libvirt-centos-stream.Dockerfile rename to ci/containers/libvirt-centos-stream.Dockerfile diff --git a/ci/libvirt-debian-10.Dockerfile b/ci/containers/libvirt-debian-10.Dockerfile similarity index 100% rename from ci/libvirt-debian-10.Dockerfile rename to ci/containers/libvirt-debian-10.Dockerfile diff --git a/ci/libvirt-debian-9.Dockerfile b/ci/containers/libvirt-debian-9.Dockerfile similarity index 100% rename from ci/libvirt-debian-9.Dockerfile rename to ci/containers/libvirt-debian-9.Dockerfile diff --git a/ci/libvirt-debian-sid.Dockerfile b/ci/containers/libvirt-debian-sid.Dockerfile similarity index 100% rename from ci/libvirt-debian-sid.Dockerfile rename to ci/containers/libvirt-debian-sid.Dockerfile diff --git a/ci/libvirt-fedora-31.Dockerfile b/ci/containers/libvirt-fedora-31.Dockerfile similarity index 100% rename from ci/libvirt-fedora-31.Dockerfile rename to ci/containers/libvirt-fedora-31.Dockerfile diff --git a/ci/libvirt-fedora-32.Dockerfile b/ci/containers/libvirt-fedora-32.Dockerfile similarity index 100% rename from ci/libvirt-fedora-32.Dockerfile rename to ci/containers/libvirt-fedora-32.Dockerfile diff --git a/ci/libvirt-fedora-rawhide.Dockerfile b/ci/containers/libvirt-fedora-rawhide.Dockerfile similarity index 100% rename from ci/libvirt-fedora-rawhide.Dockerfile rename to ci/containers/libvirt-fedora-rawhide.Dockerfile diff --git a/ci/libvirt-opensuse-151.Dockerfile b/ci/containers/libvirt-opensuse-151.Dockerfile similarity index 100% rename from ci/libvirt-opensuse-151.Dockerfile rename to ci/containers/libvirt-opensuse-151.Dockerfile diff --git a/ci/libvirt-ubuntu-1804.Dockerfile b/ci/containers/libvirt-ubuntu-1804.Dockerfile similarity index 100% rename from ci/libvirt-ubuntu-1804.Dockerfile rename to ci/containers/libvirt-ubuntu-1804.Dockerfile diff --git a/ci/libvirt-ubuntu-2004.Dockerfile b/ci/containers/libvirt-ubuntu-2004.Dockerfile similarity index 100% rename from ci/libvirt-ubuntu-2004.Dockerfile rename to ci/containers/libvirt-ubuntu-2004.Dockerfile diff --git a/ci/refresh b/ci/containers/refresh similarity index 100% rename from ci/refresh rename to ci/containers/refresh From 7a3ac3a7986322d64a4a349ee1eed051b40b9580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 23 Nov 2020 18:03:12 +0000 Subject: [PATCH 045/114] gitlab: re-generate container images from lcitool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This introduces Fedora 33 and removes some redundant packages. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 16 ++--- ci/containers/libvirt-centos-7.Dockerfile | 22 +------ ci/containers/libvirt-centos-8.Dockerfile | 23 +------ .../libvirt-centos-stream.Dockerfile | 23 +------ ci/containers/libvirt-debian-10.Dockerfile | 23 +------ ci/containers/libvirt-debian-9.Dockerfile | 61 ------------------- ci/containers/libvirt-debian-sid.Dockerfile | 21 +------ ci/containers/libvirt-fedora-32.Dockerfile | 21 +------ ...ockerfile => libvirt-fedora-33.Dockerfile} | 23 +------ .../libvirt-fedora-rawhide.Dockerfile | 21 +------ ci/containers/libvirt-opensuse-151.Dockerfile | 23 +------ ci/containers/libvirt-ubuntu-1804.Dockerfile | 23 +------ ci/containers/libvirt-ubuntu-2004.Dockerfile | 18 +----- 13 files changed, 32 insertions(+), 286 deletions(-) delete mode 100644 ci/containers/libvirt-debian-9.Dockerfile rename ci/containers/{libvirt-fedora-31.Dockerfile => libvirt-fedora-33.Dockerfile} (72%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 89425c8..26a7c21 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -93,15 +93,15 @@ debian-sid-container: variables: NAME: debian-sid -fedora-31-container: +fedora-32-container: <<: *container_job_definition variables: - NAME: fedora-31 + NAME: fedora-32 -fedora-32-container: +fedora-33-container: <<: *container_job_definition variables: - NAME: fedora-32 + NAME: fedora-33 fedora-rawhide-container: <<: *container_job_definition @@ -157,15 +157,15 @@ debian-sid-dist-build: variables: NAME: debian-sid -fedora-31-dist-build: +fedora-32-dist-build: <<: *dist_build_job_definition variables: - NAME: fedora-31 + NAME: fedora-32 -fedora-32-dist-build: +fedora-33-dist-build: <<: *dist_build_job_definition variables: - NAME: fedora-32 + NAME: fedora-33 fedora-rawhide-dist-build: <<: *dist_build_job_definition diff --git a/ci/containers/libvirt-centos-7.Dockerfile b/ci/containers/libvirt-centos-7.Dockerfile index e5872b7..b3dac64 100644 --- a/ci/containers/libvirt-centos-7.Dockerfile +++ b/ci/containers/libvirt-centos-7.Dockerfile @@ -1,4 +1,4 @@ -FROM centos:7 +FROM registry.centos.org/centos:7 RUN echo -e '[openvz]\n\ name=OpenVZ addons\n\ @@ -35,29 +35,19 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ yum install -y \ ant \ ant-junit \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-common \ glibc-devel \ java-11-openjdk-headless \ jna \ junit \ - libtool \ libvirt-devel \ - lsof \ - make \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -66,21 +56,13 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ yum autoremove -y && \ yum clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-centos-8.Dockerfile b/ci/containers/libvirt-centos-8.Dockerfile index 934f835..5e1c459 100644 --- a/ci/containers/libvirt-centos-8.Dockerfile +++ b/ci/containers/libvirt-centos-8.Dockerfile @@ -1,33 +1,24 @@ -FROM centos:8 +FROM registry.centos.org/centos:8 RUN dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y PowerTools && \ + dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ dnf update -y && \ dnf install -y \ ant \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ - libtool \ libvirt-devel \ - lsof \ - make \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -36,21 +27,13 @@ RUN dnf install 'dnf-command(config-manager)' -y && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-centos-stream.Dockerfile b/ci/containers/libvirt-centos-stream.Dockerfile index 01468d7..3122f6c 100644 --- a/ci/containers/libvirt-centos-stream.Dockerfile +++ b/ci/containers/libvirt-centos-stream.Dockerfile @@ -1,34 +1,25 @@ -FROM centos:8 +FROM registry.centos.org/centos:8 RUN dnf install -y centos-release-stream && \ dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y Stream-PowerTools && \ + dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ dnf update -y && \ dnf install -y \ ant \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ - libtool \ libvirt-devel \ - lsof \ - make \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -37,21 +28,13 @@ RUN dnf install -y centos-release-stream && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-debian-10.Dockerfile b/ci/containers/libvirt-debian-10.Dockerfile index f5935e7..a5d718f 100644 --- a/ci/containers/libvirt-debian-10.Dockerfile +++ b/ci/containers/libvirt-debian-10.Dockerfile @@ -1,4 +1,4 @@ -FROM debian:10 +FROM docker.io/library/debian:10 RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -6,30 +6,19 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - autoconf \ - automake \ - autopoint \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ cpanminus \ gcc \ - gdb \ gettext \ git \ junit \ libc6-dev \ libjna-java \ - libtool \ - libtool-bin \ libvirt-dev \ locales \ - lsof \ - make \ - net-tools \ - ninja-build \ openjdk-11-jdk-headless \ patch \ perl \ @@ -37,12 +26,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3 \ python3-pip \ python3-setuptools \ - python3-wheel \ - screen \ - strace \ - sudo \ - vim \ - xz-utils && \ + python3-wheel && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -51,9 +35,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-debian-9.Dockerfile b/ci/containers/libvirt-debian-9.Dockerfile deleted file mode 100644 index 73d03ed..0000000 --- a/ci/containers/libvirt-debian-9.Dockerfile +++ /dev/null @@ -1,61 +0,0 @@ -FROM debian:9 - -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get dist-upgrade -y && \ - apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - autoconf \ - automake \ - autopoint \ - bash \ - bash-completion \ - ca-certificates \ - ccache \ - chrony \ - gcc \ - gdb \ - gettext \ - git \ - junit \ - libc6-dev \ - libjna-java \ - libtool \ - libtool-bin \ - libvirt-dev \ - locales \ - lsof \ - make \ - net-tools \ - ninja-build \ - openjdk-8-jdk-headless \ - patch \ - perl \ - pkgconf \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ - screen \ - strace \ - sudo \ - vim && \ - apt-get autoremove -y && \ - apt-get autoclean -y && \ - sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) - -RUN pip3 install \ - meson==0.49.0 - -ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-debian-sid.Dockerfile b/ci/containers/libvirt-debian-sid.Dockerfile index 9d6dd5b..563e56b 100644 --- a/ci/containers/libvirt-debian-sid.Dockerfile +++ b/ci/containers/libvirt-debian-sid.Dockerfile @@ -1,4 +1,4 @@ -FROM debian:sid +FROM docker.io/library/debian:sid RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -6,31 +6,19 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - autoconf \ - automake \ - autopoint \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ cpanminus \ gcc \ - gdb \ gettext \ git \ junit \ libc6-dev \ libjna-java \ - libtool \ - libtool-bin \ libvirt-dev \ locales \ - lsof \ - make \ - meson \ - net-tools \ - ninja-build \ openjdk-11-jdk-headless \ patch \ perl \ @@ -38,12 +26,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3 \ python3-pip \ python3-setuptools \ - python3-wheel \ - screen \ - strace \ - sudo \ - vim \ - xz-utils && \ + python3-wheel && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/libvirt-fedora-32.Dockerfile b/ci/containers/libvirt-fedora-32.Dockerfile index eccb80b..9eba8a6 100644 --- a/ci/containers/libvirt-fedora-32.Dockerfile +++ b/ci/containers/libvirt-fedora-32.Dockerfile @@ -1,34 +1,22 @@ -FROM fedora:32 +FROM registry.fedoraproject.org/fedora:32 RUN dnf update -y && \ dnf install -y \ ant \ ant-junit \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ - cppi \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ - libtool \ libvirt-devel \ - lsof \ - make \ - meson \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -37,12 +25,7 @@ RUN dnf update -y && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ diff --git a/ci/containers/libvirt-fedora-31.Dockerfile b/ci/containers/libvirt-fedora-33.Dockerfile similarity index 72% rename from ci/containers/libvirt-fedora-31.Dockerfile rename to ci/containers/libvirt-fedora-33.Dockerfile index c88ac6f..3e4fe39 100644 --- a/ci/containers/libvirt-fedora-31.Dockerfile +++ b/ci/containers/libvirt-fedora-33.Dockerfile @@ -1,33 +1,22 @@ -FROM fedora:31 +FROM registry.fedoraproject.org/fedora:33 RUN dnf update -y && \ dnf install -y \ ant \ ant-junit \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ - cppi \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ - libtool \ libvirt-devel \ - lsof \ - make \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -36,21 +25,13 @@ RUN dnf update -y && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-fedora-rawhide.Dockerfile b/ci/containers/libvirt-fedora-rawhide.Dockerfile index c1d6b30..e07731c 100644 --- a/ci/containers/libvirt-fedora-rawhide.Dockerfile +++ b/ci/containers/libvirt-fedora-rawhide.Dockerfile @@ -1,35 +1,23 @@ -FROM fedora:rawhide +FROM registry.fedoraproject.org/fedora:rawhide RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf update -y && \ dnf install -y \ ant \ ant-junit \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ - cppi \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ - libtool \ libvirt-devel \ - lsof \ - make \ - meson \ - net-tools \ - ninja-build \ patch \ perl \ perl-App-cpanminus \ @@ -38,12 +26,7 @@ RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ dnf autoremove -y && \ dnf clean all -y && \ mkdir -p /usr/libexec/ccache-wrappers && \ diff --git a/ci/containers/libvirt-opensuse-151.Dockerfile b/ci/containers/libvirt-opensuse-151.Dockerfile index c5d8a89..1ee4cd8 100644 --- a/ci/containers/libvirt-opensuse-151.Dockerfile +++ b/ci/containers/libvirt-opensuse-151.Dockerfile @@ -1,33 +1,22 @@ -FROM opensuse/leap:15.1 +FROM registry.opensuse.org/opensuse/leap:15.1 RUN zypper update -y && \ zypper install -y \ ant \ ant-junit \ - autoconf \ - automake \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ - cppi \ gcc \ - gdb \ gettext \ - gettext-devel \ git \ glibc-devel \ glibc-locale \ java-11-openjdk-headless \ jna \ junit \ - libtool \ libvirt-devel \ - lsof \ - make \ - net-tools \ - ninja \ patch \ perl \ perl-App-cpanminus \ @@ -36,20 +25,12 @@ RUN zypper update -y && \ python3-pip \ python3-setuptools \ python3-wheel \ - rpm-build \ - screen \ - strace \ - sudo \ - vim \ - xz && \ + rpm-build && \ zypper clean --all && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-ubuntu-1804.Dockerfile b/ci/containers/libvirt-ubuntu-1804.Dockerfile index bc9d28b..b77aebe 100644 --- a/ci/containers/libvirt-ubuntu-1804.Dockerfile +++ b/ci/containers/libvirt-ubuntu-1804.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:18.04 +FROM docker.io/library/ubuntu:18.04 RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -6,30 +6,19 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - autoconf \ - automake \ - autopoint \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ cpanminus \ gcc \ - gdb \ gettext \ git \ junit \ libc6-dev \ libjna-java \ - libtool \ - libtool-bin \ libvirt-dev \ locales \ - lsof \ - make \ - net-tools \ - ninja-build \ openjdk-11-jdk-headless \ patch \ perl \ @@ -37,12 +26,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3 \ python3-pip \ python3-setuptools \ - python3-wheel \ - screen \ - strace \ - sudo \ - vim \ - xz-utils && \ + python3-wheel && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -51,9 +35,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) -RUN pip3 install \ - meson==0.54.0 - ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/containers/libvirt-ubuntu-2004.Dockerfile b/ci/containers/libvirt-ubuntu-2004.Dockerfile index c5edc1c..ddc4f03 100644 --- a/ci/containers/libvirt-ubuntu-2004.Dockerfile +++ b/ci/containers/libvirt-ubuntu-2004.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 +FROM docker.io/library/ubuntu:20.04 RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ @@ -6,17 +6,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - autoconf \ - automake \ - autopoint \ bash \ bash-completion \ ca-certificates \ ccache \ - chrony \ cpanminus \ gcc \ - gdb \ gettext \ git \ junit \ @@ -28,15 +23,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libnl-3-dev \ libnl-route-3-dev \ libtirpc-dev \ - libtool \ - libtool-bin \ libvirt-dev \ libxml2-dev \ libxml2-utils \ locales \ - lsof \ make \ - net-tools \ ninja-build \ openjdk-11-jdk-headless \ patch \ @@ -47,12 +38,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-pip \ python3-setuptools \ python3-wheel \ - screen \ - strace \ - sudo \ - vim \ - xsltproc \ - xz-utils && \ + xsltproc && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ From 7eca99f2cb017a7035bc145ba6ea0adb9eec5912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 23 Nov 2020 18:20:57 +0000 Subject: [PATCH 046/114] gitlab: refresh containers with lcitool for fully minimized base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel P. Berrangé --- ci/containers/libvirt-centos-7.Dockerfile | 25 +---------------- ci/containers/libvirt-centos-8.Dockerfile | 25 +---------------- .../libvirt-centos-stream.Dockerfile | 25 +---------------- ci/containers/libvirt-debian-10.Dockerfile | 27 ++----------------- ci/containers/libvirt-debian-sid.Dockerfile | 27 ++----------------- ci/containers/libvirt-fedora-32.Dockerfile | 25 +---------------- ci/containers/libvirt-fedora-33.Dockerfile | 25 +---------------- .../libvirt-fedora-rawhide.Dockerfile | 25 +---------------- ci/containers/libvirt-opensuse-151.Dockerfile | 25 +---------------- ci/containers/libvirt-ubuntu-1804.Dockerfile | 27 ++----------------- ci/containers/libvirt-ubuntu-2004.Dockerfile | 6 ----- 11 files changed, 13 insertions(+), 249 deletions(-) diff --git a/ci/containers/libvirt-centos-7.Dockerfile b/ci/containers/libvirt-centos-7.Dockerfile index b3dac64..10b7a1d 100644 --- a/ci/containers/libvirt-centos-7.Dockerfile +++ b/ci/containers/libvirt-centos-7.Dockerfile @@ -35,38 +35,15 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ yum install -y \ ant \ ant-junit \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ glibc-common \ - glibc-devel \ java-11-openjdk-headless \ jna \ junit \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ yum autoremove -y && \ - yum clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + yum clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja-build" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-centos-8.Dockerfile b/ci/containers/libvirt-centos-8.Dockerfile index 5e1c459..2202acd 100644 --- a/ci/containers/libvirt-centos-8.Dockerfile +++ b/ci/containers/libvirt-centos-8.Dockerfile @@ -7,37 +7,14 @@ RUN dnf install 'dnf-command(config-manager)' -y && \ dnf update -y && \ dnf install -y \ ant \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dnf clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-centos-stream.Dockerfile b/ci/containers/libvirt-centos-stream.Dockerfile index 3122f6c..5d1d93f 100644 --- a/ci/containers/libvirt-centos-stream.Dockerfile +++ b/ci/containers/libvirt-centos-stream.Dockerfile @@ -8,37 +8,14 @@ RUN dnf install -y centos-release-stream && \ dnf update -y && \ dnf install -y \ ant \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dnf clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-debian-10.Dockerfile b/ci/containers/libvirt-debian-10.Dockerfile index a5d718f..284b438 100644 --- a/ci/containers/libvirt-debian-10.Dockerfile +++ b/ci/containers/libvirt-debian-10.Dockerfile @@ -6,39 +6,16 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - cpanminus \ - gcc \ - gettext \ git \ junit \ - libc6-dev \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless \ - patch \ - perl \ - pkgconf \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel && \ + openjdk-11-jdk-headless && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dpkg-reconfigure locales ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-debian-sid.Dockerfile b/ci/containers/libvirt-debian-sid.Dockerfile index 563e56b..b39bc7d 100644 --- a/ci/containers/libvirt-debian-sid.Dockerfile +++ b/ci/containers/libvirt-debian-sid.Dockerfile @@ -6,39 +6,16 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - cpanminus \ - gcc \ - gettext \ git \ junit \ - libc6-dev \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless \ - patch \ - perl \ - pkgconf \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel && \ + openjdk-11-jdk-headless && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dpkg-reconfigure locales ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-fedora-32.Dockerfile b/ci/containers/libvirt-fedora-32.Dockerfile index 9eba8a6..2d827c2 100644 --- a/ci/containers/libvirt-fedora-32.Dockerfile +++ b/ci/containers/libvirt-fedora-32.Dockerfile @@ -4,38 +4,15 @@ RUN dnf update -y && \ dnf install -y \ ant \ ant-junit \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dnf clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-fedora-33.Dockerfile b/ci/containers/libvirt-fedora-33.Dockerfile index 3e4fe39..87f7039 100644 --- a/ci/containers/libvirt-fedora-33.Dockerfile +++ b/ci/containers/libvirt-fedora-33.Dockerfile @@ -4,38 +4,15 @@ RUN dnf update -y && \ dnf install -y \ ant \ ant-junit \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dnf clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-fedora-rawhide.Dockerfile b/ci/containers/libvirt-fedora-rawhide.Dockerfile index e07731c..714d91a 100644 --- a/ci/containers/libvirt-fedora-rawhide.Dockerfile +++ b/ci/containers/libvirt-fedora-rawhide.Dockerfile @@ -5,38 +5,15 @@ RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf install -y \ ant \ ant-junit \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-langpack-en \ java-11-openjdk-headless \ jna \ junit \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dnf clean all -y ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-opensuse-151.Dockerfile b/ci/containers/libvirt-opensuse-151.Dockerfile index 1ee4cd8..d960c5c 100644 --- a/ci/containers/libvirt-opensuse-151.Dockerfile +++ b/ci/containers/libvirt-opensuse-151.Dockerfile @@ -4,37 +4,14 @@ RUN zypper update -y && \ zypper install -y \ ant \ ant-junit \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - gcc \ - gettext \ git \ - glibc-devel \ glibc-locale \ java-11-openjdk-headless \ jna \ junit \ libvirt-devel \ - patch \ - perl \ - perl-App-cpanminus \ - pkgconfig \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel \ rpm-build && \ - zypper clean --all && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + zypper clean --all ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-ubuntu-1804.Dockerfile b/ci/containers/libvirt-ubuntu-1804.Dockerfile index b77aebe..53a9891 100644 --- a/ci/containers/libvirt-ubuntu-1804.Dockerfile +++ b/ci/containers/libvirt-ubuntu-1804.Dockerfile @@ -6,39 +6,16 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - bash \ - bash-completion \ ca-certificates \ - ccache \ - cpanminus \ - gcc \ - gettext \ git \ junit \ - libc6-dev \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless \ - patch \ - perl \ - pkgconf \ - python3 \ - python3-pip \ - python3-setuptools \ - python3-wheel && \ + openjdk-11-jdk-headless && \ apt-get autoremove -y && \ apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + dpkg-reconfigure locales ENV LANG "en_US.UTF-8" - -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" - -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/libvirt-ubuntu-2004.Dockerfile b/ci/containers/libvirt-ubuntu-2004.Dockerfile index ddc4f03..ce9e873 100644 --- a/ci/containers/libvirt-ubuntu-2004.Dockerfile +++ b/ci/containers/libvirt-ubuntu-2004.Dockerfile @@ -6,11 +6,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install --no-install-recommends -y \ ant \ ant-optional \ - bash \ - bash-completion \ ca-certificates \ ccache \ - cpanminus \ gcc \ gettext \ git \ @@ -30,7 +27,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ make \ ninja-build \ openjdk-11-jdk-headless \ - patch \ perl \ pkgconf \ python3 \ @@ -51,9 +47,7 @@ RUN pip3 install \ meson==0.54.0 ENV LANG "en_US.UTF-8" - ENV MAKE "/usr/bin/make" ENV NINJA "/usr/bin/ninja" ENV PYTHON "/usr/bin/python3" - ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" From c3772dc3343eec16ef0f0419ea564cf0e5f548dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 1 Dec 2020 16:02:28 +0000 Subject: [PATCH 047/114] gitlab: replace "libvirt-" prefix with "ci-" in dockerfiles MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This makes the dockerfile name match the output container name Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 2 +- .../{libvirt-centos-7.Dockerfile => ci-centos-7.Dockerfile} | 0 .../{libvirt-centos-8.Dockerfile => ci-centos-8.Dockerfile} | 0 ...centos-stream.Dockerfile => ci-centos-stream.Dockerfile} | 0 ...libvirt-debian-10.Dockerfile => ci-debian-10.Dockerfile} | 0 ...bvirt-debian-sid.Dockerfile => ci-debian-sid.Dockerfile} | 0 ...libvirt-fedora-32.Dockerfile => ci-fedora-32.Dockerfile} | 0 ...libvirt-fedora-33.Dockerfile => ci-fedora-33.Dockerfile} | 0 ...dora-rawhide.Dockerfile => ci-fedora-rawhide.Dockerfile} | 0 ...t-opensuse-151.Dockerfile => ci-opensuse-151.Dockerfile} | 0 ...irt-ubuntu-1804.Dockerfile => ci-ubuntu-1804.Dockerfile} | 0 ...irt-ubuntu-2004.Dockerfile => ci-ubuntu-2004.Dockerfile} | 0 ci/containers/refresh | 6 +++--- 13 files changed, 4 insertions(+), 4 deletions(-) rename ci/containers/{libvirt-centos-7.Dockerfile => ci-centos-7.Dockerfile} (100%) rename ci/containers/{libvirt-centos-8.Dockerfile => ci-centos-8.Dockerfile} (100%) rename ci/containers/{libvirt-centos-stream.Dockerfile => ci-centos-stream.Dockerfile} (100%) rename ci/containers/{libvirt-debian-10.Dockerfile => ci-debian-10.Dockerfile} (100%) rename ci/containers/{libvirt-debian-sid.Dockerfile => ci-debian-sid.Dockerfile} (100%) rename ci/containers/{libvirt-fedora-32.Dockerfile => ci-fedora-32.Dockerfile} (100%) rename ci/containers/{libvirt-fedora-33.Dockerfile => ci-fedora-33.Dockerfile} (100%) rename ci/containers/{libvirt-fedora-rawhide.Dockerfile => ci-fedora-rawhide.Dockerfile} (100%) rename ci/containers/{libvirt-opensuse-151.Dockerfile => ci-opensuse-151.Dockerfile} (100%) rename ci/containers/{libvirt-ubuntu-1804.Dockerfile => ci-ubuntu-1804.Dockerfile} (100%) rename ci/containers/{libvirt-ubuntu-2004.Dockerfile => ci-ubuntu-2004.Dockerfile} (100%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 26a7c21..fe61a7e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,7 +16,7 @@ stages: - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" script: - docker pull "$TAG" || docker pull "$COMMON_TAG" || true - - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/libvirt-$NAME.Dockerfile" ci/containers + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/ci-$NAME.Dockerfile" ci/containers - docker push "$TAG" after_script: - docker logout diff --git a/ci/containers/libvirt-centos-7.Dockerfile b/ci/containers/ci-centos-7.Dockerfile similarity index 100% rename from ci/containers/libvirt-centos-7.Dockerfile rename to ci/containers/ci-centos-7.Dockerfile diff --git a/ci/containers/libvirt-centos-8.Dockerfile b/ci/containers/ci-centos-8.Dockerfile similarity index 100% rename from ci/containers/libvirt-centos-8.Dockerfile rename to ci/containers/ci-centos-8.Dockerfile diff --git a/ci/containers/libvirt-centos-stream.Dockerfile b/ci/containers/ci-centos-stream.Dockerfile similarity index 100% rename from ci/containers/libvirt-centos-stream.Dockerfile rename to ci/containers/ci-centos-stream.Dockerfile diff --git a/ci/containers/libvirt-debian-10.Dockerfile b/ci/containers/ci-debian-10.Dockerfile similarity index 100% rename from ci/containers/libvirt-debian-10.Dockerfile rename to ci/containers/ci-debian-10.Dockerfile diff --git a/ci/containers/libvirt-debian-sid.Dockerfile b/ci/containers/ci-debian-sid.Dockerfile similarity index 100% rename from ci/containers/libvirt-debian-sid.Dockerfile rename to ci/containers/ci-debian-sid.Dockerfile diff --git a/ci/containers/libvirt-fedora-32.Dockerfile b/ci/containers/ci-fedora-32.Dockerfile similarity index 100% rename from ci/containers/libvirt-fedora-32.Dockerfile rename to ci/containers/ci-fedora-32.Dockerfile diff --git a/ci/containers/libvirt-fedora-33.Dockerfile b/ci/containers/ci-fedora-33.Dockerfile similarity index 100% rename from ci/containers/libvirt-fedora-33.Dockerfile rename to ci/containers/ci-fedora-33.Dockerfile diff --git a/ci/containers/libvirt-fedora-rawhide.Dockerfile b/ci/containers/ci-fedora-rawhide.Dockerfile similarity index 100% rename from ci/containers/libvirt-fedora-rawhide.Dockerfile rename to ci/containers/ci-fedora-rawhide.Dockerfile diff --git a/ci/containers/libvirt-opensuse-151.Dockerfile b/ci/containers/ci-opensuse-151.Dockerfile similarity index 100% rename from ci/containers/libvirt-opensuse-151.Dockerfile rename to ci/containers/ci-opensuse-151.Dockerfile diff --git a/ci/containers/libvirt-ubuntu-1804.Dockerfile b/ci/containers/ci-ubuntu-1804.Dockerfile similarity index 100% rename from ci/containers/libvirt-ubuntu-1804.Dockerfile rename to ci/containers/ci-ubuntu-1804.Dockerfile diff --git a/ci/containers/libvirt-ubuntu-2004.Dockerfile b/ci/containers/ci-ubuntu-2004.Dockerfile similarity index 100% rename from ci/containers/libvirt-ubuntu-2004.Dockerfile rename to ci/containers/ci-ubuntu-2004.Dockerfile diff --git a/ci/containers/refresh b/ci/containers/refresh index c659237..de176ec 100755 --- a/ci/containers/refresh +++ b/ci/containers/refresh @@ -18,10 +18,10 @@ HOSTS=$($LCITOOL hosts | grep -v -E '(freebsd|macos)') for host in $HOSTS do - if test "$host" = "libvirt-ubuntu-2004" + if test "$host" = "ubuntu-2004" then - $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-java > $host.Dockerfile + $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-java > ci-$host.Dockerfile else - $LCITOOL dockerfile $host libvirt+dist,libvirt-java > $host.Dockerfile + $LCITOOL dockerfile $host libvirt+dist,libvirt-java > ci-$host.Dockerfile fi done From 684f86fec50942677fbfa491c3a8f2d04003359b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 4 Jan 2021 13:38:23 +0000 Subject: [PATCH 048/114] ci: refresh containers with latest lcitool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is primarily to fix the rename of the CentOS PowerTools repo. Signed-off-by: Daniel P. Berrangé --- ci/containers/ci-centos-7.Dockerfile | 41 +++++----------------- ci/containers/ci-centos-8.Dockerfile | 16 ++++++--- ci/containers/ci-centos-stream.Dockerfile | 14 +++++--- ci/containers/ci-debian-10.Dockerfile | 20 +++++++---- ci/containers/ci-debian-sid.Dockerfile | 20 +++++++---- ci/containers/ci-fedora-32.Dockerfile | 24 ++++++++++--- ci/containers/ci-fedora-33.Dockerfile | 24 ++++++++++--- ci/containers/ci-fedora-rawhide.Dockerfile | 26 +++++++++++--- ci/containers/ci-opensuse-151.Dockerfile | 8 ++++- ci/containers/ci-ubuntu-1804.Dockerfile | 17 ++++++--- ci/containers/ci-ubuntu-2004.Dockerfile | 15 +++++--- 11 files changed, 149 insertions(+), 76 deletions(-) diff --git a/ci/containers/ci-centos-7.Dockerfile b/ci/containers/ci-centos-7.Dockerfile index 10b7a1d..7b09fa3 100644 --- a/ci/containers/ci-centos-7.Dockerfile +++ b/ci/containers/ci-centos-7.Dockerfile @@ -1,37 +1,13 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile centos-7 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM registry.centos.org/centos:7 -RUN echo -e '[openvz]\n\ -name=OpenVZ addons\n\ -baseurl=https://download.openvz.org/virtuozzo/releases/openvz-7.0.11-235/x86_64/os/\n\ -enabled=1\n\ -gpgcheck=1\n\ -skip_if_unavailable=0\n\ -metadata_expire=6h\n\ -priority=90\n\ -includepkgs=libprl*' > /etc/yum.repos.d/openvz.repo && \ - echo -e '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\ -Version: GnuPG v2.0.22 (GNU/Linux)\n\ -\n\ -mI0EVl80nQEEAKrEeyeTCwrzS9kYedZ/sAc/GUqlb81C7pA9SaR3fyck5mVw1Ogk\n\ -YdmNBPM2kY7QDxR9F0EpSpnxSCAXZXugsQ8KzZ0DRLVeBDQyGs9IGK5hI0zzxIil\n\ -BzfvIexLiQQhLy7YlIi8Jt/uUqKkW0pIMNMGcduY97VATtczpncpkmSzABEBAAG0\n\ -SFZpcnR1b3p6byBUZWFtIChHUEcga2V5IHNpZ25hdHVyZSBmb3IgcGFja2FnZXMp\n\ -IDxzZWN1cml0eUB2aXJ0dW96em8uY29tPoi5BBMBAgAjBQJWXzSdAhsDBwsJCAcD\n\ -AgEGFQgCCQoLBBYCAwECHgECF4AACgkQygt9GUTNrSruIgP/er70Eyo73A1gfrjv\n\ -oPUkyo4rslVRZu3qqCwoMFtJc/Z/UxWgEka1buorlcGLa6eO/EZ49c0n+KGa4Kvt\n\ -EUboIq0yEu5i0FyAj92ifm+hNhoAbGfm0cZ4/fD0oGr3l8OsQo4+iHX4xAPwFe7Y\n\ -zABuB8I1ZDZ4OIp5tDfTTuF2LT24jQRWXzSdAQQAog2Aqb+Ptl68O7cQhWLjVGkj\n\ -yyigZrdeReLx3HloKJPBeQ/kA6uvMJc/IYS3uppMWXv9v+QenS6uhP1TUJ2k9FvM\n\ -t94MQZfALN7Vpf8AF+UeWu4Ru+y4BNzcFhrPhIFNFChOR2QqW6FkgE57D9I177NC\n\ -oJMyrlNe8wcGa178An8AEQEAAYifBBgBAgAJBQJWXzSdAhsMAAoJEMoLfRlEza0q\n\ -bKwD/3+OFVIEXnIv5XgdGRNX5fHggsUN1bb8gva7HANRlKdd4LD8foDM3F/yv/3V\n\ -igG14D5EjKz56SaBDNgiI4++hOzb2M8jhAsR86jxkXFrrP1U3ZNRKg6av9DPFAPS\n\ -WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ -=fRMg\n\ ------END PGP PUBLIC KEY BLOCK-----' > /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ - rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenVZ && \ +RUN yum update -y && \ + echo 'skip_missing_names_on_install=0' >> /etc/yum.conf && \ yum install -y epel-release && \ - yum update -y && \ yum install -y \ ant \ ant-junit \ @@ -44,6 +20,7 @@ WEiJKtQrZDJloqtyi/mmRa1VsV7RYR0VPJjhK/R8EQ7Ysshy\n\ libvirt-devel \ rpm-build && \ yum autoremove -y && \ - yum clean all -y + yum clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-centos-8.Dockerfile b/ci/containers/ci-centos-8.Dockerfile index 2202acd..52733e5 100644 --- a/ci/containers/ci-centos-8.Dockerfile +++ b/ci/containers/ci-centos-8.Dockerfile @@ -1,10 +1,15 @@ -FROM registry.centos.org/centos:8 +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile centos-8 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +FROM docker.io/library/centos:8 -RUN dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y PowerTools && \ +RUN dnf update -y && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y powertools && \ dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ - dnf update -y && \ dnf install -y \ ant \ ca-certificates \ @@ -15,6 +20,7 @@ RUN dnf install 'dnf-command(config-manager)' -y && \ libvirt-devel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y + dnf clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-centos-stream.Dockerfile b/ci/containers/ci-centos-stream.Dockerfile index 5d1d93f..c05474c 100644 --- a/ci/containers/ci-centos-stream.Dockerfile +++ b/ci/containers/ci-centos-stream.Dockerfile @@ -1,11 +1,16 @@ -FROM registry.centos.org/centos:8 +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile centos-stream libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +FROM docker.io/library/centos:8 -RUN dnf install -y centos-release-stream && \ +RUN dnf update -y && \ + dnf install -y centos-release-stream && \ dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y Stream-PowerTools && \ dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ - dnf update -y && \ dnf install -y \ ant \ ca-certificates \ @@ -16,6 +21,7 @@ RUN dnf install -y centos-release-stream && \ libvirt-devel \ rpm-build && \ dnf autoremove -y && \ - dnf clean all -y + dnf clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-debian-10.Dockerfile b/ci/containers/ci-debian-10.Dockerfile index 284b438..fa81787 100644 --- a/ci/containers/ci-debian-10.Dockerfile +++ b/ci/containers/ci-debian-10.Dockerfile @@ -1,9 +1,16 @@ -FROM docker.io/library/debian:10 +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile debian-10 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +FROM docker.io/library/debian:10-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ - apt-get dist-upgrade -y && \ - apt-get install --no-install-recommends -y \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + mkdir -p /usr/share/man/man1 && \ + eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ ca-certificates \ @@ -13,9 +20,10 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libvirt-dev \ locales \ openjdk-11-jdk-headless && \ - apt-get autoremove -y && \ - apt-get autoclean -y && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-debian-sid.Dockerfile b/ci/containers/ci-debian-sid.Dockerfile index b39bc7d..5887ef6 100644 --- a/ci/containers/ci-debian-sid.Dockerfile +++ b/ci/containers/ci-debian-sid.Dockerfile @@ -1,9 +1,16 @@ -FROM docker.io/library/debian:sid +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile debian-sid libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +FROM docker.io/library/debian:sid-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ - apt-get dist-upgrade -y && \ - apt-get install --no-install-recommends -y \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + mkdir -p /usr/share/man/man1 && \ + eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ ca-certificates \ @@ -13,9 +20,10 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libvirt-dev \ locales \ openjdk-11-jdk-headless && \ - apt-get autoremove -y && \ - apt-get autoclean -y && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-fedora-32.Dockerfile b/ci/containers/ci-fedora-32.Dockerfile index 2d827c2..84ff7cb 100644 --- a/ci/containers/ci-fedora-32.Dockerfile +++ b/ci/containers/ci-fedora-32.Dockerfile @@ -1,7 +1,22 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile fedora-32 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM registry.fedoraproject.org/fedora:32 -RUN dnf update -y && \ - dnf install -y \ +RUN dnf install -y nosync && \ + echo -e '#!/bin/sh\n\ +if test -d /usr/lib64\n\ +then\n\ + export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ +else\n\ + export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ +fi\n\ +exec "$@"' > /usr/bin/nosync && \ + chmod +x /usr/bin/nosync && \ + nosync dnf update -y && \ + nosync dnf install -y \ ant \ ant-junit \ ca-certificates \ @@ -12,7 +27,8 @@ RUN dnf update -y && \ junit \ libvirt-devel \ rpm-build && \ - dnf autoremove -y && \ - dnf clean all -y + nosync dnf autoremove -y && \ + nosync dnf clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-fedora-33.Dockerfile b/ci/containers/ci-fedora-33.Dockerfile index 87f7039..8201971 100644 --- a/ci/containers/ci-fedora-33.Dockerfile +++ b/ci/containers/ci-fedora-33.Dockerfile @@ -1,7 +1,22 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile fedora-33 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM registry.fedoraproject.org/fedora:33 -RUN dnf update -y && \ - dnf install -y \ +RUN dnf install -y nosync && \ + echo -e '#!/bin/sh\n\ +if test -d /usr/lib64\n\ +then\n\ + export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ +else\n\ + export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ +fi\n\ +exec "$@"' > /usr/bin/nosync && \ + chmod +x /usr/bin/nosync && \ + nosync dnf update -y && \ + nosync dnf install -y \ ant \ ant-junit \ ca-certificates \ @@ -12,7 +27,8 @@ RUN dnf update -y && \ junit \ libvirt-devel \ rpm-build && \ - dnf autoremove -y && \ - dnf clean all -y + nosync dnf autoremove -y && \ + nosync dnf clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-fedora-rawhide.Dockerfile b/ci/containers/ci-fedora-rawhide.Dockerfile index 714d91a..8de4aab 100644 --- a/ci/containers/ci-fedora-rawhide.Dockerfile +++ b/ci/containers/ci-fedora-rawhide.Dockerfile @@ -1,8 +1,23 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile fedora-rawhide libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM registry.fedoraproject.org/fedora:rawhide -RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ - dnf update -y && \ - dnf install -y \ +RUN dnf install -y nosync && \ + echo -e '#!/bin/sh\n\ +if test -d /usr/lib64\n\ +then\n\ + export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ +else\n\ + export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ +fi\n\ +exec "$@"' > /usr/bin/nosync && \ + chmod +x /usr/bin/nosync && \ + nosync dnf update -y --nogpgcheck fedora-gpg-keys && \ + nosync dnf update -y && \ + nosync dnf install -y \ ant \ ant-junit \ ca-certificates \ @@ -13,7 +28,8 @@ RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ junit \ libvirt-devel \ rpm-build && \ - dnf autoremove -y && \ - dnf clean all -y + nosync dnf autoremove -y && \ + nosync dnf clean all -y && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-opensuse-151.Dockerfile b/ci/containers/ci-opensuse-151.Dockerfile index d960c5c..61d5709 100644 --- a/ci/containers/ci-opensuse-151.Dockerfile +++ b/ci/containers/ci-opensuse-151.Dockerfile @@ -1,3 +1,8 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile opensuse-151 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM registry.opensuse.org/opensuse/leap:15.1 RUN zypper update -y && \ @@ -12,6 +17,7 @@ RUN zypper update -y && \ junit \ libvirt-devel \ rpm-build && \ - zypper clean --all + zypper clean --all && \ + rpm -qa | sort > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-ubuntu-1804.Dockerfile b/ci/containers/ci-ubuntu-1804.Dockerfile index 53a9891..b8eb6fa 100644 --- a/ci/containers/ci-ubuntu-1804.Dockerfile +++ b/ci/containers/ci-ubuntu-1804.Dockerfile @@ -1,9 +1,15 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile ubuntu-1804 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM docker.io/library/ubuntu:18.04 RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ - apt-get dist-upgrade -y && \ - apt-get install --no-install-recommends -y \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ ca-certificates \ @@ -13,9 +19,10 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libvirt-dev \ locales \ openjdk-11-jdk-headless && \ - apt-get autoremove -y && \ - apt-get autoclean -y && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ci-ubuntu-2004.Dockerfile b/ci/containers/ci-ubuntu-2004.Dockerfile index ce9e873..bf4c389 100644 --- a/ci/containers/ci-ubuntu-2004.Dockerfile +++ b/ci/containers/ci-ubuntu-2004.Dockerfile @@ -1,9 +1,15 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile ubuntu-2004 libvirt+minimal,libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf FROM docker.io/library/ubuntu:20.04 RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ - apt-get dist-upgrade -y && \ - apt-get install --no-install-recommends -y \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ ca-certificates \ @@ -35,10 +41,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ python3-setuptools \ python3-wheel \ xsltproc && \ - apt-get autoremove -y && \ - apt-get autoclean -y && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) From bad9b247b2c2d2fdb31a140d67aa1869038ca5db Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Tue, 19 Jan 2021 17:24:17 +0100 Subject: [PATCH 049/114] ci: Refresh Dockerfiles Changes contained in this refresh: - CentOS 7 is pulled from docker.io registry - PowerTools repo name regression fix for CentOS Stream - enhancement for the workaround fix for JDK installation fails on Debian 10 '-slim' containers Signed-off-by: Erik Skultety --- ci/containers/ci-centos-7.Dockerfile | 4 ++-- ci/containers/ci-centos-8.Dockerfile | 2 +- ci/containers/ci-centos-stream.Dockerfile | 9 +++++---- ci/containers/ci-debian-10.Dockerfile | 2 +- ci/containers/ci-debian-sid.Dockerfile | 2 +- ci/containers/ci-fedora-32.Dockerfile | 2 +- ci/containers/ci-fedora-33.Dockerfile | 2 +- ci/containers/ci-fedora-rawhide.Dockerfile | 2 +- ci/containers/ci-ubuntu-1804.Dockerfile | 2 +- ci/containers/ci-ubuntu-2004.Dockerfile | 2 +- 10 files changed, 15 insertions(+), 14 deletions(-) diff --git a/ci/containers/ci-centos-7.Dockerfile b/ci/containers/ci-centos-7.Dockerfile index 7b09fa3..d4e4a03 100644 --- a/ci/containers/ci-centos-7.Dockerfile +++ b/ci/containers/ci-centos-7.Dockerfile @@ -2,8 +2,8 @@ # # $ lcitool dockerfile centos-7 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf -FROM registry.centos.org/centos:7 +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +FROM docker.io/library/centos:7 RUN yum update -y && \ echo 'skip_missing_names_on_install=0' >> /etc/yum.conf && \ diff --git a/ci/containers/ci-centos-8.Dockerfile b/ci/containers/ci-centos-8.Dockerfile index 52733e5..ce94c3d 100644 --- a/ci/containers/ci-centos-8.Dockerfile +++ b/ci/containers/ci-centos-8.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile centos-8 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/centos:8 RUN dnf update -y && \ diff --git a/ci/containers/ci-centos-stream.Dockerfile b/ci/containers/ci-centos-stream.Dockerfile index c05474c..8716cd8 100644 --- a/ci/containers/ci-centos-stream.Dockerfile +++ b/ci/containers/ci-centos-stream.Dockerfile @@ -2,13 +2,14 @@ # # $ lcitool dockerfile centos-stream libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/centos:8 -RUN dnf update -y && \ - dnf install -y centos-release-stream && \ +RUN dnf install -y centos-release-stream && \ + dnf install -y centos-stream-release && \ + dnf update -y && \ dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y Stream-PowerTools && \ + dnf config-manager --set-enabled -y powertools && \ dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ dnf install -y \ diff --git a/ci/containers/ci-debian-10.Dockerfile b/ci/containers/ci-debian-10.Dockerfile index fa81787..a040d4a 100644 --- a/ci/containers/ci-debian-10.Dockerfile +++ b/ci/containers/ci-debian-10.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile debian-10 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/debian:10-slim RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-debian-sid.Dockerfile b/ci/containers/ci-debian-sid.Dockerfile index 5887ef6..64ab2f3 100644 --- a/ci/containers/ci-debian-sid.Dockerfile +++ b/ci/containers/ci-debian-sid.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile debian-sid libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/debian:sid-slim RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-fedora-32.Dockerfile b/ci/containers/ci-fedora-32.Dockerfile index 84ff7cb..7c2ab3a 100644 --- a/ci/containers/ci-fedora-32.Dockerfile +++ b/ci/containers/ci-fedora-32.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile fedora-32 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM registry.fedoraproject.org/fedora:32 RUN dnf install -y nosync && \ diff --git a/ci/containers/ci-fedora-33.Dockerfile b/ci/containers/ci-fedora-33.Dockerfile index 8201971..eef8af5 100644 --- a/ci/containers/ci-fedora-33.Dockerfile +++ b/ci/containers/ci-fedora-33.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile fedora-33 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM registry.fedoraproject.org/fedora:33 RUN dnf install -y nosync && \ diff --git a/ci/containers/ci-fedora-rawhide.Dockerfile b/ci/containers/ci-fedora-rawhide.Dockerfile index 8de4aab..7b9fa51 100644 --- a/ci/containers/ci-fedora-rawhide.Dockerfile +++ b/ci/containers/ci-fedora-rawhide.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile fedora-rawhide libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM registry.fedoraproject.org/fedora:rawhide RUN dnf install -y nosync && \ diff --git a/ci/containers/ci-ubuntu-1804.Dockerfile b/ci/containers/ci-ubuntu-1804.Dockerfile index b8eb6fa..39d8687 100644 --- a/ci/containers/ci-ubuntu-1804.Dockerfile +++ b/ci/containers/ci-ubuntu-1804.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile ubuntu-1804 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/ubuntu:18.04 RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-ubuntu-2004.Dockerfile b/ci/containers/ci-ubuntu-2004.Dockerfile index bf4c389..b5b4f90 100644 --- a/ci/containers/ci-ubuntu-2004.Dockerfile +++ b/ci/containers/ci-ubuntu-2004.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool dockerfile ubuntu-2004 libvirt+minimal,libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef FROM docker.io/library/ubuntu:20.04 RUN export DEBIAN_FRONTEND=noninteractive && \ From e79e02a257b9908784624476447711d26427cf8e Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Tue, 19 Jan 2021 17:31:10 +0100 Subject: [PATCH 050/114] ci: Add openSUSE Leap 15.2 Signed-off-by: Erik Skultety --- .gitlab-ci.yml | 10 ++++++++++ ci/containers/ci-opensuse-152.Dockerfile | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 ci/containers/ci-opensuse-152.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe61a7e..d0828a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -113,6 +113,11 @@ opensuse-151-container: variables: NAME: opensuse-151 +opensuse-152-container: + <<: *container_job_definition + variables: + NAME: opensuse-152 + ubuntu-1804-container: <<: *container_job_definition variables: @@ -177,6 +182,11 @@ opensuse-151-dist-build: variables: NAME: opensuse-151 +opensuse-152-dist-build: + <<: *dist_build_job_definition + variables: + NAME: opensuse-152 + ubuntu-1804-dist-build: <<: *dist_build_job_definition variables: diff --git a/ci/containers/ci-opensuse-152.Dockerfile b/ci/containers/ci-opensuse-152.Dockerfile new file mode 100644 index 0000000..669d3b1 --- /dev/null +++ b/ci/containers/ci-opensuse-152.Dockerfile @@ -0,0 +1,23 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool dockerfile opensuse-152 libvirt+dist,libvirt-java +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +FROM registry.opensuse.org/opensuse/leap:15.2 + +RUN zypper update -y && \ + zypper install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-locale \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ + zypper clean --all && \ + rpm -qa | sort > /packages.txt + +ENV LANG "en_US.UTF-8" From 69ba626b10fb19d6ad314a7a6b352c7a72c62c88 Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Wed, 20 Jan 2021 14:37:25 +0100 Subject: [PATCH 051/114] ci: Drop openSUSE Leap 15.1 Leap 15.1 reaches EOL on January 31st, 2021. Signed-off-by: Erik Skultety --- .gitlab-ci.yml | 10 ---------- ci/containers/ci-opensuse-151.Dockerfile | 23 ----------------------- 2 files changed, 33 deletions(-) delete mode 100644 ci/containers/ci-opensuse-151.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d0828a6..462ca9a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,11 +108,6 @@ fedora-rawhide-container: variables: NAME: fedora-rawhide -opensuse-151-container: - <<: *container_job_definition - variables: - NAME: opensuse-151 - opensuse-152-container: <<: *container_job_definition variables: @@ -177,11 +172,6 @@ fedora-rawhide-dist-build: variables: NAME: fedora-rawhide -opensuse-151-dist-build: - <<: *dist_build_job_definition - variables: - NAME: opensuse-151 - opensuse-152-dist-build: <<: *dist_build_job_definition variables: diff --git a/ci/containers/ci-opensuse-151.Dockerfile b/ci/containers/ci-opensuse-151.Dockerfile deleted file mode 100644 index 61d5709..0000000 --- a/ci/containers/ci-opensuse-151.Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool dockerfile opensuse-151 libvirt+dist,libvirt-java -# -# https://gitlab.com/libvirt/libvirt-ci/-/commit/050edf1c67395e5723e40dc547f73cdf44f1d8cf -FROM registry.opensuse.org/opensuse/leap:15.1 - -RUN zypper update -y && \ - zypper install -y \ - ant \ - ant-junit \ - ca-certificates \ - git \ - glibc-locale \ - java-11-openjdk-headless \ - jna \ - junit \ - libvirt-devel \ - rpm-build && \ - zypper clean --all && \ - rpm -qa | sort > /packages.txt - -ENV LANG "en_US.UTF-8" From d09faec8eca0392ff7449bb522ab91970a1615c0 Mon Sep 17 00:00:00 2001 From: SangHakLee Date: Tue, 8 Jun 2021 17:43:56 +0900 Subject: [PATCH 052/114] feat: add XMLFlags.VIR_DOMAIN_XML_MIGRATABLE This make get suitable domain's xml for migration. Signed-off-by: SangHakLee --- src/main/java/org/libvirt/Domain.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index dfcc2dc..bad4aff 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -128,6 +128,9 @@ static final class XMLFlags { /** update guest CPU requirements according to host CPU */ static final int VIR_DOMAIN_XML_UPDATE_CPU = bit(2); + + /** dump XML suitable for migration */ + static final int VIR_DOMAIN_XML_MIGRATABLE = bit(3); } public static final class UndefineFlags { From 3fa1a6f36546e445eb17d6f32d7f6fd7afe5b5aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 27 Jul 2021 14:53:31 +0100 Subject: [PATCH 053/114] gitlab: use custom docker:dind image MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current docker:dind container has broken default seccomp filter that results in clone3 being blocked, which in turn breaks Fedora 35 rawhide. This custom image has a workaround that causes the seccomp filter to return ENOSYS for clone3 instad of EPERM, thus triggering glibc to fallback to clone correctly. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 462ca9a..50b30ca 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,7 +8,8 @@ stages: image: docker:stable stage: containers services: - - docker:dind + - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master + alias: docker before_script: - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" From d42381e3bbeffd27f5be51c1f7be9563dda0ff6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 27 Jul 2021 16:17:05 +0100 Subject: [PATCH 054/114] ci: refresh centos-stream container MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is no longer possible to just install an extra package to run regular centos into centos stream. Signed-off-by: Daniel P. Berrangé --- ci/containers/ci-centos-stream.Dockerfile | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ci/containers/ci-centos-stream.Dockerfile b/ci/containers/ci-centos-stream.Dockerfile index 8716cd8..d5ddee3 100644 --- a/ci/containers/ci-centos-stream.Dockerfile +++ b/ci/containers/ci-centos-stream.Dockerfile @@ -1,13 +1,12 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile centos-stream libvirt+dist,libvirt-java +# $ lcitool dockerfile centos-stream-8 libvirt+dist,libvirt-java # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef -FROM docker.io/library/centos:8 +# https://gitlab.com/libvirt/libvirt-ci/-/commit/0bb9bfada8e143e05bb436a06747d227d19f0df4 -RUN dnf install -y centos-release-stream && \ - dnf install -y centos-stream-release && \ - dnf update -y && \ +FROM quay.io/centos/centos:stream8 + +RUN dnf update -y && \ dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y powertools && \ dnf install -y centos-release-advanced-virtualization && \ From 626088f759a1ff7bc27c6f12d975715f4669ba59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 20 Aug 2021 15:40:48 +0100 Subject: [PATCH 055/114] gitlab: remove centos-7 build target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This platform is no longer supported by libvirt. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 10 ---------- ci/containers/ci-centos-7.Dockerfile | 26 -------------------------- 2 files changed, 36 deletions(-) delete mode 100644 ci/containers/ci-centos-7.Dockerfile diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50b30ca..b7d63c8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -69,11 +69,6 @@ check-dco: variables: - $CI_PROJECT_NAMESPACE == 'libvirt' -centos-7-container: - <<: *container_job_definition - variables: - NAME: centos-7 - centos-8-container: <<: *container_job_definition variables: @@ -131,11 +126,6 @@ ubuntu-2004-git-build: NAME: ubuntu-2004 -centos-7-dist-build: - <<: *dist_build_job_definition - variables: - NAME: centos-7 - centos-8-dist-build: <<: *dist_build_job_definition variables: diff --git a/ci/containers/ci-centos-7.Dockerfile b/ci/containers/ci-centos-7.Dockerfile deleted file mode 100644 index d4e4a03..0000000 --- a/ci/containers/ci-centos-7.Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool dockerfile centos-7 libvirt+dist,libvirt-java -# -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef -FROM docker.io/library/centos:7 - -RUN yum update -y && \ - echo 'skip_missing_names_on_install=0' >> /etc/yum.conf && \ - yum install -y epel-release && \ - yum install -y \ - ant \ - ant-junit \ - ca-certificates \ - git \ - glibc-common \ - java-11-openjdk-headless \ - jna \ - junit \ - libvirt-devel \ - rpm-build && \ - yum autoremove -y && \ - yum clean all -y && \ - rpm -qa | sort > /packages.txt - -ENV LANG "en_US.UTF-8" From ef3de5374f1bdab8372917ed6e67c08c989ad23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 27 Jul 2021 17:19:52 +0100 Subject: [PATCH 056/114] ci: define a CI manifest file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel P. Berrangé --- ci/manifest.yml | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 ci/manifest.yml diff --git a/ci/manifest.yml b/ci/manifest.yml new file mode 100644 index 0000000..2b3af87 --- /dev/null +++ b/ci/manifest.yml @@ -0,0 +1,49 @@ +projects: + - libvirt-java + - libvirt+dist + +gitlab: + namespace: libvirt + project: libvirt-java + +targets: + centos-8: + jobs: + - arch: x86_64 + variables: + TESTS: skip + + centos-stream-8: + jobs: + - arch: x86_64 + variables: + TESTS: skip + + debian-10: x86_64 + + debian-sid: x86_64 + + fedora-33: x86_64 + + fedora-34: x86_64 + + fedora-rawhide: x86_64 + + opensuse-leap-152: x86_64 + + ubuntu-1804: x86_64 + + ubuntu-2004: + projects: + - libvirt-java + - libvirt+dist + - libvirt+minimal + + jobs: + - arch: x86_64 + template: .native_build_job + + jobs: + - arch: x86_64 + template: .native_git_build_job + suffix: -git From e547e9640e9aee8021b985ed470889c819212b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 27 Jul 2021 17:21:46 +0100 Subject: [PATCH 057/114] ci: re-generate containers/gitlab config from manifest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This uses the command "lcitool manifest ci/manifest.yml" to re-generate all existing dockerfiles and gitlab CI config. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 152 +------------ ...entos-8.Dockerfile => centos-8.Dockerfile} | 5 +- ....Dockerfile => centos-stream-8.Dockerfile} | 4 +- ...ian-10.Dockerfile => debian-10.Dockerfile} | 5 +- ...n-sid.Dockerfile => debian-sid.Dockerfile} | 5 +- ...ora-33.Dockerfile => fedora-33.Dockerfile} | 5 +- ...ora-32.Dockerfile => fedora-34.Dockerfile} | 7 +- ...e.Dockerfile => fedora-rawhide.Dockerfile} | 9 +- ...ockerfile => opensuse-leap-152.Dockerfile} | 5 +- ...1804.Dockerfile => ubuntu-1804.Dockerfile} | 5 +- ...2004.Dockerfile => ubuntu-2004.Dockerfile} | 12 +- ci/gitlab.yml | 214 ++++++++++++++++++ 12 files changed, 256 insertions(+), 172 deletions(-) rename ci/containers/{ci-centos-8.Dockerfile => centos-8.Dockerfile} (80%) rename ci/containers/{ci-centos-stream.Dockerfile => centos-stream-8.Dockerfile} (79%) rename ci/containers/{ci-debian-10.Dockerfile => debian-10.Dockerfile} (84%) rename ci/containers/{ci-debian-sid.Dockerfile => debian-sid.Dockerfile} (84%) rename ci/containers/{ci-fedora-33.Dockerfile => fedora-33.Dockerfile} (83%) rename ci/containers/{ci-fedora-32.Dockerfile => fedora-34.Dockerfile} (78%) rename ci/containers/{ci-fedora-rawhide.Dockerfile => fedora-rawhide.Dockerfile} (74%) rename ci/containers/{ci-opensuse-152.Dockerfile => opensuse-leap-152.Dockerfile} (74%) rename ci/containers/{ci-ubuntu-1804.Dockerfile => ubuntu-1804.Dockerfile} (84%) rename ci/containers/{ci-ubuntu-2004.Dockerfile => ubuntu-2004.Dockerfile} (84%) create mode 100644 ci/gitlab.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7d63c8..4e33833 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,30 +1,11 @@ stages: - - prebuild - containers - builds + - sanity_checks -.container_job_template: &container_job_definition - image: docker:stable - stage: containers - services: - - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master - alias: docker - before_script: - - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" - - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" - - docker info - - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" - script: - - docker pull "$TAG" || docker pull "$COMMON_TAG" || true - - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/ci-$NAME.Dockerfile" ci/containers - - docker push "$TAG" - after_script: - - docker logout - -.git_build_job_template: &git_build_job_definition - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest - stage: builds +.native_git_build_job: + extends: .gitlab_native_build_job before_script: - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" - export SCRATCH_DIR="/tmp/scratch" @@ -47,133 +28,12 @@ stages: - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi -.dist_build_job_template: &dist_build_job_definition - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest - stage: builds +.native_build_job: + extends: .gitlab_native_build_job script: - ant build jar docs - if test "$TESTS" != "skip" ; then ant test ; fi - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi -# Check that all commits are signed-off for the DCO. -# Skip on "libvirt" namespace, since we only need to run -# this test on developer's personal forks from which -# merge requests are submitted -check-dco: - stage: prebuild - image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master - script: - - /check-dco - except: - variables: - - $CI_PROJECT_NAMESPACE == 'libvirt' - -centos-8-container: - <<: *container_job_definition - variables: - NAME: centos-8 - -centos-stream-container: - <<: *container_job_definition - variables: - NAME: centos-stream - -debian-10-container: - <<: *container_job_definition - variables: - NAME: debian-10 - -debian-sid-container: - <<: *container_job_definition - variables: - NAME: debian-sid - -fedora-32-container: - <<: *container_job_definition - variables: - NAME: fedora-32 - -fedora-33-container: - <<: *container_job_definition - variables: - NAME: fedora-33 - -fedora-rawhide-container: - <<: *container_job_definition - variables: - NAME: fedora-rawhide - -opensuse-152-container: - <<: *container_job_definition - variables: - NAME: opensuse-152 - -ubuntu-1804-container: - <<: *container_job_definition - variables: - NAME: ubuntu-1804 - -ubuntu-2004-container: - <<: *container_job_definition - variables: - NAME: ubuntu-2004 - - -ubuntu-2004-git-build: - <<: *git_build_job_definition - variables: - NAME: ubuntu-2004 - - -centos-8-dist-build: - <<: *dist_build_job_definition - variables: - NAME: centos-8 - TESTS: skip - -centos-stream-dist-build: - <<: *dist_build_job_definition - variables: - NAME: centos-stream - TESTS: skip - -debian-10-dist-build: - <<: *dist_build_job_definition - variables: - NAME: debian-10 - -debian-sid-dist-build: - <<: *dist_build_job_definition - variables: - NAME: debian-sid - -fedora-32-dist-build: - <<: *dist_build_job_definition - variables: - NAME: fedora-32 - -fedora-33-dist-build: - <<: *dist_build_job_definition - variables: - NAME: fedora-33 - -fedora-rawhide-dist-build: - <<: *dist_build_job_definition - variables: - NAME: fedora-rawhide - -opensuse-152-dist-build: - <<: *dist_build_job_definition - variables: - NAME: opensuse-152 - -ubuntu-1804-dist-build: - <<: *dist_build_job_definition - variables: - NAME: ubuntu-1804 - -ubuntu-2004-dist-build: - <<: *dist_build_job_definition - variables: - NAME: ubuntu-2004 +include: '/ci/gitlab.yml' diff --git a/ci/containers/ci-centos-8.Dockerfile b/ci/containers/centos-8.Dockerfile similarity index 80% rename from ci/containers/ci-centos-8.Dockerfile rename to ci/containers/centos-8.Dockerfile index ce94c3d..30e3a79 100644 --- a/ci/containers/ci-centos-8.Dockerfile +++ b/ci/containers/centos-8.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile centos-8 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM docker.io/library/centos:8 RUN dnf update -y && \ diff --git a/ci/containers/ci-centos-stream.Dockerfile b/ci/containers/centos-stream-8.Dockerfile similarity index 79% rename from ci/containers/ci-centos-stream.Dockerfile rename to ci/containers/centos-stream-8.Dockerfile index d5ddee3..47c8214 100644 --- a/ci/containers/ci-centos-stream.Dockerfile +++ b/ci/containers/centos-stream-8.Dockerfile @@ -1,8 +1,8 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile centos-stream-8 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/0bb9bfada8e143e05bb436a06747d227d19f0df4 +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 FROM quay.io/centos/centos:stream8 diff --git a/ci/containers/ci-debian-10.Dockerfile b/ci/containers/debian-10.Dockerfile similarity index 84% rename from ci/containers/ci-debian-10.Dockerfile rename to ci/containers/debian-10.Dockerfile index a040d4a..5d9e570 100644 --- a/ci/containers/ci-debian-10.Dockerfile +++ b/ci/containers/debian-10.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile debian-10 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM docker.io/library/debian:10-slim RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile similarity index 84% rename from ci/containers/ci-debian-sid.Dockerfile rename to ci/containers/debian-sid.Dockerfile index 64ab2f3..bf92979 100644 --- a/ci/containers/ci-debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile debian-sid libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM docker.io/library/debian:sid-slim RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-fedora-33.Dockerfile b/ci/containers/fedora-33.Dockerfile similarity index 83% rename from ci/containers/ci-fedora-33.Dockerfile rename to ci/containers/fedora-33.Dockerfile index eef8af5..9b275b6 100644 --- a/ci/containers/ci-fedora-33.Dockerfile +++ b/ci/containers/fedora-33.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile fedora-33 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM registry.fedoraproject.org/fedora:33 RUN dnf install -y nosync && \ diff --git a/ci/containers/ci-fedora-32.Dockerfile b/ci/containers/fedora-34.Dockerfile similarity index 78% rename from ci/containers/ci-fedora-32.Dockerfile rename to ci/containers/fedora-34.Dockerfile index 7c2ab3a..b8cd798 100644 --- a/ci/containers/ci-fedora-32.Dockerfile +++ b/ci/containers/fedora-34.Dockerfile @@ -1,9 +1,10 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile fedora-32 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef -FROM registry.fedoraproject.org/fedora:32 +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + +FROM registry.fedoraproject.org/fedora:34 RUN dnf install -y nosync && \ echo -e '#!/bin/sh\n\ diff --git a/ci/containers/ci-fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile similarity index 74% rename from ci/containers/ci-fedora-rawhide.Dockerfile rename to ci/containers/fedora-rawhide.Dockerfile index 7b9fa51..f271e93 100644 --- a/ci/containers/ci-fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -1,11 +1,13 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile fedora-rawhide libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM registry.fedoraproject.org/fedora:rawhide -RUN dnf install -y nosync && \ +RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ + dnf install -y nosync && \ echo -e '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ @@ -15,7 +17,6 @@ else\n\ fi\n\ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ - nosync dnf update -y --nogpgcheck fedora-gpg-keys && \ nosync dnf update -y && \ nosync dnf install -y \ ant \ diff --git a/ci/containers/ci-opensuse-152.Dockerfile b/ci/containers/opensuse-leap-152.Dockerfile similarity index 74% rename from ci/containers/ci-opensuse-152.Dockerfile rename to ci/containers/opensuse-leap-152.Dockerfile index 669d3b1..b62dae1 100644 --- a/ci/containers/ci-opensuse-152.Dockerfile +++ b/ci/containers/opensuse-leap-152.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile opensuse-152 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM registry.opensuse.org/opensuse/leap:15.2 RUN zypper update -y && \ diff --git a/ci/containers/ci-ubuntu-1804.Dockerfile b/ci/containers/ubuntu-1804.Dockerfile similarity index 84% rename from ci/containers/ci-ubuntu-1804.Dockerfile rename to ci/containers/ubuntu-1804.Dockerfile index 39d8687..8d70a4b 100644 --- a/ci/containers/ci-ubuntu-1804.Dockerfile +++ b/ci/containers/ubuntu-1804.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile ubuntu-1804 libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM docker.io/library/ubuntu:18.04 RUN export DEBIAN_FRONTEND=noninteractive && \ diff --git a/ci/containers/ci-ubuntu-2004.Dockerfile b/ci/containers/ubuntu-2004.Dockerfile similarity index 84% rename from ci/containers/ci-ubuntu-2004.Dockerfile rename to ci/containers/ubuntu-2004.Dockerfile index b5b4f90..918401a 100644 --- a/ci/containers/ci-ubuntu-2004.Dockerfile +++ b/ci/containers/ubuntu-2004.Dockerfile @@ -1,8 +1,9 @@ # THIS FILE WAS AUTO-GENERATED # -# $ lcitool dockerfile ubuntu-2004 libvirt+minimal,libvirt+dist,libvirt-java +# $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/d527e0c012f476c293f3bc801b7da08bc85f98ef +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + FROM docker.io/library/ubuntu:20.04 RUN export DEBIAN_FRONTEND=noninteractive && \ @@ -14,6 +15,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ant-optional \ ca-certificates \ ccache \ + cpp \ gcc \ gettext \ git \ @@ -33,7 +35,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ make \ ninja-build \ openjdk-11-jdk-headless \ - perl \ + perl-base \ pkgconf \ python3 \ python3-docutils \ @@ -48,10 +50,10 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/$(basename /usr/bin/gcc) + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc RUN pip3 install \ - meson==0.54.0 + meson==0.56.0 ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" diff --git a/ci/gitlab.yml b/ci/gitlab.yml new file mode 100644 index 0000000..583ba04 --- /dev/null +++ b/ci/gitlab.yml @@ -0,0 +1,214 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 + + +.container_job: + image: docker:stable + stage: containers + needs: [] + services: + - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master + alias: docker + before_script: + - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" + - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" + - docker info + - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" + script: + - docker pull "$TAG" || docker pull "$COMMON_TAG" || true + - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers + - docker push "$TAG" + after_script: + - docker logout + + +.gitlab_native_build_job: + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + + +.gitlab_cross_build_job: + image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest + stage: builds + + +check-dco: + stage: sanity_checks + needs: [] + image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master + script: + - /check-dco libvirt + except: + variables: + - $CI_PROJECT_NAMESPACE == 'libvirt' + variables: + GIT_DEPTH: 1000 + + +# Native container jobs + +x86_64-centos-8-container: + extends: .container_job + allow_failure: false + variables: + NAME: centos-8 + + +x86_64-centos-stream-8-container: + extends: .container_job + allow_failure: false + variables: + NAME: centos-stream-8 + + +x86_64-debian-10-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-10 + + +x86_64-debian-sid-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-sid + + +x86_64-fedora-33-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-33 + + +x86_64-fedora-34-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-34 + + +x86_64-fedora-rawhide-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-rawhide + + +x86_64-opensuse-leap-152-container: + extends: .container_job + allow_failure: false + variables: + NAME: opensuse-leap-152 + + +x86_64-ubuntu-1804-container: + extends: .container_job + allow_failure: false + variables: + NAME: ubuntu-1804 + + +x86_64-ubuntu-2004-container: + extends: .container_job + allow_failure: false + variables: + NAME: ubuntu-2004 + + +# Native build jobs + +x86_64-centos-8: + extends: .native_build_job + needs: + - x86_64-centos-8-container + allow_failure: false + variables: + NAME: centos-8 + TESTS: skip + + +x86_64-centos-stream-8: + extends: .native_build_job + needs: + - x86_64-centos-stream-8-container + allow_failure: false + variables: + NAME: centos-stream-8 + TESTS: skip + + +x86_64-debian-10: + extends: .native_build_job + needs: + - x86_64-debian-10-container + allow_failure: false + variables: + NAME: debian-10 + + +x86_64-debian-sid: + extends: .native_build_job + needs: + - x86_64-debian-sid-container + allow_failure: false + variables: + NAME: debian-sid + + +x86_64-fedora-33: + extends: .native_build_job + needs: + - x86_64-fedora-33-container + allow_failure: false + variables: + NAME: fedora-33 + + +x86_64-fedora-34: + extends: .native_build_job + needs: + - x86_64-fedora-34-container + allow_failure: false + variables: + NAME: fedora-34 + + +x86_64-fedora-rawhide: + extends: .native_build_job + needs: + - x86_64-fedora-rawhide-container + allow_failure: false + variables: + NAME: fedora-rawhide + + +x86_64-opensuse-leap-152: + extends: .native_build_job + needs: + - x86_64-opensuse-leap-152-container + allow_failure: false + variables: + NAME: opensuse-leap-152 + + +x86_64-ubuntu-1804: + extends: .native_build_job + needs: + - x86_64-ubuntu-1804-container + allow_failure: false + variables: + NAME: ubuntu-1804 + + +x86_64-ubuntu-2004-git: + extends: .native_git_build_job + needs: + - x86_64-ubuntu-2004-container + allow_failure: false + variables: + NAME: ubuntu-2004 From 16daa1e94b31bc9eaeafeac2a236c3da20840e45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 20 Aug 2021 15:40:20 +0100 Subject: [PATCH 058/114] ci: remove obsolete refresh script and documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now use lcitool's manifest feature to generate files. Signed-off-by: Daniel P. Berrangé --- ci/containers/README.rst | 14 -------------- ci/containers/refresh | 27 --------------------------- 2 files changed, 41 deletions(-) delete mode 100644 ci/containers/README.rst delete mode 100755 ci/containers/refresh diff --git a/ci/containers/README.rst b/ci/containers/README.rst deleted file mode 100644 index 530897e..0000000 --- a/ci/containers/README.rst +++ /dev/null @@ -1,14 +0,0 @@ -CI job assets -============= - -This directory contains assets used in the automated CI jobs, most -notably the Dockerfiles used to build container images in which the -CI jobs then run. - -The ``refresh`` script is used to re-create the Dockerfiles using the -``lcitool`` command that is provided by repo -https://gitlab.com/libvirt/libvirt-ci - -The containers are built during the CI process and cached in the GitLab -container registry of the project doing the build. The cached containers -can be deleted at any time and will be correctly rebuilt. diff --git a/ci/containers/refresh b/ci/containers/refresh deleted file mode 100755 index de176ec..0000000 --- a/ci/containers/refresh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -if test -z "$1" -then - echo "syntax: $0 PATH-TO-LCITOOL" - exit 1 -fi - -LCITOOL=$1 - -if ! test -x "$LCITOOL" -then - echo "$LCITOOL is not executable" - exit 1 -fi - -HOSTS=$($LCITOOL hosts | grep -v -E '(freebsd|macos)') - -for host in $HOSTS -do - if test "$host" = "ubuntu-2004" - then - $LCITOOL dockerfile $host libvirt+minimal,libvirt+dist,libvirt-java > ci-$host.Dockerfile - else - $LCITOOL dockerfile $host libvirt+dist,libvirt-java > ci-$host.Dockerfile - fi -done From e0cad541f01f3e97f4896adab334f64a99039cdd Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Tue, 21 Sep 2021 16:19:38 +0200 Subject: [PATCH 059/114] Update error domain and numbers to match doc Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Error.java | 116 ++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/libvirt/Error.java b/src/main/java/org/libvirt/Error.java index 6737fb9..dc1ecf0 100644 --- a/src/main/java/org/libvirt/Error.java +++ b/src/main/java/org/libvirt/Error.java @@ -120,7 +120,56 @@ public enum ErrorDomain { VIR_FROM_AUTH, /** Error from DBus */ VIR_FROM_DBUS, - + /** Error from Parallels */ + VIR_FROM_PARALLELS, + /** Error from Device */ + VIR_FROM_DEVICE, + /** Error from libssh2 connection transport */ + VIR_FROM_SSH, + /** Error from lockspace */ + VIR_FROM_LOCKSPACE, + /** Error from initctl device communication */ + VIR_FROM_INITCTL, + /** Error from identity code */ + VIR_FROM_IDENTITY, + /** Error from cgroups */ + VIR_FROM_CGROUP, + /** Error from access control manager */ + VIR_FROM_ACCESS, + /** Error from systemd code */ + VIR_FROM_SYSTEMD, + /** Error from bhyve driver */ + VIR_FROM_BHYVE, + /** Error from crypto code */ + VIR_FROM_CRYPTO, + /** Error from firewall */ + VIR_FROM_FIREWALL, + /** Error from polkit code */ + VIR_FROM_POLKIT, + /** Error from thread utils */ + VIR_FROM_THREAD, + /** Error from admin backend */ + VIR_FROM_ADMIN, + /** Error from log manager */ + VIR_FROM_LOGGING, + /** Error from Xen xl config code */ + VIR_FROM_XENXL, + /** Error from perf */ + VIR_FROM_PERF, + /** Error from libssh connection transport */ + VIR_FROM_LIBSSH, + /** Error from resource control */ + VIR_FROM_RESCTRL, + /** Error from firewalld */ + VIR_FROM_FIREWALLD, + /** Error from domain checkpoint */ + VIR_FROM_DOMAIN_CHECKPOINT, + /** Error from TPM */ + VIR_FROM_TPM, + /** Error from BPF code */ + VIR_FROM_BPF, + /** Error from Cloud-Hypervisor driver */ + VIR_FROM_CH, /** unknown error domain */ VIR_FROM_UNKNOWN; // must be the last entry! @@ -247,7 +296,7 @@ public enum ErrorNumber { VIR_WAR_NO_STORAGE, /** storage pool not found */ VIR_ERR_NO_STORAGE_POOL, - /** storage pool not found */ + /** storage volume not found */ VIR_ERR_NO_STORAGE_VOL, /** failed to start node driver */ VIR_WAR_NO_NODE, @@ -267,6 +316,14 @@ public enum ErrorNumber { VIR_ERR_INVALID_INTERFACE, /** more than one matching interface found */ VIR_ERR_MULTIPLE_INTERFACES, + /** failed to start nwfilter driver */ + VIR_WAR_NO_NWFILTER, + /** invalid nwfilter object */ + VIR_ERR_INVALID_NWFILTER, + /** nw filter pool not found */ + VIR_ERR_NO_NWFILTER, + /** nw filter pool not found */ + VIR_ERR_BUILD_FIREWALL, /** failed to start secret storage */ VIR_WAR_NO_SECRET, /** invalid secret */ @@ -309,7 +366,60 @@ public enum ErrorNumber { VIR_ERR_OVERFLOW, /** action prevented by block copy job */ VIR_ERR_BLOCK_COPY_ACTIVE, - + /** The requested operation is not supported */ + VIR_ERR_OPERATION_UNSUPPORTED, + /** error in ssh transport driver */ + VIR_ERR_SSH, + /** guest agent is unresponsive, not running or not usable */ + VIR_ERR_AGENT_UNRESPONSIVE, + /** resource is already in use */ + VIR_ERR_RESOURCE_BUSY, + /** operation on the object/resource was denied */ + VIR_ERR_ACCESS_DENIED, + /** error from a dbus service */ + VIR_ERR_DBUS_SERVICE, + /** the storage vol already exists */ + VIR_ERR_STORAGE_VOL_EXIST, + /** given CPU is incompatible with host CPU */ + VIR_ERR_CPU_INCOMPATIBLE, + /** XML document doesn't validate against schema */ + VIR_ERR_XML_INVALID_SCHEMA, + /** Finish API succeeded but it is expected to return NULL */ + VIR_ERR_MIGRATE_FINISH_OK, + /** authentication unavailable */ + VIR_ERR_AUTH_UNAVAILABLE, + /** Server was not found */ + VIR_ERR_NO_SERVER, + /** Client was not found */ + VIR_ERR_NO_CLIENT, + /** guest agent replies with wrong id to guest-sync command (DEPRECATED) */ + VIR_ERR_AGENT_UNSYNCED, + /** error in libssh transport driver */ + VIR_ERR_LIBSSH, + /** fail to find the desired device */ + VIR_ERR_DEVICE_MISSING, + /** invalid nwfilter binding */ + VIR_ERR_INVALID_NWFILTER_BINDING, + /** no nwfilter binding */ + VIR_ERR_NO_NWFILTER_BINDING, + /** invalid domain checkpoint */ + VIR_ERR_INVALID_DOMAIN_CHECKPOINT, + /** domain checkpoint not found */ + VIR_ERR_NO_DOMAIN_CHECKPOINT, + /** domain backup job id not found */ + VIR_ERR_NO_DOMAIN_BACKUP, + /** invalid network port object */ + VIR_ERR_INVALID_NETWORK_PORT, + /** the network port already exist */ + VIR_ERR_NETWORK_PORT_EXIST, + /** network port not found */ + VIR_ERR_NO_NETWORK_PORT, + /** no domain's hostname found */ + VIR_ERR_NO_HOSTNAME, + /** checkpoint can't be used */ + VIR_ERR_CHECKPOINT_INCONSISTENT, + /** more than one matching domain found */ + VIR_ERR_MULTIPLE_DOMAINS, /** unknown error */ VIR_ERR_UNKNOWN; // must be the last entry! From 5c9ce75f112b6f6f21d65484e315be45aa7a462e Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Mon, 27 Sep 2021 13:32:19 +0200 Subject: [PATCH 060/114] Add DeviceModifyFlags Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Domain.java | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index bad4aff..def1feb 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -164,6 +164,26 @@ public static final class SnapshotListFlags { public static final int NO_METADATA = bit(4); } + public static final class ModificationImpact { + + /** Affect current domain state */ + public static final int VIR_DOMAIN_AFFECT_CURRENT = 0; + + /** Affect running domain state */ + public static final int VIR_DOMAIN_AFFECT_LIVE = bit(0); + + /** Affect persistent domain state */ + public static final int VIR_DOMAIN_AFFECT_CONFIG = bit(1); + } + + public static final class DeviceModifyFlags { + public static final int VIR_DOMAIN_DEVICE_MODIFY_CONFIG = ModificationImpact.VIR_DOMAIN_AFFECT_CONFIG; + public static final int VIR_DOMAIN_DEVICE_MODIFY_CURRENT = ModificationImpact.VIR_DOMAIN_AFFECT_CURRENT; + public static final int VIR_DOMAIN_DEVICE_MODIFY_LIVE = ModificationImpact.VIR_DOMAIN_AFFECT_LIVE; + public static final int VIR_DOMAIN_DEVICE_MODIFY_FORCE = bit(2); + } + + /** the native virDomainPtr. */ DomainPointer vdp; @@ -290,12 +310,12 @@ public void attachDevice(final String xmlDesc) throws LibvirtException { /** * Creates a virtual device attachment to backend. * - * @see + * @see Libvirt Documentation * @param xmlDesc * XML description of one device * @param flags - * the an OR'ed set of virDomainDeviceModifyFlags + * the an OR'ed set of {@link DeviceModifyFlags} * @throws LibvirtException */ public void attachDeviceFlags(final String xmlDesc, final int flags) From ae68ed025aa87b186099f5da01784c7a6cedce8d Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Tue, 21 Sep 2021 15:44:12 +0200 Subject: [PATCH 061/114] Make domain flags public and update flags to match doc Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Domain.java | 198 ++++++++++++------ src/main/java/org/libvirt/DomainSnapshot.java | 12 +- 2 files changed, 149 insertions(+), 61 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index def1feb..6546a49 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -52,85 +52,110 @@ public static final class BlockResizeFlags { public static final int BYTES = 1; } - static final class CreateFlags { - static final int VIR_DOMAIN_NONE = 0; - /** Restore or alter metadata */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE = bit(0); + public static final class CreateFlags { + /** Default behavior */ + public static final int NONE = 0; - /** With redefine, make snapshot current */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT = bit(1); + /** Launch guest in paused state */ + public static final int PAUSED = bit(0); - /** Make snapshot without remembering it */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA = bit(2); + /** Automatically kill guest when virConnectPtr is closed */ + public static final int AUTODESTROY = bit(1); - /** Stop running guest after snapshot */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_HALT = bit(3); + /** Avoid file system cache pollution */ + public static final int BYPASS_CACHE = bit(2); - /** disk snapshot, not system checkpoint */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = bit(4); + /** Boot, discarding any managed save */ + public static final int FORCE_BOOT = bit(3); - /** reuse any existing external files */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT = bit(5); - - /** use guest agent to quiesce all mounted file systems within the domain */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE = bit(6); - - /* atomically avoid partial changes */ - static final int VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC = bit(7); + /** Validate the XML document against schema */ + public static final int VALIDATE = bit(4); } - static final class MigrateFlags { + public static final class MigrateFlags { /** live migration */ - static final int VIR_MIGRATE_LIVE = bit(0); + public static final int LIVE = bit(0); /** direct source -> dest host control channel */ - static final int VIR_MIGRATE_PEER2PEER = bit(1); + public static final int PEER2PEER = bit(1); - /** tunnel migration data over libvirtd connection - * @apiNote Note the less-common spelling that we're stuck with: - * VIR_MIGRATE_TUNNELLED should be VIR_MIGRATE_TUNNELED - */ - static final int VIR_MIGRATE_TUNNELLED = bit(2); + /** tunnel migration data over libvirtd connection */ + public static final int TUNNELED = bit(2); /** persist the VM on the destination */ - static final int VIR_MIGRATE_PERSIST_DEST = bit(3); + public static final int PERSIST_DEST = bit(3); /** undefine the VM on the source */ - static final int VIR_MIGRATE_UNDEFINE_SOURCE = bit(4); + public static final int UNDEFINE_SOURCE = bit(4); /** pause on remote side */ - static final int VIR_MIGRATE_PAUSED = bit(5); + public static final int PAUSED = bit(5); /** migration with non-shared storage with full disk copy */ - static final int VIR_MIGRATE_NON_SHARED_DISK = bit(6); + public static final int NON_SHARED_DISK = bit(6); /** migration with non-shared storage with incremental copy * (same base image shared between source and destination) */ - static final int VIR_MIGRATE_NON_SHARED_INC = bit(7); + public static final int NON_SHARED_INC = bit(7); /** protect for changing domain configuration through the * whole migration process; this will be used automatically * when supported */ - static final int VIR_MIGRATE_CHANGE_PROTECTION = bit(8); + public static final int CHANGE_PROTECTION = bit(8); /** force migration even if it is considered unsafe */ - static final int VIR_MIGRATE_UNSAFE = bit(9); + public static final int UNSAFE = bit(9); + + /** Migrate a domain definition without starting the domain on the + * destination and without stopping it on the source host */ + public static final int OFFLINE = bit(10); + + /** Compress migration data */ + public static final int COMPRESSED = bit(11); + + /** Cancel migration if a soft error (such as I/O error) happens + * during migration */ + public static final int ABORT_ON_ERROR = bit(12); + + /** Enable algorithms that ensure a live migration will + * eventually converge */ + public static final int AUTO_CONVERGE = bit(13); + + /** This flag can be used with RDMA migration (i.e., when + * PARAM_URI starts with "rdma://") to tell the + * hypervisor to pin all domain's memory at once before migration + * starts rather then letting it pin memory pages as needed */ + public static final int RDMA_PIN_ALL = bit(14); + + /** Setting the POSTCOPY flag tells libvirt to enable + * post-copy migration */ + public static final int POSTCOPY = bit(15); + + /** Setting the TLS flag will cause the migration + * to attempt to use the TLS environment configured by the + * hypervisor in order to perform the migration. */ + public static final int TLS = bit(16); + + /** Send memory pages to the destination host through several + * network connections */ + public static final int PARALLEL = bit(17); + } - static final class XMLFlags { + public static final class XMLFlags { /** dump security sensitive information too */ - static final int VIR_DOMAIN_XML_SECURE = 1; + public static final int SECURE = bit(0); /** dump inactive domain information*/ - static final int VIR_DOMAIN_XML_INACTIVE = 2; + public static final int INACTIVE = bit(1); /** update guest CPU requirements according to host CPU */ - static final int VIR_DOMAIN_XML_UPDATE_CPU = bit(2); + public static final int UPDATE_CPU = bit(2); /** dump XML suitable for migration */ - static final int VIR_DOMAIN_XML_MIGRATABLE = bit(3); + public static final int MIGRATABLE = bit(3); } public static final class UndefineFlags { @@ -141,27 +166,79 @@ public static final class UndefineFlags { public static final int SNAPSHOTS_METADATA = bit(1); } + public static final class SnapshotCreateFlags { + + /** Restore or alter metadata */ + public static final int REDEFINE = bit(0); + + /** With redefine, make snapshot current */ + public static final int CURRENT = bit(1); + + /** Make snapshot without remembering it */ + public static final int NO_METADATA = bit(2); + + /** Stop running guest after snapshot */ + public static final int HALT = bit(3); + + /** disk snapshot, not full system */ + public static final int DISK_ONLY = bit(4); + + /** reuse any existing external files */ + public static final int REUSE_EXT = bit(5); + + /** use guest agent to quiesce all mounted file systems within the domain */ + public static final int QUIESCE = bit(6); + + /** atomically avoid partial changes */ + public static final int ATOMIC = bit(7); + + /** create the snapshot while the guest is running */ + public static final int LIVE = bit(8); + + /** validate the XML against the schema */ + public static final int VALIDATE = bit(9); + } + public static final class SnapshotListFlags { - /** Filter by snapshots with no parents, when listing a domain */ - public static final int ROOTS = bit(0); - /** List all descendants, not just children, when listing a snapshot */ + /** List all descendants, not just children, when listing a snapshot + * For historical reasons, groups do not use contiguous bits. */ + public static final int DESCENDANTS = bit(0); + + /** Filter by snapshots with no parents, when listing a domain */ + public static final int ROOTS = bit(0); + + /** Filter by snapshots which have metadata */ + public static final int METADATA = bit(1); + + /** Filter by snapshots with no children */ + public static final int LEAVES = bit(2); + + /** Filter by snapshots that have children */ + public static final int NO_LEAVES = bit(3); + + /** Filter by snapshots with no metadata */ + public static final int NO_METADATA = bit(4); - public static final int DESCENDANTS = bit(0); + /** Filter by snapshots taken while guest was shut off */ + public static final int INACTIVE = bit(5); - /** @apiNote For historical reasons, groups do not use contiguous bits. */ + /** Filter by snapshots taken while guest was active, and with + * memory state */ + public static final int ACTIVE = bit(6); - /** Filter by snapshots with no children */ - public static final int LEAVES = bit(2); + /** Filter by snapshots taken while guest was active, but without + * memory state */ + public static final int DISK_ONLY = bit(7); - /** Filter by snapshots that have children */ - public static final int NO_LEAVES = bit(3); + /** Filter by snapshots stored internal to disk images */ + public static final int INTERNAL = bit(8); - /** Filter by snapshots which have metadata */ - public static final int METADATA = bit(1); + /** Filter by snapshots that use files external to disk images */ + public static final int EXTERNAL = bit(9); - /** Filter by snapshots with no metadata */ - public static final int NO_METADATA = bit(4); + /** Ensure parents occur before children in the resulting list */ + public static final int TOPOLOGICAL = bit(10); } public static final class ModificationImpact { @@ -1040,7 +1117,7 @@ public Domain migrate(final Connect dconn, final long flags, /** * Migrate this domain object from its current host to the destination host * given by dconn (a connection to the destination host). Flags may be one - * of more of the following: Domain.VIR_MIGRATE_LIVE Attempt a live + * of more of the following: Domain.MigrateFlags.LIVE Attempt a live * migration. If a hypervisor supports renaming domains during migration, * then you may set the dname parameter to the new name (otherwise it keeps * the same name). If this is not supported by the hypervisor, dname must be @@ -1112,10 +1189,10 @@ public int migrateSetMaxDowntime(final long downtime) * denoted by a given URI. *

* The destination is given either in dconnuri (if the - * {@link MigrateFlags#VIR_MIGRATE_PEER2PEER PEER2PEER} + * {@link MigrateFlags#PEER2PEER PEER2PEER} * is flag set), or in miguri (if neither the - * {@link MigrateFlags#VIR_MIGRATE_PEER2PEER PEER2PEER} nor the - * {@link MigrateFlags#VIR_MIGRATE_TUNNELLED TUNNELLED} migration + * {@link MigrateFlags#PEER2PEER PEER2PEER} nor the + * {@link MigrateFlags#TUNNELED TUNNELED} migration * flag is set in flags). * * @see * * @param dconnuri - * (optional) URI for target libvirtd if @flags includes VIR_MIGRATE_PEER2PEER + * (optional) URI for target libvirtd if @flags includes PEER2PEER * @param miguri - * (optional) URI for invoking the migration, not if @flags includs VIR_MIGRATE_TUNNELLED + * (optional) URI for invoking the migration, not if @flags includs TUNNELED * @param dxml * (optional) XML config for launching guest on target * @param flags @@ -1483,7 +1560,7 @@ public void shutdown() throws LibvirtException { * @param xmlDesc * string containing an XML description of the domain * @param flags - * flags for creating the snapshot, see the virDomainSnapshotCreateFlags for the flag options + * flags for creating the snapshot, see the {@link SnapshotCreateFlags } for the flag options * @return the snapshot * @throws LibvirtException */ @@ -1534,6 +1611,7 @@ public DomainSnapshot snapshotCurrent() throws LibvirtException { * @see Libvirt * Documentation + * @param flags {@link SnapshotListFlags} * @return The list of names, or null if an error * @throws LibvirtException */ diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index e7587f8..d347f8d 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -6,6 +6,16 @@ public class DomainSnapshot { + private static int bit(final int i) { + return 1 << i; + } + + public static final class SnapshotDeleteFlags { + public static final int CHILDREN = bit(0); /* Also delete children */ + public static final int METADATA_ONLY = bit(1); /* Delete just metadata */ + public static final int CHILDREN_ONLY = bit(2); /* Delete just children */ + } + /** * the native virDomainSnapshotPtr. */ @@ -28,7 +38,7 @@ public DomainSnapshot(final Connect virConnect, * @see Libvirt * Documentation - * @param flags + * @param flags see {@link SnapshotDeleteFlags} * controls the deletion * @return ignore (always 0) * @throws LibvirtException From 15ccc0b5f9d0188bf930897ca56f633528bd8050 Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Tue, 28 Sep 2021 12:09:56 +0200 Subject: [PATCH 062/114] Remove redundant prefix in ModificationImpact and DeviceModifyFlags Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Domain.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 6546a49..27a8cf0 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -244,20 +244,20 @@ public static final class SnapshotListFlags { public static final class ModificationImpact { /** Affect current domain state */ - public static final int VIR_DOMAIN_AFFECT_CURRENT = 0; + public static final int CURRENT = 0; /** Affect running domain state */ - public static final int VIR_DOMAIN_AFFECT_LIVE = bit(0); + public static final int LIVE = bit(0); /** Affect persistent domain state */ - public static final int VIR_DOMAIN_AFFECT_CONFIG = bit(1); + public static final int CONFIG = bit(1); } public static final class DeviceModifyFlags { - public static final int VIR_DOMAIN_DEVICE_MODIFY_CONFIG = ModificationImpact.VIR_DOMAIN_AFFECT_CONFIG; - public static final int VIR_DOMAIN_DEVICE_MODIFY_CURRENT = ModificationImpact.VIR_DOMAIN_AFFECT_CURRENT; - public static final int VIR_DOMAIN_DEVICE_MODIFY_LIVE = ModificationImpact.VIR_DOMAIN_AFFECT_LIVE; - public static final int VIR_DOMAIN_DEVICE_MODIFY_FORCE = bit(2); + public static final int CONFIG = ModificationImpact.CONFIG; + public static final int CURRENT = ModificationImpact.CURRENT; + public static final int LIVE = ModificationImpact.LIVE; + public static final int FORCE = bit(2); } From 4745ed8331a458c736e7dee7a8de5de4c45d1347 Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Wed, 22 Sep 2021 16:18:14 +0200 Subject: [PATCH 063/114] Add support for blockCommit, getBlockJobInfo and blockJobAbort Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Domain.java | 76 +++++++++++++++++++ .../java/org/libvirt/DomainBlockJobInfo.java | 26 +++++++ src/main/java/org/libvirt/jna/Libvirt.java | 4 + .../libvirt/jna/virDomainBlockJobInfo.java | 22 ++++++ 4 files changed, 128 insertions(+) create mode 100644 src/main/java/org/libvirt/DomainBlockJobInfo.java create mode 100644 src/main/java/org/libvirt/jna/virDomainBlockJobInfo.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 27a8cf0..c4a089e 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -11,6 +11,7 @@ import org.libvirt.jna.Libvirt; import org.libvirt.jna.SizeT; import org.libvirt.jna.virDomainBlockInfo; +import org.libvirt.jna.virDomainBlockJobInfo; import org.libvirt.jna.virDomainBlockStats; import org.libvirt.jna.virDomainInfo; import org.libvirt.jna.virDomainInterfaceStats; @@ -45,6 +46,34 @@ private static int bit(final int i) { /** * TODO: get generated constants from libvirt */ + + public static final class BlockCommitFlags { + /** NULL base means next backing file, not whole chain */ + public static int SHALLOW = bit(0); + + /** Delete any files that are now invalid after their contents have been committed */ + public static int DELETE = bit(1); + + /** Allow a two-phase commit when top is the active layer */ + public static int ACTIVE = bit(2); + + /** keep the backing chain referenced using relative names */ + public static int RELATIVE = bit(3); + + /** bandwidth in bytes/s instead of MiB/s */ + public static int BANDWIDTH_BYTES = bit(4); + } + + public static final class BlockJobInfoFlags { + /** bandwidth in bytes/s instead of MiB/s */ + public static int BANDWIDTH_BYTES = bit(0); + } + + public static final class BlockJobAbortFlags { + public static int ASYNC = bit(0); + public static int PIVOT = bit(1); + } + public static final class BlockResizeFlags { /** * size is in bytes instead of KiB @@ -504,6 +533,53 @@ public void blockResize(final String disk, final long size, final int flags) processError(libvirt.virDomainBlockResize(vdp, disk, size, flags)); } + /** + * Commit changes that were made to temporary top-level files within a disk + * image backing file chain into a lower-level base file. + * + * @see + * virDomainBlockCommit + * @param disk path to the block device, or device shorthand + * @param base path to backing file to merge into, or device shorthand, or + * NULL for default + * @param top path to file within backing chain that contains data to be + * merged, or device shorthand, or NULL to merge all possible data + * @param bandwidth (optional) specify bandwidth limit; flags determine the unit + * @param flags bitwise-OR of {@link BlockCommitFlags} + * @throws LibvirtException + */ + public void blockCommit(String disk, String base, String top, long bandwidth, int flags) throws LibvirtException { + processError(libvirt.virDomainBlockCommit(vdp, disk, base, top, bandwidth, flags)); + } + + /** + * Request block job information for the given disk. + * + * @see + * virDomainGetBlockJobInfo + * @param disk path to the block device, or device shorthand + * @param flags see {@link BlockJobInfoFlags} + * @return the statistics in a BlockJobInfo object + * @throws LibvirtException + */ + public DomainBlockJobInfo getBlockJobInfo(String disk, int flags) throws LibvirtException { + final virDomainBlockJobInfo info = new virDomainBlockJobInfo(); + processError(libvirt.virDomainGetBlockJobInfo(vdp, disk, info, flags)); + return new DomainBlockJobInfo(info); + } + + /** + * Cancel the active block job on the given disk. + * + * @see + * virDomainBlockJobAbort + * @param disk path to the block device, or device shorthand + * @param flags see {@link BlockJobAbortFlags} + * @throws LibvirtException + */ + public void blockJobAbort(String disk, int flags) throws LibvirtException { + processError(libvirt.virDomainBlockJobAbort(vdp, disk, flags)); + } /** * Dumps the core of this domain on a given file for analysis. Note that for diff --git a/src/main/java/org/libvirt/DomainBlockJobInfo.java b/src/main/java/org/libvirt/DomainBlockJobInfo.java new file mode 100644 index 0000000..72894a4 --- /dev/null +++ b/src/main/java/org/libvirt/DomainBlockJobInfo.java @@ -0,0 +1,26 @@ +package org.libvirt; + +import org.libvirt.jna.virDomainBlockJobInfo; + +public class DomainBlockJobInfo { + public int type; + public long bandwidth; + public long cur; + public long end; + + public DomainBlockJobInfo() { + } + + public DomainBlockJobInfo(final virDomainBlockJobInfo virInfo) { + type = virInfo.type; + bandwidth = virInfo.bandwidth; + cur = virInfo.cur; + end = virInfo.end; + } + + @Override + public String toString() { + return String.format("type:%s%nbandwith:%s%ncur:%s%nend:%s%n", + type, bandwidth, cur, end); + } +} diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 2c68a18..a942478 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -305,6 +305,9 @@ int virGetVersion(LongByReference libVer, String type, int virDomainAttachDevice(DomainPointer virDomainPtr, String deviceXML); int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, String deviceXML, int flags); + int virDomainBlockCommit(DomainPointer virDomainPtr, String disk, + String base, String top, long bandwidth, int flags); + int virDomainBlockJobAbort(DomainPointer virDomainPtr, String disk, int flags); int virDomainBlockPeek(DomainPointer virDomainPtr, String disk, long offset, SizeT size, ByteBuffer buffer, int flags); @@ -329,6 +332,7 @@ int virDomainDetachDeviceFlags(DomainPointer virDomainPtr, int virDomainGetAutostart(DomainPointer virDomainPtr, IntByReference value); int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, virDomainBlockInfo info, int flags); + int virDomainGetBlockJobInfo(DomainPointer virDomainPtr, String disk, virDomainBlockJobInfo info, int flags); int virDomainGetID(DomainPointer virDomainPtr); int virDomainGetInfo(DomainPointer virDomainPtr, virDomainInfo vInfo); int virDomainGetJobInfo(DomainPointer virDomainPtr, virDomainJobInfo vInfo); diff --git a/src/main/java/org/libvirt/jna/virDomainBlockJobInfo.java b/src/main/java/org/libvirt/jna/virDomainBlockJobInfo.java new file mode 100644 index 0000000..b85671d --- /dev/null +++ b/src/main/java/org/libvirt/jna/virDomainBlockJobInfo.java @@ -0,0 +1,22 @@ +package org.libvirt.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +public class virDomainBlockJobInfo extends Structure { + public int type; + public long bandwidth; + public long cur; + public long end; + + + private static final List FIELDS = Arrays.asList( + "type", "bandwidth", "cur", "end"); + + @Override + protected List getFieldOrder() { + return FIELDS; + } +} From d0e9beb5498b0cd33a89d52c75260d6a13be6291 Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Mon, 27 Sep 2021 14:25:00 +0200 Subject: [PATCH 064/114] Add support for setVcpusFlags Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/Domain.java | 33 +++++++++++++++++++++- src/main/java/org/libvirt/jna/Libvirt.java | 1 + 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index c4a089e..38b0abc 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -290,6 +290,21 @@ public static final class DeviceModifyFlags { } + public static final class VcpuFlags { + public static final int CONFIG = ModificationImpact.CONFIG; + public static final int CURRENT = ModificationImpact.CURRENT; + public static final int LIVE = ModificationImpact.LIVE; + + /** Max rather than current count */ + public static final int MAXIMUM = bit(2); + + /** Modify state of the cpu in the guest */ + public static final int GUEST = bit(3); + + /** Make vcpus added hot(un)pluggable */ + public static final int HOTPLUGGABLE = bit(4); + } + /** the native virDomainPtr. */ DomainPointer vdp; @@ -1590,7 +1605,7 @@ public void setSchedulerParameters(final SchedParameter[] params) * Dynamically changes the number of virtual CPUs used by this domain. Note * that this call may fail if the underlying virtualization hypervisor does * not support it or if growing the number is arbitrary limited. This - * function requires priviledged access to the hypervisor. + * function requires privileged access to the hypervisor. * * @param nvcpus * the new number of virtual CPUs for this domain @@ -1600,6 +1615,22 @@ public void setVcpus(final int nvcpus) throws LibvirtException { processError(libvirt.virDomainSetVcpus(vdp, nvcpus)); } + /** + * Dynamically changes the number of virtual CPUs used by this domain. Note + * that this call may fail if the underlying virtualization hypervisor does + * not support it or if growing the number is arbitrary limited. This + * function requires privileged access to the hypervisor. + * + * @param nvcpus + * the new number of virtual CPUs for this domain + * @param flags + * {@link VcpuFlags} + * @throws LibvirtException + */ + public void setVcpusFlags(final int nvcpus, final int flags) throws LibvirtException { + processError(libvirt.virDomainSetVcpusFlags(vdp, nvcpus, flags)); + } + /** * Send key(s) to the guest. * diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index a942478..88728b2 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -410,6 +410,7 @@ CString virDomainScreenshot(DomainPointer virDomainPtr, int virDomainSetSchedulerParameters(DomainPointer virDomainPtr, virSchedParameter[] params, int nparams); int virDomainSetVcpus(DomainPointer virDomainPtr, int nvcpus); + int virDomainSetVcpusFlags(DomainPointer virDomainPtr, int nvcpus, int flags); int virDomainShutdown(DomainPointer virDomainPtr); int virDomainSuspend(DomainPointer virDomainPtr); int virDomainUpdateDeviceFlags(DomainPointer virDomainPtr, From 7922ece153fecd31825d3b4edc53c1068b42687d Mon Sep 17 00:00:00 2001 From: Lars Dunemark Date: Wed, 29 Sep 2021 09:51:41 +0200 Subject: [PATCH 065/114] Add missing flags for create storage volumes Signed-off-by: Lars Dunemark --- src/main/java/org/libvirt/StoragePool.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index 1c136a1..f55be13 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -42,6 +42,13 @@ static final class DeleteFlags { static final int VIR_STORAGE_POOL_DELETE_ZEROED = 1; } + public static final class VolumeCreateFlags { + public static final int PREALLOC_METADATA = 1; + + /** perform a btrfs lightweight copy */ + public static final int REFLINK = 2; + } + /** * the native virStoragePoolPtr. */ @@ -298,7 +305,7 @@ public void setAutostart(final int autostart) throws LibvirtException { * @param xmlDesc * description of volume to create * @param flags - * flags for creation (unused, pass 0) + * flags for creation, see {@link VolumeCreateFlags} * @return the storage volume * @throws LibvirtException */ @@ -314,6 +321,12 @@ public StorageVol storageVolCreateXML(final String xmlDesc, final int flags) * as input. Information for the new volume (name, perms) are passed via a * typical volume XML description. * + * @param xmlDesc + * description of volume to create + * @param cloneVolume + * storage volume to use as input + * @param flags + * flags for creation, see {@link VolumeCreateFlags} * @return The storage volume * @throws LibvirtException */ From 2709827ab8d665952fca5923114a2539800fac90 Mon Sep 17 00:00:00 2001 From: Lars Dunemark Date: Wed, 29 Sep 2021 10:01:11 +0200 Subject: [PATCH 066/114] Add missing flags for Reboot command Signed-off-by: Lars Dunemark --- src/main/java/org/libvirt/Domain.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 38b0abc..e19645d 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -195,6 +195,26 @@ public static final class UndefineFlags { public static final int SNAPSHOTS_METADATA = bit(1); } + public static final class RebootFlags { + /** hypervisor choice */ + public static final int DEFAULT = 0; + + /** Send ACPI event */ + public static final int ACPI_POWER_BTN = bit(0); + + /** Use guest agent */ + public static final int GUEST_AGENT = bit(1); + + /** Use initctl */ + public static final int INITCTL = bit(2); + + /** Send a signal */ + public static final int SIGNAL = bit(3); + + /** Use paravirt guest control */ + public static final int PARAVIRT = bit(4); + } + public static final class SnapshotCreateFlags { /** Restore or alter metadata */ @@ -1398,7 +1418,7 @@ public void pinVcpu(final int vcpu, final int[] cpumap) * ignore the request. * * @param flags - * extra flags for the reboot operation, not used yet + * extra flags for the reboot operation, see {@link RebootFlags} * @throws LibvirtException */ public void reboot(final int flags) throws LibvirtException { From 243c11ae85d1366299a195c4f246a6e89f52dfb1 Mon Sep 17 00:00:00 2001 From: Magnus Johansson Date: Wed, 29 Sep 2021 09:33:19 +0200 Subject: [PATCH 067/114] Add support for upload and download of volume Signed-off-by: Magnus Johansson --- src/main/java/org/libvirt/StorageVol.java | 46 ++++++++++++++++++++++ src/main/java/org/libvirt/jna/Libvirt.java | 4 ++ 2 files changed, 50 insertions(+) diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index 119fe1a..e33aab4 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -39,6 +39,20 @@ public static final class ResizeFlags { public static final int SHRINK = 4; } + public static final class DownloadFlags { + /** + * Use sparse stream + */ + public static final int SPARSE_STREAM = 1; + } + + public static final class UploadFlags { + /** + * Use sparse stream + */ + public static final int SPARSE_STREAM = 1; + } + public enum Type { /** * Regular file based volumes @@ -215,4 +229,36 @@ public int resize(final long capacity, final int flags) throws LibvirtException { return processError(libvirt.virStorageVolResize(vsvp, capacity, flags)); } + + /** + * Upload new content to the volume from a stream + * + * @see + * Libvirt Documentation + * @param stream stream to use as input + * @param offset position to start writing to + * @param length limit on amount of data to upload + * @param flags see {@link UploadFlags} + * @throws LibvirtException + */ + public void upload(Stream stream, long offset, long length, int flags) throws LibvirtException { + stream.markWritable(); + processError(libvirt.virStorageVolUpload(vsvp, stream.getVsp(), offset, length, flags)); + } + + /** + * Download the content of the volume as a stream + * + * @see + * Libvirt Documentation + * @param stream stream to use as output + * @param offset position to start reading from + * @param length limit on amount of data to download + * @param flags see {@link DownloadFlags} + * @throws LibvirtException + */ + public void download(Stream stream, long offset, long length, int flags) throws LibvirtException { + stream.markReadable(); + processError(libvirt.virStorageVolDownload(vsvp, stream.getVsp(), offset, length, flags)); + } } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 88728b2..ab10d81 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -507,6 +507,8 @@ StorageVolPointer virStorageVolCreateXMLFrom(StoragePoolPointer storagePoolPtr, StorageVolPointer cloneVolume, int flags); int virStorageVolDelete(StorageVolPointer storageVolPtr, int flags); + int virStorageVolDownload(StorageVolPointer storageVolPointer, StreamPointer streamPtr, + long offset, long length, int flags); int virStorageVolFree(StorageVolPointer storageVolPtr); int virStorageVolGetInfo(StorageVolPointer storageVolPtr, virStorageVolInfo info); String virStorageVolGetKey(StorageVolPointer storageVolPtr); @@ -522,6 +524,8 @@ StorageVolPointer virStorageVolLookupByPath(ConnectionPointer virConnectPtr, int virStorageVolWipe(StorageVolPointer storageVolPtr, int flags); int virStorageVolResize(StorageVolPointer storageVolPtr, long capacity, int flags); + int virStorageVolUpload(StorageVolPointer storageVolPointer, StreamPointer streamPtr, + long offset, long length, int flags); // Interface Methods int virInterfaceCreate(InterfacePointer virDevicePointer, int flags); From 4a1eac16e1e00ca2a4a0a6c887b524613a619d8a Mon Sep 17 00:00:00 2001 From: Lars Dunemark Date: Wed, 22 Sep 2021 20:01:53 +0200 Subject: [PATCH 068/114] Add support for Agent Lifecycle event callbacks Updating DomainEventID with new event id and adding registration of callback for Agent Lifecycle events and remove function for same callbacks. Signed-off-by: Lars Dunemark --- src/main/java/org/libvirt/Connect.java | 76 ++++++++++++++++++- src/main/java/org/libvirt/Domain.java | 26 ++++++- .../libvirt/event/AgentLifecycleListener.java | 13 ++++ src/main/java/org/libvirt/jna/Libvirt.java | 7 ++ 4 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/libvirt/event/AgentLifecycleListener.java diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 6f98b74..63a1d85 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -100,7 +100,20 @@ private interface DomainEventID { int TRAY_CHANGE = 10; int PMWAKEUP = 11; int PMSUSPEND = 12; - int LAST = 13; + int BALLON_CHANGE = 13; + int PMSUSPEND_DISK = 14; + int DEVICE_REMOVED = 15; + int BLOCK_JOB_2 = 16; + int TUNABLE = 17; + int AGENT_LIFECYCLE = 18; + int DEVICE_ADDED = 19; + int MIGRATION_ITERATION = 20; + int JOB_COMPLETED = 21; + int DEVICE_REMOVAL_FAILED = 22; + int METADATA_CHANGE = 23; + int BLOCK_THRESHOLD = 24; + int MEMORY_FAILURE = 25; + int LAST = 26; } public enum OpenFlags implements BitFlags { @@ -704,6 +717,52 @@ public int eventCallback(final ConnectionPointer virConnectPtr, domainEventRegister(domain, DomainEventID.LIFECYCLE, virCB, cb); } + void domainEventRegister(final Domain domain, final AgentLifecycleListener cb) throws LibvirtException { + if (cb == null) + throw new IllegalArgumentException("AgentLifecycleCallback cannot be null"); + + Libvirt.VirConnectDomainAgentLifecycleEventCallback virCB = new Libvirt.VirConnectDomainAgentLifecycleEventCallback() { + @Override + public int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + final int state, + final int reason, + Pointer opaque) { + assert vcp.equals(virConnectPtr); + + try { + Domain dom = Domain.constructIncRef(Connect.this, virDomainPointer); + cb.onAgentLifecycleChange(dom, state, reason); + } catch (LibvirtException e) { + throw new RuntimeException("libvirt error in agent lifecycle callback", e); + } + + // always return 0, regardless of what the + // callback method returned. This may need to be + // changed in the future, in case the return value + // is used for something by libvirt. + return 0; + } + }; + + domainEventRegister(domain, DomainEventID.AGENT_LIFECYCLE, virCB, cb); + } + + /** + * Adds the specified listener to receive agent lifecycle events. + * + * @param cb the agent lifecycle listener + * @throws LibvirtException on failure + * + * @see #removeAgentLifecycleListener + * @see Domain#addAgentLifecycleListener + * @see + * + virConnectDomainEventRegisterAny + */ + public void addAgentLifecycleListener(final AgentLifecycleListener cb) throws LibvirtException { + domainEventRegister(null, cb); + } + /** * Adds the specified listener to receive lifecycle events for * domains of this connection. @@ -861,6 +920,21 @@ public void removeLifecycleListener(final LifecycleListener l) throws LibvirtExc domainEventDeregister(DomainEventID.LIFECYCLE, l); } + /** + * Removes the specified agent lifecycle event listener so that it no longer + * receives agent lifecycle events. + * + * @param l the agent lifecycle event listener + * @throws LibvirtException + * + * @see + * + virConnectDomainEventDeregisterAny + */ + public void removeAgentLifecycleListener(final AgentLifecycleListener l) throws LibvirtException { + domainEventDeregister(DomainEventID.AGENT_LIFECYCLE, l); + } + /** * Adds the specified reboot listener to receive reboot events for * domains of this connection. diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index e19645d..3a4b469 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -3,7 +3,12 @@ import java.nio.ByteBuffer; import java.util.concurrent.TimeUnit; +import org.libvirt.event.AgentLifecycleListener; import org.libvirt.event.IOErrorListener; +import org.libvirt.event.LifecycleListener; +import org.libvirt.event.PMSuspendListener; +import org.libvirt.event.PMWakeupListener; +import org.libvirt.event.RebootListener; import org.libvirt.jna.CString; import org.libvirt.jna.CStringByReference; import org.libvirt.jna.DomainPointer; @@ -19,10 +24,7 @@ import org.libvirt.jna.virDomainMemoryStats; import org.libvirt.jna.virSchedParameter; import org.libvirt.jna.virVcpuInfo; -import org.libvirt.event.RebootListener; -import org.libvirt.event.LifecycleListener; -import org.libvirt.event.PMWakeupListener; -import org.libvirt.event.PMSuspendListener; + import static org.libvirt.Library.libvirt; import static org.libvirt.Library.libvirtQemu; import static org.libvirt.ErrorHandler.processError; @@ -1468,6 +1470,22 @@ public void addRebootListener(final RebootListener l) virConnect.domainEventRegister(this, l); } + /** + * Adds the specified listener to receive agent lifecycle events for this domain. + * + * @param cb the agent lifecycle listener + * @throws LibvirtException on failure + * + * @see Connect#addAgentLifecycleListener + * @see Connect#removeAgentLifecycleListener + * @see + * + virConnectDomainEventRegisterAny + */ + public void addAgentLifecycleListener(final AgentLifecycleListener cb) throws LibvirtException { + virConnect.domainEventRegister(this, cb); + } + /** * Adds the specified listener to receive lifecycle events for this domain. * diff --git a/src/main/java/org/libvirt/event/AgentLifecycleListener.java b/src/main/java/org/libvirt/event/AgentLifecycleListener.java new file mode 100644 index 0000000..3768c72 --- /dev/null +++ b/src/main/java/org/libvirt/event/AgentLifecycleListener.java @@ -0,0 +1,13 @@ +package org.libvirt.event; + +import org.libvirt.Domain; + +/** + * Interface for receiving events occurring on a guest agent livecycle change. + * + * @see +virConnectDomainEventAgentLifecycleCallback + */ +public interface AgentLifecycleListener extends EventListener { + void onAgentLifecycleChange(Domain domain, int state, int reason); +} diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index ab10d81..b1d1bc4 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -97,6 +97,13 @@ void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, Pointer opaque); } + interface VirConnectDomainAgentLifecycleEventCallback extends VirDomainEventCallback { + int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, + int state, + int reason, + Pointer opaque); + } + interface VirConnectDomainEventCallback extends VirDomainEventCallback { int eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, From 9ec9a20cebf2132354741a04aa48f07f951bd5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 20 Oct 2021 15:30:18 +0100 Subject: [PATCH 069/114] Switch to new GitHub repo-lockdown configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repo-lockdown service used to run as a bot outside GitHub, but has now switched to using the GitHub Actions workflow framework. This requires use of a new configuration file. Signed-off-by: Daniel P. Berrangé --- .github/lockdown.yml | 36 ----------------------- .github/workflows/lockdown.yml | 52 ++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 36 deletions(-) delete mode 100644 .github/lockdown.yml create mode 100644 .github/workflows/lockdown.yml diff --git a/.github/lockdown.yml b/.github/lockdown.yml deleted file mode 100644 index ff4a3eb..0000000 --- a/.github/lockdown.yml +++ /dev/null @@ -1,36 +0,0 @@ -# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown - -# Close issues and pull requests -close: true - -# Lock issues and pull requests -lock: true - -# Optionally, specify configuration settings just for `issues` or `pulls` -issues: - comment: | - Thank you for your interest in the libvirt project. - - Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, issues opened here are not processed. - - We kindly request that new issues are reported to - - https://gitlab.com/libvirt/libvirt-java/-/issues/new - - Thank you for your time and understanding. - -pulls: - comment: | - Thank you for your interest in the libvirt project. - - Since this repository is a read-only mirror of the project's master repostory hosted on GitLab, merge requests opened here are not processed. - - We kindly request that contributors fork the project at - - https://gitlab.com/libvirt/libvirt-java/ - - push changes to the fork, and then open a new merge request at - - https://gitlab.com/libvirt/libvirt-java/-/merge_requests/new - - Thank you for your time and understanding. diff --git a/.github/workflows/lockdown.yml b/.github/workflows/lockdown.yml new file mode 100644 index 0000000..69ea86f --- /dev/null +++ b/.github/workflows/lockdown.yml @@ -0,0 +1,52 @@ +--- +# Configuration for Repo Lockdown - https://github.com/dessant/repo-lockdown + +name: 'Repo Lockdown' + +on: + issues: + types: opened + pull_request_target: + types: opened + +permissions: + pull-requests: write + issues: write + +jobs: + action: + runs-on: ubuntu-latest + steps: + - uses: dessant/repo-lockdown@v2 + with: + issue-comment: | + Thank you for your interest in the libvirt project. + + Since this repository is a read-only mirror of the project's master + repostory hosted on GitLab, issues opened here are not processed. + + We kindly request that new issues are reported to + + https://gitlab.com/libvirt/libvirt-java/-/issues/new + + Thank you for your time and understanding. + lock-issue: true + close-issue: true + pr-comment: | + Thank you for your interest in the libvirt project. + + Since this repository is a read-only mirror of the project's master + repostory hosted on GitLab, merge requests opened here are not + processed. + + We kindly request that contributors fork the project at + + https://gitlab.com/libvirt/libvirt-java/ + + push changes to the fork, and then open a new merge request at + + https://gitlab.com/libvirt/libvirt-java/-/merge_requests/new + + Thank you for your time and understanding. + lock-pr: true + close-pr: true From 559c2b03459361df982871140cd36e56b6663d8d Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Sun, 31 Oct 2021 09:43:51 +0100 Subject: [PATCH 070/114] Fixed a possible use-after-free bug Signed-off-by: Peter Conrad --- src/main/java/org/libvirt/Connect.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 63a1d85..97699bb 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -330,6 +330,7 @@ public Connect(final String uri, final ConnectAuth auth, final int flags) throws LibvirtException { virConnectAuth vAuth = null; + Memory mem; if (auth != null) { vAuth = new virConnectAuth(); vAuth.cb = auth; @@ -341,7 +342,7 @@ public Connect(final String uri, final ConnectAuth auth, final int flags) authInts[x] = auth.credType[x].mapToInt(); } - Memory mem = new Memory(4 * vAuth.ncredtype); + mem = new Memory(4 * vAuth.ncredtype); mem.write(0, authInts, 0, vAuth.ncredtype); vAuth.credtype = mem.share(0); } From 838b4a36f2b958289142b88da5d2a987a5c71996 Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Sun, 31 Oct 2021 10:14:20 +0100 Subject: [PATCH 071/114] Added MetadataType constants and [gs]etMetadata methods Signed-off-by: Peter Conrad --- src/main/java/org/libvirt/Domain.java | 50 +++++++++++++++++++ src/main/java/org/libvirt/jna/Libvirt.java | 3 ++ .../java/org/libvirt/TestJavaBindings.java | 24 +++++++++ 3 files changed, 77 insertions(+) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 3a4b469..f128e32 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -103,6 +103,17 @@ public static final class CreateFlags { public static final int VALIDATE = bit(4); } + public static final class MetadataType { + /** Operate on <description> */ + public static final int DESCRIPTION = 0; + + /** Operate on <title> */ + public static final int TITLE = 1; + + /** Operate on <metadata> */ + public static final int ELEMENT = 2; + } + public static final class MigrateFlags { /** live migration */ public static final int LIVE = bit(0); @@ -817,6 +828,19 @@ public int getMaxVcpus() throws LibvirtException { return processError(libvirt.virDomainGetMaxVcpus(vdp)); } + /** + * Retrieves the appropriate domain element given by type. + * + * @param type type of metadata, see {@link MetadataType} + * @param uri XML namespace identifier if type == MetadataType.ELEMENT, null otherwise + * @param flags bitwise-OR of {@link ModificationImpact} + * @return the metadata string + * @throws LibvirtException + */ + public String getMetadata(int type, String uri, int flags) throws LibvirtException { + return processError(libvirt.virDomainGetMetadata(vdp, type, uri, flags)); + } + /** * Gets the public name for this domain * @@ -1623,6 +1647,32 @@ public void setMemory(final long memory) throws LibvirtException { processError(libvirt.virDomainSetMemory(vdp, new NativeLong(memory))); } + /** + * Sets the appropriate domain element given by type to the value of metadata. + * + * A type of MetadataType.DESCRIPTION is free-form text; MetadataType.TITLE is + * free-form, but no newlines are permitted, and should be short (although the length + * is not enforced). For these two options key and uri are irrelevant and must be set + * to null. + * + * For type MetadataType.ELEMENT metadata must be well-formed XML belonging to + * namespace defined by uri with local name key. + * + * Passing null for metadata says to remove that element from the domain XML (passing + * the empty string leaves the element present). + * + * @param type see {@link MetadataType} + * @param metadata the new metadata content + * @param key XML namespace prefix for type MetadataType.ELEMENT, null otherwise + * @param uri XML namespace URI for typeMetadataType.ELEMENT, null otherwise + * @param flags see {@link ModificationImpact} + * @throws LibvirtException + */ + public void setMetadata(int type, String metadata, String key, String uri, int flags) + throws LibvirtException { + processError(libvirt.virDomainSetMetadata(vdp, type, metadata, key, uri, flags)); + } + /** * Changes the scheduler parameters * diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index b1d1bc4..c4bd2ba 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -345,6 +345,7 @@ int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, int virDomainGetJobInfo(DomainPointer virDomainPtr, virDomainJobInfo vInfo); NativeLong virDomainGetMaxMemory(DomainPointer virDomainPtr); int virDomainGetMaxVcpus(DomainPointer virDomainPtr); + String virDomainGetMetadata(DomainPointer virDomainPtr, int type, String uri, int flags); String virDomainGetName(DomainPointer virDomainPtr); CString virDomainGetOSType(DomainPointer virDomainPtr); int virDomainGetSchedulerParameters(DomainPointer virDomainPtr, @@ -414,6 +415,8 @@ CString virDomainScreenshot(DomainPointer virDomainPtr, int virDomainSetAutostart(DomainPointer virDomainPtr, int autoStart); int virDomainSetMaxMemory(DomainPointer virDomainPtr, NativeLong maxMemory); int virDomainSetMemory(DomainPointer virDomainPtr, NativeLong maxMemory); + int virDomainSetMetadata(DomainPointer domain, int type, String metadata, String key, + String uri, int flags); int virDomainSetSchedulerParameters(DomainPointer virDomainPtr, virSchedParameter[] params, int nparams); int virDomainSetVcpus(DomainPointer virDomainPtr, int nvcpus); diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 0a3bca0..e39ed86 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.regex.Pattern; import junit.framework.TestCase; @@ -358,4 +359,27 @@ public void testDomainScreenshot() throws Exception { } catch (ClosedChannelException expected) { } } + + public void testDomainMetadata() throws LibvirtException { + Domain dom = conn.domainDefineXML("" + " metatest" + + " 004b96e1-2d78-c30f-5aa5-f03c87d21e70" + " 8388608" + + " 2" + " hvm" + " restart" + + " destroy" + " restart" + ""); + + dom.setMetadata(Domain.MetadataType.DESCRIPTION, "a description", null, null, Domain.ModificationImpact.CURRENT); + dom.setMetadata(Domain.MetadataType.TITLE, "a title", null, null, Domain.ModificationImpact.CURRENT); + String xml1 = "value"; + Pattern pattern1 = Pattern.compile("\\s*value\\s*"); + String uri1 = "http://libvirt.org/test.rng"; + dom.setMetadata(Domain.MetadataType.ELEMENT, xml1, "pfx", uri1, Domain.ModificationImpact.CURRENT); + String xml2 = "value2"; + Pattern pattern2 = Pattern.compile("\\s*value2\\s*"); + String uri2 = "http://libvirt.org/othertest.rng"; + dom.setMetadata(Domain.MetadataType.ELEMENT, xml2, "pfx", uri2, Domain.ModificationImpact.CURRENT); + + assertEquals("a description", dom.getMetadata(Domain.MetadataType.DESCRIPTION, null, Domain.ModificationImpact.CURRENT)); + assertEquals("a title", dom.getMetadata(Domain.MetadataType.TITLE, null, Domain.ModificationImpact.CURRENT)); + assertTrue(pattern1.matcher(dom.getMetadata(Domain.MetadataType.ELEMENT, uri1, Domain.ModificationImpact.CURRENT)).matches()); + assertTrue(pattern2.matcher(dom.getMetadata(Domain.MetadataType.ELEMENT, uri2, Domain.ModificationImpact.CURRENT)).matches()); + } } From 0ed5b155ee8d7152c4db40e1cf1fc8a23463039f Mon Sep 17 00:00:00 2001 From: Marcus Sorensen Date: Tue, 22 Feb 2022 12:54:58 -0700 Subject: [PATCH 072/114] Implement virDomainBlockCopy binding, block job events Signed-off-by: Marcus Sorensen --- src/main/java/org/libvirt/Connect.java | 41 ++++++ src/main/java/org/libvirt/Domain.java | 97 ++++++++++++++ .../org/libvirt/TypedBooleanParameter.java | 37 ++++++ .../org/libvirt/TypedDoubleParameter.java | 33 +++++ .../java/org/libvirt/TypedIntParameter.java | 31 +++++ .../java/org/libvirt/TypedLongParameter.java | 33 +++++ src/main/java/org/libvirt/TypedParameter.java | 121 ++++++++++++++++++ .../java/org/libvirt/TypedUintParameter.java | 33 +++++ .../java/org/libvirt/TypedUlongParameter.java | 33 +++++ .../org/libvirt/event/BlockJobListener.java | 18 +++ .../org/libvirt/event/BlockJobStatus.java | 9 ++ .../java/org/libvirt/event/BlockJobType.java | 11 ++ src/main/java/org/libvirt/jna/Libvirt.java | 13 ++ .../org/libvirt/jna/virTypedParameter.java | 26 ++++ .../libvirt/jna/virTypedParameterValue.java | 13 ++ 15 files changed, 549 insertions(+) create mode 100644 src/main/java/org/libvirt/TypedBooleanParameter.java create mode 100644 src/main/java/org/libvirt/TypedDoubleParameter.java create mode 100644 src/main/java/org/libvirt/TypedIntParameter.java create mode 100644 src/main/java/org/libvirt/TypedLongParameter.java create mode 100644 src/main/java/org/libvirt/TypedParameter.java create mode 100644 src/main/java/org/libvirt/TypedUintParameter.java create mode 100644 src/main/java/org/libvirt/TypedUlongParameter.java create mode 100644 src/main/java/org/libvirt/event/BlockJobListener.java create mode 100644 src/main/java/org/libvirt/event/BlockJobStatus.java create mode 100644 src/main/java/org/libvirt/event/BlockJobType.java create mode 100644 src/main/java/org/libvirt/jna/virTypedParameter.java create mode 100644 src/main/java/org/libvirt/jna/virTypedParameterValue.java diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 97699bb..89e2fc6 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -608,6 +608,36 @@ private void domainEventRegister(final Domain domain, final int eventID, handlers.put(l, new RegisteredEventListener(cb, ret)); } + void domainEventRegister(final Domain domain, final BlockJobListener cb) throws LibvirtException{ + if (cb == null) { + throw new IllegalArgumentException("BlockCopy callback cannot be null"); + } + + Libvirt.VirConnectDomainEventBlockJobCallback virCB = + new Libvirt.VirConnectDomainEventBlockJobCallback() { + @Override + public void eventCallback(final ConnectionPointer virConnectPtr, + final DomainPointer virDomainPointer, + final String diskPath, + final int type, + final int status, + final Pointer opaque) { + assert vcp.equals(virConnectPtr); + + try { + Domain d = Domain.constructIncRef(Connect.this, virDomainPointer); + cb.onEvent(d, + diskPath, + getConstant(BlockJobType.class, type), + getConstant(BlockJobStatus.class, status)); + } catch (LibvirtException e) { + throw new RuntimeException("libvirt error in Block Job Callback", e); + } + } + }; + domainEventRegister(domain, DomainEventID.BLOCK_JOB_2, virCB, cb); + } + void domainEventRegister(final Domain domain, final IOErrorListener cb) throws LibvirtException { if (cb == null) { @@ -953,6 +983,17 @@ public void addRebootListener(final RebootListener l) throws LibvirtException { domainEventRegister(null, l); } + /** + * Removes the specified Block Job listener so that it no longer + * receives events + * @param l + * @throws LibvirtException + */ + + public void removeBlockJobListener(final BlockJobListener l) throws LibvirtException { + domainEventDeregister(DomainEventID.BLOCK_JOB_2, l); + } + /** * Removes the specified I/O error listener so that it no longer * receives I/O error events. diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index f128e32..cf4cea7 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -4,6 +4,7 @@ import java.util.concurrent.TimeUnit; import org.libvirt.event.AgentLifecycleListener; +import org.libvirt.event.BlockJobListener; import org.libvirt.event.IOErrorListener; import org.libvirt.event.LifecycleListener; import org.libvirt.event.PMSuspendListener; @@ -23,6 +24,7 @@ import org.libvirt.jna.virDomainJobInfo; import org.libvirt.jna.virDomainMemoryStats; import org.libvirt.jna.virSchedParameter; +import org.libvirt.jna.virTypedParameter; import org.libvirt.jna.virVcpuInfo; import static org.libvirt.Library.libvirt; @@ -66,6 +68,52 @@ public static final class BlockCommitFlags { public static int BANDWIDTH_BYTES = bit(4); } + public static final class BlockCopyFlags { + /** Limit copy to top of source backing chain */ + public static int SHALLOW = bit(0); + + /** Reuse existing external file for a copy */ + public static int REUSE_EXT = bit(1); + + /** Don't force usage of recoverable job for the copy operation */ + public static int TRANSIENT_JOB = bit(2); + + /** + * Force the copy job to synchronously propagate guest writes into the destination image, + * so that the copy is guaranteed to converge + */ + public static int SYNCHRONOUS_WRITES = bit(3); + } + + public static final class BlockCopyParameters { + /** + * The maximum bandwidth in bytes/s, and is used while getting the copy operation + * into the mirrored phase, with a type of ullong. + * + * @see + * Libvirt Documentation + */ + public static String BANDWIDTH = "bandwidth"; + + /** + * How much data in bytes can be in flight between source and destination, + * as an unsigned long long. + * + * @see + * Libvirt Documentation + */ + public static String BUF_SIZE = "buf-size"; + + /** + * The granularity in bytes at which the copy operation recognizes dirty blocks that need copying, + * as an unsigned int. + * + * @see + * Libvirt Documentation + */ + public static String GRANULARITY = "granularity"; + } + public static final class BlockJobInfoFlags { /** bandwidth in bytes/s instead of MiB/s */ public static int BANDWIDTH_BYTES = bit(0); @@ -477,6 +525,32 @@ public void attachDeviceFlags(final String xmlDesc, final int flags) processError(libvirt.virDomainAttachDeviceFlags(vdp, xmlDesc, flags)); } + /** + * This function migrates domain's live block device (disk) to another + * block device. + * + * @see + * virDomainBlockCopy + * @param diskPath + * Path to current disk + * @param xmlDesc + * XML description of destination disk + * @param params + * Hypervisor-specific tuning parameters + * @param flags + * Bitwise OR'ed values of {@link BlockCopyFlags} + * @throws LibvirtException + */ + public void blockCopy(final String diskPath, final String xmlDesc, + final TypedParameter[] params, final int flags) throws LibvirtException { + assert params != null : "blockCopy typed parameters cannot be null"; + virTypedParameter[] input = new virTypedParameter[params.length]; + for (int x = 0; x < params.length; x++) { + input[x] = TypedParameter.toNative(params[x]); + } + processError(libvirt.virDomainBlockCopy(vdp, diskPath, xmlDesc, input, input.length, flags)); + } + /** * This function returns block device (disk) stats for block devices * attached to the domain. @@ -1462,6 +1536,29 @@ public void resume() throws LibvirtException { processError(libvirt.virDomainResume(vdp)); } + /** + * Adds a callback to receive notifications of Block Job events + * + * @see Libvirt + * Documentation + * @param cb + * @throws LibvirtException + */ + public void addBlockJobListener(final BlockJobListener cb) throws LibvirtException { + virConnect.domainEventRegister(this, cb); + } + + /** + * Removes BlockJobListener from the event framework, so it no longer receives events + * @param cb + * The BlockJobListener + * @throws LibvirtException + */ + public void removeBlockJobListener(final BlockJobListener cb) throws LibvirtException { + virConnect.removeBlockJobListener(cb); + } + /** * Adds a callback to receive notifications of IOError domain events * occurring on this domain. diff --git a/src/main/java/org/libvirt/TypedBooleanParameter.java b/src/main/java/org/libvirt/TypedBooleanParameter.java new file mode 100644 index 0000000..e90117d --- /dev/null +++ b/src/main/java/org/libvirt/TypedBooleanParameter.java @@ -0,0 +1,37 @@ +package org.libvirt; + +/** + * Class for representing a boolean typed parameter + */ +public final class TypedBooleanParameter extends TypedParameter { + public boolean value; + + public TypedBooleanParameter() { + + } + + public TypedBooleanParameter(final boolean value) { + this.value = value; + } + + public TypedBooleanParameter(final byte value) { + this.value = ((value) != 0); + } + + public TypedBooleanParameter(final String field, final boolean value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_BOOLEAN; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_BOOLEAN"; + } + + public String getValueAsString() { + return Boolean.toString(value); + } +} diff --git a/src/main/java/org/libvirt/TypedDoubleParameter.java b/src/main/java/org/libvirt/TypedDoubleParameter.java new file mode 100644 index 0000000..ee1357c --- /dev/null +++ b/src/main/java/org/libvirt/TypedDoubleParameter.java @@ -0,0 +1,33 @@ +package org.libvirt; + +/** + * Class for representing a double typed parameter + */ +public class TypedDoubleParameter extends TypedParameter { + public double value; + + public TypedDoubleParameter() { + + } + + public TypedDoubleParameter(final double value) { + this.value = value; + } + + public TypedDoubleParameter(final String field, final double value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_DOUBLE; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_DOUBLE"; + } + + public String getValueAsString() { + return Double.toString(value); + } +} diff --git a/src/main/java/org/libvirt/TypedIntParameter.java b/src/main/java/org/libvirt/TypedIntParameter.java new file mode 100644 index 0000000..dab81b6 --- /dev/null +++ b/src/main/java/org/libvirt/TypedIntParameter.java @@ -0,0 +1,31 @@ +package org.libvirt; + +/** + * Class for representing an int typed parameter + */ +public class TypedIntParameter extends TypedParameter { + public int value; + + public TypedIntParameter() { + + } + + public TypedIntParameter(final int value) { + this.value = value; + } + + public TypedIntParameter(final String field, final int value) { + this.field = field; + this.value = value; + } + + public int getType() { return TYPED_PARAM_INT; } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_INT"; + } + + public String getValueAsString() { + return Integer.toString(value); + } +} diff --git a/src/main/java/org/libvirt/TypedLongParameter.java b/src/main/java/org/libvirt/TypedLongParameter.java new file mode 100644 index 0000000..47d5991 --- /dev/null +++ b/src/main/java/org/libvirt/TypedLongParameter.java @@ -0,0 +1,33 @@ +package org.libvirt; + +/** + * Class for representing a long typed parameter + */ +public class TypedLongParameter extends TypedParameter { + public long value; + + public TypedLongParameter() { + + } + + public TypedLongParameter(final long value) { + this.value = value; + } + + public TypedLongParameter(final String field, final long value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_LONG; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_LLONG"; + } + + public String getValueAsString() { + return Long.toString(value); + } +} diff --git a/src/main/java/org/libvirt/TypedParameter.java b/src/main/java/org/libvirt/TypedParameter.java new file mode 100644 index 0000000..19dcd0f --- /dev/null +++ b/src/main/java/org/libvirt/TypedParameter.java @@ -0,0 +1,121 @@ +package org.libvirt; + +import com.sun.jna.Native; +import org.libvirt.jna.Libvirt; +import org.libvirt.jna.virTypedParameter; +import org.libvirt.jna.virTypedParameterValue; + +import java.io.UnsupportedEncodingException; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; + +public abstract class TypedParameter { + protected static final int TYPED_PARAM_INT = 1; + protected static final int TYPED_PARAM_UINT = 2; + protected static final int TYPED_PARAM_LONG = 3; + protected static final int TYPED_PARAM_ULONG = 4; + protected static final int TYPED_PARAM_DOUBLE = 5; + protected static final int TYPED_PARAM_BOOLEAN = 6; + + /** + * Parameter name + */ + public String field; + + /** + * The type of the parameter + * + * @return the Type of the parameter + */ + public abstract int getType(); + + /** + * Utility function for displaying the type + * + * @return the Type of the parameter as string + */ + public abstract String getTypeAsString(); + + /** + * Utility function for displaying the value + * + * @return the value of the parameter in String form + */ + public abstract String getValueAsString(); + + public static TypedParameter create(final virTypedParameter vParam) { + TypedParameter returnValue = null; + if (vParam != null) { + switch (vParam.type) { + case TYPED_PARAM_INT: + returnValue = new TypedIntParameter(vParam.value.i); + break; + case TYPED_PARAM_UINT: + returnValue = new TypedUintParameter(vParam.value.i); + break; + case TYPED_PARAM_LONG: + returnValue = new TypedLongParameter(vParam.value.l); + break; + case TYPED_PARAM_ULONG: + returnValue = new TypedUlongParameter(vParam.value.l); + break; + case TYPED_PARAM_DOUBLE: + returnValue = new TypedDoubleParameter(vParam.value.d); + break; + case TYPED_PARAM_BOOLEAN: + returnValue = new TypedBooleanParameter(vParam.value.b); + break; + default: + // Unknown type: nothing to do. + } + if (returnValue != null) { + returnValue.field = Native.toString(vParam.field); + } + } + return returnValue; + } + + public static virTypedParameter toNative(final TypedParameter param) { + virTypedParameter returnValue = new virTypedParameter(); + returnValue.value = new virTypedParameterValue(); + returnValue.field = copyOf(param.field.getBytes(StandardCharsets.UTF_8), Libvirt.VIR_TYPED_PARAM_FIELD_LENGTH); + returnValue.type = param.getType(); + switch (param.getType()) { + case TYPED_PARAM_INT: + returnValue.value.i = ((TypedIntParameter) param).value; + returnValue.value.setType(int.class); + break; + case TYPED_PARAM_UINT: + returnValue.value.i = ((TypedUintParameter) param).value; + returnValue.value.setType(int.class); + break; + case TYPED_PARAM_LONG: + returnValue.value.l = ((TypedLongParameter) param).value; + returnValue.value.setType(long.class); + break; + case TYPED_PARAM_ULONG: + returnValue.value.l = ((TypedUlongParameter) param).value; + returnValue.value.setType(long.class); + break; + case TYPED_PARAM_DOUBLE: + returnValue.value.d = ((TypedDoubleParameter) param).value; + returnValue.value.setType(double.class); + break; + case TYPED_PARAM_BOOLEAN: + returnValue.value.b = (byte) (((TypedBooleanParameter) param).value ? 1 : 0); + returnValue.value.setType(byte.class); + break; + default: + // Unknown type: nothing to do. + } + return returnValue; + } + + public static byte[] copyOf(final byte[] original, final int length) { + byte[] returnValue = new byte[length]; + int originalLength = original.length; + Arrays.fill(returnValue, (byte) 0); + System.arraycopy(original, 0, returnValue, 0, originalLength); + return returnValue; + } +} diff --git a/src/main/java/org/libvirt/TypedUintParameter.java b/src/main/java/org/libvirt/TypedUintParameter.java new file mode 100644 index 0000000..b394377 --- /dev/null +++ b/src/main/java/org/libvirt/TypedUintParameter.java @@ -0,0 +1,33 @@ +package org.libvirt; + +/** + * Class for representing a uint typed parameter + */ +public class TypedUintParameter extends TypedParameter { + public int value; + + public TypedUintParameter() { + + } + + public TypedUintParameter(final int value) { + this.value = value; + } + + public TypedUintParameter(final String field, final int value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_UINT; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_UINT"; + } + + public String getValueAsString() { + return Integer.toString(value); + } +} diff --git a/src/main/java/org/libvirt/TypedUlongParameter.java b/src/main/java/org/libvirt/TypedUlongParameter.java new file mode 100644 index 0000000..1b83a0f --- /dev/null +++ b/src/main/java/org/libvirt/TypedUlongParameter.java @@ -0,0 +1,33 @@ +package org.libvirt; + +/** + * Class for representing an ulong typed parameter + */ +public class TypedUlongParameter extends TypedParameter { + public long value; + + public TypedUlongParameter() { + + } + + public TypedUlongParameter(final long value) { + this.value = value; + } + + public TypedUlongParameter(final String field, final long value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_ULONG; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_ULLONG"; + } + + public String getValueAsString() { + return Long.toString(value); + } +} diff --git a/src/main/java/org/libvirt/event/BlockJobListener.java b/src/main/java/org/libvirt/event/BlockJobListener.java new file mode 100644 index 0000000..402d9d5 --- /dev/null +++ b/src/main/java/org/libvirt/event/BlockJobListener.java @@ -0,0 +1,18 @@ +package org.libvirt.event; + +import org.libvirt.Domain; + +public interface BlockJobListener extends EventListener { + /** + * This method gets called upon a Block Job error event. + * + * @param domain the domain which got an event + * @param diskPath the src of the block device that had an event + * @param type the type of the block job + * @param status the status of the block job + */ + void onEvent(Domain domain, + String diskPath, + BlockJobType type, + BlockJobStatus status); +} diff --git a/src/main/java/org/libvirt/event/BlockJobStatus.java b/src/main/java/org/libvirt/event/BlockJobStatus.java new file mode 100644 index 0000000..36a232a --- /dev/null +++ b/src/main/java/org/libvirt/event/BlockJobStatus.java @@ -0,0 +1,9 @@ +package org.libvirt.event; + +public enum BlockJobStatus { + COMPLETED, + FAILED, + CANCELED, + READY, + LAST +} diff --git a/src/main/java/org/libvirt/event/BlockJobType.java b/src/main/java/org/libvirt/event/BlockJobType.java new file mode 100644 index 0000000..0423b2a --- /dev/null +++ b/src/main/java/org/libvirt/event/BlockJobType.java @@ -0,0 +1,11 @@ +package org.libvirt.event; + +public enum BlockJobType { + UNKNOWN, + PULL, + COPY, + COMMIT, + ACTIVE_COMMIT, + BACKUP, + LAST +} diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index c4bd2ba..e63cdfd 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -83,6 +83,15 @@ interface VirConnectCloseFunc extends Callback { */ interface VirDomainEventCallback extends Callback {} + interface VirConnectDomainEventBlockJobCallback extends VirDomainEventCallback { + void eventCallback(ConnectionPointer virConnectPtr, + DomainPointer virDomainPointer, + String diskPath, + int type, + int status, + Pointer opaque); + } + interface VirConnectDomainEventIOErrorCallback extends VirDomainEventCallback { void eventCallback(ConnectionPointer virConnectPtr, DomainPointer virDomainPointer, @@ -164,6 +173,7 @@ interface VirEventTimeoutCallback extends Callback { int VIR_UUID_BUFLEN = 16; int VIR_UUID_STRING_BUFLEN = 36 + 1; int VIR_DOMAIN_SCHED_FIELD_LENGTH = 80; + int VIR_TYPED_PARAM_FIELD_LENGTH = 80; // Connection Functions CString virConnectBaselineCPU(ConnectionPointer virConnectPtr, @@ -314,6 +324,9 @@ int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, String deviceXML, int flags); int virDomainBlockCommit(DomainPointer virDomainPtr, String disk, String base, String top, long bandwidth, int flags); + int virDomainBlockCopy(DomainPointer virDomainPtr, String disk, + String deviceXML, virTypedParameter[] params, + int nparams, int flags); int virDomainBlockJobAbort(DomainPointer virDomainPtr, String disk, int flags); int virDomainBlockPeek(DomainPointer virDomainPtr, String disk, long offset, SizeT size, diff --git a/src/main/java/org/libvirt/jna/virTypedParameter.java b/src/main/java/org/libvirt/jna/virTypedParameter.java new file mode 100644 index 0000000..992ffad --- /dev/null +++ b/src/main/java/org/libvirt/jna/virTypedParameter.java @@ -0,0 +1,26 @@ +package org.libvirt.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +/** + * JNA mapping for the virTypedParameter structure + * + * This is the preferred alias over virSchedParameter, virBlkioParameter, + * virMemoryParameter since Libvirt 0.9.2. + */ +public class virTypedParameter extends Structure { + public byte[] field = new byte[Libvirt.VIR_TYPED_PARAM_FIELD_LENGTH]; + public int type; + public virTypedParameterValue value; + + private static final List FIELDS = Arrays.asList( + "field", "type", "value"); + + @Override + protected List getFieldOrder() { + return FIELDS; + } +} diff --git a/src/main/java/org/libvirt/jna/virTypedParameterValue.java b/src/main/java/org/libvirt/jna/virTypedParameterValue.java new file mode 100644 index 0000000..bb9dceb --- /dev/null +++ b/src/main/java/org/libvirt/jna/virTypedParameterValue.java @@ -0,0 +1,13 @@ +package org.libvirt.jna; + +import com.sun.jna.Union; + +/** + * JNA mapping for the virTypedParameterValue structure + */ +public class virTypedParameterValue extends Union { + public int i; /* data for integer case */ + public long l; /* data for long long integer case */ + public double d; /* data for double case */ + public byte b; /* data for char case */ +} From e45d3fb8bccab2d3048f902f0be74308afc923df Mon Sep 17 00:00:00 2001 From: GabrielBrascher Date: Wed, 27 Apr 2022 16:35:51 +0000 Subject: [PATCH 073/114] Add 'virDomainMigrate3' into the Libvirt-Java bind. --- src/main/java/org/libvirt/Domain.java | 270 +++++++++++++++++- src/main/java/org/libvirt/TypedParameter.java | 12 +- .../org/libvirt/TypedStringParameter.java | 33 +++ src/main/java/org/libvirt/jna/Libvirt.java | 5 + .../libvirt/jna/virTypedParameterValue.java | 1 + 5 files changed, 315 insertions(+), 6 deletions(-) create mode 100644 src/main/java/org/libvirt/TypedStringParameter.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index cf4cea7..dba69f9 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -114,6 +114,208 @@ public static final class BlockCopyParameters { public static String GRANULARITY = "granularity"; } + /** + * Contains multiple constants that defines "virDomainMigrate* params" multiple field. + * @see Libvirt domain documentation., and + * libvirt-domain.h. + */ + public static final class DomainMigrateParameters { + /** + * Lists the block devices to be migrated. + * At the moment this is only supported by the QEMU driver but not for the tunnelled migration. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_MIGRATE_DISKS = "migrate_disks"; + + /** + * The new configuration to be used for the domain on the destination host as + * TYPED_PARAM_STRING. The configuration must include an identical set of + * virtual devices, to ensure a stable guest ABI across migration. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_DEST_XML = "destination_xml"; + + /** + * The new persistent configuration to be used for the domain on the destination host as + * TYPED_PARAM_STRING. This field cannot be used to rename the domain during migration. + * Domain name in the destination XML must match the original domain name. + * Omitting this parameter keeps the original domain persistent configuration. + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_PERSIST_XML = "persistent_xml"; + + /** + * The maximum bandwidth (in MiB/s) that will be used for migration as TYPED_PARAM_ULLONG. + * If set to 0 or omitted, libvirt will choose a suitable default. Some hypervisors do not + * support this feature and will return an error if this field is used and is not 0. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_BANDWIDTH = "bandwidth"; + + /** + * The maximum bandwidth (in MiB/s) that will be used for post-copy phase of a migration + * as TYPED_PARAM_ULLONG. If set to 0 or omitted, post-copy migration speed will not be limited. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_BANDWIDTH_POSTCOPY = "bandwidth.postcopy"; + + /** + * The name to be used for the domain on the destination host as TYPED_PARAM_STRING. + * Omitting this parameter keeps the domain name the same. This field is only allowed to be + * used with hypervisors that support domain renaming during migration. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_DEST_NAME = "destination_name"; + + /** + * URI to use for migrating client's connection to domain's graphical console, as TYPED_PARAM_STRING. + * If specified, the client will be asked to automatically reconnect using these parameters instead of + * the automatically computed ones. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_GRAPHICS_URI = "graphics_uri"; + + /** + * The listen address that hypervisor on the destination side should bind to for incoming migration. + * Both IPv4 and IPv6 addresses are accepted as well as hostnames (the resolving is done on destination). + * Some hypervisors do not support this feature and will return an error if this field is used. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_LISTEN_ADDRESS = "listen_address"; + + /** + * URI to use for initiating domain migration as TYPED_PARAM_STRING. It takes a hypervisor specific format. + * The uri_transports element of the hypervisor capabilities XML includes details of the + * supported URI schemes. When omitted libvirt will auto-generate suitable default URI. + * It is typically only necessary to specify this URI if the destination host has multiple + * interfaces and a specific interface is required to transmit migration data. + * This field may not be used when VIR_MIGRATE_TUNNELLED flag is set. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_URI = "migrate_uri"; + + /** + * Port that destination server should use for incoming disks migration. + * Type is TYPED_PARAM_INT. If set to 0 or omitted, libvirt will choose a suitable default. + * At the moment this is only supported by the QEMU driver. + * + * For more details, please check Libvirt documentation:7 + * @see Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_DISKS_PORT = "disks_port"; + + /** + * URI used for incoming disks migration. Type is TYPED_PARAM_STRING. Only schemes "tcp" and + * "unix" are accepted. TCP URI can currently only provide a server and port to listen on + * (and connect to), UNIX URI may only provide a path component for a UNIX socket. + * UNIX URI is only usable if the management application makes sure that socket created with + * this name on the destination will be reachable from the source under the same exact path. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_DISKS_URI = "disks_uri"; + + /** + * The name of the method used to compress migration traffic as TYPED_PARAM_STRING. + * Supported compression methods: xbzrle, mt. + * The parameter may be specified multiple times if more than one method should be used. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_COMPRESSION = "compression"; + + /** + * The level of compression for multithread compression as TYPED_PARAM_INT. + * Accepted values are in range 0-9. 0 is no compression, 1 is maximum speed + * and 9 is maximum compression. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_COMPRESSION_MT_LEVEL = "compression.mt.level"; + + /** + * The number of compression threads for multithread compression as TYPED_PARAM_INT. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_COMPRESSION_MT_THREADS = "compression.mt.threads"; + + /** + * The number of decompression threads for multithread compression as TYPED_PARAM_INT. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_COMPRESSION_MT_DTHREADS = "compression.mt.dthreads"; + + /** + * The size of page cache for xbzrle compression as TYPED_PARAM_ULLONG. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE = "compression.xbzrle.cache"; + + /** + * The initial percentage guest CPUs are throttled to when auto-convergence decides migration + * is not converging as TYPED_PARAM_INT. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL = "auto_converge.initial"; + + /** + * The increment added to VIR_MIGRATE_PARAM_AUTO_CONVERGE_INITIAL whenever the hypervisor + * decides the current rate is not enough to ensure convergence of the migration. As TYPED_PARAM_INT. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT = "auto_converge.increment"; + + /** + * The number of connections used during parallel migration as TYPED_PARAM_INT. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_PARALLEL_CONNECTIONS = "parallel.connections"; + + /** + * Override the destination host name used for TLS verification as TYPED_PARAM_STRING. + * Normally the TLS certificate from the destination host must match the host's name for TLS + * verification to succeed. When the certificate does not match the destination hostname and + * the expected certificate's hostname is known, this parameter can be used to pass this + * expected hostname when starting the migration. + * + * @see + * Libvirt Documentation + */ + public static final String VIR_MIGRATE_PARAM_TLS_DESTINATION = "tls.destination"; + } + public static final class BlockJobInfoFlags { /** bandwidth in bytes/s instead of MiB/s */ public static int BANDWIDTH_BYTES = bit(0); @@ -544,10 +746,7 @@ public void attachDeviceFlags(final String xmlDesc, final int flags) public void blockCopy(final String diskPath, final String xmlDesc, final TypedParameter[] params, final int flags) throws LibvirtException { assert params != null : "blockCopy typed parameters cannot be null"; - virTypedParameter[] input = new virTypedParameter[params.length]; - for (int x = 0; x < params.length; x++) { - input[x] = TypedParameter.toNative(params[x]); - } + virTypedParameter[] input = generateNativeVirTypedParameters(params); processError(libvirt.virDomainBlockCopy(vdp, diskPath, xmlDesc, input, input.length, flags)); } @@ -1378,6 +1577,69 @@ public Domain migrate(final Connect dconn, final long flags, return new Domain(dconn, newPtr); } + /** + * Migrate the domain object from its current host to the destination host + * given by dconn (a connection to the destination host). + * See VIR_MIGRATE_PARAM_* and virDomainMigrateFlags for detailed + * description of accepted migration parameters and flags. + * See virDomainMigrateFlags documentation for description of individual + * flags. VIR_MIGRATE_TUNNELLED and VIR_MIGRATE_PEER2PEER are not supported + * by this API, use virDomainMigrateToURI3 instead. + *
+ * There are many limitations on migration imposed by the underlying + * technology - for example it may not be possible to migrate between + * different processors even with the same architecture, or between different + * types of hypervisor. virDomainFree should be used to free the resources + * after the returned domain object is no longer needed. + *

+ * For more informations, please @see virDomainMigrate3 + * @param dconn + * destination host (a Connect object) + * @param params + * (optional) migration parameters + * + * @param flags + * bitwise-OR of virDomainMigrateFlags + * @return + * the new domain object if the migration was successful. Note that + * the new domain object exists in the scope of the destination + * connection (dconn). + * @throws LibvirtException + */ + public Domain migrate(final Connect dconn, final TypedParameter[] params, long flags) throws LibvirtException { + assert params != null : "migrate Typed parameters cannot be null"; + virTypedParameter[] virTypedParameters = generateNativeVirTypedParameters(params); + DomainPointer newPtr = processError(libvirt.virDomainMigrate3(vdp, dconn.vcp, virTypedParameters, params.length, new NativeLong(flags))); + return new Domain(dconn, newPtr); + } + + /** + * This methods creates an array of virTypedParameter objects based on the + * given array of TypedParameter objects. The way it has been designed ensures + * that the output will be in contiguous memory, regardless of the memory + * allocated for each of the provided "TypedParameter[]", avoiding + * "non contiguous memory due to bad backing address at Structure array". + * + * @param params + * Array of TypedParameter objects which can be: + * TypedBooleanParameter, TypedBooleanParameter, TypedDoubleParameter, + * TypedIntParameter, TypedLongParameter, TypedStringParameter, + * TypedUintParameter, or TypedUlongParameter + * @return + * An array of "virTypedParameter" objects in contiguous memory. + */ + private virTypedParameter[] generateNativeVirTypedParameters(TypedParameter[] params) { + virTypedParameter param = new virTypedParameter(); + virTypedParameter[] virTypedParameters = (virTypedParameter[]) param.toArray(params.length); + for (int x = 0; x < params.length; x++) { + virTypedParameter temporaryTypedParameter = TypedParameter.toNative(params[x]); + virTypedParameters[x].field = temporaryTypedParameter.field; + virTypedParameters[x].type = temporaryTypedParameter.type; + virTypedParameters[x].value = temporaryTypedParameter.value; + } + return virTypedParameters; + } + /** * Sets maximum tolerable time for which the domain is allowed to be paused * at the end of live migration. diff --git a/src/main/java/org/libvirt/TypedParameter.java b/src/main/java/org/libvirt/TypedParameter.java index 19dcd0f..4474d65 100644 --- a/src/main/java/org/libvirt/TypedParameter.java +++ b/src/main/java/org/libvirt/TypedParameter.java @@ -16,6 +16,7 @@ public abstract class TypedParameter { protected static final int TYPED_PARAM_ULONG = 4; protected static final int TYPED_PARAM_DOUBLE = 5; protected static final int TYPED_PARAM_BOOLEAN = 6; + protected static final int TYPED_PARAM_STRING = 7; /** * Parameter name @@ -65,7 +66,10 @@ public static TypedParameter create(final virTypedParameter vParam) { case TYPED_PARAM_BOOLEAN: returnValue = new TypedBooleanParameter(vParam.value.b); break; - default: + case TYPED_PARAM_STRING: + returnValue = new TypedStringParameter(vParam.value.s); + break; + default: // Unknown type: nothing to do. } if (returnValue != null) { @@ -105,7 +109,11 @@ public static virTypedParameter toNative(final TypedParameter param) { returnValue.value.b = (byte) (((TypedBooleanParameter) param).value ? 1 : 0); returnValue.value.setType(byte.class); break; - default: + case TYPED_PARAM_STRING: + returnValue.value.s = ((TypedStringParameter)param).value; + returnValue.value.setType(String.class); + break; + default: // Unknown type: nothing to do. } return returnValue; diff --git a/src/main/java/org/libvirt/TypedStringParameter.java b/src/main/java/org/libvirt/TypedStringParameter.java new file mode 100644 index 0000000..0d82753 --- /dev/null +++ b/src/main/java/org/libvirt/TypedStringParameter.java @@ -0,0 +1,33 @@ +package org.libvirt; + +/** + * Class for representing a string (char pointer) typed parameter + */ +public final class TypedStringParameter extends TypedParameter { + public String value; + + public TypedStringParameter() { + + } + + public TypedStringParameter(String value) { + this.value = value; + } + + public TypedStringParameter(final String field, final String value) { + this.field = field; + this.value = value; + } + + public int getType() { + return TYPED_PARAM_STRING; + } + + public String getTypeAsString() { + return "VIR_TYPED_PARAM_STRING"; + } + + public String getValueAsString() { + return String.valueOf(value); + } +} diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index e63cdfd..c2d7d56 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -399,6 +399,11 @@ DomainPointer virDomainMigrate2(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, String dxml, NativeLong flags, String dname, String uri, NativeLong bandwidth); + DomainPointer virDomainMigrate3(DomainPointer virDomainPtr, + ConnectionPointer virConnectPtr, + virTypedParameter[] params, + int nparams, + NativeLong flags); int virDomainMigrateSetMaxDowntime(DomainPointer virDomainPtr, long downtime, int flags); int virDomainMigrateToURI(DomainPointer virDomainPtr, String duri, diff --git a/src/main/java/org/libvirt/jna/virTypedParameterValue.java b/src/main/java/org/libvirt/jna/virTypedParameterValue.java index bb9dceb..ef740d6 100644 --- a/src/main/java/org/libvirt/jna/virTypedParameterValue.java +++ b/src/main/java/org/libvirt/jna/virTypedParameterValue.java @@ -10,4 +10,5 @@ public class virTypedParameterValue extends Union { public long l; /* data for long long integer case */ public double d; /* data for double case */ public byte b; /* data for char case */ + public String s; /* data for string, which will be mapped into a char* */ } From f0d8e6ace70a9fa0225056beafd90544f5fdd104 Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Sat, 2 Apr 2022 16:57:57 +0200 Subject: [PATCH 074/114] Add support for virDomainInterfaceAddresses Signed-off-by: Peter Conrad --- src/main/java/org/libvirt/Domain.java | 72 +++++++++++++++++++ .../java/org/libvirt/DomainInterface.java | 54 ++++++++++++++ src/main/java/org/libvirt/Network.java | 5 ++ src/main/java/org/libvirt/jna/Libvirt.java | 3 + .../org/libvirt/jna/virDomainInterface.java | 50 +++++++++++++ .../org/libvirt/jna/virDomainIpAddress.java | 38 ++++++++++ .../java/org/libvirt/TestJavaBindings.java | 21 +++++- 7 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/libvirt/DomainInterface.java create mode 100644 src/main/java/org/libvirt/jna/virDomainInterface.java create mode 100644 src/main/java/org/libvirt/jna/virDomainIpAddress.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index dba69f9..75c92a8 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1,8 +1,12 @@ package org.libvirt; import java.nio.ByteBuffer; +import java.util.Collection; +import java.util.Collections; import java.util.concurrent.TimeUnit; +import com.sun.jna.Pointer; +import com.sun.jna.ptr.PointerByReference; import org.libvirt.event.AgentLifecycleListener; import org.libvirt.event.BlockJobListener; import org.libvirt.event.IOErrorListener; @@ -20,6 +24,7 @@ import org.libvirt.jna.virDomainBlockJobInfo; import org.libvirt.jna.virDomainBlockStats; import org.libvirt.jna.virDomainInfo; +import org.libvirt.jna.virDomainInterface; import org.libvirt.jna.virDomainInterfaceStats; import org.libvirt.jna.virDomainJobInfo; import org.libvirt.jna.virDomainMemoryStats; @@ -37,6 +42,7 @@ import com.sun.jna.ptr.IntByReference; import java.util.Arrays; +import java.util.stream.Collectors; /** * A virtual machine defined within libvirt. @@ -353,6 +359,18 @@ public static final class CreateFlags { public static final int VALIDATE = bit(4); } + public static final class InterfaceAddressesSource { + /** Parse DHCP lease file */ + public static final int VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE = 0; + + /** Query qemu guest agent */ + public static final int VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT = 1; + + /** Query ARP tables */ + public static final int VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP = 2; + } + + public static final class MetadataType { /** Operate on <description> */ public static final int DESCRIPTION = 0; @@ -1304,6 +1322,60 @@ public int hasManagedSaveImage() throws LibvirtException { return processError(libvirt.virDomainHasManagedSaveImage(vdp, 0)); } + /** Retrieves a list of the network interfaces present in given domain along with their IP and MAC addresses. + * Note that single interface can have multiple or even 0 IP addresses. + * If source is VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE, the DHCP lease file associated with any virtual + * networks will be examined to obtain the interface addresses. This only returns data for interfaces which are + * connected to virtual networks managed by libvirt. + * If source is VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_AGENT, a configured guest agent is needed for successful + * return from this API. Moreover, if guest agent is used then the interface name is the one seen by guest OS. + * To match such interface with the one from dom XML use MAC address or IP range. + * If source is VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP, the host ARP table will be check to obtain the interface + * addresses. As the arp cache refreshes in time, the returned ip address may be unreachable. Depending on the + * route table config of the guest, the returned mac address may be duplicated. + * + * Note that for some source values some pieces of returned ifaces might be unset (e.g. + * VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_ARP does not set IP address prefix as ARP table does not have any notion + * of that). + * + * name and hwaddr of the returned interfaces are never NULL. + * + * @param source one of the {@link InterfaceAddressesSource} constants + * @param flags currently unused, pass zero + * @return the interfaces of this domain + * @throws LibvirtException if something goes wrong + */ + public Collection interfaceAddresses(int source, int flags) throws LibvirtException { + PointerByReference ifaces = new PointerByReference(); + ifaces.setValue(Pointer.NULL); + int count = libvirt.virDomainInterfaceAddresses(vdp, ifaces, source, flags); + + if (ifaces.getValue() == null) { + if (count != 0) { + processError(count); + throw new IllegalStateException("virDomainInterfaceAddresses returned " + count); + } + return Collections.emptyList(); + } + + try { + if (count < 0) { + processError(count); + throw new IllegalStateException("virDomainInterfaceAddresses returned " + count); + } + return Arrays.stream(ifaces.getValue().getPointerArray(0, count)) + .map(virDomainInterface::new) + .map(vdi -> { + DomainInterface di = new DomainInterface(vdi); + libvirt.virDomainInterfaceFree(vdi.getPtr()); + return di; + }) + .collect(Collectors.toList()); + } finally { + Library.free(ifaces.getValue()); + } + } + /** * Returns network interface stats for interfaces attached to this domain. * The path parameter is the name of the network interface. Domains may have diff --git a/src/main/java/org/libvirt/DomainInterface.java b/src/main/java/org/libvirt/DomainInterface.java new file mode 100644 index 0000000..b1f8fd1 --- /dev/null +++ b/src/main/java/org/libvirt/DomainInterface.java @@ -0,0 +1,54 @@ +package org.libvirt; + +import org.libvirt.jna.virDomainInterface; +import org.libvirt.jna.virDomainIpAddress; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.stream.Collectors; + +public class DomainInterface { + public static class InterfaceAddress { + public final InetAddress address; + public final int prefixLength; + + public InterfaceAddress(InetAddress addr, int prefixLength) { + this.address = addr; + this.prefixLength = prefixLength; + } + + public InterfaceAddress(virDomainIpAddress addr) { + switch (addr.type) { + case Network.IP_Addr_Type.IP_ADDR_TYPE_IPV4: + case Network.IP_Addr_Type.IP_ADDR_TYPE_IPV6: + try { + address = InetAddress.getByName(addr.addr); + } catch (UnknownHostException e) { + throw new IllegalArgumentException("Invalid IP address '" + addr.addr + "'"); + } + break; + default: + throw new IllegalArgumentException("Unsupported address type " + addr.type); + } + prefixLength = addr.prefix; + } + } + + public String name; + public String hwAddr; + public Collection addrs; + + public DomainInterface() {} + + public DomainInterface(virDomainInterface vdi) { + name = vdi.name; + hwAddr = vdi.hwaddr; + addrs = vdi.naddrs == 0 ? Collections.emptyList() + : Arrays.stream((virDomainIpAddress[]) vdi.addrs.toArray(vdi.naddrs)) + .map(InterfaceAddress::new) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/org/libvirt/Network.java b/src/main/java/org/libvirt/Network.java index 1eb80d3..5c9bd44 100644 --- a/src/main/java/org/libvirt/Network.java +++ b/src/main/java/org/libvirt/Network.java @@ -13,6 +13,11 @@ */ public class Network { + public static final class IP_Addr_Type { + public static final int IP_ADDR_TYPE_IPV4 = 0; + public static final int IP_ADDR_TYPE_IPV6 = 1; + } + /** * The native virNetworkPtr */ diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index c2d7d56..41238da 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -11,6 +11,7 @@ import com.sun.jna.Structure; import com.sun.jna.ptr.IntByReference; import com.sun.jna.ptr.LongByReference; +import com.sun.jna.ptr.PointerByReference; import java.util.Arrays; import java.util.List; @@ -375,6 +376,8 @@ int virDomainGetVcpus(DomainPointer virDomainPtr, virVcpuInfo[] info, CString virDomainGetXMLDesc(DomainPointer virDomainPtr, int flags); int virDomainHasCurrentSnapshot(DomainPointer virDomainPtr, int flags); int virDomainHasManagedSaveImage(DomainPointer virDomainPtr, int flags); + int virDomainInterfaceAddresses(DomainPointer virDomainPtr, PointerByReference ifaces, int source, int flags); + int virDomainInterfaceFree(virDomainInterface.Ptr pointer); int virDomainInterfaceStats(DomainPointer virDomainPtr, String path, virDomainInterfaceStats stats, SizeT size); int virDomainIsActive(DomainPointer virDomainPtr); diff --git a/src/main/java/org/libvirt/jna/virDomainInterface.java b/src/main/java/org/libvirt/jna/virDomainInterface.java new file mode 100644 index 0000000..7db425b --- /dev/null +++ b/src/main/java/org/libvirt/jna/virDomainInterface.java @@ -0,0 +1,50 @@ +package org.libvirt.jna; + +import com.sun.jna.Pointer; +import com.sun.jna.PointerType; +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * JNA mapping for the virDomainInterface structure + */ +public class virDomainInterface extends Structure { + private static final List FIELDS = Collections.unmodifiableList(Arrays.asList("name", "hwaddr", "naddrs", "addrs")); + + public static class Ptr extends PointerType { + public Ptr() {} + private Ptr(Pointer p) { super(p); } + } + + /** Interface name */ + public String name; + + /** Hardware address, may be null */ + public String hwaddr; + + /** Number of items pointed to by addrs */ + public int naddrs; + + /** Array of IP addresses */ + public virDomainIpAddress.ByReference addrs; + + public virDomainInterface() {} + + public virDomainInterface(Pointer p) { + super(p); + read(); + } + + public Ptr getPtr() { + Pointer p = getPointer(); + return p == null ? null : new Ptr(p); + } + + @Override + protected List getFieldOrder() { + return FIELDS; + } +} diff --git a/src/main/java/org/libvirt/jna/virDomainIpAddress.java b/src/main/java/org/libvirt/jna/virDomainIpAddress.java new file mode 100644 index 0000000..33be821 --- /dev/null +++ b/src/main/java/org/libvirt/jna/virDomainIpAddress.java @@ -0,0 +1,38 @@ +package org.libvirt.jna; + +import com.sun.jna.Pointer; +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * JNA mapping for the virDomainIpAddress structure + */ +public class virDomainIpAddress extends Structure { + public static class ByReference extends virDomainIpAddress implements Structure.ByReference {} + + private static final List FIELDS = Collections.unmodifiableList(Arrays.asList("type", "addr", "prefix")); + + /** @see org.libvirt.Network.IP_Addr_Type */ + public int type; + + /** IP address */ + public String addr; + + /** IP address prefix length */ + public int prefix; + + public virDomainIpAddress() {} + + public virDomainIpAddress(Pointer p) { + super(p); + read(); + } + + @Override + protected List getFieldOrder() { + return FIELDS; + } +} diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index e39ed86..a875bdd 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -2,11 +2,11 @@ import org.libvirt.event.*; -import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.ClosedChannelException; import java.util.Arrays; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.UUID; import java.util.regex.Pattern; @@ -382,4 +382,23 @@ public void testDomainMetadata() throws LibvirtException { assertTrue(pattern1.matcher(dom.getMetadata(Domain.MetadataType.ELEMENT, uri1, Domain.ModificationImpact.CURRENT)).matches()); assertTrue(pattern2.matcher(dom.getMetadata(Domain.MetadataType.ELEMENT, uri2, Domain.ModificationImpact.CURRENT)).matches()); } + + public void testDomainInterfaceAddresses() throws LibvirtException { + if (conn.getLibVersion() < 5004000) { return; } // earlier versions do not support the call + Domain dom = conn.domainDefineXML("" + " ifacetest" + + " 7814e417-b628-4e6b-bbd3-a82cb15483f2" + " 8388608" + + " 2" + " hvm" + " restart" + + " destroy" + " restart" + ""); + dom.create(); + + try { + Collection ifaces = dom.interfaceAddresses(Domain.InterfaceAddressesSource.VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE, 0); + assertNotNull(ifaces); + assertTrue(ifaces.isEmpty()); + // Can't really test this without a live network inside the guest. :-( + } finally { + dom.destroy(); + dom.undefine(); + } + } } From 50c2d79d92f3b207736d24e0c35094c02c461a82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 14 Jun 2022 12:15:27 +0100 Subject: [PATCH 075/114] src: fix many HTML errors in API docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These errors were causing javadoc to throw an exception when processing the docs. Signed-off-by: Daniel P. Berrangé --- src/main/java/org/libvirt/Connect.java | 4 ++-- src/main/java/org/libvirt/Domain.java | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 89e2fc6..46d991d 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -1225,7 +1225,7 @@ public long getLibVirVersion() throws LibvirtException { /** * Provides the maximum number of virtual CPUs supported for a guest VM of a * specific type. The 'type' parameter here corresponds to the 'type' - * attribute in the element of the XML. + * attribute in the <domain> element of the XML. * * @param type * @return the number of CPUs @@ -2139,7 +2139,7 @@ public boolean isAlive() throws LibvirtException { * In other words, sending {@code count + 1} keepalive message * results in closing the connection. *

- * When interval is <= 0, no keepalive messages will be sent. + * When interval is <= 0, no keepalive messages will be sent. *

* When count is 0, the connection will be automatically closed after * interval seconds of inactivity without sending any keepalive diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 75c92a8..828e96f 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -936,7 +936,7 @@ public void coreDump(final String to, final int flags) throws LibvirtException { /** * It returns the length (in bytes) required to store the complete CPU map - * between a single virtual & all physical CPUs of a domain. + * between a single virtual & all physical CPUs of a domain. */ public int cpuMapLength(final int maxCpus) { return (maxCpus + 7) / 8; @@ -1300,8 +1300,8 @@ public String getXMLDesc(final int flags) throws LibvirtException { /** * Determine if the domain has a snapshot * - * @see Libvirt Documentation * @return 1 if running, 0 if inactive * @throws LibvirtException */ @@ -1312,8 +1312,8 @@ public int hasCurrentSnapshot() throws LibvirtException { /** * Determine if the domain has a managed save image * - * @see Libvirt Documentation * @return 0 if no image is present, 1 if an image is present, and -1 in * case of error * @throws LibvirtException @@ -1814,7 +1814,7 @@ public void PMsuspendFor(final SuspendTarget target, final long duration, /** * Immediately wake up a guest using power management. *

- * Injects a wakeup into the guest that previously used + * Injects a wakeup into the guest that previously used * {@link #PMsuspend} or {@link #PMsuspendFor}, rather than * waiting for the previously requested duration (if any) to * elapse. @@ -2008,7 +2008,7 @@ public void reset() throws LibvirtException { * * @see Libvirt Documentation + * >Libvirt Documentation * @param snapshot * the snapshot to revert to * @return 0 if the creation is successful From 7c65681a49470cf8197850f6e6f3383e89cee946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Tue, 14 Jun 2022 12:02:10 +0100 Subject: [PATCH 076/114] Bump version to 0.5.3 for new release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel P. Berrangé --- build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.properties b/build.properties index 67c528e..3988131 100644 --- a/build.properties +++ b/build.properties @@ -1,4 +1,4 @@ -version=0.5.2 +version=0.5.3 release=1 libvirt.required=0.9.12 java.required=1.8.0 From f3d8fff0b089818f4d7e9f1e9fd1b8a5f69f0d10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Wed, 29 Jun 2022 16:08:12 +0100 Subject: [PATCH 077/114] ci: update manifest with latest available distros MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed distros - centos-8 -> almalinux-8 - fedora-33 -> fedora-35 - fedora-34 -> fedora-36 - ubuntu-1804 -> ubuntu-2204 - opensuse-leap-152 -> opensuse-leap-153 Signed-off-by: Daniel P. Berrangé --- ...os-8.Dockerfile => almalinux-8.Dockerfile} | 4 +- ci/containers/centos-stream-8.Dockerfile | 5 +- ci/containers/debian-10.Dockerfile | 3 +- ci/containers/debian-sid.Dockerfile | 3 +- ...ora-33.Dockerfile => fedora-35.Dockerfile} | 4 +- ...ora-34.Dockerfile => fedora-36.Dockerfile} | 4 +- ci/containers/fedora-rawhide.Dockerfile | 4 +- ...ockerfile => opensuse-leap-153.Dockerfile} | 4 +- ci/containers/ubuntu-1804.Dockerfile | 29 --- ci/containers/ubuntu-2004.Dockerfile | 39 +-- ci/containers/ubuntu-2204.Dockerfile | 57 +++++ ci/gitlab.yml | 236 +++--------------- ci/gitlab/build-templates.yml | 17 ++ ci/gitlab/builds.yml | 109 ++++++++ ci/gitlab/container-templates.yml | 57 +++++ ci/gitlab/containers.yml | 77 ++++++ ci/gitlab/sanity-checks.yml | 18 ++ ci/manifest.yml | 12 +- 18 files changed, 387 insertions(+), 295 deletions(-) rename ci/containers/{centos-8.Dockerfile => almalinux-8.Dockerfile} (83%) rename ci/containers/{fedora-33.Dockerfile => fedora-35.Dockerfile} (85%) rename ci/containers/{fedora-34.Dockerfile => fedora-36.Dockerfile} (85%) rename ci/containers/{opensuse-leap-152.Dockerfile => opensuse-leap-153.Dockerfile} (76%) delete mode 100644 ci/containers/ubuntu-1804.Dockerfile create mode 100644 ci/containers/ubuntu-2204.Dockerfile create mode 100644 ci/gitlab/build-templates.yml create mode 100644 ci/gitlab/builds.yml create mode 100644 ci/gitlab/container-templates.yml create mode 100644 ci/gitlab/containers.yml create mode 100644 ci/gitlab/sanity-checks.yml diff --git a/ci/containers/centos-8.Dockerfile b/ci/containers/almalinux-8.Dockerfile similarity index 83% rename from ci/containers/centos-8.Dockerfile rename to ci/containers/almalinux-8.Dockerfile index 30e3a79..644e254 100644 --- a/ci/containers/centos-8.Dockerfile +++ b/ci/containers/almalinux-8.Dockerfile @@ -2,9 +2,9 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/centos:8 +FROM docker.io/library/almalinux:8 RUN dnf update -y && \ dnf install 'dnf-command(config-manager)' -y && \ diff --git a/ci/containers/centos-stream-8.Dockerfile b/ci/containers/centos-stream-8.Dockerfile index 47c8214..715f7c3 100644 --- a/ci/containers/centos-stream-8.Dockerfile +++ b/ci/containers/centos-stream-8.Dockerfile @@ -2,15 +2,16 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci FROM quay.io/centos/centos:stream8 -RUN dnf update -y && \ +RUN dnf distro-sync -y && \ dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y powertools && \ dnf install -y centos-release-advanced-virtualization && \ dnf install -y epel-release && \ + dnf install -y epel-next-release && \ dnf install -y \ ant \ ca-certificates \ diff --git a/ci/containers/debian-10.Dockerfile b/ci/containers/debian-10.Dockerfile index 5d9e570..363e80e 100644 --- a/ci/containers/debian-10.Dockerfile +++ b/ci/containers/debian-10.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci FROM docker.io/library/debian:10-slim @@ -10,7 +10,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ - mkdir -p /usr/share/man/man1 && \ eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile index bf92979..2631a23 100644 --- a/ci/containers/debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci FROM docker.io/library/debian:sid-slim @@ -10,7 +10,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ - mkdir -p /usr/share/man/man1 && \ eatmydata apt-get install --no-install-recommends -y \ ant \ ant-optional \ diff --git a/ci/containers/fedora-33.Dockerfile b/ci/containers/fedora-35.Dockerfile similarity index 85% rename from ci/containers/fedora-33.Dockerfile rename to ci/containers/fedora-35.Dockerfile index 9b275b6..6ccc60e 100644 --- a/ci/containers/fedora-33.Dockerfile +++ b/ci/containers/fedora-35.Dockerfile @@ -2,9 +2,9 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:33 +FROM registry.fedoraproject.org/fedora:35 RUN dnf install -y nosync && \ echo -e '#!/bin/sh\n\ diff --git a/ci/containers/fedora-34.Dockerfile b/ci/containers/fedora-36.Dockerfile similarity index 85% rename from ci/containers/fedora-34.Dockerfile rename to ci/containers/fedora-36.Dockerfile index b8cd798..2864ee8 100644 --- a/ci/containers/fedora-34.Dockerfile +++ b/ci/containers/fedora-36.Dockerfile @@ -2,9 +2,9 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:34 +FROM registry.fedoraproject.org/fedora:36 RUN dnf install -y nosync && \ echo -e '#!/bin/sh\n\ diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index f271e93..35d5028 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci FROM registry.fedoraproject.org/fedora:rawhide @@ -17,7 +17,7 @@ else\n\ fi\n\ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ - nosync dnf update -y && \ + nosync dnf distro-sync -y && \ nosync dnf install -y \ ant \ ant-junit \ diff --git a/ci/containers/opensuse-leap-152.Dockerfile b/ci/containers/opensuse-leap-153.Dockerfile similarity index 76% rename from ci/containers/opensuse-leap-152.Dockerfile rename to ci/containers/opensuse-leap-153.Dockerfile index b62dae1..e6e027f 100644 --- a/ci/containers/opensuse-leap-152.Dockerfile +++ b/ci/containers/opensuse-leap-153.Dockerfile @@ -2,9 +2,9 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci -FROM registry.opensuse.org/opensuse/leap:15.2 +FROM registry.opensuse.org/opensuse/leap:15.3 RUN zypper update -y && \ zypper install -y \ diff --git a/ci/containers/ubuntu-1804.Dockerfile b/ci/containers/ubuntu-1804.Dockerfile deleted file mode 100644 index 8d70a4b..0000000 --- a/ci/containers/ubuntu-1804.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool manifest ci/manifest.yml -# -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 - -FROM docker.io/library/ubuntu:18.04 - -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y eatmydata && \ - eatmydata apt-get dist-upgrade -y && \ - eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-11-jdk-headless && \ - eatmydata apt-get autoremove -y && \ - eatmydata apt-get autoclean -y && \ - sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt - -ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/ubuntu-2004.Dockerfile index 918401a..6b22324 100644 --- a/ci/containers/ubuntu-2004.Dockerfile +++ b/ci/containers/ubuntu-2004.Dockerfile @@ -2,7 +2,7 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci FROM docker.io/library/ubuntu:20.04 @@ -14,49 +14,16 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ant \ ant-optional \ ca-certificates \ - ccache \ - cpp \ - gcc \ - gettext \ git \ junit \ - libc-dev-bin \ - libc6-dev \ - libglib2.0-dev \ - libgnutls28-dev \ libjna-java \ - libnl-3-dev \ - libnl-route-3-dev \ - libtirpc-dev \ libvirt-dev \ - libxml2-dev \ - libxml2-utils \ locales \ - make \ - ninja-build \ - openjdk-11-jdk-headless \ - perl-base \ - pkgconf \ - python3 \ - python3-docutils \ - python3-pip \ - python3-setuptools \ - python3-wheel \ - xsltproc && \ + openjdk-11-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ - dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc - -RUN pip3 install \ - meson==0.56.0 + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt ENV LANG "en_US.UTF-8" -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile new file mode 100644 index 0000000..4e149fd --- /dev/null +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -0,0 +1,57 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/ubuntu:22.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + ccache \ + cpp \ + gcc \ + gettext \ + git \ + junit \ + libc-dev-bin \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + openjdk-11-jdk-headless \ + perl-base \ + pkgconf \ + python3 \ + python3-docutils \ + xsltproc && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/gitlab.yml b/ci/gitlab.yml index 583ba04..ea0f847 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -2,213 +2,33 @@ # # $ lcitool manifest ci/manifest.yml # -# https://gitlab.com/libvirt/libvirt-ci/-/commit/c5bde43affd9a5fea0c06542d71e708ac1bd6153 +# https://gitlab.com/libvirt/libvirt-ci -.container_job: - image: docker:stable - stage: containers - needs: [] - services: - - name: registry.gitlab.com/libvirt/libvirt-ci/docker-dind:master - alias: docker - before_script: - - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" - - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" - - docker info - - docker login registry.gitlab.com -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" - script: - - docker pull "$TAG" || docker pull "$COMMON_TAG" || true - - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers - - docker push "$TAG" - after_script: - - docker logout - - -.gitlab_native_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest - stage: builds - - -.gitlab_cross_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME-cross-$CROSS:latest - stage: builds - - -check-dco: - stage: sanity_checks - needs: [] - image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master - script: - - /check-dco libvirt - except: - variables: - - $CI_PROJECT_NAMESPACE == 'libvirt' - variables: - GIT_DEPTH: 1000 - - -# Native container jobs - -x86_64-centos-8-container: - extends: .container_job - allow_failure: false - variables: - NAME: centos-8 - - -x86_64-centos-stream-8-container: - extends: .container_job - allow_failure: false - variables: - NAME: centos-stream-8 - - -x86_64-debian-10-container: - extends: .container_job - allow_failure: false - variables: - NAME: debian-10 - - -x86_64-debian-sid-container: - extends: .container_job - allow_failure: false - variables: - NAME: debian-sid - - -x86_64-fedora-33-container: - extends: .container_job - allow_failure: false - variables: - NAME: fedora-33 - - -x86_64-fedora-34-container: - extends: .container_job - allow_failure: false - variables: - NAME: fedora-34 - - -x86_64-fedora-rawhide-container: - extends: .container_job - allow_failure: false - variables: - NAME: fedora-rawhide - - -x86_64-opensuse-leap-152-container: - extends: .container_job - allow_failure: false - variables: - NAME: opensuse-leap-152 - - -x86_64-ubuntu-1804-container: - extends: .container_job - allow_failure: false - variables: - NAME: ubuntu-1804 - - -x86_64-ubuntu-2004-container: - extends: .container_job - allow_failure: false - variables: - NAME: ubuntu-2004 - - -# Native build jobs - -x86_64-centos-8: - extends: .native_build_job - needs: - - x86_64-centos-8-container - allow_failure: false - variables: - NAME: centos-8 - TESTS: skip - - -x86_64-centos-stream-8: - extends: .native_build_job - needs: - - x86_64-centos-stream-8-container - allow_failure: false - variables: - NAME: centos-stream-8 - TESTS: skip - - -x86_64-debian-10: - extends: .native_build_job - needs: - - x86_64-debian-10-container - allow_failure: false - variables: - NAME: debian-10 - - -x86_64-debian-sid: - extends: .native_build_job - needs: - - x86_64-debian-sid-container - allow_failure: false - variables: - NAME: debian-sid - - -x86_64-fedora-33: - extends: .native_build_job - needs: - - x86_64-fedora-33-container - allow_failure: false - variables: - NAME: fedora-33 - - -x86_64-fedora-34: - extends: .native_build_job - needs: - - x86_64-fedora-34-container - allow_failure: false - variables: - NAME: fedora-34 - - -x86_64-fedora-rawhide: - extends: .native_build_job - needs: - - x86_64-fedora-rawhide-container - allow_failure: false - variables: - NAME: fedora-rawhide - - -x86_64-opensuse-leap-152: - extends: .native_build_job - needs: - - x86_64-opensuse-leap-152-container - allow_failure: false - variables: - NAME: opensuse-leap-152 - - -x86_64-ubuntu-1804: - extends: .native_build_job - needs: - - x86_64-ubuntu-1804-container - allow_failure: false - variables: - NAME: ubuntu-1804 - - -x86_64-ubuntu-2004-git: - extends: .native_git_build_job - needs: - - x86_64-ubuntu-2004-container - allow_failure: false - variables: - NAME: ubuntu-2004 +# Variables that can be set to control the behaviour of +# pipelines that are run +# +# - RUN_ALL_CONTAINERS - build all containers +# even if they don't have any changes detected +# +# These can be set as git push options +# +# $ git push -o ci.variable=RUN_ALL_CONTAINERS=1 +# +# Aliases can be set for common usage +# +# $ git config --local alias.push-all-ctr "push -o ci.variable=RUN_ALL_CONTAINERS=1" +# +# Allowing the less verbose invokation +# +# $ git push-all-ctr +# +# Pipeline variables can also be set in the repository +# pipeline config globally, or set against scheduled pipelines + +include: + - local: '/ci/gitlab/container-templates.yml' + - local: '/ci/gitlab/build-templates.yml' + - local: '/ci/gitlab/sanity-checks.yml' + - local: '/ci/gitlab/containers.yml' + - local: '/ci/gitlab/builds.yml' diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml new file mode 100644 index 0000000..3bbb2ef --- /dev/null +++ b/ci/gitlab/build-templates.yml @@ -0,0 +1,17 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + + +.gitlab_native_build_job: + image: $CI_REGISTRY_IMAGE/ci-$NAME:latest + stage: builds + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$JOB_OPTIONAL' + when: manual + allow_failure: true + - when: on_success diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml new file mode 100644 index 0000000..0df01d9 --- /dev/null +++ b/ci/gitlab/builds.yml @@ -0,0 +1,109 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + + +# Native build jobs + +x86_64-almalinux-8: + extends: .native_build_job + needs: + - job: x86_64-almalinux-8-container + optional: true + allow_failure: false + variables: + NAME: almalinux-8 + TESTS: skip + + +x86_64-centos-stream-8: + extends: .native_build_job + needs: + - job: x86_64-centos-stream-8-container + optional: true + allow_failure: false + variables: + NAME: centos-stream-8 + TESTS: skip + + +x86_64-debian-10: + extends: .native_build_job + needs: + - job: x86_64-debian-10-container + optional: true + allow_failure: false + variables: + NAME: debian-10 + + +x86_64-debian-sid: + extends: .native_build_job + needs: + - job: x86_64-debian-sid-container + optional: true + allow_failure: false + variables: + NAME: debian-sid + + +x86_64-fedora-35: + extends: .native_build_job + needs: + - job: x86_64-fedora-35-container + optional: true + allow_failure: false + variables: + NAME: fedora-35 + + +x86_64-fedora-36: + extends: .native_build_job + needs: + - job: x86_64-fedora-36-container + optional: true + allow_failure: false + variables: + NAME: fedora-36 + + +x86_64-fedora-rawhide: + extends: .native_build_job + needs: + - job: x86_64-fedora-rawhide-container + optional: true + allow_failure: false + variables: + NAME: fedora-rawhide + + +x86_64-opensuse-leap-153: + extends: .native_build_job + needs: + - job: x86_64-opensuse-leap-153-container + optional: true + allow_failure: false + variables: + NAME: opensuse-leap-153 + + +x86_64-ubuntu-2004: + extends: .native_build_job + needs: + - job: x86_64-ubuntu-2004-container + optional: true + allow_failure: false + variables: + NAME: ubuntu-2004 + + +x86_64-ubuntu-2204-git: + extends: .native_git_build_job + needs: + - job: x86_64-ubuntu-2204-container + optional: true + allow_failure: false + variables: + NAME: ubuntu-2204 diff --git a/ci/gitlab/container-templates.yml b/ci/gitlab/container-templates.yml new file mode 100644 index 0000000..abf74fa --- /dev/null +++ b/ci/gitlab/container-templates.yml @@ -0,0 +1,57 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + + +# For upstream +# +# - Push to default branch: +# -> rebuild if dockerfile changed, no cache +# - Otherwise +# -> rebuild if RUN_ALL_CONTAINERS=1, no cache, +# to pick up new published distro packages or +# recover from deleted tag +# +# For forks +# - Always rebuild, with cache +# +.container_job: + image: docker:stable + stage: containers + needs: [] + services: + - docker:dind + before_script: + - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" + - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" + - docker info + - docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" + script: + - if test $CI_PROJECT_NAMESPACE = "libvirt"; + then + docker build --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers ; + else + docker pull "$TAG" || docker pull "$COMMON_TAG" || true ; + docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers ; + fi + - docker push "$TAG" + after_script: + - docker logout + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: '$CI_PROJECT_NAMESPACE == "libvirt" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: on_success + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + - if: '$CI_PROJECT_NAMESPACE == "libvirt" && $RUN_ALL_CONTAINERS == "1"' + when: on_success + - if: '$CI_PROJECT_NAMESPACE == "libvirt"' + when: never + - if: '$JOB_OPTIONAL' + when: manual + allow_failure: true + - when: on_success diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml new file mode 100644 index 0000000..713896f --- /dev/null +++ b/ci/gitlab/containers.yml @@ -0,0 +1,77 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + + +# Native container jobs + +x86_64-almalinux-8-container: + extends: .container_job + allow_failure: false + variables: + NAME: almalinux-8 + + +x86_64-centos-stream-8-container: + extends: .container_job + allow_failure: false + variables: + NAME: centos-stream-8 + + +x86_64-debian-10-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-10 + + +x86_64-debian-sid-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-sid + + +x86_64-fedora-35-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-35 + + +x86_64-fedora-36-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-36 + + +x86_64-fedora-rawhide-container: + extends: .container_job + allow_failure: false + variables: + NAME: fedora-rawhide + + +x86_64-opensuse-leap-153-container: + extends: .container_job + allow_failure: false + variables: + NAME: opensuse-leap-153 + + +x86_64-ubuntu-2004-container: + extends: .container_job + allow_failure: false + variables: + NAME: ubuntu-2004 + + +x86_64-ubuntu-2204-container: + extends: .container_job + allow_failure: false + variables: + NAME: ubuntu-2204 diff --git a/ci/gitlab/sanity-checks.yml b/ci/gitlab/sanity-checks.yml new file mode 100644 index 0000000..90f6ff8 --- /dev/null +++ b/ci/gitlab/sanity-checks.yml @@ -0,0 +1,18 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + + +check-dco: + stage: sanity_checks + needs: [] + image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master + script: + - /check-dco libvirt + except: + variables: + - $CI_PROJECT_NAMESPACE == 'libvirt' + variables: + GIT_DEPTH: 1000 diff --git a/ci/manifest.yml b/ci/manifest.yml index 2b3af87..4259078 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -7,7 +7,7 @@ gitlab: project: libvirt-java targets: - centos-8: + almalinux-8: jobs: - arch: x86_64 variables: @@ -23,17 +23,17 @@ targets: debian-sid: x86_64 - fedora-33: x86_64 + fedora-35: x86_64 - fedora-34: x86_64 + fedora-36: x86_64 fedora-rawhide: x86_64 - opensuse-leap-152: x86_64 + opensuse-leap-153: x86_64 - ubuntu-1804: x86_64 + ubuntu-2004: x86_64 - ubuntu-2004: + ubuntu-2204: projects: - libvirt-java - libvirt+dist From 429aafc54fd99e6296040a64ca895b95d4a8cc93 Mon Sep 17 00:00:00 2001 From: Dmytro Klymenchuk Date: Thu, 4 Aug 2022 14:16:18 +0300 Subject: [PATCH 078/114] Add virDomainSetUserPassword binding Signed-off-by: Dmytro Klymenchuk --- src/main/java/org/libvirt/Domain.java | 21 +++++++++++++++++++++ src/main/java/org/libvirt/jna/Libvirt.java | 3 +++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 828e96f..441ab96 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -606,6 +606,13 @@ public static final class VcpuFlags { public static final int HOTPLUGGABLE = bit(4); } + public static final class DomainSetUserPasswordFlags { + /** Password is not encrypted */ + public static final int DOMAIN_PASSWORD_NOT_ENCRYPTED = 0; + /** Password is already encrypted */ + public static final int DOMAIN_PASSWORD_ENCRYPTED = bit(1); + } + /** the native virDomainPtr. */ DomainPointer vdp; @@ -2120,6 +2127,20 @@ public void setSchedulerParameters(final SchedParameter[] params) processError(libvirt.virDomainSetSchedulerParameters(vdp, input, params.length)); } + /** + * Sets the user password to the value specified by password. + * If flags contain DomainSetUserPasswordFlags.DOMAIN_PASSWORD_ENCRYPTED, the password + * is assumed to be encrypted by the method required by the guest OS. + * + * @param user the username that will get a new password + * @param password the password to set + * @param flags see {@link DomainSetUserPasswordFlags} + * @throws LibvirtException + */ + public void setUserPassword(String user, String password, int flags) throws LibvirtException { + processError(libvirt.virDomainSetUserPassword(vdp, user, password, flags)); + } + /** * Dynamically changes the number of virtual CPUs used by this domain. Note * that this call may fail if the underlying virtualization hypervisor does diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 41238da..c9b67fc 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -651,4 +651,7 @@ int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, Pointer opaque, Pointer ff); int virEventRemoveTimeout(int timer); void virEventUpdateTimeout(int timer, int timeout); + + int virDomainSetUserPassword(DomainPointer virDomainPtr, + String user, String password, int flags); } From 4b609374a1c045246a36e28a641e778e7b9fc7cb Mon Sep 17 00:00:00 2001 From: Dmytro Klymenchuk Date: Thu, 8 Sep 2022 17:17:14 +0300 Subject: [PATCH 079/114] Add listAllDomains binding Signed-off-by: Dmitry Klymenchuk --- src/main/java/org/libvirt/Connect.java | 57 ++++++++++++++----- .../org/libvirt/jna/DomainByReference.java | 12 ++++ .../java/org/libvirt/jna/DomainPointer.java | 9 +++ src/main/java/org/libvirt/jna/Libvirt.java | 2 + 4 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/libvirt/jna/DomainByReference.java diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 46d991d..3eb75c5 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -9,20 +9,7 @@ import org.libvirt.event.*; //CHECKSTYLE:ON: AvoidStarImport -import org.libvirt.jna.ConnectionPointer; -import org.libvirt.jna.CString; -import org.libvirt.jna.DevicePointer; -import org.libvirt.jna.DomainPointer; -import org.libvirt.jna.InterfacePointer; -import org.libvirt.jna.Libvirt; -import org.libvirt.jna.NetworkFilterPointer; -import org.libvirt.jna.NetworkPointer; -import org.libvirt.jna.SecretPointer; -import org.libvirt.jna.StoragePoolPointer; -import org.libvirt.jna.StorageVolPointer; -import org.libvirt.jna.StreamPointer; -import org.libvirt.jna.virConnectAuth; -import org.libvirt.jna.virNodeInfo; +import org.libvirt.jna.*; import static org.libvirt.Library.libvirt; import static org.libvirt.Library.getConstant; @@ -134,6 +121,25 @@ public int getBit() { private final int value; } + public static final class ConnectListAllDomainsFlags { + public static int CONNECT_LIST_DOMAINS_ACTIVE = 1 << 0; + public static int CONNECT_LIST_DOMAINS_INACTIVE = 1 << 1; + public static int CONNECT_LIST_DOMAINS_PERSISTENT = 1 << 2; + public static int CONNECT_LIST_DOMAINS_TRANSIENT = 1 << 3; + public static int CONNECT_LIST_DOMAINS_RUNNING = 1 << 4; + public static int CONNECT_LIST_DOMAINS_PAUSED = 1 << 5; + public static int CONNECT_LIST_DOMAINS_SHUTOFF = 1 << 6; + public static int CONNECT_LIST_DOMAINS_OTHER = 1 << 7; + public static int CONNECT_LIST_DOMAINS_MANAGEDSAVE = 1 << 8; + public static int CONNECT_LIST_DOMAINS_NO_MANAGEDSAVE = 1 << 9; + public static int CONNECT_LIST_DOMAINS_AUTOSTART = 1 << 10; + public static int CONNECT_LIST_DOMAINS_NO_AUTOSTART = 1 << 11; + public static int CONNECT_LIST_DOMAINS_HAS_SNAPSHOT = 1 << 12; + public static int CONNECT_LIST_DOMAINS_NO_SNAPSHOT = 1 << 13; + public static int CONNECT_LIST_DOMAINS_HAS_CHECKPOINT = 1 << 14; + public static int CONNECT_LIST_DOMAINS_NO_CHECKPOINT = 1 << 15; + } + /** * Get the version of a connection. * @@ -1483,6 +1489,29 @@ public int[] listDomains() throws LibvirtException { return ids; } + /** + * Gets an array of domains. + * @param flags bitwise-OR of {@link ConnectListAllDomainsFlags} + * @return array of Domain objects + * @throws LibvirtException + */ + public Domain[] listAllDomains(int flags) throws LibvirtException { + DomainByReference domainByReference = new DomainByReference(); + int domainsCount = processError(libvirt.virConnectListAllDomains(vcp, domainByReference, flags)); + + Pointer[] pointerArray = domainByReference.getValue().getPointerArray(0, domainsCount); + if (domainsCount > 0) { + Domain[] domains = new Domain[domainsCount]; + for (int i = 0; i < domainsCount; i++) { + domains[i] = new Domain(this, new DomainPointer(pointerArray[i])); + } + + return domains; + } + + return new Domain[]{}; + } + /** * Provides the list of names of interfaces on this host * diff --git a/src/main/java/org/libvirt/jna/DomainByReference.java b/src/main/java/org/libvirt/jna/DomainByReference.java new file mode 100644 index 0000000..eecb85e --- /dev/null +++ b/src/main/java/org/libvirt/jna/DomainByReference.java @@ -0,0 +1,12 @@ +package org.libvirt.jna; + +import com.sun.jna.Pointer; +import com.sun.jna.ptr.PointerByReference; + +public class DomainByReference extends PointerByReference { + + public DomainByReference() { + super(Pointer.NULL); + } + +} diff --git a/src/main/java/org/libvirt/jna/DomainPointer.java b/src/main/java/org/libvirt/jna/DomainPointer.java index 1f872e5..1bbafb7 100644 --- a/src/main/java/org/libvirt/jna/DomainPointer.java +++ b/src/main/java/org/libvirt/jna/DomainPointer.java @@ -1,9 +1,18 @@ package org.libvirt.jna; +import com.sun.jna.Pointer; import com.sun.jna.PointerType; /** * Pointer class to provide type safety to the jna interface. */ public class DomainPointer extends PointerType { + + public DomainPointer() { + } + + public DomainPointer(Pointer p) { + super(p); + } + } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index c9b67fc..cbe62b4 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -262,6 +262,8 @@ int virConnectListDefinedInterfaces(ConnectionPointer virConnectPtr, CString[] name, int maxNames); int virConnectListDomains(ConnectionPointer virConnectPtr, int[] ids, int maxnames); + int virConnectListAllDomains(ConnectionPointer virConnectPtr, + DomainByReference domains, int flags); int virConnectListInterfaces(ConnectionPointer virConnectPtr, CString[] name, int maxNames); int virConnectListNetworks(ConnectionPointer virConnectPtr, From f4bb634eb30eed8aff5331c90470d0b4c00a55bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 30 Sep 2022 04:50:04 -0400 Subject: [PATCH 080/114] ci: refresh with latest lcitool manifest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This refresh switches the CI for contributors to be triggered by merge requests. Pushing to a branch in a fork will no longer run CI pipelines, in order to avoid consuming CI minutes. To regain the original behaviour contributors can opt-in to a pipeline on push git push -o ci.variable=RUN_PIPELINE=1 This variable can also be set globally on the repository, though this is not recommended. Upstream repo pushes to branches will run CI. The use of containers has changed in this update, with only the upstream repo creating containers, in order to avoid consuming contributors' limited storage quotas. A fork with existing container images may delete them. Containers will be rebuilt upstream when pushing commits with CI changes to the default branch. Any other scenario with CI changes will simply install build pre-requisite packages in a throaway environment, using the ci/buildenv/ scripts. These scripts may also be used on a contributor's local machines. With pipelines triggered by merge requests, it is also now possible to workaround the inability of contributors to run pipelines if they have run out of CI quota. A project member can trigger a pipeline from the merge request, which will run in context of upstream, however, note this should only be done after reviewing the code for any malicious CI changes. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 25 ++++- ci/buildenv/almalinux-8.sh | 25 +++++ ci/buildenv/centos-stream-8.sh | 26 +++++ ci/buildenv/debian-10.sh | 26 +++++ ci/buildenv/debian-sid.sh | 26 +++++ ci/buildenv/fedora-35.sh | 23 +++++ ci/buildenv/fedora-36.sh | 23 +++++ ci/buildenv/fedora-rawhide.sh | 24 +++++ ci/buildenv/opensuse-leap-153.sh | 23 +++++ ci/buildenv/ubuntu-2004.sh | 26 +++++ ci/buildenv/ubuntu-2204.sh | 54 +++++++++++ ci/containers/debian-10.Dockerfile | 18 ++-- ci/containers/debian-sid.Dockerfile | 18 ++-- ci/containers/fedora-35.Dockerfile | 20 ++-- ci/containers/fedora-36.Dockerfile | 20 ++-- ci/containers/fedora-rawhide.Dockerfile | 20 ++-- ci/containers/ubuntu-2004.Dockerfile | 18 ++-- ci/containers/ubuntu-2204.Dockerfile | 62 ++++++------ ci/gitlab.yml | 60 ++++++++++-- ci/gitlab/build-templates.yml | 110 ++++++++++++++++++++- ci/gitlab/builds.yml | 122 ++++++++++++++++++++---- ci/gitlab/container-templates.yml | 45 ++++----- ci/gitlab/sanity-checks.yml | 16 +++- 23 files changed, 674 insertions(+), 156 deletions(-) create mode 100644 ci/buildenv/almalinux-8.sh create mode 100644 ci/buildenv/centos-stream-8.sh create mode 100644 ci/buildenv/debian-10.sh create mode 100644 ci/buildenv/debian-sid.sh create mode 100644 ci/buildenv/fedora-35.sh create mode 100644 ci/buildenv/fedora-36.sh create mode 100644 ci/buildenv/fedora-rawhide.sh create mode 100644 ci/buildenv/opensuse-leap-153.sh create mode 100644 ci/buildenv/ubuntu-2004.sh create mode 100644 ci/buildenv/ubuntu-2204.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e33833..3575c07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,8 +5,7 @@ stages: - sanity_checks .native_git_build_job: - extends: .gitlab_native_build_job - before_script: + script: - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" - export SCRATCH_DIR="/tmp/scratch" - export VROOT="$SCRATCH_DIR/vroot" @@ -14,7 +13,6 @@ stages: - export LD_LIBRARY_PATH="$LIBDIR" - export PATH="$VROOT/bin:$PATH" - export PKG_CONFIG_PATH="$LIBDIR/pkgconfig" - script: - pushd "$PWD" - mkdir -p "$SCRATCH_DIR" - cd "$SCRATCH_DIR" @@ -28,12 +26,31 @@ stages: - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi +.native_git_build_job_prebuilt_env: + extends: + - .native_git_build_job + - .gitlab_native_build_job_prebuilt_env + +.native_git_build_job_local_env: + extends: + - .native_git_build_job + - .gitlab_native_build_job_local_env + .native_build_job: - extends: .gitlab_native_build_job script: - ant build jar docs - if test "$TESTS" != "skip" ; then ant test ; fi - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi +.native_build_job_prebuilt_env: + extends: + - .native_build_job + - .gitlab_native_build_job_prebuilt_env + +.native_build_job_local_env: + extends: + - .native_build_job + - .gitlab_native_build_job_local_env + include: '/ci/gitlab.yml' diff --git a/ci/buildenv/almalinux-8.sh b/ci/buildenv/almalinux-8.sh new file mode 100644 index 0000000..4478e4f --- /dev/null +++ b/ci/buildenv/almalinux-8.sh @@ -0,0 +1,25 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y powertools + dnf install -y centos-release-advanced-virtualization + dnf install -y epel-release + dnf install -y \ + ant \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/centos-stream-8.sh b/ci/buildenv/centos-stream-8.sh new file mode 100644 index 0000000..a78bbc6 --- /dev/null +++ b/ci/buildenv/centos-stream-8.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf distro-sync -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y powertools + dnf install -y centos-release-advanced-virtualization + dnf install -y epel-release + dnf install -y epel-next-release + dnf install -y \ + ant \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/debian-10.sh b/ci/buildenv/debian-10.sh new file mode 100644 index 0000000..9ea9d7b --- /dev/null +++ b/ci/buildenv/debian-10.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/debian-sid.sh b/ci/buildenv/debian-sid.sh new file mode 100644 index 0000000..9ea9d7b --- /dev/null +++ b/ci/buildenv/debian-sid.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/fedora-35.sh b/ci/buildenv/fedora-35.sh new file mode 100644 index 0000000..46b5102 --- /dev/null +++ b/ci/buildenv/fedora-35.sh @@ -0,0 +1,23 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/fedora-36.sh b/ci/buildenv/fedora-36.sh new file mode 100644 index 0000000..46b5102 --- /dev/null +++ b/ci/buildenv/fedora-36.sh @@ -0,0 +1,23 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/fedora-rawhide.sh b/ci/buildenv/fedora-rawhide.sh new file mode 100644 index 0000000..1ba76e7 --- /dev/null +++ b/ci/buildenv/fedora-rawhide.sh @@ -0,0 +1,24 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y --nogpgcheck fedora-gpg-keys + dnf distro-sync -y + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/opensuse-leap-153.sh b/ci/buildenv/opensuse-leap-153.sh new file mode 100644 index 0000000..e0a14fb --- /dev/null +++ b/ci/buildenv/opensuse-leap-153.sh @@ -0,0 +1,23 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + zypper update -y + zypper install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-locale \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/ubuntu-2004.sh b/ci/buildenv/ubuntu-2004.sh new file mode 100644 index 0000000..9ea9d7b --- /dev/null +++ b/ci/buildenv/ubuntu-2004.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh new file mode 100644 index 0000000..a95014e --- /dev/null +++ b/ci/buildenv/ubuntu-2204.sh @@ -0,0 +1,54 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + ccache \ + cpp \ + gcc \ + gettext \ + git \ + junit \ + libc-dev-bin \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + openjdk-11-jdk-headless \ + perl-base \ + pkgconf \ + python3 \ + python3-docutils \ + xsltproc + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" +export PYTHON="/usr/bin/python3" diff --git a/ci/containers/debian-10.Dockerfile b/ci/containers/debian-10.Dockerfile index 363e80e..768375e 100644 --- a/ci/containers/debian-10.Dockerfile +++ b/ci/containers/debian-10.Dockerfile @@ -11,15 +11,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-11-jdk-headless && \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile index 2631a23..b09adc9 100644 --- a/ci/containers/debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -11,15 +11,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-11-jdk-headless && \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/fedora-35.Dockerfile b/ci/containers/fedora-35.Dockerfile index 6ccc60e..a22bfd9 100644 --- a/ci/containers/fedora-35.Dockerfile +++ b/ci/containers/fedora-35.Dockerfile @@ -18,16 +18,16 @@ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ - ant \ - ant-junit \ - ca-certificates \ - git \ - glibc-langpack-en \ - java-11-openjdk-headless \ - jna \ - junit \ - libvirt-devel \ - rpm-build && \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ nosync dnf autoremove -y && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt diff --git a/ci/containers/fedora-36.Dockerfile b/ci/containers/fedora-36.Dockerfile index 2864ee8..30b1ca9 100644 --- a/ci/containers/fedora-36.Dockerfile +++ b/ci/containers/fedora-36.Dockerfile @@ -18,16 +18,16 @@ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ - ant \ - ant-junit \ - ca-certificates \ - git \ - glibc-langpack-en \ - java-11-openjdk-headless \ - jna \ - junit \ - libvirt-devel \ - rpm-build && \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ nosync dnf autoremove -y && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index 35d5028..5c83203 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -19,16 +19,16 @@ exec "$@"' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf distro-sync -y && \ nosync dnf install -y \ - ant \ - ant-junit \ - ca-certificates \ - git \ - glibc-langpack-en \ - java-11-openjdk-headless \ - jna \ - junit \ - libvirt-devel \ - rpm-build && \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-11-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ nosync dnf autoremove -y && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/ubuntu-2004.Dockerfile index 6b22324..129b57e 100644 --- a/ci/containers/ubuntu-2004.Dockerfile +++ b/ci/containers/ubuntu-2004.Dockerfile @@ -11,15 +11,15 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-11-jdk-headless && \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-11-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile index 4e149fd..2aa78ab 100644 --- a/ci/containers/ubuntu-2204.Dockerfile +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -11,36 +11,36 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get install -y eatmydata && \ eatmydata apt-get dist-upgrade -y && \ eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - ccache \ - cpp \ - gcc \ - gettext \ - git \ - junit \ - libc-dev-bin \ - libc6-dev \ - libglib2.0-dev \ - libgnutls28-dev \ - libjna-java \ - libnl-3-dev \ - libnl-route-3-dev \ - libtirpc-dev \ - libvirt-dev \ - libxml2-dev \ - libxml2-utils \ - locales \ - make \ - meson \ - ninja-build \ - openjdk-11-jdk-headless \ - perl-base \ - pkgconf \ - python3 \ - python3-docutils \ - xsltproc && \ + ant \ + ant-optional \ + ca-certificates \ + ccache \ + cpp \ + gcc \ + gettext \ + git \ + junit \ + libc-dev-bin \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + openjdk-11-jdk-headless \ + perl-base \ + pkgconf \ + python3 \ + python3-docutils \ + xsltproc && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ @@ -50,8 +50,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" ENV MAKE "/usr/bin/make" ENV NINJA "/usr/bin/ninja" ENV PYTHON "/usr/bin/python3" -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" diff --git a/ci/gitlab.yml b/ci/gitlab.yml index ea0f847..bdc5e0a 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -8,24 +8,72 @@ # Variables that can be set to control the behaviour of # pipelines that are run # -# - RUN_ALL_CONTAINERS - build all containers -# even if they don't have any changes detected +# - RUN_PIPELINE - force creation of a CI pipeline when +# pushing to a branch in a forked repository. Official +# CI pipelines are triggered when merge requests are +# created/updated. Setting this variable to a non-empty +# value allows CI testing prior to opening a merge request. +# +# - RUN_CONTAINER_BUILDS - CI pipelines in upstream only +# publish containers if CI file changes are detected. +# Setting this variable to a non-empty value will force +# re-publishing, even when no file changes are detected. +# Typically to use from a scheduled job once a month. +# +# - RUN_UPSTREAM_NAMESPACE - the upstream namespace is +# configured to default to 'libvirt'. When testing +# changes to CI it might be useful to use a different +# upstream. Setting this variable will override the +# namespace considered to be upstream. # # These can be set as git push options # -# $ git push -o ci.variable=RUN_ALL_CONTAINERS=1 +# $ git push -o ci.variable=RUN_PIPELINE=1 # # Aliases can be set for common usage # -# $ git config --local alias.push-all-ctr "push -o ci.variable=RUN_ALL_CONTAINERS=1" +# $ git config --local alias.push-ci "push -o ci.variable=RUN_PIPELINE=1" # -# Allowing the less verbose invokation +# Allowing the less verbose invocation # -# $ git push-all-ctr +# $ git push-ci # # Pipeline variables can also be set in the repository # pipeline config globally, or set against scheduled pipelines + +variables: + RUN_UPSTREAM_NAMESPACE: libvirt + + +workflow: + rules: + # upstream+forks: Avoid duplicate pipelines on pushes, if a MR is open + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_OPEN_MERGE_REQUESTS' + when: never + + # upstream+forks: Avoid pipelines on tag pushes + - if: '$CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_TAG' + when: never + + # upstream+forks: Allow pipelines in scenarios we've figured out job rules + - if: '$CI_PIPELINE_SOURCE =~ /^(push|merge_request_event|api|web|schedule)$/' + when: always + + # upstream+forks: Avoid all other pipelines + - when: never + + +debug: + image: docker.io/library/alpine:3 + stage: sanity_checks + needs: [] + script: + - printenv | sort + rules: + - if: '$RUN_DEBUG' + when: always + include: - local: '/ci/gitlab/container-templates.yml' - local: '/ci/gitlab/build-templates.yml' diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index 3bbb2ef..f407d88 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -5,13 +5,113 @@ # https://gitlab.com/libvirt/libvirt-ci -.gitlab_native_build_job: - image: $CI_REGISTRY_IMAGE/ci-$NAME:latest +# +# We use pre-built containers for any pipelines that are: +# +# - Validating code committed on default upstream branch +# - Validating patches targetting default upstream branch +# which do not have CI changes +# +# We use a local build env for any pipelines that are: +# +# - Validating code committed to a non-default upstream branch +# - Validating patches targetting a non-default upstream branch +# - Validating patches targetting default upstream branch which +# include CI changes +# - Validating code committed to a fork branch +# +# Note: the rules across the prebuilt_env and local_env templates +# should be logical inverses, such that jobs are mutually exclusive +# +.gitlab_native_build_job_prebuilt_env: + image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest stage: builds + before_script: + - cat /packages.txt rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + # upstream: pushes to the default branch + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: on_success + + # upstream: other web/api/scheduled pipelines targetting the default branch + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' + when: on_success + + # upstream+forks: merge requests targetting the default branch, without CI changes + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile when: never - - if: '$JOB_OPTIONAL' + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + when: on_success + + # upstream+forks: that's all folks + - when: never + +.gitlab_native_build_job_local_env: + image: $IMAGE + stage: builds + before_script: + - source ci/buildenv/$NAME.sh + - install_buildenv + - cat /packages.txt + rules: + # upstream: pushes to a non-default branch + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - - when: on_success + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' + when: on_success + + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' + when: on_success + + # upstream: other web/api/scheduled pipelines targetting non-default branches + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH' + when: on_success + + # forks: other web/api/scheduled pipelines + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/' + when: on_success + + # upstream+forks: merge requests targetting the default branch, with CI changes + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + when: manual + allow_failure: true + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + when: on_success + + # upstream+forks: merge requests targetting non-default branches + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' + when: on_success + + # upstream+forks: that's all folks + - when: never diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index 0df01d9..e579721 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -7,8 +7,8 @@ # Native build jobs -x86_64-almalinux-8: - extends: .native_build_job +x86_64-almalinux-8-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-almalinux-8-container optional: true @@ -17,9 +17,18 @@ x86_64-almalinux-8: NAME: almalinux-8 TESTS: skip +x86_64-almalinux-8-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: docker.io/library/almalinux:8 + NAME: almalinux-8 + TESTS: skip + -x86_64-centos-stream-8: - extends: .native_build_job +x86_64-centos-stream-8-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-centos-stream-8-container optional: true @@ -28,9 +37,18 @@ x86_64-centos-stream-8: NAME: centos-stream-8 TESTS: skip +x86_64-centos-stream-8-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: quay.io/centos/centos:stream8 + NAME: centos-stream-8 + TESTS: skip -x86_64-debian-10: - extends: .native_build_job + +x86_64-debian-10-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-debian-10-container optional: true @@ -38,9 +56,17 @@ x86_64-debian-10: variables: NAME: debian-10 +x86_64-debian-10-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: docker.io/library/debian:10-slim + NAME: debian-10 + -x86_64-debian-sid: - extends: .native_build_job +x86_64-debian-sid-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-debian-sid-container optional: true @@ -48,9 +74,17 @@ x86_64-debian-sid: variables: NAME: debian-sid +x86_64-debian-sid-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: docker.io/library/debian:sid-slim + NAME: debian-sid + -x86_64-fedora-35: - extends: .native_build_job +x86_64-fedora-35-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-fedora-35-container optional: true @@ -58,9 +92,17 @@ x86_64-fedora-35: variables: NAME: fedora-35 +x86_64-fedora-35-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: registry.fedoraproject.org/fedora:35 + NAME: fedora-35 + -x86_64-fedora-36: - extends: .native_build_job +x86_64-fedora-36-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-fedora-36-container optional: true @@ -68,9 +110,17 @@ x86_64-fedora-36: variables: NAME: fedora-36 +x86_64-fedora-36-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: registry.fedoraproject.org/fedora:36 + NAME: fedora-36 + -x86_64-fedora-rawhide: - extends: .native_build_job +x86_64-fedora-rawhide-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-fedora-rawhide-container optional: true @@ -78,9 +128,17 @@ x86_64-fedora-rawhide: variables: NAME: fedora-rawhide +x86_64-fedora-rawhide-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: registry.fedoraproject.org/fedora:rawhide + NAME: fedora-rawhide + -x86_64-opensuse-leap-153: - extends: .native_build_job +x86_64-opensuse-leap-153-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-opensuse-leap-153-container optional: true @@ -88,9 +146,17 @@ x86_64-opensuse-leap-153: variables: NAME: opensuse-leap-153 +x86_64-opensuse-leap-153-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: registry.opensuse.org/opensuse/leap:15.3 + NAME: opensuse-leap-153 + -x86_64-ubuntu-2004: - extends: .native_build_job +x86_64-ubuntu-2004-prebuilt-env: + extends: .native_build_job_prebuilt_env needs: - job: x86_64-ubuntu-2004-container optional: true @@ -98,12 +164,28 @@ x86_64-ubuntu-2004: variables: NAME: ubuntu-2004 +x86_64-ubuntu-2004-local-env: + extends: .native_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: docker.io/library/ubuntu:20.04 + NAME: ubuntu-2004 + -x86_64-ubuntu-2204-git: - extends: .native_git_build_job +x86_64-ubuntu-2204-git-prebuilt-env: + extends: .native_git_build_job_prebuilt_env needs: - job: x86_64-ubuntu-2204-container optional: true allow_failure: false variables: NAME: ubuntu-2204 + +x86_64-ubuntu-2204-git-local-env: + extends: .native_git_build_job_local_env + needs: [] + allow_failure: false + variables: + IMAGE: docker.io/library/ubuntu:22.04 + NAME: ubuntu-2204 diff --git a/ci/gitlab/container-templates.yml b/ci/gitlab/container-templates.yml index abf74fa..a577028 100644 --- a/ci/gitlab/container-templates.yml +++ b/ci/gitlab/container-templates.yml @@ -5,17 +5,13 @@ # https://gitlab.com/libvirt/libvirt-ci -# For upstream +# We want to publish containers with tag 'latest': # -# - Push to default branch: -# -> rebuild if dockerfile changed, no cache -# - Otherwise -# -> rebuild if RUN_ALL_CONTAINERS=1, no cache, -# to pick up new published distro packages or -# recover from deleted tag +# - In upstream, for push to default branch with CI changes. +# - In upstream, on request, for scheduled/manual pipelines +# against default branch # -# For forks -# - Always rebuild, with cache +# Note: never publish from merge requests since they have non-committed code # .container_job: image: docker:stable @@ -25,33 +21,24 @@ - docker:dind before_script: - export TAG="$CI_REGISTRY_IMAGE/ci-$NAME:latest" - - export COMMON_TAG="$CI_REGISTRY/libvirt/libvirt-java/ci-$NAME:latest" - docker info - docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" script: - - if test $CI_PROJECT_NAMESPACE = "libvirt"; - then - docker build --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers ; - else - docker pull "$TAG" || docker pull "$COMMON_TAG" || true ; - docker build --cache-from "$TAG" --cache-from "$COMMON_TAG" --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers ; - fi + - docker build --tag "$TAG" -f "ci/containers/$NAME.Dockerfile" ci/containers ; - docker push "$TAG" after_script: - docker logout rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: never - - if: '$CI_PROJECT_NAMESPACE == "libvirt" && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + # upstream: publish containers if there were CI changes on the default branch + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: on_success changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - - if: '$CI_PROJECT_NAMESPACE == "libvirt" && $RUN_ALL_CONTAINERS == "1"' + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + + # upstream: allow force re-publishing containers on default branch for web/api/scheduled pipelines + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $RUN_CONTAINER_BUILDS == "1"' when: on_success - - if: '$CI_PROJECT_NAMESPACE == "libvirt"' - when: never - - if: '$JOB_OPTIONAL' - when: manual - allow_failure: true - - when: on_success + + # upstream+forks: that's all folks + - when: never diff --git a/ci/gitlab/sanity-checks.yml b/ci/gitlab/sanity-checks.yml index 90f6ff8..f843c7f 100644 --- a/ci/gitlab/sanity-checks.yml +++ b/ci/gitlab/sanity-checks.yml @@ -10,9 +10,17 @@ check-dco: needs: [] image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master script: - - /check-dco libvirt - except: - variables: - - $CI_PROJECT_NAMESPACE == 'libvirt' + - /check-dco "$RUN_UPSTREAM_NAMESPACE" + rules: + # upstream+forks: Run pipelines on MR + - if: '$CI_PIPELINE_SOURCE =~ "merge_request_event"' + when: on_success + + # forks: pushes to branches with pipeline requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE' + when: on_success + + # upstream+forks: that's all folks + - when: never variables: GIT_DEPTH: 1000 From 0066a37fbfde6c9e04b91c9b4ed4a7cc4ef0fda3 Mon Sep 17 00:00:00 2001 From: Lars Dunemark Date: Thu, 24 Nov 2022 08:16:22 +0100 Subject: [PATCH 081/114] Fix resource leak in DomainSnapshot on delete When deleting a DomainSnapshot the DomainSnapshotPointer was set to null preventing the free() method to release the underlaying resorces resulting in dangling connections to libvirtd. Signed-off-by: Lars Dunemark --- src/main/java/org/libvirt/DomainSnapshot.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index d347f8d..e2b5848 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -47,7 +47,6 @@ public int delete(final int flags) throws LibvirtException { int success = 0; if (vdsp != null) { success = processError(libvirt.virDomainSnapshotDelete(vdsp, flags)); - vdsp = null; } return success; From 51c42dd6a23aed47e49dbf0e04939d4a72f09b4b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 12:50:51 +0100 Subject: [PATCH 082/114] ci: Update distros in manifest and regenerate with latest lcitool Replace 'debian-10' with 'debian-11' and 'fedora-35' with 'fedora-37'. Signed-off-by: Peter Krempa --- ci/buildenv/{debian-10.sh => debian-11.sh} | 0 ci/buildenv/{fedora-35.sh => fedora-37.sh} | 0 ...ian-10.Dockerfile => debian-11.Dockerfile} | 2 +- ...ora-35.Dockerfile => fedora-37.Dockerfile} | 2 +- ci/gitlab.yml | 8 +++++ ci/gitlab/build-templates.yml | 30 +++++++++++----- ci/gitlab/builds.yml | 36 +++++++++---------- ci/gitlab/container-templates.yml | 1 + ci/gitlab/containers.yml | 12 +++---- ci/gitlab/sanity-checks.yml | 7 ++-- ci/manifest.yml | 6 ++-- 11 files changed, 65 insertions(+), 39 deletions(-) rename ci/buildenv/{debian-10.sh => debian-11.sh} (100%) rename ci/buildenv/{fedora-35.sh => fedora-37.sh} (100%) rename ci/containers/{debian-10.Dockerfile => debian-11.Dockerfile} (96%) rename ci/containers/{fedora-35.Dockerfile => fedora-37.Dockerfile} (95%) diff --git a/ci/buildenv/debian-10.sh b/ci/buildenv/debian-11.sh similarity index 100% rename from ci/buildenv/debian-10.sh rename to ci/buildenv/debian-11.sh diff --git a/ci/buildenv/fedora-35.sh b/ci/buildenv/fedora-37.sh similarity index 100% rename from ci/buildenv/fedora-35.sh rename to ci/buildenv/fedora-37.sh diff --git a/ci/containers/debian-10.Dockerfile b/ci/containers/debian-11.Dockerfile similarity index 96% rename from ci/containers/debian-10.Dockerfile rename to ci/containers/debian-11.Dockerfile index 768375e..36219cd 100644 --- a/ci/containers/debian-10.Dockerfile +++ b/ci/containers/debian-11.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/debian:10-slim +FROM docker.io/library/debian:11-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ diff --git a/ci/containers/fedora-35.Dockerfile b/ci/containers/fedora-37.Dockerfile similarity index 95% rename from ci/containers/fedora-35.Dockerfile rename to ci/containers/fedora-37.Dockerfile index a22bfd9..3f34f45 100644 --- a/ci/containers/fedora-35.Dockerfile +++ b/ci/containers/fedora-37.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:35 +FROM registry.fedoraproject.org/fedora:37 RUN dnf install -y nosync && \ echo -e '#!/bin/sh\n\ diff --git a/ci/gitlab.yml b/ci/gitlab.yml index bdc5e0a..7bb68b8 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -14,6 +14,12 @@ # created/updated. Setting this variable to a non-empty # value allows CI testing prior to opening a merge request. # +# - RUN_PIPELINE_UPSTREAM_ENV - same semantics as RUN_PIPELINE, +# but uses the CI environment (containers) from the upstream project +# rather than creating and updating a throwaway environment +# Should not be used if the pushed branch includes CI container +# changes. +# # - RUN_CONTAINER_BUILDS - CI pipelines in upstream only # publish containers if CI file changes are detected. # Setting this variable to a non-empty value will force @@ -44,6 +50,7 @@ variables: RUN_UPSTREAM_NAMESPACE: libvirt + FF_SCRIPT_SECTIONS: 1 workflow: @@ -67,6 +74,7 @@ workflow: debug: image: docker.io/library/alpine:3 stage: sanity_checks + interruptible: true needs: [] script: - printenv | sort diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index f407d88..f400f98 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -9,14 +9,14 @@ # We use pre-built containers for any pipelines that are: # # - Validating code committed on default upstream branch -# - Validating patches targetting default upstream branch +# - Validating patches targeting default upstream branch # which do not have CI changes # # We use a local build env for any pipelines that are: # # - Validating code committed to a non-default upstream branch -# - Validating patches targetting a non-default upstream branch -# - Validating patches targetting default upstream branch which +# - Validating patches targeting a non-default upstream branch +# - Validating patches targeting default upstream branch which # include CI changes # - Validating code committed to a fork branch # @@ -26,6 +26,7 @@ .gitlab_native_build_job_prebuilt_env: image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest stage: builds + interruptible: true before_script: - cat /packages.txt rules: @@ -36,14 +37,21 @@ - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: on_success - # upstream: other web/api/scheduled pipelines targetting the default branch + # forks: pushes to a branch when a pipeline run in upstream env is explicitly requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' + when: on_success + + # upstream: other web/api/scheduled pipelines targeting the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' when: on_success - # upstream+forks: merge requests targetting the default branch, without CI changes + # upstream+forks: merge requests targeting the default branch, without CI changes - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' changes: - ci/gitlab/container-templates.yml @@ -61,6 +69,7 @@ .gitlab_native_build_job_local_env: image: $IMAGE stage: builds + interruptible: true before_script: - source ci/buildenv/$NAME.sh - install_buildenv @@ -73,13 +82,18 @@ - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' when: on_success + # forks: avoid build in local env when job requests run in upstream containers + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' + when: never + + # forks: pushes to branches with pipeline requested - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' when: manual allow_failure: true - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' when: on_success - # upstream: other web/api/scheduled pipelines targetting non-default branches + # upstream: other web/api/scheduled pipelines targeting non-default branches - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true @@ -93,7 +107,7 @@ - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/' when: on_success - # upstream+forks: merge requests targetting the default branch, with CI changes + # upstream+forks: merge requests targeting the default branch, with CI changes - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' changes: - ci/gitlab/container-templates.yml @@ -106,7 +120,7 @@ - ci/containers/$NAME.Dockerfile when: on_success - # upstream+forks: merge requests targetting non-default branches + # upstream+forks: merge requests targeting non-default branches - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index e579721..9cf9b37 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -47,22 +47,22 @@ x86_64-centos-stream-8-local-env: TESTS: skip -x86_64-debian-10-prebuilt-env: +x86_64-debian-11-prebuilt-env: extends: .native_build_job_prebuilt_env needs: - - job: x86_64-debian-10-container + - job: x86_64-debian-11-container optional: true allow_failure: false variables: - NAME: debian-10 + NAME: debian-11 -x86_64-debian-10-local-env: +x86_64-debian-11-local-env: extends: .native_build_job_local_env needs: [] allow_failure: false variables: - IMAGE: docker.io/library/debian:10-slim - NAME: debian-10 + IMAGE: docker.io/library/debian:11-slim + NAME: debian-11 x86_64-debian-sid-prebuilt-env: @@ -83,40 +83,40 @@ x86_64-debian-sid-local-env: NAME: debian-sid -x86_64-fedora-35-prebuilt-env: +x86_64-fedora-36-prebuilt-env: extends: .native_build_job_prebuilt_env needs: - - job: x86_64-fedora-35-container + - job: x86_64-fedora-36-container optional: true allow_failure: false variables: - NAME: fedora-35 + NAME: fedora-36 -x86_64-fedora-35-local-env: +x86_64-fedora-36-local-env: extends: .native_build_job_local_env needs: [] allow_failure: false variables: - IMAGE: registry.fedoraproject.org/fedora:35 - NAME: fedora-35 + IMAGE: registry.fedoraproject.org/fedora:36 + NAME: fedora-36 -x86_64-fedora-36-prebuilt-env: +x86_64-fedora-37-prebuilt-env: extends: .native_build_job_prebuilt_env needs: - - job: x86_64-fedora-36-container + - job: x86_64-fedora-37-container optional: true allow_failure: false variables: - NAME: fedora-36 + NAME: fedora-37 -x86_64-fedora-36-local-env: +x86_64-fedora-37-local-env: extends: .native_build_job_local_env needs: [] allow_failure: false variables: - IMAGE: registry.fedoraproject.org/fedora:36 - NAME: fedora-36 + IMAGE: registry.fedoraproject.org/fedora:37 + NAME: fedora-37 x86_64-fedora-rawhide-prebuilt-env: diff --git a/ci/gitlab/container-templates.yml b/ci/gitlab/container-templates.yml index a577028..edb4aba 100644 --- a/ci/gitlab/container-templates.yml +++ b/ci/gitlab/container-templates.yml @@ -16,6 +16,7 @@ .container_job: image: docker:stable stage: containers + interruptible: false needs: [] services: - docker:dind diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml index 713896f..4ed2c39 100644 --- a/ci/gitlab/containers.yml +++ b/ci/gitlab/containers.yml @@ -21,11 +21,11 @@ x86_64-centos-stream-8-container: NAME: centos-stream-8 -x86_64-debian-10-container: +x86_64-debian-11-container: extends: .container_job allow_failure: false variables: - NAME: debian-10 + NAME: debian-11 x86_64-debian-sid-container: @@ -35,18 +35,18 @@ x86_64-debian-sid-container: NAME: debian-sid -x86_64-fedora-35-container: +x86_64-fedora-36-container: extends: .container_job allow_failure: false variables: - NAME: fedora-35 + NAME: fedora-36 -x86_64-fedora-36-container: +x86_64-fedora-37-container: extends: .container_job allow_failure: false variables: - NAME: fedora-36 + NAME: fedora-37 x86_64-fedora-rawhide-container: diff --git a/ci/gitlab/sanity-checks.yml b/ci/gitlab/sanity-checks.yml index f843c7f..d2b1768 100644 --- a/ci/gitlab/sanity-checks.yml +++ b/ci/gitlab/sanity-checks.yml @@ -8,7 +8,8 @@ check-dco: stage: sanity_checks needs: [] - image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:master + image: registry.gitlab.com/libvirt/libvirt-ci/check-dco:latest + interruptible: true script: - /check-dco "$RUN_UPSTREAM_NAMESPACE" rules: @@ -16,9 +17,11 @@ check-dco: - if: '$CI_PIPELINE_SOURCE =~ "merge_request_event"' when: on_success - # forks: pushes to branches with pipeline requested + # forks: pushes to branches with pipeline requested (including upstream env pipelines) - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE' when: on_success + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE_UPSTREAM_ENV' + when: on_success # upstream+forks: that's all folks - when: never diff --git a/ci/manifest.yml b/ci/manifest.yml index 4259078..07f5325 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -19,14 +19,14 @@ targets: variables: TESTS: skip - debian-10: x86_64 + debian-11: x86_64 debian-sid: x86_64 - fedora-35: x86_64 - fedora-36: x86_64 + fedora-37: x86_64 + fedora-rawhide: x86_64 opensuse-leap-153: x86_64 From 93f18f515aca05ed3d0ccb3f46f0f4f2d03a890f Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 13:18:37 +0100 Subject: [PATCH 083/114] Update build receipes to new directories and servers Use 'download.libvirt.org' instead of 'www.libvirt.org' build.xml and also update '/data/www/maven2' to the new location '/data/ftp/libvirt/maven2'. Signed-off-by: Peter Krempa --- Maven.Recipe | 4 ++-- build.xml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Maven.Recipe b/Maven.Recipe index 68fce22..4578f1c 100644 --- a/Maven.Recipe +++ b/Maven.Recipe @@ -1,5 +1,5 @@ To update the maven files at - http://www.libvirt.org/maven2/org/libvirt/libvirt/ + https://download.libvirt.org/maven2/org/libvirt/libvirt/ Run the build, upload the tarball, jars and rpms @@ -20,7 +20,7 @@ for i in *.jar *.xml *.asc ; do md5sum $i > $i.md5 ; done for i in *.jar *.xml *.asc ; do sha1sum $i > $i.sha1 ; done create the directory on the server and upload everything there -scp * libvirt.org:/data/www/libvirt.org/maven2/org/libvirt/libvirt/$version/ +scp * libvirt.org:/data/ftp/libvirt/maven2/org/libvirt/libvirt/$version/ check permissions on the server, edit the top maven-metadata-local.xml add the new directory and update the timestamp diff --git a/build.xml b/build.xml index 57e5b0d..a355b99 100644 --- a/build.xml +++ b/build.xml @@ -133,7 +133,7 @@ addproperty="scp.home" defaultvalue="${env.HOME}"/> - - @@ -161,7 +161,7 @@ @@ -174,7 +174,7 @@ addproperty="scp.home" defaultvalue="${env.HOME}"/> - From 788f2c0e5c38115d8d47561a321d8794c33eaf0a Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 13:20:05 +0100 Subject: [PATCH 084/114] pom.xml: Change link to upstream repository to gitlab Signed-off-by: Peter Krempa --- pom.xml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml.in b/pom.xml.in index 8e23b96..16d34d4 100644 --- a/pom.xml.in +++ b/pom.xml.in @@ -19,7 +19,7 @@ - http://www.libvirt.org/git/?p=libvirt-java.git;a=summary + https://gitlab.com/libvirt/libvirt-java From 8309192cf85472040664249f67be1d35a8af79f5 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 13:21:29 +0100 Subject: [PATCH 085/114] spec: Update links to sources and webpage Use the new URI 'download.libvirt.org' to refer to the source. Signed-off-by: Peter Krempa --- libvirt-java.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index 1473c8e..adaaeab 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -6,7 +6,7 @@ Release: @release@%{?dist}%{?extra_release} License: MIT BuildArch: noarch Group: Development/Libraries -Source: http://libvirt.org/sources/java/%{name}-%{version}.tar.gz +Source: https://download.libvirt.org/java/%{name}-%{version}.tar.gz URL: http://libvirt.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root From a801f752773bf88722e2c790decd594a7074a31c Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 15:02:32 +0100 Subject: [PATCH 086/114] Update 'https?://www.libvirt.org' to 'https://libvirt.org' Drop the 'www' subdomain from links to libvirt.org. In all updated cases use https as protocol. Signed-off-by: Peter Krempa --- README.in | 2 +- pom.xml.in | 2 +- src/main/java/org/libvirt/Connect.java | 34 +++++----- src/main/java/org/libvirt/Domain.java | 64 +++++++++---------- src/main/java/org/libvirt/DomainSnapshot.java | 4 +- src/main/java/org/libvirt/Interface.java | 2 +- src/main/java/org/libvirt/Network.java | 4 +- src/main/java/org/libvirt/NetworkFilter.java | 2 +- src/main/java/org/libvirt/StoragePool.java | 4 +- src/main/java/org/libvirt/StorageVol.java | 4 +- src/main/java/org/libvirt/Stream.java | 10 +-- src/main/java/org/libvirt/jna/Libvirt.java | 2 +- 12 files changed, 67 insertions(+), 67 deletions(-) diff --git a/README.in b/README.in index 34dca65..15eddbc 100644 --- a/README.in +++ b/README.in @@ -15,5 +15,5 @@ By default the installs it to /usr/share/java/@version@.jar 5. There is full javadoc for the API in /usr/share/javadoc/libvirt-java-@version@/ -6. The full API can be found at http://www.libvirt.org/html/libvirt-libvirt.html +6. The full API can be found at https://libvirt.org/html/libvirt-libvirt.html diff --git a/pom.xml.in b/pom.xml.in index 16d34d4..eb9d026 100644 --- a/pom.xml.in +++ b/pom.xml.in @@ -11,7 +11,7 @@ @version@ libvirt java bindings Java API for the libvirt C library - http://www.libvirt.org + https://libvirt.org MIT license diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 3eb75c5..f14d7b5 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -144,7 +144,7 @@ public static final class ConnectListAllDomainsFlags { * Get the version of a connection. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virConnectGetLibVersion">Libvirt * Documentation * @param conn * the connection to use. @@ -187,7 +187,7 @@ public static byte[] createUUIDBytes(final int[] uuid) { * Get the libvirt library version of this connection. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virConnectGetLibVersion">Libvirt * Documentation * @return The version of libvirt used by the daemon running on * the connected host in the format {@code major * @@ -471,7 +471,7 @@ public void unregisterCloseListener() throws LibvirtException { * Compares the given CPU description with the host CPU * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virConnectCompareCPU">Libvirt * Documentation * @param xmlDesc * @return comparison result according to enum CPUCompareResult @@ -568,7 +568,7 @@ public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { * @throws LibvirtException * * @see - * + * virConnectDomainEventDeregisterAny */ private void domainEventDeregister(final int eventID, final EventListener l) @@ -681,7 +681,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, * for domains of this connection. * * @see - * + * Libvirt Documentation * @param l * the I/O error listener @@ -810,7 +810,7 @@ public void addAgentLifecycleListener(final AgentLifecycleListener cb) throws Li * @see #removeLifecycleListener * @see Domain#addLifecycleListener * @see - * + * virConnectDomainEventRegisterAny */ public void addLifecycleListener(final LifecycleListener l) @@ -882,7 +882,7 @@ public void eventCallback(final ConnectionPointer virConnectPtr, * @see #removePMSuspendListener * @see Domain#addPMSuspendListener * @see - * + * virConnectDomainEventRegisterAny * * @since 1.5.2 @@ -899,7 +899,7 @@ public void addPMSuspendListener(final PMSuspendListener l) throws LibvirtExcept * @throws LibvirtException * * @see - * + * virConnectDomainEventDeregisterAny * * @since 1.5.2 @@ -918,7 +918,7 @@ public void removePMSuspendListener(final PMSuspendListener l) throws LibvirtExc * @see #removePMWakeupListener * @see Domain#addPMWakeupListener * @see - * + * virConnectDomainEventRegisterAny * * @since 1.5.2 @@ -935,7 +935,7 @@ public void addPMWakeupListener(final PMWakeupListener l) throws LibvirtExceptio * @throws LibvirtException * * @see - * + * virConnectDomainEventDeregisterAny */ public void removePMWakeupListener(final PMWakeupListener l) throws LibvirtException { @@ -950,7 +950,7 @@ public void removePMWakeupListener(final PMWakeupListener l) throws LibvirtExcep * @throws LibvirtException * * @see - * + * virConnectDomainEventDeregisterAny */ public void removeLifecycleListener(final LifecycleListener l) throws LibvirtException { @@ -981,7 +981,7 @@ public void removeAgentLifecycleListener(final AgentLifecycleListener l) throws * * @see Domain#addRebootListener * @see - * + * virConnectDomainEventRegisterAny * @since 1.5.2 */ @@ -1008,7 +1008,7 @@ public void removeBlockJobListener(final BlockJobListener l) throws LibvirtExcep * @throws LibvirtException * * @see - * + * virConnectDomainEventDeregisterAny */ public void removeIOErrorListener(final IOErrorListener l) throws LibvirtException { @@ -1352,7 +1352,7 @@ public Interface interfaceLookupByName(final String name) * Determine if the connection is encrypted * * @see - * + * Libvirt Documentation * @return 1 if encrypted, 0 if not encrypted * @throws LibvirtException @@ -1365,7 +1365,7 @@ public int isEncrypted() throws LibvirtException { * Determine if the connection is secure * * @see - * + * Libvirt Documentation * @return 1 if secure, 0 if not secure * @throws LibvirtException @@ -1648,7 +1648,7 @@ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { * @return the new filer * @throws LibvirtException * @see - * + * Libvirt Documentation */ public NetworkFilter networkFilterDefineXML(final String xmlDesc) @@ -1665,7 +1665,7 @@ public NetworkFilter networkFilterDefineXML(final String xmlDesc) * @return network filter object * @throws LibvirtException * @see - * + * Libvirt Documentation */ public NetworkFilter networkFilterLookupByName(final String name) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 441ab96..36426b6 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -713,7 +713,7 @@ static Domain constructIncRef(final Connect virConnect, final DomainPointer vdp) * aborted. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainAbortJob">Libvirt * Documentation * @return ignore (always 0) * @throws LibvirtException @@ -726,7 +726,7 @@ public int abortJob() throws LibvirtException { * Creates a virtual device attachment to backend. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainAttachDevice">Libvirt * Documentation * @param xmlDesc * XML description of one device @@ -988,7 +988,7 @@ public void destroy() throws LibvirtException { * Destroys a virtual device attachment to backend. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainDetachDevice">Libvirt * Documentation * @param xmlDesc * XML description of one device @@ -1002,7 +1002,7 @@ public void detachDevice(final String xmlDesc) throws LibvirtException { * Destroys a virtual device attachment to backend. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainDetachDeviceFlags">Libvirt * Documentation * @param xmlDesc * XML description of one device @@ -1073,7 +1073,7 @@ public int getID() throws LibvirtException { * extracted. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainGetInfo">Libvirt * Documentation * * @return a DomainInfo object describing this domain @@ -1090,7 +1090,7 @@ public DomainInfo getInfo() throws LibvirtException { * return an error if the domain is not active. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainGetJobInfo">Libvirt * Documentation * @return a DomainJobInfo object describing this domain * @throws LibvirtException @@ -1307,7 +1307,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { /** * Determine if the domain has a snapshot * - * @see Libvirt Documentation * @return 1 if running, 0 if inactive * @throws LibvirtException @@ -1319,7 +1319,7 @@ public int hasCurrentSnapshot() throws LibvirtException { /** * Determine if the domain has a managed save image * - * @see Libvirt Documentation * @return 0 if no image is present, 1 if an image is present, and -1 in * case of error @@ -1407,7 +1407,7 @@ public DomainInterfaceStats interfaceStats(final String path) * Determine if the domain is currently running * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainIsActive">Libvirt * Documentation * @return 1 if running, 0 if inactive * @throws LibvirtException @@ -1421,7 +1421,7 @@ public int isActive() throws LibvirtException { * will still exist after shutting down * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainIsPersistent">Libvirt * Documentation * @return 1 if persistent, 0 if transient * @throws LibvirtException @@ -1442,7 +1442,7 @@ public boolean isUpdated() throws LibvirtException { * suspend a domain and save its memory contents to a file on disk. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainManagedSave">Libvirt * Documentation * @return always 0 * @throws LibvirtException @@ -1455,7 +1455,7 @@ public int managedSave() throws LibvirtException { * Remove any managed save images from the domain * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainManagedSaveRemove">Libvirt * Documentation * @return always 0 * @throws LibvirtException @@ -1724,7 +1724,7 @@ private virTypedParameter[] generateNativeVirTypedParameters(TypedParameter[] pa * at the end of live migration. * * @see LIbvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainMigrateSetMaxDowntime">LIbvirt * Documentation * @param downtime * the time to be down @@ -1748,7 +1748,7 @@ public int migrateSetMaxDowntime(final long downtime) * flag is set in flags). * * @see + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainMigrateToURI"> * virDomainMigrateToURI * * @param dconnuri @@ -1780,7 +1780,7 @@ dxml, new NativeLong(flags), * given by duri. * * @see + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainMigrateToURI"> * virDomainMigrateToURI * * @param uri @@ -1881,7 +1881,7 @@ public void resume() throws LibvirtException { * Adds a callback to receive notifications of Block Job events * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny">Libvirt * Documentation * @param cb * @throws LibvirtException @@ -1905,7 +1905,7 @@ public void removeBlockJobListener(final BlockJobListener cb) throws LibvirtExce * occurring on this domain. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny">Libvirt * Documentation * @param cb * the IOErrorCallback instance @@ -1923,7 +1923,7 @@ public void addIOErrorListener(final IOErrorListener cb) throws LibvirtException * * @see Connect#addRebootListener * @see virConnectDomainEventRegisterAny * @since 1.5.2 */ @@ -1957,7 +1957,7 @@ public void addAgentLifecycleListener(final AgentLifecycleListener cb) throws Li * @see Connect#addLifecycleListener * @see Connect#removeLifecycleListener * @see virConnectDomainEventRegisterAny */ public void addLifecycleListener(final LifecycleListener l) @@ -1974,7 +1974,7 @@ public void addLifecycleListener(final LifecycleListener l) * @see Connect#removePMWakeupListener * @see Connect#addPMWakeupListener * @see virConnectDomainEventRegisterAny * * @since 1.5.2 @@ -1993,7 +1993,7 @@ public void addPMWakeupListener(final PMWakeupListener l) * @see Connect#removePMSuspendListener * @see Connect#addPMSuspendListener * @see virConnectDomainEventRegisterAny * * @since 1.5.2 @@ -2014,7 +2014,7 @@ public void reset() throws LibvirtException { * Revert the domain to a given snapshot. * * @see Libvirt Documentation * @param snapshot * the snapshot to revert to @@ -2202,7 +2202,7 @@ public void shutdown() throws LibvirtException { * xmlDesc. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotCreateXML">Libvirt * Documentation * @param xmlDesc * string containing an XML description of the domain @@ -2226,7 +2226,7 @@ public DomainSnapshot snapshotCreateXML(final String xmlDesc, final int flags) * * @see #snapshotCreateXML(String, int) * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotCreateXML">Libvirt * Documentation * @param xmlDesc * string containing an XML description of the domain @@ -2242,7 +2242,7 @@ public DomainSnapshot snapshotCreateXML(final String xmlDesc) * Get the current snapshot for a domain, if any. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotCurrent">Libvirt * Documentation * @return the snapshot * @throws LibvirtException @@ -2256,7 +2256,7 @@ public DomainSnapshot snapshotCurrent() throws LibvirtException { * Collect the list of domain snapshots for the given domain. With the option to pass flags * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotListNames">Libvirt * Documentation * @param flags {@link SnapshotListFlags} * @return The list of names, or null if an error @@ -2282,7 +2282,7 @@ public String[] snapshotListNames(final int flags) throws LibvirtException { * * @see #snapshotListNames(int) * @see + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotListNames"> * virDomainSnapshotListNames * @return The list of names, or null if an error * @throws LibvirtException @@ -2295,7 +2295,7 @@ public String[] snapshotListNames() throws LibvirtException { * Retrieve a snapshot by name * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotLookupByName">Libvirt * Documentation * @param name * the name @@ -2312,7 +2312,7 @@ public DomainSnapshot snapshotLookupByName(final String name) * Provides the number of domain snapshots for this domain.. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotNum">Libvirt * Documentation */ public int snapshotNum() throws LibvirtException { @@ -2358,7 +2358,7 @@ public void undefine(final int flags) throws LibvirtException { /** * Change a virtual device on a domain * - * @see + * @see Libvirt Documentation * @param xml * the xml to update with @@ -2376,7 +2376,7 @@ public int updateDeviceFlags(final String xml, final int flags) * Commands for Qemu Guest Agent helper daemon * *@see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt-qemu.html#virDomainQemuAgentCommand">Libvirt * Documentation * @param cmd * the guest agent command string @@ -2398,7 +2398,7 @@ public String qemuAgentCommand(String cmd, int timeout, int flags) throws Libvir * Qemu Monitor Command - it will only work with hypervisor connections to the QEMU driver. * *@see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt-qemu.html#virDomainQemuMonitorCommand">Libvirt * Documentation * @param cmd * the qemu monitor command string diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index e2b5848..4ee86f4 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -36,7 +36,7 @@ public DomainSnapshot(final Connect virConnect, * Delete the Snapshot * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotDelete">Libvirt * Documentation * @param flags see {@link SnapshotDeleteFlags} * controls the deletion @@ -78,7 +78,7 @@ public int free() throws LibvirtException { * Fetches an XML document describing attributes of the snapshot. * * @throws org.libvirt.LibvirtException - * @see + * @see Libvirt Documentation * @return the XML document */ diff --git a/src/main/java/org/libvirt/Interface.java b/src/main/java/org/libvirt/Interface.java index 2b56e2c..1cec980 100644 --- a/src/main/java/org/libvirt/Interface.java +++ b/src/main/java/org/libvirt/Interface.java @@ -129,7 +129,7 @@ public String getXMLDescription(final int flags) throws LibvirtException { * Determine if the interface is currently running * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virInterfaceIsActive">Libvirt * Documentation * @return 1 if running, 0 if inactive * @throws LibvirtException diff --git a/src/main/java/org/libvirt/Network.java b/src/main/java/org/libvirt/Network.java index 5c9bd44..ec038ed 100644 --- a/src/main/java/org/libvirt/Network.java +++ b/src/main/java/org/libvirt/Network.java @@ -173,7 +173,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * Determine if the network is currently running * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virNetworkIsActive">Libvirt * Documentation * @return 1 if running, 0 if inactive, -1 on error * @throws LibvirtException @@ -187,7 +187,7 @@ public int isActive() throws LibvirtException { * will still exist after shutting down * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virNetworkIsPersistent">Libvirt * Documentation * @return 1 if persistent, 0 if transient, -1 on error * @throws LibvirtException diff --git a/src/main/java/org/libvirt/NetworkFilter.java b/src/main/java/org/libvirt/NetworkFilter.java index b84ffa9..c67bdcb 100644 --- a/src/main/java/org/libvirt/NetworkFilter.java +++ b/src/main/java/org/libvirt/NetworkFilter.java @@ -86,7 +86,7 @@ public String getUUIDString() throws LibvirtException { * * @throws org.libvirt.LibvirtException * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virNWFilterGetXMLDesc">Libvirt * Documentation * @return the XML document */ diff --git a/src/main/java/org/libvirt/StoragePool.java b/src/main/java/org/libvirt/StoragePool.java index f55be13..1ee4b40 100644 --- a/src/main/java/org/libvirt/StoragePool.java +++ b/src/main/java/org/libvirt/StoragePool.java @@ -221,7 +221,7 @@ public String getXMLDesc(final int flags) throws LibvirtException { * Determine if the storage pool is currently running * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virStoragePoolIsActive">Libvirt * Documentation * @return 1 if running, 0 if inactive * @throws LibvirtException @@ -235,7 +235,7 @@ public int isActive() throws LibvirtException { * it will still exist after shutting down * * @see + * href="https://libvirt.org/html/libvirt-libvirt.html#virStoragePoolIsPersistent"> Libvirt Documentation * @return 1 if persistent, 0 if transient * @throws LibvirtException diff --git a/src/main/java/org/libvirt/StorageVol.java b/src/main/java/org/libvirt/StorageVol.java index e33aab4..01e24d7 100644 --- a/src/main/java/org/libvirt/StorageVol.java +++ b/src/main/java/org/libvirt/StorageVol.java @@ -204,7 +204,7 @@ public StoragePool storagePoolLookupByVolume() throws LibvirtException { /** * Ensure data previously on a volume is not accessible to future reads * - * @see + * @see Libvirt Documentation * @return ignore (always 0) * @throws LibvirtException @@ -216,7 +216,7 @@ public int wipe() throws LibvirtException { /** * Resize a volume * - * @see + * @see Libvirt Documentation * @param capacity * new capacity for volume diff --git a/src/main/java/org/libvirt/Stream.java b/src/main/java/org/libvirt/Stream.java index 41fb548..3b6f0ed 100644 --- a/src/main/java/org/libvirt/Stream.java +++ b/src/main/java/org/libvirt/Stream.java @@ -126,7 +126,7 @@ public int abort() throws LibvirtException { * readable. * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virStreamEventAddCallback">Libvirt * Docs * @param events * the events to monitor @@ -285,7 +285,7 @@ public boolean isOpen() { /** * Batch receive method * - * @see virStreamRecvAll + * @see virStreamRecvAll * @param handler * the callback handler * @return ignore (always 0) @@ -299,7 +299,7 @@ public int receiveAll(final Libvirt.VirStreamSinkFunc handler) /** * Remove an event callback from the stream * - * @see Libvirt Docs + * @see Libvirt Docs * @return ignore (always 0) * @throws LibvirtException */ @@ -331,7 +331,7 @@ protected int send(final ByteBuffer buffer) throws LibvirtException { * Batch send method * * @see Libvirt + * href="https://libvirt.org/html/libvirt-libvirt.html#virStreamSendAll">Libvirt * Documentation * @param handler * the callback handler @@ -346,7 +346,7 @@ public int sendAll(final Libvirt.VirStreamSourceFunc handler) /** * Changes the set of events to monitor for a stream. * - * @see Libvirt Docs + * @see Libvirt Docs * @param events * the events to monitor * @return ignore (always 0) diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index cbe62b4..8cd6448 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -18,7 +18,7 @@ /** * The libvirt interface which is exposed via JNA. The complete API is - * documented at http://www.libvirt.org/html/libvirt-libvirt.html. + * documented at https://libvirt.org/html/libvirt-libvirt.html. * * Known api calls to be missing * LIBVIRT_0.1.0 From d37cb18ed32244e640d7a7ffd9cfd6815317487d Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 15:05:00 +0100 Subject: [PATCH 087/114] Use 'https' for links to 'libvirt.org' Convert the rest of the links which were not using 'https'. Signed-off-by: Peter Krempa --- debian/control.in | 2 +- libvirt-java.spec.in | 2 +- src/main/java/org/libvirt/Connect.java | 24 +++++++++---------- src/main/java/org/libvirt/Domain.java | 4 ++-- .../org/libvirt/event/LifecycleListener.java | 2 +- .../java/org/libvirt/TestJavaBindings.java | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/debian/control.in b/debian/control.in index 06ab6d8..a3d6544 100644 --- a/debian/control.in +++ b/debian/control.in @@ -1,4 +1,4 @@ -Homepage: http://libvirt.org/java.html +Homepage: https://libvirt.org/java.html Maintainer: Wido den Hollander Section: java Priority: optional diff --git a/libvirt-java.spec.in b/libvirt-java.spec.in index adaaeab..809c889 100644 --- a/libvirt-java.spec.in +++ b/libvirt-java.spec.in @@ -7,7 +7,7 @@ License: MIT BuildArch: noarch Group: Development/Libraries Source: https://download.libvirt.org/java/%{name}-%{version}.tar.gz -URL: http://libvirt.org/ +URL: https://libvirt.org/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root Requires: jna diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index f14d7b5..28f7a6c 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -287,7 +287,7 @@ public boolean equals(final Object obj) { * @param uri * The connection URI * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final String uri) throws LibvirtException { this(uri, null, 0); @@ -300,7 +300,7 @@ public Connect(final String uri) throws LibvirtException { * @param uri * The connection URI * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final URI uri, final OpenFlags... flags) throws LibvirtException { this(uri, null, flags); @@ -314,7 +314,7 @@ public Connect(final URI uri, final OpenFlags... flags) throws LibvirtException * @param readOnly * Whether the connection is read-only * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final String uri, final boolean readOnly) throws LibvirtException { this(uri, null, readOnly ? OpenFlags.READONLY.getBit() : 0); @@ -330,7 +330,7 @@ public Connect(final String uri, final boolean readOnly) throws LibvirtException * a ConnectAuth object * @param flags * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final String uri, final ConnectAuth auth, final int flags) throws LibvirtException { @@ -368,7 +368,7 @@ public Connect(final String uri, final ConnectAuth auth, final int flags) * a ConnectAuth object * @param flags * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final URI uri, final ConnectAuth auth, final OpenFlags... flags) throws LibvirtException { @@ -384,7 +384,7 @@ public Connect(final URI uri, final ConnectAuth auth, final OpenFlags... flags) * @param auth * a ConnectAuth object * @throws LibvirtException - * @see The URI documentation + * @see The URI documentation */ public Connect(final URI uri, final ConnectAuth auth) throws LibvirtException { this(uri.toString(), auth, 0); @@ -520,7 +520,7 @@ public Device deviceLookupByName(final String name) throws LibvirtException { * an optional set of flags (unused) * @return the Domain object * @throws LibvirtException - * @see The XML format + * @see The XML format * description */ public Domain domainCreateLinux(final String xmlDesc, final int flags) @@ -536,7 +536,7 @@ public Domain domainCreateLinux(final String xmlDesc, final int flags) * @param xmlDesc * @return the Domain object * @throws LibvirtException - * @see The XML format + * @see The XML format * description */ public Domain domainCreateXML(final String xmlDesc, final int flags) @@ -551,7 +551,7 @@ public Domain domainCreateXML(final String xmlDesc, final int flags) * @param xmlDesc * @return the Domain object * @throws LibvirtException - * @see The XML format + * @see The XML format * description */ public Domain domainDefineXML(final String xmlDesc) throws LibvirtException { @@ -1153,7 +1153,7 @@ public String findStoragePoolSources(final String type, final String srcSpecs, * * @return an XML String describing the capabilities. * @throws LibvirtException - * @see + * @see The XML format description */ public String getCapabilities() throws LibvirtException { @@ -1616,7 +1616,7 @@ public String[] listStoragePools() throws LibvirtException { * the Network Description * @return the Network object representing the created network * @throws LibvirtException - * @see The XML format + * @see The XML format * description */ public Network networkCreateXML(final String xmlDesc) throws LibvirtException { @@ -1632,7 +1632,7 @@ public Network networkCreateXML(final String xmlDesc) throws LibvirtException { * @param xmlDesc * @return the resulting Network object * @throws LibvirtException - * @see + * @see The XML format description */ public Network networkDefineXML(final String xmlDesc) throws LibvirtException { diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 36426b6..da5b357 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1297,7 +1297,7 @@ public VcpuInfo[] getVcpusInfo() throws LibvirtException { * not used * @return the XML description String * @throws LibvirtException - * @see The XML + * @see The XML * Description format */ public String getXMLDesc(final int flags) throws LibvirtException { @@ -2344,7 +2344,7 @@ public void undefine() throws LibvirtException { * Undefines this domain but does not stop if it it is running. * With option for passing flags * - * @see + * @see Libvirt Documentation * @param flags * flags for undefining the domain. diff --git a/src/main/java/org/libvirt/event/LifecycleListener.java b/src/main/java/org/libvirt/event/LifecycleListener.java index 1f7d7f6..d7e9806 100644 --- a/src/main/java/org/libvirt/event/LifecycleListener.java +++ b/src/main/java/org/libvirt/event/LifecycleListener.java @@ -5,7 +5,7 @@ /** * Interface for receiving events occurring on a domain. * - * @see + * @see virConnectDomainEventCallback */ public interface LifecycleListener extends EventListener { diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index a875bdd..79173c4 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -370,11 +370,11 @@ public void testDomainMetadata() throws LibvirtException { dom.setMetadata(Domain.MetadataType.TITLE, "a title", null, null, Domain.ModificationImpact.CURRENT); String xml1 = "value"; Pattern pattern1 = Pattern.compile("\\s*value\\s*"); - String uri1 = "http://libvirt.org/test.rng"; + String uri1 = "https://libvirt.org/test.rng"; dom.setMetadata(Domain.MetadataType.ELEMENT, xml1, "pfx", uri1, Domain.ModificationImpact.CURRENT); String xml2 = "value2"; Pattern pattern2 = Pattern.compile("\\s*value2\\s*"); - String uri2 = "http://libvirt.org/othertest.rng"; + String uri2 = "https://libvirt.org/othertest.rng"; dom.setMetadata(Domain.MetadataType.ELEMENT, xml2, "pfx", uri2, Domain.ModificationImpact.CURRENT); assertEquals("a description", dom.getMetadata(Domain.MetadataType.DESCRIPTION, null, Domain.ModificationImpact.CURRENT)); From 14153bf8dc55c4f064ae543f744ec55456b6bea8 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Tue, 14 Mar 2023 12:48:31 +0100 Subject: [PATCH 088/114] ci: Build and expose API/javadoc documentation via gitlab pages The 'javadoc' which was originally hosted on libvirt.org is hopelessly outdated as nobody was updating it. Make sure it's up to date by generating it in gitlab. Signed-off-by: Peter Krempa --- .gitlab-ci.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3575c07..8ea34f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,4 +53,31 @@ stages: - .native_build_job - .gitlab_native_build_job_local_env +.website: + script: + - ant docs + - mkdir public + - mv target/javadoc public/ + artifacts: + paths: + - public + +pages: + extends: + - .website + - .gitlab_native_build_job_prebuilt_env + needs: + - job: x86_64-ubuntu-2204-container + optional: true + variables: + NAME: ubuntu-2204 + +website_local_env: + extends: + - .website + - .gitlab_native_build_job_local_env + variables: + IMAGE: docker.io/library/ubuntu:22.04 + NAME: ubuntu-2204 + include: '/ci/gitlab.yml' From 30c6079541b1c82bc99fba6f10072d0683c25976 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Tue, 14 Mar 2023 15:43:16 +0100 Subject: [PATCH 089/114] Drop Debian packaging What's currently there makes for a barely functional Debian package, as it's missing a lot of the expected information such as copyright and changelog. Plus it contains hardcoded version information that are several years out of date. Even if this wasn't the case, there is a strong recommendation against attempting to maintain the Debian packaging for a project as part of the upstream repository. Signed-off-by: Andrea Bolognani --- build.xml | 19 ------------------- debian/control.in | 9 --------- 2 files changed, 28 deletions(-) delete mode 100644 debian/control.in diff --git a/build.xml b/build.xml index a355b99..5a86830 100644 --- a/build.xml +++ b/build.xml @@ -9,9 +9,6 @@ - - - @@ -97,22 +94,6 @@ - - - - - - - - - - - - - - - - diff --git a/debian/control.in b/debian/control.in deleted file mode 100644 index a3d6544..0000000 --- a/debian/control.in +++ /dev/null @@ -1,9 +0,0 @@ -Homepage: https://libvirt.org/java.html -Maintainer: Wido den Hollander -Section: java -Priority: optional -Version: @version@ -Package: libvirt-java -Architecture: all -Depends: libjna-java (>= 3.2.4), libvirt0 (>= 0.9.8) -Description: These Java bindings expose the C API in a Java friendly way From 2c9a28b552037ba565d58b1b1302ef36f3ad6dfb Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Wed, 19 Apr 2023 16:40:23 +0200 Subject: [PATCH 090/114] site: Add simple website for the project libvirt-java has recently gained its own dedicated URL, but as of today we only use that to host the javadoc API reference under a subdirectory and navigating to the top-level leads to a GitLab 404 page. Prepare a very basic website for the project. The contents are the same as the current https://libvirt.org/java.html page, just reorganized a bit; the HTML, CSS and graphics are taken from the libvirt-php website. Signed-off-by: Andrea Bolognani --- site/downloads.html | 85 +++++ site/graphics/libvirt-header-bg.png | Bin 0 -> 1136 bytes site/graphics/libvirt-header-logo.png | Bin 0 -> 36843 bytes site/index.html | 132 ++++++++ site/stylesheets/generic.css | 72 ++++ site/stylesheets/libvirt.css | 453 ++++++++++++++++++++++++++ site/stylesheets/main.css | 2 + 7 files changed, 744 insertions(+) create mode 100644 site/downloads.html create mode 100644 site/graphics/libvirt-header-bg.png create mode 100644 site/graphics/libvirt-header-logo.png create mode 100644 site/index.html create mode 100644 site/stylesheets/generic.css create mode 100644 site/stylesheets/libvirt.css create mode 100644 site/stylesheets/main.css diff --git a/site/downloads.html b/site/downloads.html new file mode 100644 index 0000000..74f949e --- /dev/null +++ b/site/downloads.html @@ -0,0 +1,85 @@ + + + + + + + libvirt-java + + + +

+
+ +
+

Downloads

+

+ The latest versions of the libvirt Java bindings can be downloaded from: +

+ +

+ A maven repository is located at + https://download.libvirt.org/maven2/ + which you can use to include this in your maven projects. +

+

GIT source repository

+

+ The Java bindings code source is now maintained in a + git repository available on + gitlab.com: +

+
git clone https://gitlab.com/libvirt/libvirt-java.git
+

Building

+

+ The code is built using ant, and assumes that you have the jna jar + installed. Once you have downloaded the code you can build the code + with +

+
% cd libvirt-java
+% ant build
+

Maven

+

+ Up until version 0.4.7 the Java bindings were available from the + central maven repository. +

+

+ If you want to use 0.4.8 or higher, please add the following + repository to your pom.xml +

+
<repositories>
+  <repository>
+    <id>libvirt-org</id>
+    <url>https://download.libvirt.org/maven2</url>
+  </repository>
+</repositories>
+
+
+ + + diff --git a/site/graphics/libvirt-header-bg.png b/site/graphics/libvirt-header-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b269ed582445458086dcdc00acab2e737643fa65 GIT binary patch literal 1136 zcmV-$1dscPP)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RT1QQbtIdNWrKL7v(0!c(cRCwC$ zTFY|dAP^KVa7zCFpHeyanEXf{fW#i!HJJq=Teg!5&gifew_C$B(*u}VQ%afc@v+mL zJ{Jo6$vU4LYn5P@Wx30W(Z+ljV@fIQzxax$ivQ+s89cwX9KU)+#$0`+hnRVu@3vx< z^o>dCPS2hQXU4za`7foM^PlT66{Z`sR!oKM7xsON@=ezClj+&ta2mYe=y)?F`y0Zxt_{{U!S+Y)&)|FWq4v&$-(UUVy&C!l@H6vaog}X=j4{iy@W)b$wU&d* z5WpqBz3OOhLBOvrOPI4Pi{x8t0amGF=t?T*!(Y*A-aJ5cBf@$2@ZO!5j4v;3dL3R$ zkweJ&Vw~fw=JTHwtN9)prwWB1rsis`XJzTzZT@ykwE3Onw?3Eod@c7}I$7c~r)t%5 z75{u|aLaA;t30bNsIADltMP`zkN1i^RjtlJacZSY-ncmNLdm>p_ZSpES`iyuyW8%? zd1<{e&hRtmcCU)!v z8ykm2l+s#DL_`G34vm|`;b4sM-V+f{334|W7dNl3uh!a>Qq_V)1e_0CjKj(;-s88p zbIyC;!+Y`fjT>X+0}*&^*`aYtDWL_u_c)b&e0=ahc3j-Nyu3`)B&~=R^xhARo5SIN zRT9>e)*l+DoHITX9hZJ-S?qEx-sA7Zd-3;<+w$q*;QKIWVu9XD9053C$xj4|Rm0q<89$Gn6PTI)-`oLY{bQfgbJ<;(cU2Yi_);^3MD z?ZC$?q?A%uWkkK+PoD_3}r|K0e>e2o6Tdlja_RG11=VJb|8sW26$!c>?FQ(-Dh zg{d$VrovR13R7V!Oogd16{f;emSQ_a-Dj2<{#j+}+(}aCZp~K?ZjT?hb>yg~5Wm1lJHCgy0(7UBgb^&uh18 z>sPh=-#1fp>)!6uPoIAJbl=mbd!kg8Wl@ockYHe7P=Rt%>M$^{iO_o+Lq$d zCjk9ZL;K)brg6skQCaWuE8}Gi0pmNppaQH1-47Y3D{s~o|yT|+r zw>oRhgx(~0Ij}R(SGeRxm_cPvbV_J7|6*$XH2$`!h;{n5e1Y)hDATBF@vVCx=s@=S z)9W>jva<@=_qM`FQ$rXRPl^EudR^kj1MkxEbFIdDEi1}WwCmmSZ*zGRs_w&?{6@TA zXPJ;lUraoHseVwYX99SS!3;k48Y}#+179f$ZlO)thh(a3R`Rp!Zh}RBzYX*W$xN4! zCmrYQt75c9=NWg}eoCtilB@SrUBX^Z$gf2oZu<-9)yt{ZXW4@U5muvb;v=;i!G-#Ng(q zYi)`O|Jm@q>{q_as%(}Dw?l^(leVp|9kH4XSXKHBj%NL3)nuQ#OrL-4qN^%^zF&l- z2C4-V3~41LkSEUqT_<3e-ju)%ki5bY5VUeG(QlyK%@}<9oCemjaGg+g84&xtnwnjT zek2ha08J*|G=b~KgzFNzFNv*eQm9H z^oyzo$AaN{VpvV*V0(B)!gY)+1#nYWVQZ zlet;Mm$2eEC4PAlrFN@rNiYvab<1&|B`pVH*Bktwp-7s-yjQtv^@3Ryi z(mJdWtoiQjdt)@+;NR zW}0bWKYA!V8zmUc0Muv-$+D$mjE=XP4K4SVzY6GgcTCYgyP0>y`Wsm6E@jEChF+g8 zf?>pes6t9zNurEv(#(n1xv>^!9P8>&=DWL z$-Z!1g|0?5RGM=)rUa5cKAG*6*6zlOk|J?@su{&}gNa#S1MPg-$WwU>!ZbQTPSb|* zkV(&}3P{O4fFRDy2TREx|}mxu&!N9+M-LI*z-> zmkr0bzfWgymk%dq()&rrtvM?D9fnP%>rHYMJm-hA$h7D~21`kSlooNd5UjBx=AT(lq7UG1%{v?~q&M-i^6e#moPSTNK~@L?Gu# z;4O}Y%)DG<@CLhXMhnq~1bt~Wb;Ov?V1U@Kd#~v1*UWD}`llPap0-AssQuA}NLkX~ zv6)hc-wg%97w~;j2bwM@0^;?DKlC0du-WVVe)C8I3xx zUImAay{qEcNTsS7seY|@WFE8^+OMh}d^{-nvB5AI`JgvE)CTE(y2(M;xeT_Bzna5Q z#-QL%D#)akC~TLAqkX4@F{4sdd^?9cwSaKOeMj!O3f6ygzdnXpsypMR`!tVH>qnS? zYPsNH*mk*KqQhB1rNR&Lp=b>BgV5`CW`JcR(}4Wi$Gc*OHthpeJl>mkLjZcpwmwjb zwdi%HX*~`P(PXkiA1(YZE+p9N4UH4J6{+Cnyrk&Ss-5G_puNu@5vW*X@tWipz5um3 zwX?KVV@NhM6Ok;id1~`Y>>RgWIaEaWAzZDDB7a9jm=GJ(g%kQrkJY(s_@+vnp8AKG zJ7&ML_H`PU-v-4KA;w?$k6Iq{ z+4er7iKzq*7;R2b0NZ(LT6h#Vt=uty&$?X1j`#XJLi>seC!s>(q%oqySiDf8LXQ_> zan?HMEUz`GO-krm4rLx2B{hOXwn?wzq%Ycr(nA#Epc@0z{Owak#@iv9Sr_4&XU;az zKH<9BOi)*+7gh-=EP?LC>&f^0bx1n4`|A{qC-3Bb@xbkM%+&OszGX^o$>5i8`-I|%{Qdr9;($Pp?HtBE$qQdBh;cRMca*k>VPg^kilUPK1zG5v}Ny{3uajg%k_Ga?jC#=t%!J z#y2I@1Ug@3RHN{XslB-(iIzewCx-2r1<>GtnK-`*aK;!#P!wZRja^$}^erp~C;37{ zHN{4nb2DMEzFeG`6*gq>_R~?_v2Z4VU{R_tDJK@pWXvkLqNbwhFq;dtNp6$raad(t%O5!yIS9Jyrahc@W?Ceot=r%v!T$Gki98*e@Q zhUsnMU@%Nc|3V@y4iaLQdht&(JW1@JS&jMa7(D%BdbJ$Yi&efHDFs)|z$~iw+Bx#b zy2UB-g}nVAT0<}o=FB;XwGB5gaKGcQ5NE*eB*Mn6Q`KVXp!7Q5y6C(=Yak|#M;c_E zwiylXjMNt-9F}I?KvHQysQ2Vv8-&MDWsFLBZ_<2__(;L{8PD68osaYqqmxVos zV6%8277;p_x6--rCHuATD)Y?qI!XbKF5>s3=t66?4EeK!ls9pKL4)jkA;i?Guvg(2 z6UxEalPs?YTywr=EbgmhT$9S7tlYdt>fFAT+&BGUn|HtEtu7x!mgZQd%trX$@Opv53oySQjr=_kOoCF|+mIg& z{%=u~C#-1a&V`?flNx`u`zQX2;Ya^i(3}bm|AFAV|C!q^e#s6?a;DvSb79ptQm?p9 z)+(Ib-=4$T$ICGL#L4V3tFVl<3svOKaMvpU*b#L(vtx}hcbh4+h6r~qvv1?e_O2w) zl&6_J(G;sKA172{**+C}IzG3d0WRF9MKQc@Wc5B?tI&t)P*JA0So!;c46?<$GvB9l zvRD9mE=O#-CWRC>O^d4@N;Oy5O1Wn+qQQ-YP%*j>C71t}jF;FPBF|1JQZ@JOufWH` zW8Co9&8>K_=|@V{WW9>f+Ibo*ajgiUF+BW;oM8ACAr=R0tjNMvyxne7o9M@Or&ndp%-`>gjK9D!-+5;66UPxJy*TiS`oMU_#1!6`P1uP0O|` z>?ZIz%9q9^)Wu#xQh-6SX?B{N`ZoSuXlaTpmwq&G<)`1KxbiduLp7ZPn$_!<;#F;9 z&&h3hz1G$|itKn*l>1vi?(t_7uh;3ffL&|t0CvCj2SdiD_3w2WUcw;@#h5e!b|1GkD_8 zYB{J%T@&G*X?S)sxkKkYNqLJVc+_KWl{O_AW^$UfD*8-QVnRV=R78$G#&-8*Qb+nO zZ}mkzYHzr~1dlKv;r00dLm%t-OUb=YxxNklULA{rpq3{?)0_KcB9yhAa%B}eCDCI? z;r4+|6dM}laI?b7VB!J!qWQ+DTvd&m@^93dyJ&3a{VzCCU*dur2Kk)hl)Qpxdl$Eg z-^9iztVE#cP^P5|s^j|?G_AkA@Y2Ot#&Aq_Icde%emy1M`&LCJ;rUhE?ZK!4sUqe) zEtr6iHDK2#ew643N5;H{;Zj1%VNvzBH26nJbJ;@~ve5COBXeUG9xql36DJi6zzM;J z!eHcF-=C^E59bbj@4(S&mhYnt*~P*ui_UD57>`YjP9ENgo`?MYb(7iLuad2LC#HO7 z>*2gLhpxPs!1&%es0E%Z7E|)&xd1ik(iO*{@`3ylF+pP3cX&rAVZFSlCWIA7|Ec?th^Qjg*Jxsh-&Up z5k-6xlJqBx4`JHx6j`2wX;6XDF~#fpPG{zI2kVpEmML|L3pLmh=iEm1SJ71t><(bl7$x2%9Yzm>a*$b&g*ffYG%g2B z&Fa1l$rCpeRbZ-M%W5i>`;l+ejd{m3XxG&52;U=1^7~t69&*Vh^-_QV;-SF|@^t+& zsoJ?X$n=W|o@WWI0a1oXZSwE8b;aO`EauUFzv<~{y3j~5R;NRA>*D)5On|WrPsBZZ zFXE9i^maWEq2>zQqyEN96jg)yWAl7N5?ytG}aT$@lSAv7v{I=-4IXadT7;8Wr-gg+_mL zl@tZcK@KdY79cZA7B2@UXmkh$Mo84l$<*A=(hXo{X>IE$OmW)LLjkb05T?-KR$^0f zlC-q3mGg12)bLT(H21MH=eM8`6+sg65`Y3YSh|@4yd3NuT?M>^DgMG0fZqQ}W~Bi9 zCE{i$Orfi!3XlZ3SOU0MxLDYjrM+xDI4DGr075PnRs!l$GJl7FJ_%FUxVbqAu(Eo3 zda`(OvVdHyS=ssd`B~XGSUEVDp%Tol-i~gjUd)cJlz$-ph9PC?YVKm|7Ve9u776%$_J~LsS_(Z3mdD01M9z+aCMXRfP(y8q5oqE zS50UTjaA*!73A(>ZYk|y>F7rJ?+_N||19t1?qdH}b1ckRE$uBGprWqOTG{`jN?D+i z>OV{Tp}^YK!RfD3P_q9+(#_WDUu6APEK|UPIg{X zODl_ig919bx|uqfTmFH9g0t8{am>tkIQcnvc$oQk%-ET^EG+n$&Dc53m@U}(d7xOl zJUpiV4x!>=3$;p9`+wK!50nKIik*|2pOcN>l$no@ix;X5H$Sr}x0Mw$KL@v^89zS{ zFFzmOU)orh3&?<69896zY3pEWZOQ87X#H2lAHoI1Re{1394u`AN>Q~pb+dvN5T;PH zb#(XoSB9pogQbR>=^r-PdH6Wk_<6Yapcg(~cK&|}X9+p|Q-Jmw zml+2aJF^8R8xJ!V4<9!(KNk-_GaIj&6{iKaB|9fC_g^gh6WtYL<>qPXVkvG7~dW{J#^%`u7I2{+ToW(PAOi|BVx&zXbkml7W`{ zTN-rog3g7k|C|i}&KXqS|DT_~_r?FuDgc20R`NgM_rG-gm#+U21OFr8|6137>G~fr z@IMm%uXX)DqYLR@%PC7os2Ai3T`WbsQY3&bv=Gb`WTjwU{(K9%%2S{zZ=K}yTw!34 zvH$#FVX|`mh`n(GDoMZDg~P>!#ZkDeiiLpzzyPJhHN6&(x;!%s7u|I>L_Y$Y^=8!WjxlWkTw{la)`!~ zPTGV^#{QD|1qC5QNUYdZE8<{mBh2UYK0!yzXwK+eBA;aY=`A-=uQzY!<5%I`Jf@$` z$1_DyMI*`v4k`1sm)Es{xn4rb6m?>4h7#I1KE6JD-WOD&59XrH)y^~fT(h&YRa7Yh zyF0By+@mgS1BxP&6zSA@4DT0N`n!aextk+i7kB*R6`D8+5)W_p#rPO(Oryb+JW`UO zRPE%>{-tRUelruNOiMhOib_oiC$zn{Msn*i1!YUHm5t#>OeN3 z&y>YSgd}CPUD!?)nhZ=<>P)+?ip;cae4^vo3YP=3wpH@*YN;4-suqO%4rfZz(h`~$ zQVOr;OKtRW;-)TYZbWKS6xq1Aq^PjO)lzdcT4y~LZy8^=5lZ+|4m?`D^^d!A+|7&| zTKl@3-L%F~Rj8=uRx+#l3)=+T|h`EGM1Is+8ZyEf5~ z-K9v`@be^tw=eR;WV6H9T*2WqMxC?AXOf;K_>Qh^`8-tY`PAn@@uXTL!w+X#~MoW_h( z`{C}^Pu1P1*luXS)6`db$CSS1jOU`q(2VM}CYDrkN+tydrzfL{LsA*c6ph0a!i&ZE zq}m#jSz#+9E6c8gEqzY)NxQWfkF^EGk&-JzCxoiDEw>g?tT5Gj)6;3Vhi4=qvptK`W^DcLIzm}a>~ zts1VbZ#c5`$n%x3)fV>;4>rGb`wRI!8Iub6p&K0^w|;cc$uQCfXt1!iByX$x%^xh`$7g~S=*QMP&+ z;3(4!f--TDeA*vBhE~jdGgPXboLYntoS?H{XKu?xOXb7vF_Zhs{&R;OaO?3odz4qf@AL}wP-dtHH%+U0zy0gL09>6- ztRhXw+OF)J-$-;c#W-AuctTXF`;|K3$~R#Iv#gBpFk2#B@ZiM-$Mf^^r+P)zRJIs+ zj(wEy!^G@tbB=r~j;1~d5m_~;uE=`Hs+REi5ONshWAIr>fo7T%oU}xvl!ffTXT}^8 z#k0JxA~dxoN=mham@Iat_v}Dw~xFjAWe(=0I8wlMktFA zI$baj${hyc`sL#^SDYMGFa#1BVtS>U>CzVJ=yi~u^)U8WH)6q2GHVGWyx zcYfWuKZ|plXS=7eo}S0}LG$`X^MmzF9Q#}qnprkn@)f#N>606`_lS4THjwD4(_ykR z>?oP(>-zGZd3UC9&a%VyAV;s4uNIsm^|4#+Io)2cL z3YR3&Hj!g&L4`%0GKzr~@it7NXLsoBiq!9Itns!bhvLFxCUdIf9l{* z%FrA~1w7&#J85i*4SE9bE;ZLNAxqBl2cDqj`R?c$`(JZYIIxE!yonm3*mmXj6G08s zLQ1kE)KfzYlOXVkbT?h1qlw?tBR?P8cZ&jE20Rl{-|#8X z7v`D4P1MPE$Z-4uLSs&{w1MXb3OH{5(E6!VE!d=~z6?2&e5JxRyk9n*B zhG_g;W*}m6C?IlTjzqnk1y9MFNiA~ytz7QmNEkEtswgxPcnfCFHhF=O;^ABD}}@Fy2%t< zBUm-&lrSloxY6O_0=b2{Oi!6WG_|{Y1-O zXLoDRZQP)4%F@+mH=FWweBYo*lTKiNxL$lK+=y*gH|wFP+X7jHXfkZO@Po0OtJE_k z^sIThB!mp!Q{?V^e-Uxpbcqec~F$P+QOJG^^YOvfP7gWj{I zLWTE*Z7lVgquscMlXjNtlP*u0Wg_cN6e0VK+pQCgNK7e&6g$b1Ro(zgcwZ6&1EY1C z@fb=H8hZR$@0~H}LPKC2(va=KZaL}w26&>lF7Ec~;v~fLvZ7r;=(o+YlY_!jJI6LxT1o%W8SPGD|bv)fehb=kV}|eN8R(K`gV^ z*qGFB#jmi)+FO^bC`3J`-rii@IJzs_FYCtfc{tbxUEn3_ z9P_W#e``J??O1Wlp`Kko+%?_}v(w=d746vnwO{Sw(4_%&&sH7+K={pCWZn%49v!7Y zlNqyd2zQNEM2r)Ylcom(VP;9c{PHw`yJj4t6=CpY8uVjjz|x)L;)AU-n@43(jjrhZuoa(uy-8GGU7?Hr2O#b27{ zIhdiVf|!_?*ju!-#R(kk!gY3ZJ;-kKg-{xdI3(N&^gHk6QgBW7j0WW^?oveuBB+9> zj`8p}sIeiY=cSjDHv*<;j~_1*tLFWd0E>>s`1UnNn_;{mi>$RZZIBquzAuUMTBP|B z>SC(YTU+9()su$C)T#4dIwll)BWp>wft5GU+MB%|i`9X<*_c#@^G2Z83yvk5OQp=L ztl0Va!)$J2gIHlMnW?5uR?eBH6O(nVIVBc4Y*Ls?&Ub61U420(Otpi8cU|ddX9~2e zP8MuRb#yLno>HNq>0axiNGBMYemxE?^ znL7IB!Ui6QhnX|t;Kk3VFo19dQcezTvleBkK(=u8N7yWiUYO2IC^qDe-|LY&GY+uRRR8xRX> zvyZ=|nN7?E`4sVeN zc_j{vA&n2dN`?Sz4E+=xkK8~rQ~ATwBR=|tAnS5mN!F(T;_=42lV6Mj5~l6#0+?`L zT#x7cY`U}TYD1yEOP}eYpg?6?uC}>k=RgdCj8<+_XXC){FXS^I;~@q-%sB|NlonBE zz2hXMT_sPN;pWT3IP3Z4=>ul?q9EcYqG%>lUAzUC%-Iy|rw-cR2o36OlNM9(YFAV> zAEG^BgLu=^=}}IKbVpJYY4-Q_dQWeAEY%}np0-j>2Wshr0*{q0WC&O46QwbGATxw0 zmkp<0_z`a+){;3lC);v`Gz357{~;qQV;Jfpo@Wvo8|ZJ^&C_Hkl>+tfxKnnYDd|a< z1S4X4XR-Z-L{}OhU}vd-lUmYkvV54{17WjJsosSr~}pu+|^RL){HCp()w3Ai>L z)1Z1ShRsZj8PRD>Wy~;x8qpD~M9k4$j=S#oOKSa`}+OYTT^|N!?lv!rhh#ZS#w~jUB$P z4SX?>;zIt2{TlfDB;Q@lc>uB~yAG;BasJRu++(Hj1O5u%*u2Fl^bILrpBKycT4zA? z<{jyg69MCUN^K^qdj2x2T|{_E6g0HNsoiNm5zYMYB8a<|HX8vIUR+VSn>@7&*7P-7 zyRG*qzS8U2`iz7rPA)dN1r9wr9N`_c6sZFU6TH;?7MZ6i5x=0|-oC0v7Bk2j1*9Ave66ux&*=AaB;Hp>P_`ZptQ#LNww4?wR0qE+>$C4qi;eE$CTSuqF z>;9ha#KGH2k@`tfB9~W6Q)=JbaezC;x1s}eN$ftw>;e*|RBBYU>6wQ5+cQ@exWZvKK>-bcvAYDffOWK&b%Y>T-a%QJJk8~YBT2)n;STC-AA!nBbzkT$3LPyV`$^%}`?;3AC zTwtBshX>ab({mhu!FXNgvD);4K`S$qC>o+i#@_U!)krz{x&h8Xf)RUdDwZ@h0%d9Y)b zsSB1C$$wLxd!8rqb;!CdnwmprJl8rOT2;tjS6O(diFFV1&M$kv$f zrYmthGMq;9rL087qC|H40Rd3QhBZ$lY^%nYnn>xJ<8{Jso2u3MdPcv)3wSH_QSi>e zVy7%Z1fc^cz9Q2Ycrg#^+`;tBV#aN9h8n~BHJHG&}SnkBi>gdALY z?<;HKN~<9vgfuoaneHL98{ZrO%7AjW>UrOh)R~!?+1c2{OxOnex{2O@f+)d;7p;G! zTh&Z`keO^`+yh6csPUQt9+VP#YFqM!PY;(C=Wu?`ijI{3{-ScO5O_tFF=ol%XvdnV z8EsZKlJ}Jb!R)xQ#o?2Ds&Q{=jKW~E-h?HrlfG21i3*Eaox`gvbp6ld!-pdsH)~DN zzBRN9Bgs0$Qo6Il@F?R_j-Lv2`;GLHzgfUb!Pc2}#i4y`x4a-$@k3p5{)SV!5%)o* zJp(tp@Fw0TKXIpjNV=-F(0N z`CE@u)-@K2p1I+lOk>WKdvfA9qZxSNriC#KJufo>HB7Pu$4u)ZiP`k$%lNcWtPgb3 z8m+mUY+NYB@Fo0c;=q#1N_U*wVbR~tc>yvt<$QWzD&F!cj!k~RT)G?!&rb{?l9oPAq zH$=-gnJk&+gM>IyqD@C6@Vf~`4I=|ceO^ffIfA$0Sse;v;1uSmNA4-A>etZ2N|LVV zzGm@apzMWI<%Q8KSN}G`u5=bYVNk<|9BNyN#%~pkxTGLK)XeBJY5bFPXYU|%l#!Ko zHpxyzbGnX~q;u5Tj0y z&LIQCN^8UU!89qPaJ0FqriKN;%lQQ9>1Q)Dq03jIF6&)SC#M0)_B{Qk&%aO42L_RK z-=H^HQ3QWHZe<2l!*q3Z`CX(3X1a>LAT#~MWy(jNZq#L;$?0%P(q)3qC{j4mE|6%^ z_2J!Haz>&r5FKqktU^Nu4W_h1V?FJ`81>o=W9DnaIY3WGW%ebq^Aw}PY?gX%YcQgO zFZ{>d-R1p97Td1gud{;&P^o6;lUQs?F!#U%AoGxYVW`17q> zyNchQY9o2?%+UKmf+@yG&#Qp1w8o6MP*;7|PkgStDM=ZULm8UDMPp?P+cX_`fm(VM z9EnX#c5%NI3pO$t3R~X!P^$U#PnR_mj$xTi(lleH+bkCBaBE5VYN_kF-hAjGj*8ym zW40UNg&uLg9)uUy^{mmq2D#6g_@2zqWDK3p*Z4E58Fqv>owj(yXD!_=-rM;PgcnQ? z-LAzta`V)Qn^ji_GW#93^Y{*HLuCT9ST=}{POE3E+L{v$-q{qRcM+Bw#Do&FvvsH! zvJwF3K00;)kgu2Wl2|yf;?7S4Z#@afZc##MRYdw~{U2tZb~IGX$@mcM%#kbzky)oV zWsbX{QD|$Cr`x-^o+rkfl`YMu0H$#>9+9c#Ba*B#Z`km#SNZ~7Sx$8aX}CyXY)fu# zU53^9j_(N&Ha?`bn-XQjjc#^h7`wa+CGl)xoj@S(~VkF%G`^ptaJVjop+pRhKx<);g3(I#rT6Sz?16jzO&T zQOn23nWQf(VdEyAhU5l~>{D`V*$A^Fiw-zV*@La-_DOq$ z7Key0Cp;1xY>b)q4V+IG9Aq!kJ^g2As?R+Vg%~dfDft$T&Pk%amkhC|dbB|}(bUn| z-#ekN(7?O8g!84qvp3t14;6QQk!eUpkc*)<-o29(nv_u=b-9|XI-OZnEqH0QPWkX@ zx^PqV9}1~s)QbI|5D2vy3H9-C$F0bd*4Ibq&UuZ8nQ$N|C059ol?(P2K9 zcp(nQa9Y(O0bjnIS3o?su&E`oc7T);4Hex(pBdsM#pi{0gAOdB>E?yo9CsI%gI;b? z(?P>x1}j)Z)TvD~N|aj_QQn7Axru@P*~i(b=z z4ZQ2mG13o)5`e&2}{ZoHt)IvJ%^@jeT$Oii3uh(%B>4bS@0X!vfQ9o!mbW-~#wTa<*0jYrbOMisHyz5Ts)bw6;|yLV8xaCT{F zJnt)Mw^^qQh$&q2dgKFDwyDWS#u(&Or4X^SJ$;X`sBH@IeDrF^2~SL_!n}CtT7qRx zzF4X%-tZ9X;%`(<3*D;JGev-PuJ!%Jh612V+NkDW0(X9unP5q@_k~a9$0GG+#lGJ# z@4jG+O2h}*R7F)hclj#6|H%_gm&AbUW%(c=>0mTc-#R7&39K{99<&dS7``bO@aJ^D)}9e#^kT%FpZu0}9NU9=+?sT~7Hw4I{JV*(w(QlC&9mK{MvHHt zLD$-G(WFZye)n|Hk45nh=0BUe(D-?`V^Um{&nf+ppzB#Xl>v#t9LQE*m-FbuPu7G*KJ{c_RY%D z(p36X{?(@`Y#xakhA zI-%h(UVN*&x{d_rwLO9W=~5e_P9gVP+S(l2qf7SXAJbC0B0i@f?wIBbY1?C)uZrl3 z#*ma&VG&c6(lbPRW#iXW26jO|E3YB3)n9k2SG8LhkL{%!TR4BqG;YcK2xL6%nSPpt zOi!}@CnbL0ZA9EnxOTEw;g(8dN?Iq4&x9v+(exFm->*5e#r{^Kmb zoBha8dM*x>`4z4Y_vgc8yOk!-41r+XGogkL%p_JWA0WR_>+9Z$2IPd8o9B3MF*$NX z8I73pvtVP-?;q{Gx3!IuKdv|r5Ec39u;FRa|ML@ z%F2i+#jI50zVGhZ+S)cC&~D8tY+k2N)QOy1HP73*YoSK)1;0-pCY(6Hh=HT6e&V^~ z_J;!us!(XDANY-D+$=7NL*!vJQ=z7oZl&TlXFsT-4KuJ@Dlit2u%gqH z;^ptr1$*Fycn#QK_~^ZSaBFgVTcj^q5Y=NKw+V3VttKysykZ3QBg9h>8}{wQY`JZ zSO2Nk5jYL;)?1X`GYbDx}o3Lwrdx5iG{j|xR2!jhCvr=m|H zMOmQ!h7CRz7DxYy#Vk#r1o&6`u-;(JGPt4T^;!@J0UtCkR-LE!*tx}bEmA$Sgy@(> z^W}Zwpj2=~1Oj4IQ91G_^{Tq8Qu&@Nw+N;B8vMeg7)FwpI(g#~^Furzx`AD$3{Rwf`t7x>@B?H-E#mm=xkI+&|gPjRT!y9r%s<%@jWBbL8C&m`6}AG zgL}3nksg=Vp9TxD2*@$74UY71S7!i!bI;8aOH67;a~qd%0AxXpaE#;K7dCwSooOZP zrRGd!>ZrTd?tQf*>MP7GHkn8JC#Ie{x8bd_X>S>l)pJ$E)9lRYl^lEGp1Zmo-9_NF z)DJEhl4Ge5ZR#iFxaYMh@0-Hk_ka&8eFCdFnidVU5a_EHr5%SCmV!=uc|*plQP`@V z8hArMTr!OLyF=&t6$3oM=;-LKC)e}*Y$QNRG~87_&v#Eo814RIipQEa%zz`z z4W{tr!36d}u*O>I&t{Z>v<9u@p2KE$a8V0>;3}gpO-x{LI`oZww12SEljom?PAXid z%>8|h#`$2;(th|0^iL41G<$Z3fRg(kSpd21nWK|Eii1l~w6BP?L(Rj__loI|$L=I! z!GaIQkff$?ZE^dot+KB&*QL)88P&^bg-kQv5{EV;YtWnS*K3F@Yw<6D=QP*7e8x|AwzvLSY@`Gm-jqW%4ARLZ|*}xA1L#H zEFn~qG_OmsOzy{YyiR@B#@E-^!~G=-F(f4=4MjcCP~Pzp_49ir9*wiQ-o!NsU9E>O zF*7I0Q9(CT<&s0Q##3%ep;10At$wmIoy@4+#Y!E8b$xIc^mIV@uV3RFC`fHW8%`O* zE5bPjk+pdFkVQ$9Sqm#G1Yoj|(PI_}6C$sW-PG3B1|CoWTb_YB6WVJUIy;xKnsafE z&b>NIr#k4OL(SMN)Bp|#hRPGJ04$m$IksjyeAx#C?}JH&oZMUq$1i;2;6XETS=~$a zGCjL~UhyqPoXn_Y0}~Sy z^w^YKp(>!b^z6RNP_Le%m=3A%{kQQbtuzTYqhU5w6(n{PloiezRw}GUcQ-bS_|Ljb zrdpKWsrAY{Ion6I*Dq5|=iJyH9i}&{S%H@;i``k$5e&JzvC+AFM7EsPh`G+mNm?iFD|I)$b zCgFoh8b^BzffE`<%asQRildpWbN?l;_9T{{;8)|~_6M0q5cf-U&8c!iVEKlpkN;ZC za}wxHkpq{E5|S--7uUg$=HPk91 zeD`xM=<;X66XLx@kS0Ue)GluJn3e0Df51}!>j)bOTCpZ00a3Uyb4aCmhCrEZ0dbkN z94{*LtrzB(x6<{DV^v1~3)$EQTbd?)%2z$UtdId3xLW@#U)rppK#760@e?g>^ta(M zb15P)85-w8^|R(qN}1X%ZXE3V{gJE`FIx?H77xw>*jJ^AA%!{TuE($qT*M1LPL!h} zASK;VRT16AzSQLT{GwPxMNfoK1ZbQXrAB%s`w(%i6LP`RFD#whyxiZ^YUKH{N@02wdL-mW zUhRVPhbhN5EI{M^pLuztQb37j#-rnd3o~)9xGESG;p^0N1V3c+hi?DJ-a2xkkdD)E z)ySTw@t*Ak>--f>&stletgYUsPTDTSSB@s49y+`!8X7{EM-89qC48s{FIZJ5o zQ@&b_T5xP5@sG8uU5{NrgHzBwRp`k+sXk1JAhsl@45*vNheJhhrooU_hZ52e5ndNV zT~%bQI%UP7TNV}*Ll>2I8wV+XFnnklnbTI%!f6Z_SxpG9mo^c{sC-WSAdG{mrFOUw z*^;B>KQCMDzPd8x1{h{wWAag9^6e#R>$Oo8rughI>{kv!7j;l@SxiE23m&W2&{YKk- zeM8@U!DEA)X0x5;_xr>FzZ`S_E+N-rBF0P<=y?Hmt8kaL&Wd*>9Ua;Jk2mMl_$F|( zq1_^_hmJL!K3S}O8_3JPr(LVZ?eMQ{?dy!T@KRdTxysl#zCdClv1DqgX;)%*BUoGF7Hes3C+Dn&???u>xYDrFT9xGJCm)Jj zzDR>DbD|e!jClVSOGilAQ5L6AOZc?(&woe)5F#3LrPci#Z`QJGyUsK8$;5F%EwJ#dQs%kxx zH#X~etyHvYZ&;RGYZ$BEQ1(7tK(mJ~d9?QD&u%L%zT6GCGIQw8oSdY8|Pw`A=vYg5n8@!pYAgQ3V%8sfstEd=<48?n;m{?O1srstwxWFrJ zDzLOmkoX=U!%ruVteOHD`}nEJ&U8vhD4Sj0Ju{#p+8mmIJWe16E*xJb%z+|0M+9$)#Y05kT;2FN zVWb9(24u&D-=B$fkaT?fSdURTwpr?J7W(exhgi+{uW3VHhRoxwwTV)VO-P``H4d7L z>h>?B!=%03ETW2fBnedLNHCVlrP|~RLg)r$CU{9B%6_Vcf|jEu^r5Y&Y!LZ90g3(L zQeMmLz3=JWt^zBYu{z5EDe0xNukS630)wYntlav!Yi0*zT&d#{Hl7quHI zmD@HCtE&^j*IrwU_|^O2G53-#HFD?$7eS>)t!u zUO(>Y!$k`G_p=$1ukQw%7uvTk1FUU=91YukEw<+O;1?Ol$)H?j%+zrU|nikD(M@vO_4xSUE>uA zI#9O`w2F)S+S(E83FmF##`*AmJ@W%qM(d;0^`Zv94+?xD zqA31BgHA_^puys0?OXz$r1l&2H3JOZDnt4q^m6NGu*OCU7a<{mQCgo%t`vPKKE;dk z^VM`h3KfYjWJwsj3O}y>6e?M02hj`6j0Lgc)Rt#Wf;{p_OgAQ8om>kUh)_x2hI{&- z%wlpR)Wj)yi!XcM4eQP|8xv{<|5WWVXx^c&FWOR_@5_uTB|PARTJm*jsE8#(;vT*H zPsrHD6uc^1A)9|r#tRuT7utE-j8v|Ai(Kxup0Z61gTvL=l{<357De~uIbdV$9Y`DE zU$&Z05S>`)5aoY(8Mk^gcV2#X!KHk1OLZeFWkPv3WLm^7^tzT3;Wpm!Lwjkm% zW87*23sK|GFW*slzy?aa#Qr9ag)Ym+6eKLK*rM&DO=d*KjRvOw)ksdFC z1LEUsDD&mzpRvAq#Xmhc_HbZG^of-94L!ISg!XsQE>#@KO5;4F8wU^hZb!+@7f1cm z{7{W$QQu3_pt9b+xcPW{xW2AJb$fY3<#-e2Pn|YOi8hsy`oF&y29FGr4ej6ycn&(6 z^ZVnQr??m>fRM5TC?FI*Tkm^maSbU+KDXXR809V1<=wNi13xfG4RONap%>FDylP9f zkgi;UT1z$u-`uf)hf`M%kJCtH-=KFdpL~-kVLQ??x)$5tnPCb1v(;J2k!?qGJ7`YN zP?a?FW2up~_1-T;Y)W9KiK1-dbfV2xWX%dmLnBh6Fugc3pIlKv9EQm<+4+-&0#1`G zSLgHbv#Wq2BhE{_NF0n%H1%lh>oVTR{V$j*1jv1E+8Xp;81M0VQV(H2I+J!n&243i zHAB&f`)Y78(#Ex$8_cJU%_JREy{0TuBob#*2Nm+H8z+a%8%%Bqvd}Nh=_8a16P%RjY_7knv%Z&^|@n zego4srEnwvz^f{Xr2A)Whn_CVl0}QNM#e z%$yxhJOcgv*F^ITN>-bZFr{J&V>>&~`*#}Gc}hYtMk@Rhe7}l{kk}LykFF9|6&KeU z^1PB3@0OJROeMu0wiAh}t>bZR6I^1&e)4vRva5+`zY(_Ohf~J=f$>q;UYZn;CC&cj zehbfUh3Aia+P`pnjaY9&QNZ|D)X?74wjr=SqK>d7>?}nN`8`gARH5OUPw&lI%Co?9 zxb)j#>)5O9D3tAJRrFz%Le#%yJs&-^iXvR?65g-;RR0LJmAD;l3e@gx*s-2_)rMO#OwbYmRd$65v9 zsjoj()DH(8#949mXRs8_b7qYWae|OHBoW$@p8_`+amFaMoaUjXPKr{AbWJnjr8N_{ zthGO!b^yO*n@~bhEQxSV4taoRKo4aTuZ|*CB0Vp!q`W-3QYJlpOj(M}G1}{U(s1Om z!MWawW@7^-(>M1Fo4rHm0fY{R4J#~5fE*7YQBi1|*G5D#Ul_;k?Smh!scVi`sMcmN zX-s#zQq|Fc@a^uQR`O4M&C9W#S2`?5TEt^CXb4rKO86f%Zn_e0Zl^A4c%}C5$%1gVyW71bEmE;8;S(xYkvr+eYbvNa}-p0`q+L%DS$}r zf730#yYUErz3F8JUT?yJ}fjS%$eNZ2K5|WO-;G zp3vG;f^@^Z|43W7+Cr4K>{8Y8LD{ix=JF9fv>x*dVM!j6fBr8;DjH@$Oc(JUDng@Ucc^tzcTMWey+};}I=MwEo3zv2e&IWU`~%V` zwecYs*3Dm<`LYtlg#uM46;wkY?nuwbUOQ+r?DQ99WS(dh!4;evXc+7hJo$qfVi;at%qIxi`|CX2Mh7R&P0p<4CB!hZD9PmzuWLh-AO zXaz{MS}d|S$og7qgLf1iqgYYb2t}&Tn!M%b90dPNhO4@5S<%_VHd>Q}F{tpv<<)1b zo|i3eYHI9~InMIT8AjjM!&kyAyC9?vwjlehq!F5h6kk@2IO-5d-=ccCxo1w+<<9PQ z|E?^)e!3Smuf78@1B5JvqlUE6I{p6BNGfk^5!uSB_Aq&fJzt)m@qJHqBGdDrU(eO> zpA4I+5@6)4o8+DzHwm<85|i{lbK^zU=V9rCbhd$nw35EabomcM3T8CrBur!8yU)e;Je8iXcw;kN$zcn zUsV}7Y@$~;V3OPG;6?)>YVi4FZpi7%*?I9Lq72b>E2)UZzXDYI{_VT4E7WMLA41e0Yifz07fA#To0;m5V6WyE2cK z_V?dWHD%!*OVQgI%$AQxpJsmaz58o%yuTF^9KQ4DdmU@wdT{fYo*Db;?h3bHTzf#?b@S}`=F&MAjPfe%*JP__^}BRLM6xB5TizLf#S5%Yvqlow)|@Fy z9N+*uuyV9zAdAJpKt+?LG4z$86Kf><)u5W<07!KMW=Sb)=ozkIsx=|TWVzg1p14!w z9Jo43iRJ^QWG8@O(qQrutzWewUf+_SmPPAvUvf^KXJY~_ne5i{kwFFwb~mpo)rHHE za3v(AzVBT774)mJN~@$iL%RDCC8-ZzerGubiQF82c>e`O$ROIMekh(!HaF9roSCK1 z`R{Tiqbyw2m}liecTTH33?4fgR#rC0CnV*_?=6n;jh2LF<&v*8z}~;l*%PFWS3_&1 zwrOwQLQoZxc24=qtZXdniZgGzv0KCAUo@p9nVSeGP0rYxVZ`o={+>krMef1{L`^+A z4WiSNMu(4gYdiwM)Wxc@QN{1ysl4Uk(g}x=_{EO?Y0E2MblXrZRo}V2T$_?_Vdv=p zP5&<|pH1k!Fb|jPI}Ii+=3$EoR}^s}!D9>jeX%17Nt+4v*wLn`0^|B??6Wh_JRSGW zVE}AA`nj_OCll7$8P9&6JzR+YXSB~vczUTfc4bj){iPs&UXfV_5>M=F`Dj-ZF%bO; z{ok_G)kV1>X+~bK+v|1d#XiBl3+`p*LJ8+)t2+Hj^NRCoo1fNp$R(kck&IDpg{p-l z>f$UOu^i4^o`nmL3rqm!cX?;u+I_HKL`ON>qG9XofeifMwC5YX*LN;i7d;7f#!G@)! zlR5Hcx1YLzKy@u?jD8$fS`|GJmI`VQ~}*-5$&PjMrq*fIR-pQIR8 zP@CxF`h7D=956!*3u3J8Tv-7Uzz~^kd0Zp4$Y&0=dX02ZR|IbIZqh^3K|BLb^y<}X zex-B^T^=s1rWnk#d>yU1F0^d#$qTq_Lcxq*nt5kN+EM#~F0#e^le2NIUk6TIUENO) z*WdW)6U1>z{g!-MQ;{?tm)KL-J(`V{nZ;?!Hsv3Gg+13a4KR&vljZ>sF7Y zn(;{x4Y)TSwwDvOe|X}rqthx|MH-+bO`HRk?18 zsQq{t|6G{T!FF>wabEG(NN;gW01_38{5cuqpbZ_>vv7Y1{`i6H&$8m7ZMZW|h*pjQzyhoUVlIHw1 z6q?^q1*uCI^WjabbkH{J99;K0?op#lmR&h+UR<$W5Dv&OFw|-f{m`Rk-Z`F`!~5$L2+D^+1Y_z zbJdjJQUS z@Ozk|YR^k&dnYsL>FLUc+U)H_uI`hyoV(9IY&JPvDV`^igW^18{7XC||LUDhdL~Qpcmm_ajctV((OD;4`sCnmZEaKP!^+t;j*X%Kbnh`Gq8= z_lU`+HDKg-CA!Jv4b?2qXkf000K)r)Rv*zrxXV{8BbN2;2gm(Z>ja8RuZ`=WvLC}g zZuiRC0uQ7Lo1K%N9CqQolKbM`dNMryItwe*zGDCU2j3dW5La9ccU=uRo-qEW7}L1= zzFH4cDRNzd+!|?4o)>DmQ3T4Lk(_bqep`JVf5&%Ib^tvs8=k|~$@uP2@bn1hnd-HK z`b#oL3r&lu_LGrI?_7zf_=CCiJR_!DI-*3G0rVN|Y$tvNWg1!P)R)B3iSfNmuaYo| zxmY<$epEL*J}F8@KqVO=WbDQ}qe~*dXS$gr4V%y*vL&R+XUC4)JF0SI%#y~L^Hx*l zK6ugPTv)l^)EPF`SNjGOu^!^_uwfC4Mh`Y0?MVq4D7ZW4F2^)wLBx zhcn5*22(fw9t%O$^}T+nhL@8W>h);7w0TCZCmsiZiQc9l4$d^#H7gWXUf(bDKWH9| zbPf;4th&kDA9S8fsPWZ$c<9@+7JI;GTJ~FUzWeAuNL@H&S!b%3YgkxXdhM^tUQo2; zR0&uW%K_R8Vqp78- z-S{cv_33k#svjQ=^-Nn;^IM>Uv$JF=a*LI|KynmwW+z{Z6UjSpKLZ5EAnJ^|jK| zkD2_Sqn=Weh>+sIOfJ(|pN>rSr<6u}_NUA(%}K?5d!a`HK__+YsrZ}tVjC-iCK)xp zJEdfsdO4vNC2TpXYbirN?Viv4R^d*O5sD+xz!7th>$h#NClz?JI)b_E^;;oX-nN{t z^3f+KgE;uvHd8L&X8CJbF68)y? zaO+SKygqkk&6<5r-+msBO)WuX?nyIB^{{Lz^l)`q{hBa4)N5~?V-~PU;AZarxeFPj zCN+#*U0vMdZaYz8++^aZ21G`(sbF*Wjf+WLQBs4ap$NwQ8($!^GJlu#d;o~;uYGen z)WhUs>8WLDScXJgKzG&jb~eF9t!G&e*&W_F;l@%In;xMeQzFYKSMoG}M;e-?_k3}0 z7JV;JxVqh~`ATVSt<@bm0=KhpJ^N(&LOQi_m(RRCb!4|XqQ_)7`)$`%8=`_mt&m!& zn1rh>wOaFXQP;3h?kZdRDV4U~>(dd(mMsWdSXaV;Sl!dI9lWQrynw-tfr)v#Q(j_4 zA-Vy%jEgZWjGt^J-8^~gzmdp>D;t20<}xOHR1$C#aN^TWyq>jqM?X6Jc5lIOwpM|W zjFuqMX=RP+1{FnyE=fi;M6N!HZYbxec%*B%0bim_;t0w2H-sAY*Z4bOz*&4d^L>%3 zxu0K7hi~8wVX${yDC5w91eB2`L<}uwg|DF&@z{onUmF^z;`osi#lDX|PtIlRh~ycy zn3_hZJNM?~_E{KeT0<=a;TE;;z+5V5Y;(RY`mj3?s-`^;|6T^oUz(Uth36bV6Ae<= z`KBrQ%meoK_tz(i-r^ZgPr-)jTwJcqGsjh|c%77T)&OztGTu6qzI(Ou$9~Fdw79N) zRP0)xONZJS1Z?3mm4_wlhi42*6yf-N^WSNWw&-I%3D$g$%)wVsJa}3OX~)9AI0EY- zmGY^phsB3C7jqPyYXtk>#TYXR+Mt6?+b)bMfWRunNKmX>@$&U2>Cb~XjameNQ1f0O zxp>N^z=k=@+O@G3BSuM}T(ioU45b+b^{tT4i^B1jbWNO%K_pUW%}qW?0-b6N5o2i2 z92Ol)aJzWnKY0jSRXeO8?DpicDvcg?3?A56!4}n!wzvXDZZgc-eaPbHBTbm*$H%4V z=5T`Gu}yqrP#j zH1CV1J~^H&SL>Y-AvL6q^90J4!W4~5E0k)~mMkB`jaCL84;{VEuV4{Ug2)SU$V%Ct zn-86z@8%-P7QMqEAt7-h_2)A-GYjc^;S&>0%yzO9dO8i4t~SeX7YJpN{qdu+7Fruc z^SaxFBXfj)N-p#}p5!*hTiGND?iUPMBL%js%LVya>0$7Ra&iGF_?ubH*MtyD2v^dG zOJ%K;_KwVwyX&8MQe=-8bGyj_V>FnKC({t;S^89qk3Tch&ru-8faGi6M?)hk^l5Wm z$Q$N&MyJ~1e&O~rzcC15<#b%7U|RN@$*eWW18g-v7OG90*Rg!#bZ$QgVJwspzOV^dns+? z75aD<%XYNIR*9q7Tgr22e4`&*e?r(0;h+E0xIaP3BbhNu&n97Su|03h|Dx_LdGXQj z$NH-Vq5_F$p-8$F^t-mZ-K)hfF)Xrlc(S!k2yZl`C(p}6 zqA3?x#2rmDQ2-enW8?X7iWYm;8!ZIBl_{~#kaZ=#)UM{N(H)C&HwwGS?g{Q;i)cvM z^3OLEeVyEJZh@HYLO(>Io5b+zL+p8RdZJe>vMqNfD%^?yllv1#QEg1pmOiDYqX$wB z>P3SC@nR&RTXL3xE%{iYXL41dO!s0jd_nlr;gohu6P|K>p`Zr6hgFn(5gswC{ySVG ztTRHdi_Ytj7JP?G^#DsXV~IQ!|<; zdMJ>XI9{$I!+@~8k`&1WJG-lvTB~ja^#Go!@GGS%7F@ipkfI2^ z=iB`YP`(p(v8{O*nxNlIQMP0j<)NizX!g%b?DI2GrYv$&jcW_5^1>Yi`wj4u_sGdD ze>6~WP!!MFt#D^i2)f%LHd)Z&IlF0^U1#og>6z+PxpMsJ6M6#(Cxh#pg-sOOW=UoF&DZA+-7B!R=BLM=*?HIfj!!Bpy*ZKd zJlBjL)|4MY{zVfD3v1_`WP19UHtEyvn&noR5OV@fK;kYDIcGBTJ(kQaWHVlTd?^MO zn{@3oP87@k1uBvp_u$1o{5#ARY?W!`8Ea!ma1+flBxnNjcfaeFtGzpn6VvaT9TPz3JOzk9U66DYH^KbMXh0l)7p_Su!IUPU}TJ1;iB+J z-ZZfFo3pyV`w3T^baitG8e^z#M{c&tEH-M7kf3>J^!C`@t8j>yDg=fWqyGxtA69o_ zbRiF8q5||e84AXnu!Nx_pG7~9_Kv&b_<(FSzioNn1DCu)=Z6+SQ@r@*wb&v&0H*%b zt=N^@_TS*jTh?2=A?k~#>hn5A-qUJS6FW<2IYk#e> z%Zfn&X9iulIfp=0s3v^mk-Ru^#@+E-v2iW5W%$6J_D8Njph^|~g$=c#mS+FdD1PTC zPfyN*tLJ;^ST=%A2qlX~j}m-#s}t+Tv=~yjg%Eu(7f6+clQq;ozA~J=uWSgmSs}IkqzD!#&jhU+!w3mDD=z+*h#S zCL_0@Ff7~FYN~&P1ZFEsot$hP5Sg{L-yB1!NI}*r24B2O21YJ?IZ&Sm_~<3PZIX4?LEmiEk<#1 zB`3BCKtElsrBZ+{$1O((@Sg5O!cYZ)VC(c89ULuD3D`Wuu;SFCUNzr7Q{f!@lif02 z*q@gKxbved<5O_7XVlpVM}IBEkvh_TVTOuL+do&EwBpN3FAJ+6uXL$t~;V;LgxzpQrtRUKS6m zu&uav#t>WcV2+?cKh$d8B7D_+s{3NKAng)5wQoqk16|<;6Q`I@&E5aPJH{)eq zHi>aSE1QKhvR)2xwjYzXcX+hl8d$K7b{p$P*IiyicX0V+vv!>R#o* z-~uv&Uxk{-P5DFy0KaaL`opXy|CI2fPcYsvasQyw#C2ycZ;SS8t#v}U)%U_ zcg}lNHP~KS1qI;U4%I3^3KO07wp4oQ>8Fhtk5-%B2AKHD(TM@D}$x1*w_jxif!UbgR4A#G&n)i z945`r>4H@_?(}>oF+vX;S2Arw!fBTp=JHdF5sCUK+|JZmz+R*4uPaNJoA!uibmk$q z_q3=$@4|lJT)PL=rNTaShTQcZx>!woaaie;4PY77H8%F|>@b64v#8saQq2sjZ2s}B zu8x>rP+0LB?PHc)(cOhp{QkAYUl_c;9o7yq{Nbji=Ogyb_2SMYtijutBT?pxpr;Ig zBe$Y>ku9bd2ap91?*PTgxj5D#v04_ai}T~vXyU4!T*uH4Xa(q*#m>u}$N;EyGGI8G zs`5{1(o$|}(WZ<&drr)Hl{~Ho+6nz#BjUk0MP9O<^gkR%&q*{ton@;UW_lxahtrX51qq zSz7BfkC95QX2DOLyD;?l#f}kFSMzm2RuLD=IE#K?bEv{{OCYt_)JouuVo|Aew}}dn zn>DOI-=id5Z8Pv`GBru^WyTako8+|qvr9sGP`SQto|>8pcu(rggqb77^5X@&Ie+yD z4Lo|fK<%;|%|6bNU?DnnTM`!GkW_K-_G>k`^|`;jl6~-Z2)%s#n)g`YAK>@8kC<<> zz9rYYs>1#Ct)^Ga<=_E7R#XAI0B^5%QKx#%JB}QSCc}1To8sTWUfX!KwzjbOy|hchm)&53sR8KQ1k?&MFoRE?`XWf_rYP7Xk!C zI3_MmMW^ZmYuf!mxkcf7jW&UNRw)|BCw4$WL-nNc&U*0xaj*AozS7JSJhrj3)cjS~tI zc!zMaM_qs!>b57I4ua-5JwBCR6w^gb|tB6_>1jp z{#3AgV#*|SgXd75Gp#UeNwr;Bv4)+i>z}n`Ft$hp%aGndz?kqQ`_cZP(>VK_4#BVO z!_Dnv2G64-+=I4LrN1y3KOh~}>*k!yk|oiNTXBD2)<~<-N{Wz}D+pjt>122PlPV{F zzC%qGmg{6Io^!EqvcpX4cmD%I_A~R1ge3Kk{)pN&wJ3f_?2OgKU-j8CDZR-WMZ`Y$ z0eBBq(eQ<9m>@m9m(}C`-i(M84Uu?M1ezGykUMe;`01uk>*%Mar(cHFF}Io6W`Db4 ziXZ-bNlqWOT}%FF_dnecH<|xXV*w-R6Hri4wzjvA;U0X%w+q<2mkjj}0lJl<)r-3B z92p9RT!-~u(_>jY(}NEdmzO6tj_X%(t9I!k7ZHT5C0gW8e~7|SZoF>hFm7U@HDU-A z7Rgi(OQ^mpiPFHGPR{{q3uC=dQaZ6Ke5TescN4jPR7h-S=H-=24R5!6I6B`2>5>nc-I29VcE2SMbYvv3Wiz3c!Gi*3BzfSgN7W!J8X_3eBM^ zORLNsX_5txZ9m5mi)4#B*$Peg5JI(-r~_x&}SOo;E9@ZrW<@EB@;sL<$k#^r191BUm7~uP5X2 z{$GgOPSdmvf2uG$-%P9I`ku&&06K`>%oIU%&(_HLM~lgCz9M6;6@!oW^;O4BkLwMj zq%%rQErWw6oC9V-`T5jjBPdbIw=Z7N$oAJNaPRCCTTacPcw=`tSposaH+zyFDMM?| zkvUC(`H#sTNjrl+=U?3#f)Y6T?`giWrLA_fqI#~4HaFSZWq)VE#|qWgkQfr1;%1&= z2G6?VckAz&VZ}CEP&ktX2|YC5I3v|ZDd(_a%0{IM1{yzd6uD3(Oeqxt&J2ZcYOe@z zJ;3XUi2$8Ex0kOf{-9<5*809pZb)}9@M)u?T_Cz^Ps&T=gE5Em=F>G9!KrS0Ky;*VPzx@4;L z#h0t-D!*7||C3|_^ibOaPytCO;ZG+w7e2b&pk6IUu43Fz1#E2kA8bxTY6l1K`*d^+ zsfnU#qiCjd?`_^2q((?c&@qW|X1s%OQO+kQQP0~M75Tw1&(7VzuwP^rRTMguo*9Re z@@$}1{_zDaDRWAryhUGONOu?j5PU+UISsq&1 zTkQ-cCTAAwuFVr9RL)|Q@gYp~*Ya+6Zk;V6cU8eEv#lC`)Qmy6K3-`V0_oeEe zcovbD{fZp%Uj9PGT|wP85z9}wRj*`}Fe5Ej*?h2vdjb@B_MAe-@@q9&yvtfY?hCIq zT%*l3U7$Firb1(@O*BrbL@fO=@u?D_{?XH&DM&}e@@nhP;&wTEZA0!@cWU6UJi>uSV6;bd-#2N~^pGqSux7V+jS+pge9Q$5eb^!1EXmeS6(0ND(**OgR-fx=Dv^Qi zQ--bA7d1}TH2F?wl8K~Li|+xRMI$d$8^glnz$~8>*|Ta^tHW)u|4001IX6QNQHu;+ z=iUikhFOw0D%R02N{?EPJ|sbiV`2IsH3e=5#JZF@rLsecZPtpLj1@J_t3GwPXm}XQ zAku;4dj%0lSyF||w%o3}jjrL{wJaX0&MF{Vm8wU9Df;H-W*TBo4j8k*q#$W*6X3HV zw=SQbJVih~iR;?!-vL6g;oYia$A%1+6z%Mc8G+aoxuz`|4g!-qeLf-qe z$~9$!W-dwTIrokmbFH34Dq*D4;67Mm;+b*2)qPXH`i^BbXC=#Ahab&s_1VQi_S)|U z#JM(0QAEVxZc`2$%m$*Gwzf87&BAdj{Wqh#2fqu7ZMVXd;C8o7sv0nrEXAFAGVeZP zFI}$Ovmcw>G>H*Z_T8(_E0iP2fEuE#j1A!3hw_q=a68`U0!COYIwBGp4u66NUF^E^ zE2eSAih7=ddEV~R&9TBot4+`BizW5|(6^8DiComYK}D2Q`BtS(XO=mgWp{A^wnk$Q zG4@?ucb#l^ohVs!vVeIvM@cs)5F?f#`C@u;L#>PK)CHH-$jZt5nBAp@A3s?Q1g6b- zrXYC%qfC+ySDci2QYoF6a6rmQtG%itZ={qdkavCL&iui~#>K@IOcDvUO0)#%*ZXyb zm+IwHCvbZ=#mjiuyzn|E6%QHausgXptY+5Uh#kF>lVzxOFMti8a}qSbGLt@Q1RU?c z`X~Pq4c0V3iAj0b7d$HTU0(Few(d~CmdwhK*WFlXA6iJUE^_N8?4 zK3;XG-L0Z3edVRdt>qND_h#$4LN6b(jATdx&)n}HeBa##Y6v8$@o@c^^y9mV4XZe~ zxWro*oG63KRBgGnnbLH0b(Z(exWQN-k0-f5}D93#%*nG{yX_6U9>mB&@Z0Wz&J$;orY;7?iSKZcHl> zME@|%Z9g833IZ($UoQm3e3)`>t?m7H+xE+h1=YF_$}W0KENowedN_`HTcXKUgzW< zMm%~H=`N?3_BGZzA;W7(Dagc<%=75|+}u)TW^~MC>1iapu#41yYIi*0;a5b>QI8NX2S7QdE9egyv_r}_PSz2_3mg>5nhp!a2iF1N*y0 z5*^if_)uPTRP|U@g|A{8@^&O&`hcFxleB`+0-C*|>Q>mFvVg^<6-gUSWUCk{D#$V5 zD=4px-=tnT!EG5K0}3$N)4($A{r;ui1oKdfx{ml<-=yRcB^B1RNXhvOTyRx=t11@D-D+m);|`KH#6ybm&ti73GI!=k(g05S~9xoiE2 zwAn&lc#4xa0Nz17SN$|Eu(^cpbAEnaW7>xm78b@x6x~J(jvOQ^lbUoR?Bfj)a0@_M z(%bD6*!}`q9YgQ!R|RohmB5g6CYqnm<+E9o>GS7z55(>Lc@J3u;zmY`D5rOKLi^f# zP%OIq^t-|NP0(777Q)ffV5TvG(Mz9cbm!XbBaeOUgAuJ8mP5A*w2AVqVp>~Cd-0!f zs)qc`H%%Q%50iHj@ou?<>_{o|}U8CCaB+dD=Ddb;dcj-43d7 z8eJhg?maj9XlIA<*=2L|xO;L;%*cAkps0F86nd!fu++uyfrcn0wYyzdpeJ&MBCq|C z;7NeDXVPKz>;Z%r&dZObqGLgqX3m{q;=|gPn~M+}$*)cHraaafQX`;Hxt>BuHbNgA zEw2qxtecTg)0o&;4uA|*8Z?7l(2?MG2^EZN zsn1UW5xoLB3S$?*OjMQ2-|>)dj2@*RJ~=0L5i3K~Wt@%Ja7<++)H!2xAAUDz=}$UT zd$ptWNL6f4StJ^7{C0Yj+%azE`{*M-PxOlR$9LkfM=R?u+WdWE9CIl0E2H)Gqw^t> zUm|3f%GeVWK7G|*i(9~hPcl&;VZ3+hDWO0e;I5&>6xRUwg*HU*>@Oyw;^dufn04kC zxmPGRw~6MVQ&Spkm#v4+7kfH8=g=`7!bpjKZT_*yA9*pwana6je~tuD5)_Z(kyYr>ahXoFcKW#sYjujwu^F^;&zgE2~ye$Lvv zqW;9PwQW|L`zy#ryfBnCwe=wCs06k=C)Ws(W_U<}#JK^vCAr>%Y)L)@wEON^RQFrb zEmtei*&_F3@qX7sARa!ix@%iQNAEfjOifMO{v1wBB#8p&33}keMJed+1h;Q+-uj*Y z%j>_#7dsA7g+R-mJyD?+Qrk%xj40%BOrzK}=S|~_pIsdx!rn`J*)}RVS5@o6-?_D< zBUT)|^yIR`RC#|j@A1f;rJ3tAU-oXO8Kd?u8kbQtezHWAbEGSC&wcQ{ud8SJ zgJ*WJ{ba3usvF-MGrhm$XlSij5Wc0&x7f<2UE~LoZj|qFNGNBpex-yW8;W=nfCIkJ zufjQS`|t|yS)RomvvNw;a#uKr@xA$G;z@2DeSKi3n<)j(E^UZIL}V1Gd8Zp3sX)K@ zO||qZ`-^|gg9u52d4?1Jo@!RMe+s;pVJp5j!=WOGZk|6Dna(`Xo3u;5IG2F^N@O1r!H(g{i$|S|k;cD)Kh_@*R2D}$NRNJOu z{$0N_yWpMb3l-yr)#(^!o&>4CA}@v-wiQs@B~O~5n* zUe2Je@n6FbObE1u-9Z1%H92XvhDIAIG`YLWw=P6uoMqIs4^qlLf%<2hYy+iZ;&6`> zQA#0sDUPd$nfGmepOCr;emO^kbeR!^<|~AuhM_dJYSU1u;UMu9{dHHyup_U-H}@P5 z*`#nCDZ)Lb!D5>@nou_+SZQtflVYy3x6n#1n`FhCrJtR3iu$@$iP5R(BY7+esQr)E zd;!S=15A0k_nmtzKuR0m=hw#}EIa~A3&egB2J8FthX56e;^U`JNec^xM!1~s{$-Wx zcW-gx_jyv3>RPIQ*#`&TU9Cv|afd6K8uTU7edG1Ou6Vb(&^V#)>0j9&Zz)fa!G=Su zIEZ;kVyyBppe8Lm43+=)q_}EoVwW+2PH(Tq;bg0NvhnYoZ^7J(k}%B0$nRx4f;d$U z%TuiSQFv)rzq2qd!|sHN;fecjX9{g2BTE3btCmVIr_f|5Bq@~uaUj@8xEgFy-QBm3 z<%@@d_b9N0XPj>Ong42PdJ8r>jlS2M=iWJ1+=HNFYxX$2h+fZ7==G5MUoU`)l{=`( znrC@)4r{Xgl+;nEQVe^|_apd^TcT)yHG^$gh;^u^!@vI${oA3?nkbX;)7Ppr}n=t$*!FqkwTGBRYsVkjMUQF~AlQjP5j9BY0q< zn2GyuK&9AcEBAoShf;oJTPk)Utms+lddjGwqd@)6o2Y{(3~nL)*_{g1Mq?-WsuL-QwJidZr+f)S5Mk_I=iql22Bo}OJXS+_!}UKe=J zbuJ&FjF)_V#RqP+=s6bByGd@a>Ej2E8UQM%fS4bb=H2Tkbba)ySLor!p$Pv*$C02! z8)cli&zosJ39obmSNJMMh#tbbklSL+ntyYJb0Z4tK7G3gov~ ziBEC|{2sf7N7J7v){&ii&zDeJJC<2{N;;2OyY7bgylKeoE@$XnyWcOp^cwVgF}V*C zGI-lZOSu*vIxfnmPy|FoL{P1wdQ7T!{s%EM1X4PCr;y@{1xtwj+C6D(&}^tP zua|spNlVM!(L9U>(N`?x!S`jAAA}V+z7;-f&%S2>+4|RLA*%Eb4`Z;k-*Nu?8`2<<$G1ROA@Asae3Au9LHD{Y{S*?Ws|!lg8)=25Ef?3 zvTY7Z%5JtcNM~FBH=c!PO1mBI&D6D=488{WBMH=3l~VP)zZ#M%V9s%)p^RfrE0^oy zu2PNkyi?1f#l(JLoUerjm{8HX)D z!IG&u;Pi4r-o?d5L0MUikpM^@L&S{5sGs&h?zbJf*zeB>j!=q3s@8ddm^Hcw48kBq ztCoIQ`~;tzT!ry)W(8lBPq zg5i=J>HSg9mz&#LAUy@!d1a5W(a~BcRIXn4eCk0+dSaiyVEp@{@cP^5$_Tu9W4F9j zlX5Bqi`GCo^Dm;Y*8DKWB0cTv0Z>BqCktpI^;y-*r>yFAMfg%Sg@CwV@x2Cfitpxf zQ88X565zP8g-HLuS)JMMxJ3{c9Q;R`fA}YhUrVcayR9wpLe^GLjh&j>3aq2U!oz_> z1;81jkkF&sa_=`*=)y$W?XTj>+NdA5U^x$A-^)S7jl?XLkVX4V4D& z^#y!;5?9^%4Jtx_gOEZ%_W|iUDow|qgOq@}!C?BsyNCbTGfwCfvWs0-2VM%u;OXk; Jvd$@?2>|`?ll1@q literal 0 HcmV?d00001 diff --git a/site/index.html b/site/index.html new file mode 100644 index 0000000..bb346eb --- /dev/null +++ b/site/index.html @@ -0,0 +1,132 @@ + + + + + + + libvirt-java + + + + +
+ +
+

Java API bindings

+

+ The Java bindings make use of + JNA + to expose the C API in a Java friendly way. The bindings are based on + work initiated by Toth Istvan. +

+

Content

+

+ The bindings are articulated around a few classes in the + org/libvirt package, notably the Connect, + Domain and Network ones. Functions in the + C API taking + virConnectPtr, virDomainPtr or + virNetworkPtr as their first argument usually become + methods for the classes, their name is just stripped from the + virConnect or virDomain(Get) prefix and the first letter gets + converted to lower case, for example the C functions: +

+
int virConnectNumOfDomains (virConnectPtr conn);
+int virDomainSetMaxMemory (virDomainPtr domain, unsigned long memory);
+

+ become +

+
virConn.numOfDomains()
+virDomain.setMaxMemory(long memory)
+

+ There is of course some functions where the mapping is less direct + and using extra classes to map complex arguments. The + Javadoc is available online or as part of a + separate libvirt-java-javadoc package. +

+

+ So let's look at a simple example inspired from the + test.java test found in src in the source + tree: +

+
import org.libvirt.*;
+public class minitest {
+    public static void main(String[] args) {
+        Connect conn=null;
+        try{
+            conn = new Connect("test:///default", true);
+        } catch (LibvirtException e) {
+            System.out.println("exception caught:"+e);
+            System.out.println(e.getError());
+        }
+        try{
+            Domain testDomain=conn.domainLookupByName("test");
+            System.out.println("Domain:" + testDomain.getName() + " id " +
+                               testDomain.getID() + " running " +
+                               testDomain.getOSType());
+        } catch (LibvirtException e) {
+            System.out.println("exception caught:"+e);
+            System.out.println(e.getError());
+        }
+    }
+}
+

+ There is not much to comment about it, it really is a straight + mapping from the C API, the only points to notice are: +

+
    +
  • +

    + the import of the modules in the org.libvirt package +

    +
  • +
  • +

    + getting a connection to the hypervisor, in that case using the + readonly access to the default test hypervisor. +

    +
  • +
  • +

    + getting an object representing the test domain using + lookupByName +

    +
  • +
  • +

    + if the domain is not found a LibvirtError exception will be + raised +

    +
  • +
  • +

    + extracting and printing some information about the domain using + various methods associated to the Domain class. +

    +
  • +
+
+
+ + + diff --git a/site/stylesheets/generic.css b/site/stylesheets/generic.css new file mode 100644 index 0000000..208e31e --- /dev/null +++ b/site/stylesheets/generic.css @@ -0,0 +1,72 @@ +body { + margin: 0em; + padding: 0px; + color: rgb(0,0,0); + font-family: sans-serif; + font-size: 90%; + background: #ffffff; +} + +p, ul, ol, dl { + padding: 0px; + margin: 0px; + line-height: 150%; +} + +p { + margin-top: 1em; + margin-bottom: 1em; +} + +ul, ol { + margin-left: 2em; +} + +dt { + margin-left: 1em; + margin-right: 2em; +} + +dl dd { + margin-left: 2em; + margin-right: 2em; + margin-bottom: 0.5em; +} + +h1, h2, h3, h4, h5, h6 { + font-weight: bold; + margin: 0px; + padding: 0px; + margin-bottom: 0.25em; + border-bottom: 1px solid #aaa; +} + +h1 { + margin-top: 0em; + font-size: 1.6em; +} + +h2 { + margin-top: 1.0em; + font-size: 1.4em; +} + +h3 { + margin-top: 1.0em; + font-size: 1.2em; +} + +h4 { + margin-top: 1.0em; + font-size: 1.1em; +} + +h5 { + margin-top: 0.75em; + font-size: 1em; +} + +h6 { + margin-top: 0.75em; + font-size: 0.8em; +} diff --git a/site/stylesheets/libvirt.css b/site/stylesheets/libvirt.css new file mode 100644 index 0000000..fb39d5c --- /dev/null +++ b/site/stylesheets/libvirt.css @@ -0,0 +1,453 @@ +h1, h2, h3, h4, h5, h6 { + color: #3c857c; +} + +#header { + margin: 0px; + height: 104px; + width: 100%; + background: url(../graphics/libvirt-header-bg.png); + border: 0px; +} + +#body { + float: left; + width: 100%; + border: 0px; + left: 0px; + margin: 0px; +} + +#content { + margin-left: 230px; + margin-right: 1em; + padding: 0px; + padding-bottom: 1em; +} + +#menu { + float: left; + width: 220px; + margin-bottom: 1em; +} + +#menu ul { + margin: 0px; + padding: 0px; + margin-left: 40px; +} + +#menu li ul { + margin-left: 0px; +} + +#menu ul li { + list-style: none; + color: black; + padding: 0px; + margin: 0px; + border: 0px; +} + +#menu ul li a, #menu ul li span { + text-decoration: inherit; + color: inherit; + display: block; + padding: 6px; + margin: 2px; +} + +#menu ul li .active { + background: #a4c6c2; +} + +#menu ul.l0 li .inactive { + background: #c5dbd8; +} + + +#menu ul.l1 li .inactive, +#menu ul.l2 li .inactive { + background: #dfebea; + border-left: 8px solid #dfebea; +} + +#menu ul.l1 li .inactive, +#menu ul.l1 li .active { + padding-left: 1em; +} + +#menu ul.l1 li .inactive { + border-left: 6px solid #dfebea; +} + +#menu ul.l1 li .active { + border-left: 6px solid #a5c6c2; +} + +#menu ul.l2 li .inactive, +#menu ul.l2 li .active { + padding-left: 2em; + border-left: 8px solid #c5dbd8; +} + +#menu ul.l3 li .inactive, +#menu ul.l3 li .active { + padding-left: 3em; +} + +#headerLogo { + position: absolute; + top: 0px; + left: 0px; + height: 104px; + width: 400px; + background: url(../graphics/libvirt-header-logo.png); +} + +#headerSearch { + position: absolute; + top: 0px; + right: 0px; + padding: 2em; + z-index: 10; +} + +#headerSearch input { + border: 1px solid #999999; + color: #999999; + background: white; + padding: 3px; + font-size: 1em; +} + +#headerSearch #submit { + border: 1px solid #999999; + background: #eeeeee; + color: black; + padding: 3px; + font-size: 1em; +} + +#sitemap ul li { + list-style: none; +} + +#sitemap ul { + margin: 1em; + padding: 0em; +} + +#sitemap ul ul { + padding-left: 2em; +} + +#sitemap li { + margin: 0.5em; +} + +#sitemap a { + color: inherit; + text-decoration: underline; + font-weight: bold; +} + +pre { + border: 1px solid #999999; + background: #eeeeee; + color: black; + padding: 1em; +} + +a { + color: #566866; +} + +div.api { + border: 1px solid #999999; + background: #eeeeee; + color: black; + padding: 3px; +} + +div.api pre { + margin: 0px; + border: 0px; + background: inherit; + padding: inherit; +} + +div.api table { + margin: 0px; + padding-left: 2em; + border-spacing: 0px; +} + +div.api table td, div.variablelist table td { + vertical-align: top; + padding-left: 1em; +} + +h1 a, h2 a, h3 a, h4 a, h5 a { + color: inherit; + text-decoration: inherit; +} + +#changelog .author { + color: #3c857c; + font-weight: bold; +} + +p.image { + text-align: center; +} + +.top_table { + border-collapse: collapse; +} + +.top_table th { + background: #a4c6c2; +} + +.top_table th a { + color: inherit; + text-decoration: inherit; +} + +.top_table td, .top_table th { + border: 1px solid #999999; +} + +.top_table tr:hover td, .top_table col:hover td { + background: #eeeeee; +} + +.top_table tr td:hover { + background: #c5dbd8; +} + +#projects { + margin: 0px; + border: 0px; + position: absolute; + top: 0px; + left: 0px; + width: 100%; +} + +#projects dl { + margin: 0px; + border: 0px solid white; + height: 180px; + position: absolute; + top: 0px; + left: 0px; +} + +#projects #p1 { + margin-left: 25%; + width: 75%; +} + +#projects #p2 { + margin-left: 50%; + width: 50%; +} + +#projects #p3 { + margin-left: 75%; + width: 25%; +} + +#projects dt, #projects dd { + padding: 0px; + margin: 0px; +} + +#projects #p1 dt, #projects #p1 dd { + width: 33%; +} + +#projects #p2 dt, #projects #p2 dd { + width: 50%; +} + +#projects #p3 dt, #projects #p3 dd { + width: 99%; +} + +#projects span { + font-size: 0.8em; + display: block; + padding-left: 1em; + padding-top: 0.5em; +} + +#projects a { + font-size: 0.8em; + display: block; + padding-left: 0.8em; + padding-top: 1em; +} + +#projects a { + color: white; + text-decoration: inherit; +} + +#projects span { + color: #ccc; +} + +span.since { + color: #3c857c; + font-style: italic; + font-weight: bold; +} + +img.diagram { + background: rgb(230,230,230); + border: 2px dotted rgb(178,178,178); + padding: 1em; + display: block; + margin-left: auto; + margin-right: auto; +} + +table.data th, table.data td { + padding: 0.3em; +} + +table.data { + border-spacing: 0px; +} + +table.data thead th { + background: rgb(178,178,178); + text-align: center; +} + +table.data { + border: 1px solid black; + border-collapse: collapse; +} + +table.data thead tr th { + border: 1px solid black; +} + +table.data tr.head th { + border-left: 1px solid black; + border-right: 1px solid black; +} + +table.data tbody td { + background: rgb(240,240,240); +} + +table.data tbody td.y { + background: rgb(220,255,220); + text-align: center; +} +table.data tbody td.n { + background: rgb(255,220,220); + text-align: center; +} + +.api { + font-family: monospace; +} + +.api .type { + font-weight: bold; + white-space: nowrap; + color: darkslateblue; +} + +.api .keyword { + font-weight: bold; + color: #A2F; +} + +.api .comment { + color: #080; + margin-left: 2em; + position: relative; +} + +.api .comment:before { + content: ": "; + position: absolute; + left: -1.3em; +} + +.api .undisclosed { + font-style: italic; + letter-spacing: .3ex; + font-weight: bolder; + text-transform: uppercase; + margin-left: 2em; +} + +.api .directive { + color: teal; +} + +.api :link:hover, .api :link:focus { + color: blue; + border-color: blue; +} + +.api :link { + text-decoration: none; +} + +dl.variablelist > dt { + display: block; + float: left; + font-style: italic; + font-weight: inherit; +} + +.variablelist dd { + padding-left: 10em; +} + +dl.variablelist > dt:after { + content: ": "; +} + +table.acl { + margin: 1em; + border-spacing: 0px; + border: 1px solid #ccc; +} + +table.acl tr, table.acl td { + padding: 0.3em; +} + +table.acl thead { + background: #ddd; +} + +div.description pre.code { + border: 1px dashed grey; + background-color: inherit; + padding: 5px 10px 5px 10px; + margin-left: 2.5em; +} + +a.headerlink { + text-decoration: none!important; + visibility: hidden; +} + +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink { + visibility: visible; +} diff --git a/site/stylesheets/main.css b/site/stylesheets/main.css new file mode 100644 index 0000000..ab78921 --- /dev/null +++ b/site/stylesheets/main.css @@ -0,0 +1,2 @@ +@import url(generic.css); +@import url(libvirt.css); From c699966d1c4e2d06f9f971c95d2b22c3eb02dc36 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Wed, 19 Apr 2023 16:41:04 +0200 Subject: [PATCH 091/114] gitlab: Deploy project website Signed-off-by: Andrea Bolognani --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ea34f4..9c242c6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,6 +58,7 @@ stages: - ant docs - mkdir public - mv target/javadoc public/ + - cp -rf site/* public/ artifacts: paths: - public From 4fba80f522edfd22cd50b755711446063ae08f77 Mon Sep 17 00:00:00 2001 From: Erik Skultety Date: Tue, 22 Aug 2023 10:16:15 +0200 Subject: [PATCH 092/114] ci: lcitool: Maintain project package deps lists here Each respective project that lcitool knows about and currently maintains its list of package dependencies knows best what packages they actually depend on. If a new dependency is currently needed, first a change in lcitool is necessary before GitLab jobs and containers can be updated. Provided a mapping already exists in lcitool (which can quickly be added as an override via mappings.yml temporarily) we speed up the whole CI update process by one step. Note that starting this commit lcitool must be invoked as '$ lcitool -d/--data-dir ci/lcitool ...' to pick up the project dependency list correctly. Signed-off-by: Erik Skultety --- ci/lcitool/projects/libvirt-java.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 ci/lcitool/projects/libvirt-java.yml diff --git a/ci/lcitool/projects/libvirt-java.yml b/ci/lcitool/projects/libvirt-java.yml new file mode 100644 index 0000000..8e5b748 --- /dev/null +++ b/ci/lcitool/projects/libvirt-java.yml @@ -0,0 +1,8 @@ +--- +packages: + - ant + - ant-junit + - java + - jna + - junit + - rpmbuild From cc80a035919e96e6ae8347cdb816e09758e1217e Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 15 Dec 2023 13:15:32 +0000 Subject: [PATCH 093/114] Add Domain state VIR_DOMAIN_PMSUSPENDED --- src/main/java/org/libvirt/DomainInfo.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/DomainInfo.java b/src/main/java/org/libvirt/DomainInfo.java index e46c4d3..4b64524 100644 --- a/src/main/java/org/libvirt/DomainInfo.java +++ b/src/main/java/org/libvirt/DomainInfo.java @@ -41,7 +41,11 @@ public enum DomainState { /** * the domain is crashed */ - VIR_DOMAIN_CRASHED + VIR_DOMAIN_CRASHED, + /** + * the domain is suspended by guest power management + */ + VIR_DOMAIN_PMSUSPENDED } /** From 3de7289197c9e9524ac8a1ed35ffdd0b16d8a00c Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 14:45:49 +0100 Subject: [PATCH 094/114] ci: Refresh generated files The target list is updated to match what is currently supported by lcitool, notably bumping Fedora to 38 and 39. Signed-off-by: Andrea Bolognani --- ci/buildenv/debian-11.sh | 2 +- ci/buildenv/debian-sid.sh | 2 +- ci/buildenv/{fedora-36.sh => fedora-38.sh} | 0 ci/buildenv/{fedora-37.sh => fedora-39.sh} | 0 ...ensuse-leap-153.sh => opensuse-leap-15.sh} | 0 ci/buildenv/ubuntu-2004.sh | 2 +- ci/buildenv/ubuntu-2204.sh | 4 +- ci/containers/debian-11.Dockerfile | 2 +- ci/containers/debian-sid.Dockerfile | 2 +- ...ora-36.Dockerfile => fedora-38.Dockerfile} | 6 +- ...ora-37.Dockerfile => fedora-39.Dockerfile} | 6 +- ci/containers/fedora-rawhide.Dockerfile | 4 +- ...Dockerfile => opensuse-leap-15.Dockerfile} | 2 +- ci/containers/ubuntu-2004.Dockerfile | 2 +- ci/containers/ubuntu-2204.Dockerfile | 4 +- ci/gitlab/build-templates.yml | 106 +++++++------ ci/gitlab/builds.yml | 144 +++++------------- ci/gitlab/container-templates.yml | 2 +- ci/gitlab/containers.yml | 12 +- ci/manifest.yml | 6 +- 20 files changed, 123 insertions(+), 185 deletions(-) rename ci/buildenv/{fedora-36.sh => fedora-38.sh} (100%) rename ci/buildenv/{fedora-37.sh => fedora-39.sh} (100%) rename ci/buildenv/{opensuse-leap-153.sh => opensuse-leap-15.sh} (100%) rename ci/containers/{fedora-36.Dockerfile => fedora-38.Dockerfile} (88%) rename ci/containers/{fedora-37.Dockerfile => fedora-39.Dockerfile} (88%) rename ci/containers/{opensuse-leap-153.Dockerfile => opensuse-leap-15.Dockerfile} (91%) diff --git a/ci/buildenv/debian-11.sh b/ci/buildenv/debian-11.sh index 9ea9d7b..d2f6a77 100644 --- a/ci/buildenv/debian-11.sh +++ b/ci/buildenv/debian-11.sh @@ -17,7 +17,7 @@ function install_buildenv() { libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless + openjdk-17-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt diff --git a/ci/buildenv/debian-sid.sh b/ci/buildenv/debian-sid.sh index 9ea9d7b..d2f6a77 100644 --- a/ci/buildenv/debian-sid.sh +++ b/ci/buildenv/debian-sid.sh @@ -17,7 +17,7 @@ function install_buildenv() { libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless + openjdk-17-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt diff --git a/ci/buildenv/fedora-36.sh b/ci/buildenv/fedora-38.sh similarity index 100% rename from ci/buildenv/fedora-36.sh rename to ci/buildenv/fedora-38.sh diff --git a/ci/buildenv/fedora-37.sh b/ci/buildenv/fedora-39.sh similarity index 100% rename from ci/buildenv/fedora-37.sh rename to ci/buildenv/fedora-39.sh diff --git a/ci/buildenv/opensuse-leap-153.sh b/ci/buildenv/opensuse-leap-15.sh similarity index 100% rename from ci/buildenv/opensuse-leap-153.sh rename to ci/buildenv/opensuse-leap-15.sh diff --git a/ci/buildenv/ubuntu-2004.sh b/ci/buildenv/ubuntu-2004.sh index 9ea9d7b..d2f6a77 100644 --- a/ci/buildenv/ubuntu-2004.sh +++ b/ci/buildenv/ubuntu-2004.sh @@ -17,7 +17,7 @@ function install_buildenv() { libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless + openjdk-17-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh index a95014e..a022f83 100644 --- a/ci/buildenv/ubuntu-2204.sh +++ b/ci/buildenv/ubuntu-2204.sh @@ -18,7 +18,6 @@ function install_buildenv() { gettext \ git \ junit \ - libc-dev-bin \ libc6-dev \ libglib2.0-dev \ libgnutls28-dev \ @@ -33,7 +32,7 @@ function install_buildenv() { make \ meson \ ninja-build \ - openjdk-11-jdk-headless \ + openjdk-17-jdk-headless \ perl-base \ pkgconf \ python3 \ @@ -41,6 +40,7 @@ function install_buildenv() { xsltproc sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt mkdir -p /usr/libexec/ccache-wrappers ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc diff --git a/ci/containers/debian-11.Dockerfile b/ci/containers/debian-11.Dockerfile index 36219cd..ea3520b 100644 --- a/ci/containers/debian-11.Dockerfile +++ b/ci/containers/debian-11.Dockerfile @@ -19,7 +19,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless && \ + openjdk-17-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile index b09adc9..03d2f57 100644 --- a/ci/containers/debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -19,7 +19,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless && \ + openjdk-17-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/fedora-36.Dockerfile b/ci/containers/fedora-38.Dockerfile similarity index 88% rename from ci/containers/fedora-36.Dockerfile rename to ci/containers/fedora-38.Dockerfile index 30b1ca9..c53703a 100644 --- a/ci/containers/fedora-36.Dockerfile +++ b/ci/containers/fedora-38.Dockerfile @@ -4,17 +4,17 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:36 +FROM registry.fedoraproject.org/fedora:38 RUN dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ diff --git a/ci/containers/fedora-37.Dockerfile b/ci/containers/fedora-39.Dockerfile similarity index 88% rename from ci/containers/fedora-37.Dockerfile rename to ci/containers/fedora-39.Dockerfile index 3f34f45..9cb7d0b 100644 --- a/ci/containers/fedora-37.Dockerfile +++ b/ci/containers/fedora-39.Dockerfile @@ -4,17 +4,17 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:37 +FROM registry.fedoraproject.org/fedora:39 RUN dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf update -y && \ nosync dnf install -y \ diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index 5c83203..8fb86c0 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -8,14 +8,14 @@ FROM registry.fedoraproject.org/fedora:rawhide RUN dnf update -y --nogpgcheck fedora-gpg-keys && \ dnf install -y nosync && \ - echo -e '#!/bin/sh\n\ + printf '#!/bin/sh\n\ if test -d /usr/lib64\n\ then\n\ export LD_PRELOAD=/usr/lib64/nosync/nosync.so\n\ else\n\ export LD_PRELOAD=/usr/lib/nosync/nosync.so\n\ fi\n\ -exec "$@"' > /usr/bin/nosync && \ +exec "$@"\n' > /usr/bin/nosync && \ chmod +x /usr/bin/nosync && \ nosync dnf distro-sync -y && \ nosync dnf install -y \ diff --git a/ci/containers/opensuse-leap-153.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile similarity index 91% rename from ci/containers/opensuse-leap-153.Dockerfile rename to ci/containers/opensuse-leap-15.Dockerfile index e6e027f..263f09f 100644 --- a/ci/containers/opensuse-leap-153.Dockerfile +++ b/ci/containers/opensuse-leap-15.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.opensuse.org/opensuse/leap:15.3 +FROM registry.opensuse.org/opensuse/leap:15.5 RUN zypper update -y && \ zypper install -y \ diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/ubuntu-2004.Dockerfile index 129b57e..6a39f5e 100644 --- a/ci/containers/ubuntu-2004.Dockerfile +++ b/ci/containers/ubuntu-2004.Dockerfile @@ -19,7 +19,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libjna-java \ libvirt-dev \ locales \ - openjdk-11-jdk-headless && \ + openjdk-17-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile index 2aa78ab..6390620 100644 --- a/ci/containers/ubuntu-2204.Dockerfile +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -20,7 +20,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ gettext \ git \ junit \ - libc-dev-bin \ libc6-dev \ libglib2.0-dev \ libgnutls28-dev \ @@ -35,7 +34,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ make \ meson \ ninja-build \ - openjdk-11-jdk-headless \ + openjdk-17-jdk-headless \ perl-base \ pkgconf \ python3 \ @@ -45,6 +44,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ mkdir -p /usr/libexec/ccache-wrappers && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index f400f98..fae09ac 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -20,16 +20,25 @@ # include CI changes # - Validating code committed to a fork branch # -# Note: the rules across the prebuilt_env and local_env templates +# Note: the rules across the prebuilt and local container scenarios # should be logical inverses, such that jobs are mutually exclusive # -.gitlab_native_build_job_prebuilt_env: - image: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest +.gitlab_native_build_job: + image: $IMAGE stage: builds interruptible: true before_script: + - if test "$IMAGE" == "$TARGET_BASE_IMAGE" ; + then + source ci/buildenv/$NAME.sh ; + install_buildenv ; + fi - cat /packages.txt + variables: + IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest rules: + ### PUSH events + # upstream: pushes to the default branch - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual @@ -44,88 +53,89 @@ - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' when: on_success - # upstream: other web/api/scheduled pipelines targeting the default branch - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + # forks: pushes to branches with pipeline requested + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' when: manual allow_failure: true - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # upstream+forks: merge requests targeting the default branch, without CI changes + + ### MERGE REQUEST events + + # upstream+forks: merge requests targeting the default branch, with CI changes + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + changes: + - ci/gitlab/container-templates.yml + - ci/containers/$NAME.Dockerfile + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' changes: - ci/gitlab/container-templates.yml - ci/containers/$NAME.Dockerfile - when: never + when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE + + # upstream+forks: merge requests targeting the default branch - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' when: on_success - # upstream+forks: that's all folks - - when: never - -.gitlab_native_build_job_local_env: - image: $IMAGE - stage: builds - interruptible: true - before_script: - - source ci/buildenv/$NAME.sh - - install_buildenv - - cat /packages.txt - rules: - # upstream: pushes to a non-default branch - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' + # upstream+forks: merge requests targeting non-default branches + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # forks: avoid build in local env when job requests run in upstream containers - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' - when: never - # forks: pushes to branches with pipeline requested - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' + ### WEB / API / SCHEDULED events + + # upstream: other web/api/scheduled pipelines targeting the default branch + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH' when: on_success # upstream: other web/api/scheduled pipelines targeting non-default branches - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # forks: other web/api/scheduled pipelines + # forks: other web/api/scheduled pipelines on any branches - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/ && $JOB_OPTIONAL' when: manual allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE =~ /(web|api|schedule)/' when: on_success + variables: + IMAGE: $TARGET_BASE_IMAGE - # upstream+forks: merge requests targeting the default branch, with CI changes - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' - changes: - - ci/gitlab/container-templates.yml - - ci/containers/$NAME.Dockerfile - when: on_success - # upstream+forks: merge requests targeting non-default branches - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH && $JOB_OPTIONAL' - when: manual - allow_failure: true - - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME != $CI_DEFAULT_BRANCH' - when: on_success + ### Catch all unhandled events # upstream+forks: that's all folks - when: never diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index 9cf9b37..e9f1347 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -7,185 +7,113 @@ # Native build jobs -x86_64-almalinux-8-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-almalinux-8: + extends: .native_build_job needs: - job: x86_64-almalinux-8-container optional: true allow_failure: false variables: NAME: almalinux-8 - TESTS: skip - -x86_64-almalinux-8-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/almalinux:8 - NAME: almalinux-8 + TARGET_BASE_IMAGE: docker.io/library/almalinux:8 TESTS: skip -x86_64-centos-stream-8-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-centos-stream-8: + extends: .native_build_job needs: - job: x86_64-centos-stream-8-container optional: true allow_failure: false variables: NAME: centos-stream-8 - TESTS: skip - -x86_64-centos-stream-8-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: quay.io/centos/centos:stream8 - NAME: centos-stream-8 + TARGET_BASE_IMAGE: quay.io/centos/centos:stream8 TESTS: skip -x86_64-debian-11-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-debian-11: + extends: .native_build_job needs: - job: x86_64-debian-11-container optional: true allow_failure: false variables: NAME: debian-11 + TARGET_BASE_IMAGE: docker.io/library/debian:11-slim -x86_64-debian-11-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/debian:11-slim - NAME: debian-11 - -x86_64-debian-sid-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-debian-sid: + extends: .native_build_job needs: - job: x86_64-debian-sid-container optional: true allow_failure: false variables: NAME: debian-sid - -x86_64-debian-sid-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/debian:sid-slim - NAME: debian-sid + TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim -x86_64-fedora-36-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-38: + extends: .native_build_job needs: - - job: x86_64-fedora-36-container + - job: x86_64-fedora-38-container optional: true allow_failure: false variables: - NAME: fedora-36 + NAME: fedora-38 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:38 -x86_64-fedora-36-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.fedoraproject.org/fedora:36 - NAME: fedora-36 - -x86_64-fedora-37-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-39: + extends: .native_build_job needs: - - job: x86_64-fedora-37-container + - job: x86_64-fedora-39-container optional: true allow_failure: false variables: - NAME: fedora-37 + NAME: fedora-39 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39 -x86_64-fedora-37-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.fedoraproject.org/fedora:37 - NAME: fedora-37 - -x86_64-fedora-rawhide-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-fedora-rawhide: + extends: .native_build_job needs: - job: x86_64-fedora-rawhide-container optional: true allow_failure: false variables: NAME: fedora-rawhide - -x86_64-fedora-rawhide-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.fedoraproject.org/fedora:rawhide - NAME: fedora-rawhide + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide -x86_64-opensuse-leap-153-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-opensuse-leap-15: + extends: .native_build_job needs: - - job: x86_64-opensuse-leap-153-container + - job: x86_64-opensuse-leap-15-container optional: true allow_failure: false variables: - NAME: opensuse-leap-153 + NAME: opensuse-leap-15 + TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5 -x86_64-opensuse-leap-153-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: registry.opensuse.org/opensuse/leap:15.3 - NAME: opensuse-leap-153 - -x86_64-ubuntu-2004-prebuilt-env: - extends: .native_build_job_prebuilt_env +x86_64-ubuntu-2004: + extends: .native_build_job needs: - job: x86_64-ubuntu-2004-container optional: true allow_failure: false variables: NAME: ubuntu-2004 - -x86_64-ubuntu-2004-local-env: - extends: .native_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/ubuntu:20.04 - NAME: ubuntu-2004 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:20.04 -x86_64-ubuntu-2204-git-prebuilt-env: - extends: .native_git_build_job_prebuilt_env +x86_64-ubuntu-2204-git: + extends: .native_git_build_job needs: - job: x86_64-ubuntu-2204-container optional: true allow_failure: false variables: NAME: ubuntu-2204 - -x86_64-ubuntu-2204-git-local-env: - extends: .native_git_build_job_local_env - needs: [] - allow_failure: false - variables: - IMAGE: docker.io/library/ubuntu:22.04 - NAME: ubuntu-2204 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 diff --git a/ci/gitlab/container-templates.yml b/ci/gitlab/container-templates.yml index edb4aba..adc8a1a 100644 --- a/ci/gitlab/container-templates.yml +++ b/ci/gitlab/container-templates.yml @@ -14,7 +14,7 @@ # Note: never publish from merge requests since they have non-committed code # .container_job: - image: docker:stable + image: docker:latest stage: containers interruptible: false needs: [] diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml index 4ed2c39..d58bdc6 100644 --- a/ci/gitlab/containers.yml +++ b/ci/gitlab/containers.yml @@ -35,18 +35,18 @@ x86_64-debian-sid-container: NAME: debian-sid -x86_64-fedora-36-container: +x86_64-fedora-38-container: extends: .container_job allow_failure: false variables: - NAME: fedora-36 + NAME: fedora-38 -x86_64-fedora-37-container: +x86_64-fedora-39-container: extends: .container_job allow_failure: false variables: - NAME: fedora-37 + NAME: fedora-39 x86_64-fedora-rawhide-container: @@ -56,11 +56,11 @@ x86_64-fedora-rawhide-container: NAME: fedora-rawhide -x86_64-opensuse-leap-153-container: +x86_64-opensuse-leap-15-container: extends: .container_job allow_failure: false variables: - NAME: opensuse-leap-153 + NAME: opensuse-leap-15 x86_64-ubuntu-2004-container: diff --git a/ci/manifest.yml b/ci/manifest.yml index 07f5325..704dd0c 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -23,13 +23,13 @@ targets: debian-sid: x86_64 - fedora-36: x86_64 + fedora-38: x86_64 - fedora-37: x86_64 + fedora-39: x86_64 fedora-rawhide: x86_64 - opensuse-leap-153: x86_64 + opensuse-leap-15: x86_64 ubuntu-2004: x86_64 From c384260307ff501b72659da662ad2b9270abf119 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 14:49:11 +0100 Subject: [PATCH 095/114] ci: Stop using local_env/prebuilt_env Recent versions of lcitool no longer expect this distinction. Signed-off-by: Andrea Bolognani --- .gitlab-ci.yml | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c242c6..89f3090 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,6 +5,8 @@ stages: - sanity_checks .native_git_build_job: + extends: + - .gitlab_native_build_job script: - export MAKEFLAGS="-j$(getconf _NPROCESSORS_ONLN)" - export SCRATCH_DIR="/tmp/scratch" @@ -26,33 +28,15 @@ stages: - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi -.native_git_build_job_prebuilt_env: - extends: - - .native_git_build_job - - .gitlab_native_build_job_prebuilt_env - -.native_git_build_job_local_env: - extends: - - .native_git_build_job - - .gitlab_native_build_job_local_env - .native_build_job: + extends: + - .gitlab_native_build_job script: - ant build jar docs - if test "$TESTS" != "skip" ; then ant test ; fi - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi -.native_build_job_prebuilt_env: - extends: - - .native_build_job - - .gitlab_native_build_job_prebuilt_env - -.native_build_job_local_env: - extends: - - .native_build_job - - .gitlab_native_build_job_local_env - .website: script: - ant docs @@ -66,19 +50,11 @@ stages: pages: extends: - .website - - .gitlab_native_build_job_prebuilt_env + - .gitlab_native_build_job needs: - job: x86_64-ubuntu-2204-container optional: true variables: NAME: ubuntu-2204 -website_local_env: - extends: - - .website - - .gitlab_native_build_job_local_env - variables: - IMAGE: docker.io/library/ubuntu:22.04 - NAME: ubuntu-2204 - include: '/ci/gitlab.yml' From fb9af93e134362bfa60991d5e517609051739f3b Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 14:47:27 +0100 Subject: [PATCH 096/114] ci: Fix Ubuntu 22.04 jobs Currently the 'jobs' key is overwritten, so only the git job is produced. While at it, stop using 'template' for the default job, since the value we're using matches the default. Signed-off-by: Andrea Bolognani --- ci/gitlab/builds.yml | 11 +++++++++++ ci/manifest.yml | 3 --- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index e9f1347..bb513af 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -108,6 +108,17 @@ x86_64-ubuntu-2004: TARGET_BASE_IMAGE: docker.io/library/ubuntu:20.04 +x86_64-ubuntu-2204: + extends: .native_build_job + needs: + - job: x86_64-ubuntu-2204-container + optional: true + allow_failure: false + variables: + NAME: ubuntu-2204 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 + + x86_64-ubuntu-2204-git: extends: .native_git_build_job needs: diff --git a/ci/manifest.yml b/ci/manifest.yml index 704dd0c..098263a 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -41,9 +41,6 @@ targets: jobs: - arch: x86_64 - template: .native_build_job - - jobs: - arch: x86_64 template: .native_git_build_job suffix: -git From 5eabfddbfc8fc0e12987981b781eb4b44e950b46 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 15:50:28 +0100 Subject: [PATCH 097/114] ci: Simplify website job Signed-off-by: Andrea Bolognani --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 89f3090..9d5d74d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,9 +40,8 @@ stages: .website: script: - ant docs - - mkdir public + - cp -rf site public - mv target/javadoc public/ - - cp -rf site/* public/ artifacts: paths: - public From 253e36338ae22fc67ede072766dec91135831fc4 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 14:53:34 +0100 Subject: [PATCH 098/114] ci: Split building and publishing of pages Signed-off-by: Andrea Bolognani --- .gitlab-ci.yml | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9d5d74d..bb7152f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,7 @@ stages: - containers - builds + - pages - sanity_checks .native_git_build_job: @@ -37,23 +38,30 @@ stages: - ant src - if test -x /usr/bin/rpmbuild ; then ant spec && rpmbuild -ba --define "_sourcedir `pwd`/target" target/libvirt-java.spec ; fi -.website: - script: - - ant docs - - cp -rf site public - - mv target/javadoc public/ - artifacts: - paths: - - public - -pages: +website_job: extends: - - .website - .gitlab_native_build_job needs: - job: x86_64-ubuntu-2204-container optional: true + script: + - ant docs + - cp -rf site website + - mv target/javadoc website/ + artifacts: + paths: + - website variables: NAME: ubuntu-2204 +pages: + stage: pages + dependencies: + - website_job + script: + - mv website public + artifacts: + paths: + - public + include: '/ci/gitlab.yml' From bc67940722b7fcfd3fedba0cf2f1829f41f94517 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 18 Mar 2024 14:54:22 +0100 Subject: [PATCH 099/114] ci: Add rules for pages publishing job We want the pages building job to run for MRs, to ensure that no breakages sneak in, but updated pages should only be published once the changes have been merged into master. Signed-off-by: Andrea Bolognani --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb7152f..4e8f60f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -63,5 +63,9 @@ pages: artifacts: paths: - public + rules: + - if: '$CI_PROJECT_NAMESPACE == $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + when: on_success + - when: never include: '/ci/gitlab.yml' From 5b85a700f94ca5f64903e024fddfdfdc953935d4 Mon Sep 17 00:00:00 2001 From: Fabricio Duarte Date: Sun, 3 Nov 2024 20:08:34 -0300 Subject: [PATCH 100/114] Add missing virDomainSnapshotGetXMLDesc flags Signed-off-by: Fabricio Duarte --- src/main/java/org/libvirt/Domain.java | 3 +-- src/main/java/org/libvirt/DomainSnapshot.java | 27 +++++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index da5b357..72a9225 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1293,8 +1293,7 @@ public VcpuInfo[] getVcpusInfo() throws LibvirtException { * Provides an XML description of the domain. The description may be reused * later to relaunch the domain with createLinux(). * - * @param flags - * not used + * @param flags bitwise-OR of {@link XMLFlags} * @return the XML description String * @throws LibvirtException * @see The XML diff --git a/src/main/java/org/libvirt/DomainSnapshot.java b/src/main/java/org/libvirt/DomainSnapshot.java index 4ee86f4..09bdaef 100644 --- a/src/main/java/org/libvirt/DomainSnapshot.java +++ b/src/main/java/org/libvirt/DomainSnapshot.java @@ -16,6 +16,10 @@ public static final class SnapshotDeleteFlags { public static final int CHILDREN_ONLY = bit(2); /* Delete just children */ } + public static final class XMLFlags { + public static final int SECURE = bit(0); /* Dump security sensitive information too */ + } + /** * the native virDomainSnapshotPtr. */ @@ -75,14 +79,27 @@ public int free() throws LibvirtException { } /** - * Fetches an XML document describing attributes of the snapshot. + * Fetches an XML document describing attributes of the snapshot, without security-sensitive data. * - * @throws org.libvirt.LibvirtException - * @see - Libvirt Documentation + * @see + * Libvirt Documentation * @return the XML document + * @throws org.libvirt.LibvirtException */ public String getXMLDesc() throws LibvirtException { - return processError(libvirt.virDomainSnapshotGetXMLDesc(vdsp, 0)).toString(); + return getXMLDesc(0); + } + + /** + * Fetches an XML document describing attributes of the snapshot. + * + * @see + * Libvirt Documentation + * @param flags bitwise-OR of {@link XMLFlags} + * @return the XML document + * @throws org.libvirt.LibvirtException + */ + public String getXMLDesc(final int flags) throws LibvirtException { + return processError(libvirt.virDomainSnapshotGetXMLDesc(vdsp, flags)).toString(); } } From ebcb5676fefe580e6df94fe82e76b1e71dd74347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 18 Nov 2024 10:15:00 +0000 Subject: [PATCH 101/114] ci: refresh with 'lcitool manifest' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Notable changes * AlmaLinux 8 / CentOS Stream 8 replaced with 9 * Fedora 38 dropped, 40 added * Ubuntu 20.04 dropped, 24.04 added * Debian 11 dropped, 12 added Signed-off-by: Daniel P. Berrangé --- .../{almalinux-8.sh => almalinux-9.sh} | 7 +- ...{centos-stream-8.sh => centos-stream-9.sh} | 7 +- ci/buildenv/{debian-11.sh => debian-12.sh} | 0 ci/buildenv/fedora-39.sh | 2 +- ci/buildenv/{fedora-38.sh => fedora-40.sh} | 2 +- ci/buildenv/fedora-rawhide.sh | 2 +- ci/buildenv/opensuse-leap-15.sh | 3 +- ci/buildenv/ubuntu-2004.sh | 26 ------- ci/buildenv/ubuntu-2204.sh | 30 +------- ci/buildenv/ubuntu-2404.sh | 54 ++++++++++++++ ...ux-8.Dockerfile => almalinux-9.Dockerfile} | 9 +-- ....Dockerfile => centos-stream-9.Dockerfile} | 9 +-- ci/containers/debian-11.Dockerfile | 29 -------- ...u-2004.Dockerfile => debian-12.Dockerfile} | 2 +- ci/containers/fedora-39.Dockerfile | 2 +- ...ora-38.Dockerfile => fedora-40.Dockerfile} | 4 +- ci/containers/fedora-rawhide.Dockerfile | 2 +- ci/containers/opensuse-leap-15.Dockerfile | 5 +- ci/containers/ubuntu-2204.Dockerfile | 32 +-------- ci/containers/ubuntu-2404.Dockerfile | 57 +++++++++++++++ ci/gitlab.yml | 13 ++-- ci/gitlab/build-templates.yml | 16 +++-- ci/gitlab/builds.yml | 70 +++++++++---------- ci/gitlab/containers.yml | 32 ++++----- ci/gitlab/sanity-checks.yml | 8 ++- ci/manifest.yml | 20 +++--- 26 files changed, 233 insertions(+), 210 deletions(-) rename ci/buildenv/{almalinux-8.sh => almalinux-9.sh} (76%) rename ci/buildenv/{centos-stream-8.sh => centos-stream-9.sh} (77%) rename ci/buildenv/{debian-11.sh => debian-12.sh} (100%) rename ci/buildenv/{fedora-38.sh => fedora-40.sh} (92%) delete mode 100644 ci/buildenv/ubuntu-2004.sh create mode 100644 ci/buildenv/ubuntu-2404.sh rename ci/containers/{almalinux-8.Dockerfile => almalinux-9.Dockerfile} (72%) rename ci/containers/{centos-stream-8.Dockerfile => centos-stream-9.Dockerfile} (74%) delete mode 100644 ci/containers/debian-11.Dockerfile rename ci/containers/{ubuntu-2004.Dockerfile => debian-12.Dockerfile} (96%) rename ci/containers/{fedora-38.Dockerfile => fedora-40.Dockerfile} (90%) create mode 100644 ci/containers/ubuntu-2404.Dockerfile diff --git a/ci/buildenv/almalinux-8.sh b/ci/buildenv/almalinux-9.sh similarity index 76% rename from ci/buildenv/almalinux-8.sh rename to ci/buildenv/almalinux-9.sh index 4478e4f..f4065ad 100644 --- a/ci/buildenv/almalinux-8.sh +++ b/ci/buildenv/almalinux-9.sh @@ -7,16 +7,17 @@ function install_buildenv() { dnf update -y dnf install 'dnf-command(config-manager)' -y - dnf config-manager --set-enabled -y powertools - dnf install -y centos-release-advanced-virtualization + dnf config-manager --set-enabled -y crb dnf install -y epel-release dnf install -y \ ant \ + ant-junit \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ + junit \ libvirt-devel \ rpm-build rpm -qa | sort > /packages.txt diff --git a/ci/buildenv/centos-stream-8.sh b/ci/buildenv/centos-stream-9.sh similarity index 77% rename from ci/buildenv/centos-stream-8.sh rename to ci/buildenv/centos-stream-9.sh index a78bbc6..66904b2 100644 --- a/ci/buildenv/centos-stream-8.sh +++ b/ci/buildenv/centos-stream-9.sh @@ -7,17 +7,18 @@ function install_buildenv() { dnf distro-sync -y dnf install 'dnf-command(config-manager)' -y - dnf config-manager --set-enabled -y powertools - dnf install -y centos-release-advanced-virtualization + dnf config-manager --set-enabled -y crb dnf install -y epel-release dnf install -y epel-next-release dnf install -y \ ant \ + ant-junit \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ + junit \ libvirt-devel \ rpm-build rpm -qa | sort > /packages.txt diff --git a/ci/buildenv/debian-11.sh b/ci/buildenv/debian-12.sh similarity index 100% rename from ci/buildenv/debian-11.sh rename to ci/buildenv/debian-12.sh diff --git a/ci/buildenv/fedora-39.sh b/ci/buildenv/fedora-39.sh index 46b5102..70ab49a 100644 --- a/ci/buildenv/fedora-39.sh +++ b/ci/buildenv/fedora-39.sh @@ -12,7 +12,7 @@ function install_buildenv() { ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/buildenv/fedora-38.sh b/ci/buildenv/fedora-40.sh similarity index 92% rename from ci/buildenv/fedora-38.sh rename to ci/buildenv/fedora-40.sh index 46b5102..70ab49a 100644 --- a/ci/buildenv/fedora-38.sh +++ b/ci/buildenv/fedora-40.sh @@ -12,7 +12,7 @@ function install_buildenv() { ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/buildenv/fedora-rawhide.sh b/ci/buildenv/fedora-rawhide.sh index 1ba76e7..0e3c619 100644 --- a/ci/buildenv/fedora-rawhide.sh +++ b/ci/buildenv/fedora-rawhide.sh @@ -13,7 +13,7 @@ function install_buildenv() { ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/buildenv/opensuse-leap-15.sh b/ci/buildenv/opensuse-leap-15.sh index e0a14fb..9cfdf13 100644 --- a/ci/buildenv/opensuse-leap-15.sh +++ b/ci/buildenv/opensuse-leap-15.sh @@ -6,13 +6,14 @@ function install_buildenv() { zypper update -y + zypper addrepo -fc https://download.opensuse.org/update/leap/15.6/backports/openSUSE:Backports:SLE-15-SP6:Update.repo zypper install -y \ ant \ ant-junit \ ca-certificates \ git \ glibc-locale \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/buildenv/ubuntu-2004.sh b/ci/buildenv/ubuntu-2004.sh deleted file mode 100644 index d2f6a77..0000000 --- a/ci/buildenv/ubuntu-2004.sh +++ /dev/null @@ -1,26 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool manifest ci/manifest.yml -# -# https://gitlab.com/libvirt/libvirt-ci - -function install_buildenv() { - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get dist-upgrade -y - apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-17-jdk-headless - sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen - dpkg-reconfigure locales - dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt -} - -export LANG="en_US.UTF-8" diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh index a022f83..d2f6a77 100644 --- a/ci/buildenv/ubuntu-2204.sh +++ b/ci/buildenv/ubuntu-2204.sh @@ -12,43 +12,15 @@ function install_buildenv() { ant \ ant-optional \ ca-certificates \ - ccache \ - cpp \ - gcc \ - gettext \ git \ junit \ - libc6-dev \ - libglib2.0-dev \ - libgnutls28-dev \ libjna-java \ - libnl-3-dev \ - libnl-route-3-dev \ - libtirpc-dev \ libvirt-dev \ - libxml2-dev \ - libxml2-utils \ locales \ - make \ - meson \ - ninja-build \ - openjdk-17-jdk-headless \ - perl-base \ - pkgconf \ - python3 \ - python3-docutils \ - xsltproc + openjdk-17-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales - rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt - mkdir -p /usr/libexec/ccache-wrappers - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc } -export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" export LANG="en_US.UTF-8" -export MAKE="/usr/bin/make" -export NINJA="/usr/bin/ninja" -export PYTHON="/usr/bin/python3" diff --git a/ci/buildenv/ubuntu-2404.sh b/ci/buildenv/ubuntu-2404.sh new file mode 100644 index 0000000..a022f83 --- /dev/null +++ b/ci/buildenv/ubuntu-2404.sh @@ -0,0 +1,54 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + ccache \ + cpp \ + gcc \ + gettext \ + git \ + junit \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + openjdk-17-jdk-headless \ + perl-base \ + pkgconf \ + python3 \ + python3-docutils \ + xsltproc + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt + mkdir -p /usr/libexec/ccache-wrappers + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc +} + +export CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +export LANG="en_US.UTF-8" +export MAKE="/usr/bin/make" +export NINJA="/usr/bin/ninja" +export PYTHON="/usr/bin/python3" diff --git a/ci/containers/almalinux-8.Dockerfile b/ci/containers/almalinux-9.Dockerfile similarity index 72% rename from ci/containers/almalinux-8.Dockerfile rename to ci/containers/almalinux-9.Dockerfile index 644e254..40db23b 100644 --- a/ci/containers/almalinux-8.Dockerfile +++ b/ci/containers/almalinux-9.Dockerfile @@ -4,20 +4,21 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/almalinux:8 +FROM docker.io/library/almalinux:9 RUN dnf update -y && \ dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y powertools && \ - dnf install -y centos-release-advanced-virtualization && \ + dnf config-manager --set-enabled -y crb && \ dnf install -y epel-release && \ dnf install -y \ ant \ + ant-junit \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ + junit \ libvirt-devel \ rpm-build && \ dnf autoremove -y && \ diff --git a/ci/containers/centos-stream-8.Dockerfile b/ci/containers/centos-stream-9.Dockerfile similarity index 74% rename from ci/containers/centos-stream-8.Dockerfile rename to ci/containers/centos-stream-9.Dockerfile index 715f7c3..c29ddfb 100644 --- a/ci/containers/centos-stream-8.Dockerfile +++ b/ci/containers/centos-stream-9.Dockerfile @@ -4,21 +4,22 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM quay.io/centos/centos:stream8 +FROM quay.io/centos/centos:stream9 RUN dnf distro-sync -y && \ dnf install 'dnf-command(config-manager)' -y && \ - dnf config-manager --set-enabled -y powertools && \ - dnf install -y centos-release-advanced-virtualization && \ + dnf config-manager --set-enabled -y crb && \ dnf install -y epel-release && \ dnf install -y epel-next-release && \ dnf install -y \ ant \ + ant-junit \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ + junit \ libvirt-devel \ rpm-build && \ dnf autoremove -y && \ diff --git a/ci/containers/debian-11.Dockerfile b/ci/containers/debian-11.Dockerfile deleted file mode 100644 index ea3520b..0000000 --- a/ci/containers/debian-11.Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# THIS FILE WAS AUTO-GENERATED -# -# $ lcitool manifest ci/manifest.yml -# -# https://gitlab.com/libvirt/libvirt-ci - -FROM docker.io/library/debian:11-slim - -RUN export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y eatmydata && \ - eatmydata apt-get dist-upgrade -y && \ - eatmydata apt-get install --no-install-recommends -y \ - ant \ - ant-optional \ - ca-certificates \ - git \ - junit \ - libjna-java \ - libvirt-dev \ - locales \ - openjdk-17-jdk-headless && \ - eatmydata apt-get autoremove -y && \ - eatmydata apt-get autoclean -y && \ - sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ - dpkg-reconfigure locales && \ - dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt - -ENV LANG "en_US.UTF-8" diff --git a/ci/containers/ubuntu-2004.Dockerfile b/ci/containers/debian-12.Dockerfile similarity index 96% rename from ci/containers/ubuntu-2004.Dockerfile rename to ci/containers/debian-12.Dockerfile index 6a39f5e..ec45fb8 100644 --- a/ci/containers/ubuntu-2004.Dockerfile +++ b/ci/containers/debian-12.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM docker.io/library/ubuntu:20.04 +FROM docker.io/library/debian:12-slim RUN export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ diff --git a/ci/containers/fedora-39.Dockerfile b/ci/containers/fedora-39.Dockerfile index 9cb7d0b..afa350f 100644 --- a/ci/containers/fedora-39.Dockerfile +++ b/ci/containers/fedora-39.Dockerfile @@ -23,7 +23,7 @@ exec "$@"\n' > /usr/bin/nosync && \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/containers/fedora-38.Dockerfile b/ci/containers/fedora-40.Dockerfile similarity index 90% rename from ci/containers/fedora-38.Dockerfile rename to ci/containers/fedora-40.Dockerfile index c53703a..5d8f9b4 100644 --- a/ci/containers/fedora-38.Dockerfile +++ b/ci/containers/fedora-40.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:38 +FROM registry.fedoraproject.org/fedora:40 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -23,7 +23,7 @@ exec "$@"\n' > /usr/bin/nosync && \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index 8fb86c0..fff03f4 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -24,7 +24,7 @@ exec "$@"\n' > /usr/bin/nosync && \ ca-certificates \ git \ glibc-langpack-en \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/containers/opensuse-leap-15.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile index 263f09f..535e449 100644 --- a/ci/containers/opensuse-leap-15.Dockerfile +++ b/ci/containers/opensuse-leap-15.Dockerfile @@ -4,16 +4,17 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.opensuse.org/opensuse/leap:15.5 +FROM registry.opensuse.org/opensuse/leap:15.6 RUN zypper update -y && \ + zypper addrepo -fc https://download.opensuse.org/update/leap/15.6/backports/openSUSE:Backports:SLE-15-SP6:Update.repo && \ zypper install -y \ ant \ ant-junit \ ca-certificates \ git \ glibc-locale \ - java-11-openjdk-headless \ + java-21-openjdk-headless \ jna \ junit \ libvirt-devel \ diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile index 6390620..b0076c8 100644 --- a/ci/containers/ubuntu-2204.Dockerfile +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -14,44 +14,16 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ant \ ant-optional \ ca-certificates \ - ccache \ - cpp \ - gcc \ - gettext \ git \ junit \ - libc6-dev \ - libglib2.0-dev \ - libgnutls28-dev \ libjna-java \ - libnl-3-dev \ - libnl-route-3-dev \ - libtirpc-dev \ libvirt-dev \ - libxml2-dev \ - libxml2-utils \ locales \ - make \ - meson \ - ninja-build \ - openjdk-17-jdk-headless \ - perl-base \ - pkgconf \ - python3 \ - python3-docutils \ - xsltproc && \ + openjdk-17-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ - rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \ - dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ - mkdir -p /usr/libexec/ccache-wrappers && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ - ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" ENV LANG "en_US.UTF-8" -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" diff --git a/ci/containers/ubuntu-2404.Dockerfile b/ci/containers/ubuntu-2404.Dockerfile new file mode 100644 index 0000000..1509b9a --- /dev/null +++ b/ci/containers/ubuntu-2404.Dockerfile @@ -0,0 +1,57 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/ubuntu:24.04 + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + ccache \ + cpp \ + gcc \ + gettext \ + git \ + junit \ + libc6-dev \ + libglib2.0-dev \ + libgnutls28-dev \ + libjna-java \ + libnl-3-dev \ + libnl-route-3-dev \ + libtirpc-dev \ + libvirt-dev \ + libxml2-dev \ + libxml2-utils \ + locales \ + make \ + meson \ + ninja-build \ + openjdk-17-jdk-headless \ + perl-base \ + pkgconf \ + python3 \ + python3-docutils \ + xsltproc && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt && \ + mkdir -p /usr/libexec/ccache-wrappers && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ + ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc + +ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" +ENV LANG "en_US.UTF-8" +ENV MAKE "/usr/bin/make" +ENV NINJA "/usr/bin/ninja" +ENV PYTHON "/usr/bin/python3" diff --git a/ci/gitlab.yml b/ci/gitlab.yml index 7bb68b8..0daab12 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -11,8 +11,11 @@ # - RUN_PIPELINE - force creation of a CI pipeline when # pushing to a branch in a forked repository. Official # CI pipelines are triggered when merge requests are -# created/updated. Setting this variable to a non-empty -# value allows CI testing prior to opening a merge request. +# created/updated. Setting this variable allows CI +# testing prior to opening a merge request. A value +# of "0" will create the pipeline but leave all jobs +# to be manually started, while "1" will immediately +# run all default jobs. # # - RUN_PIPELINE_UPSTREAM_ENV - same semantics as RUN_PIPELINE, # but uses the CI environment (containers) from the upstream project @@ -38,11 +41,13 @@ # # Aliases can be set for common usage # -# $ git config --local alias.push-ci "push -o ci.variable=RUN_PIPELINE=1" +# $ git config --local alias.push-ci "push -o ci.variable=RUN_PIPELINE=0" +# $ git config --local alias.push-ci-now "push -o ci.variable=RUN_PIPELINE=1" # # Allowing the less verbose invocation # -# $ git push-ci +# $ git push-ci (create pipeline but don't start jobs) +# $ git push-ci-now (create pipeline and start default jobs) # # Pipeline variables can also be set in the repository # pipeline config globally, or set against scheduled pipelines diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index fae09ac..5e6b28e 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -47,19 +47,27 @@ when: on_success # forks: pushes to a branch when a pipeline run in upstream env is explicitly requested - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV && $JOB_OPTIONAL' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV == "0"' when: manual allow_failure: true - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV == "1" && $JOB_OPTIONAL' + when: manual + allow_failure: true + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE_UPSTREAM_ENV == "1"' when: on_success # forks: pushes to branches with pipeline requested - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE && $JOB_OPTIONAL' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE == "0"' + when: manual + allow_failure: true + variables: + IMAGE: $TARGET_BASE_IMAGE + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE == "1" && $JOB_OPTIONAL' when: manual allow_failure: true variables: IMAGE: $TARGET_BASE_IMAGE - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $RUN_PIPELINE == "1"' when: on_success variables: IMAGE: $TARGET_BASE_IMAGE diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index bb513af..0ed5fd0 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -7,39 +7,39 @@ # Native build jobs -x86_64-almalinux-8: +x86_64-almalinux-9: extends: .native_build_job needs: - - job: x86_64-almalinux-8-container + - job: x86_64-almalinux-9-container optional: true allow_failure: false variables: - NAME: almalinux-8 - TARGET_BASE_IMAGE: docker.io/library/almalinux:8 + NAME: almalinux-9 + TARGET_BASE_IMAGE: docker.io/library/almalinux:9 TESTS: skip -x86_64-centos-stream-8: +x86_64-centos-stream-9: extends: .native_build_job needs: - - job: x86_64-centos-stream-8-container + - job: x86_64-centos-stream-9-container optional: true allow_failure: false variables: - NAME: centos-stream-8 - TARGET_BASE_IMAGE: quay.io/centos/centos:stream8 + NAME: centos-stream-9 + TARGET_BASE_IMAGE: quay.io/centos/centos:stream9 TESTS: skip -x86_64-debian-11: +x86_64-debian-12: extends: .native_build_job needs: - - job: x86_64-debian-11-container + - job: x86_64-debian-12-container optional: true allow_failure: false variables: - NAME: debian-11 - TARGET_BASE_IMAGE: docker.io/library/debian:11-slim + NAME: debian-12 + TARGET_BASE_IMAGE: docker.io/library/debian:12-slim x86_64-debian-sid: @@ -47,32 +47,32 @@ x86_64-debian-sid: needs: - job: x86_64-debian-sid-container optional: true - allow_failure: false + allow_failure: true variables: NAME: debian-sid TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim -x86_64-fedora-38: +x86_64-fedora-39: extends: .native_build_job needs: - - job: x86_64-fedora-38-container + - job: x86_64-fedora-39-container optional: true allow_failure: false variables: - NAME: fedora-38 - TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:38 + NAME: fedora-39 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39 -x86_64-fedora-39: +x86_64-fedora-40: extends: .native_build_job needs: - - job: x86_64-fedora-39-container + - job: x86_64-fedora-40-container optional: true allow_failure: false variables: - NAME: fedora-39 - TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39 + NAME: fedora-40 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:40 x86_64-fedora-rawhide: @@ -80,7 +80,7 @@ x86_64-fedora-rawhide: needs: - job: x86_64-fedora-rawhide-container optional: true - allow_failure: false + allow_failure: true variables: NAME: fedora-rawhide TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:rawhide @@ -94,37 +94,37 @@ x86_64-opensuse-leap-15: allow_failure: false variables: NAME: opensuse-leap-15 - TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.5 + TARGET_BASE_IMAGE: registry.opensuse.org/opensuse/leap:15.6 -x86_64-ubuntu-2004: +x86_64-ubuntu-2204: extends: .native_build_job needs: - - job: x86_64-ubuntu-2004-container + - job: x86_64-ubuntu-2204-container optional: true allow_failure: false variables: - NAME: ubuntu-2004 - TARGET_BASE_IMAGE: docker.io/library/ubuntu:20.04 + NAME: ubuntu-2204 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 -x86_64-ubuntu-2204: +x86_64-ubuntu-2404: extends: .native_build_job needs: - - job: x86_64-ubuntu-2204-container + - job: x86_64-ubuntu-2404-container optional: true allow_failure: false variables: - NAME: ubuntu-2204 - TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 + NAME: ubuntu-2404 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:24.04 -x86_64-ubuntu-2204-git: +x86_64-ubuntu-2404-git: extends: .native_git_build_job needs: - - job: x86_64-ubuntu-2204-container + - job: x86_64-ubuntu-2404-container optional: true allow_failure: false variables: - NAME: ubuntu-2204 - TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 + NAME: ubuntu-2404 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:24.04 diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml index d58bdc6..81a9d9f 100644 --- a/ci/gitlab/containers.yml +++ b/ci/gitlab/containers.yml @@ -7,51 +7,51 @@ # Native container jobs -x86_64-almalinux-8-container: +x86_64-almalinux-9-container: extends: .container_job allow_failure: false variables: - NAME: almalinux-8 + NAME: almalinux-9 -x86_64-centos-stream-8-container: +x86_64-centos-stream-9-container: extends: .container_job allow_failure: false variables: - NAME: centos-stream-8 + NAME: centos-stream-9 -x86_64-debian-11-container: +x86_64-debian-12-container: extends: .container_job allow_failure: false variables: - NAME: debian-11 + NAME: debian-12 x86_64-debian-sid-container: extends: .container_job - allow_failure: false + allow_failure: true variables: NAME: debian-sid -x86_64-fedora-38-container: +x86_64-fedora-39-container: extends: .container_job allow_failure: false variables: - NAME: fedora-38 + NAME: fedora-39 -x86_64-fedora-39-container: +x86_64-fedora-40-container: extends: .container_job allow_failure: false variables: - NAME: fedora-39 + NAME: fedora-40 x86_64-fedora-rawhide-container: extends: .container_job - allow_failure: false + allow_failure: true variables: NAME: fedora-rawhide @@ -63,15 +63,15 @@ x86_64-opensuse-leap-15-container: NAME: opensuse-leap-15 -x86_64-ubuntu-2004-container: +x86_64-ubuntu-2204-container: extends: .container_job allow_failure: false variables: - NAME: ubuntu-2004 + NAME: ubuntu-2204 -x86_64-ubuntu-2204-container: +x86_64-ubuntu-2404-container: extends: .container_job allow_failure: false variables: - NAME: ubuntu-2204 + NAME: ubuntu-2404 diff --git a/ci/gitlab/sanity-checks.yml b/ci/gitlab/sanity-checks.yml index d2b1768..b568015 100644 --- a/ci/gitlab/sanity-checks.yml +++ b/ci/gitlab/sanity-checks.yml @@ -18,9 +18,13 @@ check-dco: when: on_success # forks: pushes to branches with pipeline requested (including upstream env pipelines) - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE == "0"' + when: manual + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE == "1"' when: on_success - - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE_UPSTREAM_ENV' + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE_UPSTREAM_ENV == "0"' + when: manual + - if: '$CI_PROJECT_NAMESPACE != $RUN_UPSTREAM_NAMESPACE && $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $RUN_PIPELINE_UPSTREAM_ENV == "1"' when: on_success # upstream+forks: that's all folks diff --git a/ci/manifest.yml b/ci/manifest.yml index 098263a..09966a4 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -1,43 +1,43 @@ projects: - libvirt-java - - libvirt+dist + - https://gitlab.com/libvirt/libvirt/-/raw/master/ci/lcitool/projects/libvirt+dist.yml gitlab: namespace: libvirt project: libvirt-java targets: - almalinux-8: + almalinux-9: jobs: - arch: x86_64 variables: TESTS: skip - centos-stream-8: + centos-stream-9: jobs: - arch: x86_64 variables: TESTS: skip - debian-11: x86_64 + debian-12: x86_64 debian-sid: x86_64 - fedora-38: x86_64 - fedora-39: x86_64 + fedora-40: x86_64 + fedora-rawhide: x86_64 opensuse-leap-15: x86_64 - ubuntu-2004: x86_64 + ubuntu-2204: x86_64 - ubuntu-2204: + ubuntu-2404: projects: - libvirt-java - - libvirt+dist - - libvirt+minimal + - https://gitlab.com/libvirt/libvirt/-/raw/master/ci/lcitool/projects/libvirt+minimal.yml + - https://gitlab.com/libvirt/libvirt/-/raw/master/ci/lcitool/projects/libvirt+dist.yml jobs: - arch: x86_64 From 1576ac9ad4dfe10d7ef922b7e417567053f215ec Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 12 Aug 2025 00:05:12 +0900 Subject: [PATCH 102/114] Expose virDomainMigrateToURI3 ... so that additional flags can be passed to Domain.migrateToURI. Fixes #8 Signed-off-by: Takashi Kajinami --- src/main/java/org/libvirt/Domain.java | 35 ++++++++++++++++++++++ src/main/java/org/libvirt/jna/Libvirt.java | 4 +++ 2 files changed, 39 insertions(+) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 72a9225..8bf48e2 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1735,6 +1735,41 @@ public int migrateSetMaxDowntime(final long downtime) return processError(libvirt.virDomainMigrateSetMaxDowntime(vdp, downtime, 0)); } + /** + * Migrate the domain object from its current host to the destination + * denoted by a given URI. + *

+ * The destination is given either in dconnuri (if the + * {@link MigrateFlags#PEER2PEER PEER2PEER} + * is flag set), or in miguri (if neither the + * {@link MigrateFlags#PEER2PEER PEER2PEER} nor the + * {@link MigrateFlags#TUNNELED TUNNELED} migration + * flag is set in flags). + * + * @see + * virDomainMigrateToURI + * + * @param dconnuri + * (optional) URI for target libvirtd if @flags includes PEER2PEER + * @param params + * (optional) Migration parameters + * @param flags + * Controls the migrate + * @return 0 if successful + * @throws LibvirtException + */ + public int migrateToURI(final String dconnuri, + final TypedParameter[] params, + final int flags) + throws LibvirtException { + assert params != null : "migrate Typed parameters cannot be null"; + virTypedParameter[] input = generateNativeVirTypedParameters(params); + return processError(libvirt.virDomainMigrateToURI3(vdp, dconnuri, + input, input.length, + flags)); + } + /** * Migrate the domain object from its current host to the destination * denoted by a given URI. diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 8cd6448..e08306a 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -417,6 +417,10 @@ int virDomainMigrateToURI2(DomainPointer virDomainPtr, String dconnuri, String miguri, String dxml, NativeLong flags, String dname, NativeLong bandwidth); + int virDomainMigrateToURI3(DomainPointer virDomainPtr, + String dconnuri, + virTypedParameter[] params, int nparams, + int flags); int virDomainMemoryStats(DomainPointer virDomainPtr, virDomainMemoryStats[] stats, int nrStats, int flags); int virDomainPinVcpu(DomainPointer virDomainPtr, From 8301e98670a1b9e225e67df1ea293efc8124e516 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Wed, 13 Aug 2025 11:26:31 +0900 Subject: [PATCH 103/114] Fix missing Deprecated annotation Signed-off-by: Takashi Kajinami --- src/main/java/org/libvirt/ErrorException.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/libvirt/ErrorException.java b/src/main/java/org/libvirt/ErrorException.java index 86b3314..8d30ecf 100644 --- a/src/main/java/org/libvirt/ErrorException.java +++ b/src/main/java/org/libvirt/ErrorException.java @@ -7,6 +7,7 @@ * @author stoty * @deprecated */ +@Deprecated public class ErrorException extends Exception { private static final long serialVersionUID = -4329050530233404971L; From f5b956d0b9f8c53d80a1dcde5347e4d16ea39939 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 8 Aug 2025 16:44:23 +0900 Subject: [PATCH 104/114] Expose Domain CPU stats This exposes virDomainGetCPUStats API so that cpu stats, along with memory stats, can be obtained. Signed-off-by: Takashi Kajinami --- src/main/java/org/libvirt/Domain.java | 22 +++++++++++++++++++ src/main/java/org/libvirt/jna/Libvirt.java | 2 ++ .../java/org/libvirt/TestJavaBindings.java | 17 ++++++++++---- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 8bf48e2..49948f0 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1504,6 +1504,28 @@ public void memoryPeek(final long start, final ByteBuffer buffer, assert buffer.position() == buffer.limit(); } + /** + * This function provides cpu statistics for the domain. + * + * @param start_cpu + * which cpu to start with, or -1 for summary + * @param ncpus + * how many cpus to query + * @return the collection of stats + * @throws LibvirtException + */ + public TypedParameter[] getCPUStats(final int start_cpu, final int ncpus) + throws LibvirtException { + int number = processError(libvirt.virDomainGetCPUStats(vdp, null, 0, start_cpu, ncpus, 0)); + virTypedParameter[] params = new virTypedParameter[number]; + int result = processError(libvirt.virDomainGetCPUStats(vdp, params, number, start_cpu, ncpus, 0)); + TypedParameter[] returnStats = new TypedParameter[result]; + for (int x = 0; x < result; x++) { + returnStats[x] = TypedParameter.create(params[x]); + } + return returnStats; + } + /** * This function provides memory statistics for the domain. * diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index e08306a..ed4839c 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -423,6 +423,8 @@ int virDomainMigrateToURI3(DomainPointer virDomainPtr, int flags); int virDomainMemoryStats(DomainPointer virDomainPtr, virDomainMemoryStats[] stats, int nrStats, int flags); + int virDomainGetCPUStats(DomainPointer virDomainPtr, + virTypedParameter[] params, int nparams, int start_cpu, int ncpus, int flags); int virDomainPinVcpu(DomainPointer virDomainPtr, int vcpu, byte[] cpumap, int maplen); int virDomainPMSuspendForDuration(DomainPointer virDomainPtr, diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 79173c4..781fcc3 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -187,15 +187,24 @@ private void validateDomainData(Domain dom) throws Exception { System.out.println(c.getTypeAsString() + ":" + c.field + ":" + c.getValueAsString()); } - dom.getSchedulerParameters() ; - + dom.getSchedulerParameters(); + SchedUintParameter[] pars = new SchedUintParameter[1]; pars[0] = new SchedUintParameter(); pars[0].field = "weight"; pars[0].value = 100; dom.setSchedulerParameters(pars); - - dom.getSchedulerParameters() ; + + dom.getSchedulerParameters(); + + TypedParameter[] cpuStats = dom.getCPUStats(-1, 1); + assertEquals(3, cpuStats.length); + assertEquals("cpu_time", cpuStats[0].field); + assertEquals("48772617035", cpuStats[0].getValueAsString()); + assertEquals("user_time", cpuStats[1].field); + assertEquals("5540000000", cpuStats[1].getValueAsString()); + assertEquals("system_time", cpuStats[2].field); + assertEquals("6460000000", cpuStats[2].getValueAsString()); } public void testInterfaces() throws Exception { From 7305cef2f2735127cbe9e1da749407f18137e256 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 8 Aug 2025 18:56:08 +0900 Subject: [PATCH 105/114] Remove trailing whitespaces Signed-off-by: Takashi Kajinami --- .../java/org/libvirt/TestJavaBindings.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 781fcc3..49d5a6f 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -61,7 +61,7 @@ public void testConnection() throws Exception { assertEquals("conn.getVersion()", 2, conn.getVersion()); assertTrue("conn.isAlive", conn.isAlive()); assertTrue("conn.isEncrypted", conn.isEncrypted() == 0); - assertTrue("conn.isSecure", conn.isSecure() == 1); + assertTrue("conn.isSecure", conn.isSecure() == 1); } /* @@ -110,8 +110,8 @@ public void testNetworkCreate() throws Exception { assertEquals("Number of defined networks", 1, conn.numOfDefinedNetworks()); assertEquals("Number of listed defined networks", 1, conn.listDefinedNetworks().length); assertTrue("Network1 should not be persistent", network1.isPersistent() == 0); - assertTrue("Network1 should not be active", network1.isActive() == 1); - assertTrue("Network2 should be active", network2.isActive() == 0); + assertTrue("Network1 should not be active", network1.isActive() == 1); + assertTrue("Network2 should be active", network2.isActive() == 0); this.validateNetworkData(network2); this.validateNetworkData(conn.networkLookupByName("deftest")); this.validateNetworkData(conn.networkLookupByUUID(UUIDArray)); @@ -157,8 +157,8 @@ public void testDomainCreate() throws Exception { assertEquals("Number of defined domains", 1, conn.numOfDefinedDomains()); assertEquals("Number of listed defined domains", 1, conn.listDefinedDomains().length); assertTrue("Domain1 should be persistent", dom1.isPersistent() == 1); - assertTrue("Domain1 should not be active", dom1.isActive() == 0); - assertTrue("Domain2 should be active", dom2.isActive() == 1); + assertTrue("Domain1 should not be active", dom1.isActive() == 0); + assertTrue("Domain2 should be active", dom2.isActive() == 1); this.validateDomainData(dom2); this.validateDomainData(conn.domainLookupByName("createst")); this.validateDomainData(conn.domainLookupByUUID(UUIDArray)); @@ -216,7 +216,7 @@ public void testInterfaces() throws Exception { assertEquals("virtInterfaceGetName", "eth1", virtInt.getName()); assertEquals("virtInterfaceGetMACString", "aa:bb:cc:dd:ee:ff", virtInt.getMACString()); assertNotNull("virtInterfaceGetXMLDesc", virtInt.getXMLDescription(0)); - assertTrue("virInterfaceIsActive", virtInt.isActive() == 1); + assertTrue("virInterfaceIsActive", virtInt.isActive() == 1); System.out.println(virtInt.getXMLDescription(0)); String newXML = "" + "" @@ -243,7 +243,7 @@ public void testAccessAfterClose() throws Exception { } assertNotNull(virException); } - + public void testStoragePool() throws Exception { StoragePool pool1 = conn.storagePoolDefineXML("" + " pool1" @@ -254,14 +254,14 @@ public void testStoragePool() throws Exception { + "", 0) ; StoragePool defaultPool = conn.storagePoolLookupByName("default-pool"); assertEquals("numOfStoragePools:", 1, conn.numOfStoragePools()); - assertEquals("numOfDefinedStoragePools:", 1, conn.numOfDefinedStoragePools()); + assertEquals("numOfDefinedStoragePools:", 1, conn.numOfDefinedStoragePools()); assertNotNull("The pool should not be null", pool1); - assertNotNull("The default pool should not be null", defaultPool); + assertNotNull("The default pool should not be null", defaultPool); assertEquals("The names should match", defaultPool.getName(), "default-pool"); - assertEquals("The uids should match", pool1.getUUIDString(), "004c96e1-2d78-c30f-5aa5-f03c87d21e67"); + assertEquals("The uids should match", pool1.getUUIDString(), "004c96e1-2d78-c30f-5aa5-f03c87d21e67"); assertTrue("pool1 should be persistent", pool1.isPersistent() == 1); - assertTrue("pool1 should not be active", pool1.isActive() == 0); - assertTrue("Domain2 should be active", defaultPool.isActive() == 1); + assertTrue("pool1 should not be active", pool1.isActive() == 0); + assertTrue("Domain2 should be active", defaultPool.isActive() == 1); } public void testDomainEvents() throws Exception { From dda928e03a3318360cc2ecc73776d106ef8efd61 Mon Sep 17 00:00:00 2001 From: Mitsuru Kariya Date: Sun, 31 Aug 2025 23:49:29 +0900 Subject: [PATCH 106/114] Fix memory leak in Connect.listAllDomains free was missing for the pointer returned in domains by virConnectListAllDomains, so this has been fixed. cf. https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains Signed-off-by: Mitsuru Kariya --- src/main/java/org/libvirt/Connect.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/libvirt/Connect.java b/src/main/java/org/libvirt/Connect.java index 28f7a6c..57727b4 100644 --- a/src/main/java/org/libvirt/Connect.java +++ b/src/main/java/org/libvirt/Connect.java @@ -18,6 +18,7 @@ import static org.libvirt.BitFlagsHelper.OR; import com.sun.jna.Memory; +import com.sun.jna.Native; import com.sun.jna.NativeLong; import com.sun.jna.Pointer; import com.sun.jna.ptr.LongByReference; @@ -1499,17 +1500,14 @@ public Domain[] listAllDomains(int flags) throws LibvirtException { DomainByReference domainByReference = new DomainByReference(); int domainsCount = processError(libvirt.virConnectListAllDomains(vcp, domainByReference, flags)); - Pointer[] pointerArray = domainByReference.getValue().getPointerArray(0, domainsCount); - if (domainsCount > 0) { - Domain[] domains = new Domain[domainsCount]; - for (int i = 0; i < domainsCount; i++) { - domains[i] = new Domain(this, new DomainPointer(pointerArray[i])); - } - - return domains; + Pointer pointer = domainByReference.getValue(); + Domain[] domains = new Domain[domainsCount]; + for (int i = 0; i < domainsCount; i++) { + domains[i] = new Domain(this, new DomainPointer(pointer.getPointer(i * Native.POINTER_SIZE))); } + Library.free(pointer); - return new Domain[]{}; + return domains; } /** From e022ed1eadb2fd6e4492a959445183339b978bbb Mon Sep 17 00:00:00 2001 From: Francisco Manuel Garcia Botella Date: Mon, 1 Sep 2025 16:41:30 +0200 Subject: [PATCH 107/114] Fix doc: Suppress warning - Tag @see: missing final '>' Fix a typo in Javadoc. When running autobuild.sh it raised a warning indicating missing final '>' in @see tag. Signed-off-by: Francisco Manuel Garcia Botella --- src/main/java/org/libvirt/Domain.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 49948f0..6b109c3 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -123,7 +123,7 @@ public static final class BlockCopyParameters { /** * Contains multiple constants that defines "virDomainMigrate* params" multiple field. * @see Libvirt domain documentation., and - * libvirt-domain.h. + * libvirt-domain.h */ public static final class DomainMigrateParameters { /** From 1c458084c64370ffd4df15a38c20c1755140c5e1 Mon Sep 17 00:00:00 2001 From: Mitsuru Kariya Date: Sun, 7 Sep 2025 14:46:53 +0900 Subject: [PATCH 108/114] Add virResetError Although virConnCopyLastError and virCopyLastError are provided, using them requires freeing the string memory area with virResetError. Therefore, add virResetError. Also fix mistakes in the Javadoc "missig api in 0.1.0" list: - virConnCopyLastError is provided - virFreeError is not missing in 0.1.0 (it is listed as missing in 0.6.1) Signed-off-by: Mitsuru Kariya --- src/main/java/org/libvirt/jna/Libvirt.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index ed4839c..9dbc7e2 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -23,8 +23,6 @@ * Known api calls to be missing * LIBVIRT_0.1.0 * virDefaultErrorFunc - * virConnCopyLastError - * virFreeError * * LIBVIRT_0_5.0 * virEventRegisterImpl @@ -312,6 +310,7 @@ int virGetVersion(LongByReference libVer, String type, LongByReference typeVer); int virInitialize(); int virCopyLastError(virError error); + int virResetError(virError error); virError virGetLastError(); void virResetLastError(); void virSetErrorFunc(Pointer userData, VirErrorCallback callback); From 9f4e61b79c2582e40337e3df2d2d71e24351ed37 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Wed, 24 Sep 2025 11:07:56 +0900 Subject: [PATCH 109/114] Expose virDomainGetJobStats Expose virtDomainGetJobStats . This is useful especially when we want to query jobs actually running. Co-Authored-By: Mitsuru Kariya Signed-off-by: Takashi Kajinami --- src/main/java/org/libvirt/Domain.java | 56 ++++++++++++++++++- src/main/java/org/libvirt/DomainJobStats.java | 11 ++++ src/main/java/org/libvirt/jna/Libvirt.java | 4 ++ .../org/libvirt/jna/virTypedParameter.java | 8 +++ 4 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/libvirt/DomainJobStats.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 6b109c3..ddea097 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -339,6 +339,31 @@ public static final class BlockResizeFlags { public static final int BYTES = 1; } + public static final class JobType { + /** No job is active **/ + public static int NONE = bit(0); + + /** Job with a finite completion time **/ + public static int BOUNDED = bit(1); + + /** Job without a finite completion time **/ + public static int UNBOUNDED = bit(2); + + /** Job has finished, but isn't cleaned up **/ + public static int COMPLETED = bit(3); + + /** Job hit error, but isn't cleaned up **/ + public static int FAILED = bit(4); + + /** Job was aborted, but isn't cleaned up **/ + public static int CANCELLED = bit(5); + } + + public static final class GetJobStatsFlags { + public static int COMPLETED = bit(0); + public static int KEEP_COMPLETED = bit(1); + } + public static final class CreateFlags { /** Default behavior */ public static final int NONE = 0; @@ -1092,7 +1117,7 @@ public DomainInfo getInfo() throws LibvirtException { * @see Libvirt * Documentation - * @return a DomainJobInfo object describing this domain + * @return a DomainJobInfo object * @throws LibvirtException */ public DomainJobInfo getJobInfo() throws LibvirtException { @@ -1101,6 +1126,35 @@ public DomainJobInfo getJobInfo() throws LibvirtException { return new DomainJobInfo(vInfo); } + /** + * Extract information about progress of a background job on a domain. Will + * return an error if the domain is not active. + * + * @see Libvirt + * Documentation + * @param flags + * flags + * @return a DomainJobStats object + * @throws LibvirtException + */ + public DomainJobStats getJobStats(final int flags) throws LibvirtException { + IntByReference type = new IntByReference(); + PointerByReference params = new PointerByReference(); + IntByReference nParams = new IntByReference(); + + processError(libvirt.virDomainGetJobStats(vdp, type, params, nParams, flags)); + + int n = nParams.getValue(); + virTypedParameter[] typedParams = (virTypedParameter[]) new virTypedParameter(params.getValue()).toArray(n); + TypedParameter[] stats = new TypedParameter[n]; + for (int i = 0; i < n; i++) { + stats[i] = TypedParameter.create(typedParams[i]); + } + libvirt.virTypedParamsFree(typedParams, n); + return new DomainJobStats(type.getValue(), stats); + } + /** * Retrieve the maximum amount of physical memory allocated to a domain. * diff --git a/src/main/java/org/libvirt/DomainJobStats.java b/src/main/java/org/libvirt/DomainJobStats.java new file mode 100644 index 0000000..7972283 --- /dev/null +++ b/src/main/java/org/libvirt/DomainJobStats.java @@ -0,0 +1,11 @@ +package org.libvirt; + +public class DomainJobStats { + public int type; + public TypedParameter[] stats; + + public DomainJobStats(int type, TypedParameter[] stats) { + this.type = type; + this.stats = stats; + } +} diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 9dbc7e2..92f4224 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -358,6 +358,8 @@ int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, int virDomainGetID(DomainPointer virDomainPtr); int virDomainGetInfo(DomainPointer virDomainPtr, virDomainInfo vInfo); int virDomainGetJobInfo(DomainPointer virDomainPtr, virDomainJobInfo vInfo); + int virDomainGetJobStats(DomainPointer virDomainPt, IntByReference type, PointerByReference params, + IntByReference nparams, int flags); NativeLong virDomainGetMaxMemory(DomainPointer virDomainPtr); int virDomainGetMaxVcpus(DomainPointer virDomainPtr); String virDomainGetMetadata(DomainPointer virDomainPtr, int type, String uri, int flags); @@ -661,4 +663,6 @@ int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, int virDomainSetUserPassword(DomainPointer virDomainPtr, String user, String password, int flags); + + void virTypedParamsFree(virTypedParameter[] params, int nparams); } diff --git a/src/main/java/org/libvirt/jna/virTypedParameter.java b/src/main/java/org/libvirt/jna/virTypedParameter.java index 992ffad..ab2ce01 100644 --- a/src/main/java/org/libvirt/jna/virTypedParameter.java +++ b/src/main/java/org/libvirt/jna/virTypedParameter.java @@ -1,5 +1,6 @@ package org.libvirt.jna; +import com.sun.jna.Pointer; import com.sun.jna.Structure; import java.util.Arrays; @@ -16,6 +17,13 @@ public class virTypedParameter extends Structure { public int type; public virTypedParameterValue value; + public virTypedParameter() { + } + + public virTypedParameter(Pointer ptr) { + super(ptr); + } + private static final List FIELDS = Arrays.asList( "field", "type", "value"); From 48dfbc13274c3b819c0b35ac6026670308f996c0 Mon Sep 17 00:00:00 2001 From: Mitsuru Kariya Date: Wed, 1 Oct 2025 00:30:19 +0900 Subject: [PATCH 110/114] Fix Domain.getJobStats Fix the following issues in Domain.getJobStats: - Fix an exception that occurred when the virTypedParameter[] had zero elements. virDomainGetJobStats returns successfully with *params == NULL and *nparams == 0 when *type == VIR_DOMAIN_JOB_NONE. However, calling Structure.toArray(n) with n == 0 causes an ArrayIndexOutOfBoundsException. This is avoided by directly returning an empty array when *nparams == 0. - Fix the issue where the first element of virTypedParameter[] was not being read. The Structure constructor does not automatically read fields. This is fixed by explicitly calling the virTypedParameter.read() method for the first element. Note: Structure.toArray(n) automatically reads fields (i.e., calls the virTypedParameter.read() method) for all elements except the first. - Fix the issue where the value was not being read when virTypedParameter was a String. Union does not perform pointer-to-value reads (such as char* -> String) unless it is the active element. This is fixed by explicitly reading the String when virTypedParameter.type == VIR_TYPED_STRING. - Fix a potential crash in virTypedParamsFree when handling String parameters. When passing a Structure received from a native function as an argument to another native function: - String fields directly embedded in the Structure are not updated in native memory if their values haven't changed. - However, Unions embedded in the Structure always update native memory for the active element, even if the value hasn't changed. Therefore, if the active element of the Union is a String, JNA allocates new memory for the string and overwrites the received char* pointer. This not only causes the original char* pointer to be leaked, but also leads to double-free issues: once by virTypedParamsFree and again by GC on the JNA-allocated memory. This is avoided by changing the argument type of virTypedParamsFree from virTypedParameter[] to Pointer. Additionally, extract the conversion from a pointer to a virTypedParameter array to a TypedParameter array into a static method of TypedParameter, as there are other functions that also receive virTypedParameter arrays. Signed-off-by: Mitsuru Kariya --- src/main/java/org/libvirt/Domain.java | 8 +---- src/main/java/org/libvirt/TypedParameter.java | 33 ++++++++++++++----- src/main/java/org/libvirt/jna/Libvirt.java | 2 +- .../org/libvirt/jna/virTypedParameter.java | 16 +++++++++ 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index ddea097..25cf3c7 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1145,13 +1145,7 @@ public DomainJobStats getJobStats(final int flags) throws LibvirtException { processError(libvirt.virDomainGetJobStats(vdp, type, params, nParams, flags)); - int n = nParams.getValue(); - virTypedParameter[] typedParams = (virTypedParameter[]) new virTypedParameter(params.getValue()).toArray(n); - TypedParameter[] stats = new TypedParameter[n]; - for (int i = 0; i < n; i++) { - stats[i] = TypedParameter.create(typedParams[i]); - } - libvirt.virTypedParamsFree(typedParams, n); + TypedParameter[] stats = TypedParameter.fromPointer(params.getValue(), nParams.getValue()); return new DomainJobStats(type.getValue(), stats); } diff --git a/src/main/java/org/libvirt/TypedParameter.java b/src/main/java/org/libvirt/TypedParameter.java index 4474d65..77f280a 100644 --- a/src/main/java/org/libvirt/TypedParameter.java +++ b/src/main/java/org/libvirt/TypedParameter.java @@ -1,22 +1,22 @@ package org.libvirt; import com.sun.jna.Native; +import com.sun.jna.Pointer; import org.libvirt.jna.Libvirt; import org.libvirt.jna.virTypedParameter; import org.libvirt.jna.virTypedParameterValue; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Arrays; public abstract class TypedParameter { - protected static final int TYPED_PARAM_INT = 1; - protected static final int TYPED_PARAM_UINT = 2; - protected static final int TYPED_PARAM_LONG = 3; - protected static final int TYPED_PARAM_ULONG = 4; - protected static final int TYPED_PARAM_DOUBLE = 5; - protected static final int TYPED_PARAM_BOOLEAN = 6; - protected static final int TYPED_PARAM_STRING = 7; + protected static final int TYPED_PARAM_INT = virTypedParameter.TYPED_PARAM_INT; + protected static final int TYPED_PARAM_UINT = virTypedParameter.TYPED_PARAM_UINT; + protected static final int TYPED_PARAM_LONG = virTypedParameter.TYPED_PARAM_LONG; + protected static final int TYPED_PARAM_ULONG = virTypedParameter.TYPED_PARAM_ULONG; + protected static final int TYPED_PARAM_DOUBLE = virTypedParameter.TYPED_PARAM_DOUBLE; + protected static final int TYPED_PARAM_BOOLEAN = virTypedParameter.TYPED_PARAM_BOOLEAN; + protected static final int TYPED_PARAM_STRING = virTypedParameter.TYPED_PARAM_STRING; /** * Parameter name @@ -44,6 +44,8 @@ public abstract class TypedParameter { */ public abstract String getValueAsString(); + private static final TypedParameter[] EMPTY = new TypedParameter[0]; + public static TypedParameter create(final virTypedParameter vParam) { TypedParameter returnValue = null; if (vParam != null) { @@ -126,4 +128,19 @@ public static byte[] copyOf(final byte[] original, final int length) { System.arraycopy(original, 0, returnValue, 0, originalLength); return returnValue; } + + public static TypedParameter[] fromPointer(Pointer ptr, int n) { + if (n == 0) { + return EMPTY; + } + virTypedParameter param = new virTypedParameter(ptr); + param.read(); + virTypedParameter[] params = (virTypedParameter[]) param.toArray(n); + TypedParameter[] stats = new TypedParameter[n]; + for (int i = 0; i < n; i++) { + stats[i] = TypedParameter.create(params[i]); + } + Libvirt.INSTANCE.virTypedParamsFree(ptr, n); + return stats; + } } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 92f4224..87e3f58 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -664,5 +664,5 @@ int virEventAddTimeout(int milliSeconds, VirEventTimeoutCallback cb, int virDomainSetUserPassword(DomainPointer virDomainPtr, String user, String password, int flags); - void virTypedParamsFree(virTypedParameter[] params, int nparams); + void virTypedParamsFree(Pointer params, int nparams); } diff --git a/src/main/java/org/libvirt/jna/virTypedParameter.java b/src/main/java/org/libvirt/jna/virTypedParameter.java index ab2ce01..00b2ded 100644 --- a/src/main/java/org/libvirt/jna/virTypedParameter.java +++ b/src/main/java/org/libvirt/jna/virTypedParameter.java @@ -13,6 +13,14 @@ * virMemoryParameter since Libvirt 0.9.2. */ public class virTypedParameter extends Structure { + public static final int TYPED_PARAM_INT = 1; + public static final int TYPED_PARAM_UINT = 2; + public static final int TYPED_PARAM_LONG = 3; + public static final int TYPED_PARAM_ULONG = 4; + public static final int TYPED_PARAM_DOUBLE = 5; + public static final int TYPED_PARAM_BOOLEAN = 6; + public static final int TYPED_PARAM_STRING = 7; + public byte[] field = new byte[Libvirt.VIR_TYPED_PARAM_FIELD_LENGTH]; public int type; public virTypedParameterValue value; @@ -24,6 +32,14 @@ public virTypedParameter(Pointer ptr) { super(ptr); } + @Override + public void read() { + super.read(); + if (type == TYPED_PARAM_STRING) { + value.readField("s"); + } + } + private static final List FIELDS = Arrays.asList( "field", "type", "value"); From c945e7c08c9b0d791d3804480cf74d1b08a4046f Mon Sep 17 00:00:00 2001 From: Mitsuru Kariya Date: Tue, 9 Sep 2025 01:59:23 +0900 Subject: [PATCH 111/114] Fix incorrect argument type in virDomainMigrate3 The 5th argument `flags` of `virDomainMigrate3` is `unsigned int`, not `unsigned long`. Therefore, the Java binding should use `int` instead of `NativeLong`. To maintain backward compatibility, the version taking `NativeLong` as an argument has been deprecated, and a new version taking `int` has been added. Although not fully verified, it is likely that no practical issue occurs on supported platforms because: - On 32-bit platforms, `long` and `int` are the same size. - On 64-bit platforms, the 5th argument is passed via a register. Signed-off-by: Mitsuru Kariya --- src/main/java/org/libvirt/Domain.java | 49 +++++++++++++++++++++- src/main/java/org/libvirt/jna/Libvirt.java | 12 ++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 25cf3c7..3db9134 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -1741,6 +1741,11 @@ public Domain migrate(final Connect dconn, final long flags, * after the returned domain object is no longer needed. *

* For more informations, please @see virDomainMigrate3 + * + * @deprecated + * use {@link migrate(Connect, TypedParameter[], int) + * migrate(Connect, TypedParameter[], int)} + * instaed * @param dconn * destination host (a Connect object) * @param params @@ -1754,10 +1759,52 @@ public Domain migrate(final Connect dconn, final long flags, * connection (dconn). * @throws LibvirtException */ + @Deprecated public Domain migrate(final Connect dconn, final TypedParameter[] params, long flags) throws LibvirtException { assert params != null : "migrate Typed parameters cannot be null"; virTypedParameter[] virTypedParameters = generateNativeVirTypedParameters(params); - DomainPointer newPtr = processError(libvirt.virDomainMigrate3(vdp, dconn.vcp, virTypedParameters, params.length, new NativeLong(flags))); + DomainPointer newPtr = processError(libvirt.virDomainMigrate3(vdp, dconn.vcp, virTypedParameters, params.length, (int)flags)); + return new Domain(dconn, newPtr); + } + + /** + * Migrate the domain object from its current host to the destination host + * given by {@code dconn} (a connection to the destination host). + *

See {@link DomainMigrateParameters DomainMigrateParameters} for + * detailed description of individual {@code params}. + *

See {@link MigrateFlags MigrateFlags} documentation for description + * of individual {@code flags}. {@link MigrateFlags#TUNNELED TUNNELED} + * and {@link MigrateFlags#PEER2PEER PEER2PEER} are not supported by this + * API, use {@link migrateToURI(String, TypedParameter[], int) + * migrateToURI(String, TypedParameter[], int)} instead. + *

There are many limitations on migration imposed by the underlying + * technology - for example it may not be possible to migrate between + * different processors even with the same architecture, or between different + * types of hypervisor. + *

{@link free} should be used to free the resources + * after the returned domain object is no longer needed. + * + * @see + * virDomainMigrate3 + * + * @param dconn + * destination host (a Connect object) + * @param params + * (optional) migration parameters + * + * @param flags + * bitwise-OR of {@link MigrateFlags MigrateFlags} + * @return + * the new domain object if the migration was successful. Note that + * the new domain object exists in the scope of the destination + * connection ({@code dconn}). + * @throws LibvirtException on failure + */ + public Domain migrate(final Connect dconn, final TypedParameter[] params, int flags) throws LibvirtException { + assert params != null : "migrate Typed parameters cannot be null"; + virTypedParameter[] virTypedParameters = generateNativeVirTypedParameters(params); + DomainPointer newPtr = processError(libvirt.virDomainMigrate3(vdp, dconn.vcp, virTypedParameters, params.length, flags)); return new Domain(dconn, newPtr); } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 87e3f58..688bacc 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -405,11 +405,23 @@ DomainPointer virDomainMigrate2(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, String dxml, NativeLong flags, String dname, String uri, NativeLong bandwidth); + /** + * @deprecated use {@link virDomainMigrate3(DomainPointer, + * ConnectionPointer, virTypedParameter[], int, int) + * virDomainMigrate3(DomainPointer, ConnectionPointer, + * virTypedParameter[], int, int)} instead. + */ + @Deprecated DomainPointer virDomainMigrate3(DomainPointer virDomainPtr, ConnectionPointer virConnectPtr, virTypedParameter[] params, int nparams, NativeLong flags); + DomainPointer virDomainMigrate3(DomainPointer virDomainPtr, + ConnectionPointer virConnectPtr, + virTypedParameter[] params, + int nparams, + int flags); int virDomainMigrateSetMaxDowntime(DomainPointer virDomainPtr, long downtime, int flags); int virDomainMigrateToURI(DomainPointer virDomainPtr, String duri, From d2658a45073a5e81a628fbbab9654eddeb722899 Mon Sep 17 00:00:00 2001 From: Francisco Manuel Garcia Botella Date: Tue, 2 Sep 2025 10:53:34 +0200 Subject: [PATCH 112/114] Add DomainCheckpoint binding Created the bindings to manage the domain checkpoints of a domain. Added tests to check the functionality of these bindings. Signed-off-by: Francisco Manuel Garcia Botella --- src/main/java/org/libvirt/Domain.java | 203 ++++++++++++++ .../java/org/libvirt/DomainCheckpoint.java | 252 ++++++++++++++++++ .../libvirt/jna/DomainCheckpointPointer.java | 18 ++ src/main/java/org/libvirt/jna/Libvirt.java | 25 ++ .../java/org/libvirt/TestJavaBindings.java | 172 ++++++++++++ 5 files changed, 670 insertions(+) create mode 100644 src/main/java/org/libvirt/DomainCheckpoint.java create mode 100644 src/main/java/org/libvirt/jna/DomainCheckpointPointer.java diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index 3db9134..bfd647a 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -16,6 +16,7 @@ import org.libvirt.event.RebootListener; import org.libvirt.jna.CString; import org.libvirt.jna.CStringByReference; +import org.libvirt.jna.DomainCheckpointPointer; import org.libvirt.jna.DomainPointer; import org.libvirt.jna.DomainSnapshotPointer; import org.libvirt.jna.Libvirt; @@ -520,6 +521,73 @@ public static final class RebootFlags { /** Use paravirt guest control */ public static final int PARAVIRT = bit(4); } + + public static final class CheckpointCreateFlags { + + /** Restore or alter metadata (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int REDEFINE = bit(0); + + /** use guest agent to quiesce all mounted file + * systems within the domain (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int QUIESCE = bit(1); + + /** validate disk data state when redefining + * a checkpoint (Since: 6.10.0) + * + * @see + * Libvirt Documentation + */ + public static final int REDEFINE_VALIDATE = bit(2); + } + + public static final class CheckpointListFlags { + + /** List all descendants, not just children, when + * listing a checkpoint (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int DESCENDANTS = bit(0); + + /** Filter by checkpoints with no parents, when + * listing a domain (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int ROOTS = bit(0); + + /** Ensure parents occur before children in + * the resulting list (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int TOPOLOGICAL = bit(1); + + /** Filter by checkpoints with no children (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int LEAVES = bit(2); + + /** Filter by checkpoints that have children (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int NO_LEAVES = bit(3); + } public static final class SnapshotCreateFlags { @@ -2348,6 +2416,141 @@ public void shutdown() throws LibvirtException { processError(libvirt.virDomainShutdown(vdp)); } + /** + * Creates a new checkpoint of a domain based on the checkpoint xml contained in + * xmlDesc. + * + * @see Libvirt + * Documentation + * @param xmlDesc + * string containing an XML description of the checkpoint + * @param flags + * flags for creating the checkpoint, see the {@link CheckpointCreateFlags} for the flag options + * @return the checkpoint + * @throws LibvirtException + */ + public DomainCheckpoint checkpointCreateXML(final String xmlDesc, final int flags) + throws LibvirtException { + DomainCheckpointPointer ptr = processError(libvirt.virDomainCheckpointCreateXML(vdp, xmlDesc, flags)); + return new DomainCheckpoint(virConnect, ptr); + } + + /** + * Creates a new checkpoint of a domain based on the checkpoint xml contained in + * xmlDesc. + *

+ * This is just a convenience method, it has the same effect + * as calling {@code checkpointCreateXML(xmlDesc, 0);}. + * + * @see #checkpointCreateXML(String, int) + * @see Libvirt + * Documentation + * @param xmlDesc + * string containing an XML description of the checkpoint + * @return the checkpoint, or null on Error + * @throws LibvirtException + */ + public DomainCheckpoint checkpointCreateXML(final String xmlDesc) + throws LibvirtException { + return checkpointCreateXML(xmlDesc, 0); + } + + /** + * Array of domain checkpoints for the given domain. + * + * @see Libvirt + * Documentation + * + * @param flags + * flags for list the checkpoint, see the {@link CheckpointListFlags} for the flag options + * @return Array with domain checkpoints of the given domain + * @throws LibvirtException + */ + public DomainCheckpoint[] listAllCheckpoints(int flags) throws LibvirtException { + PointerByReference checkpoints = new PointerByReference(); + int count = libvirt.virDomainListAllCheckpoints(vdp, checkpoints, flags); + if (checkpoints.getValue() == null) { + if (count != 0) { + processError(count); + throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); + } + return new DomainCheckpoint[0]; + } + + try { + if (count < 0) { + processError(count); + throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); + } + DomainCheckpoint[] result = new DomainCheckpoint[count]; + Pointer arrayPtr = checkpoints.getValue(); + for (int i = 0; i < count; i++) { + Pointer p = arrayPtr.getPointer((long) i * Native.POINTER_SIZE); + result[i] = new DomainCheckpoint(virConnect, new DomainCheckpointPointer(p)); + } + return result; + } finally { + Library.free(checkpoints.getValue()); + } + } + + /** + * Retrieve a checkpoint based on its name + * + * @see Libvirt + * Documentation + * @param name + * name for the domain checkpoint + * @return The domain checkpoint or null in case of not found + * @throws LibvirtException + */ + public DomainCheckpoint checkpointLookupByName(final String name) + throws LibvirtException { + DomainCheckpointPointer ptr = libvirt.virDomainCheckpointLookupByName(vdp, name, 0); + if (ptr == null) { + return null; + } + return new DomainCheckpoint(virConnect, ptr); + } + + /** + * Array of domain checkpoint names for the given domain. With the option to pass flags. + * + * This is a helper function, internally, call to listAllCheckpoints(flags), and it only get the names. + * @param flags {@link CheckpointListFlags} + * @return Array of names, or null if an error + * @throws LibvirtException + */ + public String[] checkpointListNames(final int flags) throws LibvirtException { + DomainCheckpoint[] checkpoints = listAllCheckpoints(flags); + if(checkpoints.length > 0) { + String[] names = new String[checkpoints.length]; + for(int i = 0; i < checkpoints.length; i++) { + names[i] = checkpoints[i].getName(); + } + return names; + } + return Library.NO_STRINGS; + } + + /** + * Array of domain checkpoint names for the given domain. + *

+ * This is just a convenience method, it has the same effect + * as calling {@code checkpointListNames(0);}. + * + * @see #checkpointListNames(int) + * @return The list of names, or null if an error + * @throws LibvirtException + */ + public String[] checkpointListNames() throws LibvirtException { + return checkpointListNames(0); + } + /** * Creates a new snapshot of a domain based on the snapshot xml contained in * xmlDesc. diff --git a/src/main/java/org/libvirt/DomainCheckpoint.java b/src/main/java/org/libvirt/DomainCheckpoint.java new file mode 100644 index 0000000..ecf7ac2 --- /dev/null +++ b/src/main/java/org/libvirt/DomainCheckpoint.java @@ -0,0 +1,252 @@ +package org.libvirt; + +import org.libvirt.jna.DomainCheckpointPointer; + +import com.sun.jna.Pointer; +import com.sun.jna.ptr.PointerByReference; + +import static org.libvirt.Library.libvirt; + +import org.libvirt.Domain.CheckpointListFlags; + +import com.sun.jna.Native; + + +import static org.libvirt.ErrorHandler.processError; + +public class DomainCheckpoint { + + private static int bit(final int i) { + return 1 << i; + } + + public static final class CheckpointDeleteFlags { + /** + * Also delete children (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int CHILDREN = bit(0); + + /** + * Delete just metadata (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int METADATA_ONLY = bit(1); + + /** + * Delete just children (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int CHILDREN_ONLY = bit(2); + } + + public static final class XMLFlags { + /** Include sensitive data (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int SECURE = bit(0); + + /** Supress subelement (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int NO_DOMAIN = bit(1); + + /** Include dynamic per- size (Since: 5.6.0) + * + * @see + * Libvirt Documentation + */ + public static final int XML_SIZE = bit(2); + } + + /** + * the native virDomainCheckpointPtr. + */ + DomainCheckpointPointer vdcp; + + /** + * The Connect Object that represents the Hypervisor of this Domain Checkpoint + */ + private final Connect virConnect; + + + /** + * Constructs a DomainCheckpoint object from a known native DomainCheckpointPointer, and a + * Connect object. + * + * @param virConnect + * the Domain's hypervisor + * @param vdcp + * the native virDomainCheckpointPtr + */ + public DomainCheckpoint(final Connect virConnect, + final DomainCheckpointPointer vdcp) { + this.vdcp = vdcp; + this.virConnect = virConnect; + } + + /** + * Delete the domain checkpoint + * + * @see Libvirt + * Documentation + * @param flags see {@link CheckpointDeleteFlags} + * controls the deletion + * @return ignore (always 0) + * @throws LibvirtException + */ + public int delete(final int flags) throws LibvirtException { + int success = 0; + if (vdcp != null) { + success = processError(libvirt.virDomainCheckpointDelete(vdcp, flags)); + } + + return success; + } + + @Override + protected void finalize() throws LibvirtException { + free(); + } + + /** + * Frees this domaincheckpoint object. The running instance is kept alive. The data + * structure is freed and should not be used thereafter. + * + * @throws LibvirtException + * @return number of references left (>= 0) + */ + public int free() throws LibvirtException { + int success = 0; + if (vdcp != null) { + success = processError(libvirt.virDomainCheckpointFree(vdcp)); + vdcp = null; + } + + return success; + } + + /** + * Fetches an XML document describing attributes of the domain checkpoint, without + * security-sensitive data. + * + * @see + * Libvirt Documentation + * @return the XML document + * @throws org.libvirt.LibvirtException + */ + public String getXMLDesc() throws LibvirtException { + return getXMLDesc(0); + } + + /** + * Fetches an XML document describing attributes of the domain checkpoint. + * + * @see + * Libvirt Documentation + * @param flags see {@link XMLFlags} + * controls the information + * @return the XML document + * @throws org.libvirt.LibvirtException + */ + public String getXMLDesc(final int flags) throws LibvirtException { + return processError(libvirt.virDomainCheckpointGetXMLDesc(vdcp, flags)).toString(); + } + + /** + * Get the public name for that checkpoint + * + * @return the name, null if there is no name + * @throws LibvirtException + */ + public String getName() throws LibvirtException { + return processError(libvirt.virDomainCheckpointGetName(vdcp)); + } + + /** + * Array of domain checkpoints children for the given domain checkpoint. + * + * @see Libvirt + * Documentation + * @param flags + * flags for list the checkpoints, see the {@link CheckpointListFlags} for the flag options + * @return Array with children checkpoints of the given domain checkpoint + * @throws LibvirtException + */ + public DomainCheckpoint[] listAllChildren(int flags) throws LibvirtException { + PointerByReference checkpoints = new PointerByReference(); + int count = libvirt.virDomainCheckpointListAllChildren(vdcp, checkpoints, flags); + if (checkpoints.getValue() == null) { + if (count != 0) { + processError(count); + throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); + } + return new DomainCheckpoint[0]; + } + DomainCheckpoint[] result = new DomainCheckpoint[count]; + try { + if (count < 0) { + processError(count); + throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); + } + + Pointer arrayPtr = checkpoints.getValue(); + for (int i = 0; i < count; i++) { + Pointer p = arrayPtr.getPointer((long) i * Native.POINTER_SIZE); + result[i] = new DomainCheckpoint(virConnect, new DomainCheckpointPointer(p)); + } + + return result; + } finally { + Library.free(checkpoints.getValue()); + } + } + + /** + * Get the parent checkpoint for checkpoint, if any. + * + * @see Libvirt + * Documentation + * @param flags + * extra flags + * @return a domain checkpoint or null if the given domain checkpoint is root + * @throws LibvirtException + */ + public DomainCheckpoint getParent(int flags) throws LibvirtException { + DomainCheckpointPointer parent = libvirt.virDomainCheckpointGetParent(vdcp, flags); + if(parent == null) + return null; + return new DomainCheckpoint(virConnect, parent); + } + + /** + * Get the parent checkpoint for checkpoint, if any. + * + * This is just a convenience method, it has the same effect + * as calling {@code getParent(0);}. + * + * @see #getParent(int) + * @see Libvirt + * Documentation + * @return a domain checkpoint or null if the given domain checkpoint is root + * @throws LibvirtException + */ + public DomainCheckpoint getParent() throws LibvirtException { + return getParent(0); + } + +} diff --git a/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java b/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java new file mode 100644 index 0000000..10115bd --- /dev/null +++ b/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java @@ -0,0 +1,18 @@ +package org.libvirt.jna; + +import com.sun.jna.Pointer; +import com.sun.jna.PointerType; + +/** + * Pointer class to provide type safety to the jna interface. + */ +public class DomainCheckpointPointer extends PointerType { + + public DomainCheckpointPointer() { + } + + public DomainCheckpointPointer(Pointer p) { + super(p); + } +} + diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 688bacc..05473f5 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -635,6 +635,31 @@ int virStreamSendAll(StreamPointer virStreamPtr, int virStreamRecvAll(StreamPointer virStreamPtr, Libvirt.VirStreamSinkFunc handler, Pointer opaque); + //DomainCheckpoint Methods + String virDomainCheckpointGetName(DomainCheckpointPointer virDomainCheckpointPtr); + DomainPointer virDomainCheckpointGetDomain(DomainCheckpointPointer virDomainCheckpointPtr); + ConnectionPointer virDomainCheckpointGetConnect(DomainCheckpointPointer checkpoint); + DomainCheckpointPointer virDomainCheckpointCreateXML(DomainPointer virDomainPtr, + String xmlDesc, int flags); + CString virDomainCheckpointGetXMLDesc(DomainCheckpointPointer virDomainCheckpointPtr, + int flags); + int virDomainListAllCheckpoints(DomainPointer virDomainPtr, + PointerByReference virDomainCheckpointsPtr, + int flags); + int virDomainCheckpointListAllChildren(DomainCheckpointPointer virDomainCheckpointPtr, + PointerByReference virDomainCheckpointChildrenPtr, + int flags); + DomainCheckpointPointer virDomainCheckpointLookupByName(DomainPointer virDomainPtr, + String name, int flags); + DomainCheckpointPointer virDomainCheckpointGetParent(DomainCheckpointPointer virDomainCheckpointPtr, + int flags); + int virDomainCheckpointDelete(DomainCheckpointPointer virDomainCheckpointPtr, + int flags); + + int virDomainCheckpointRef(DomainCheckpointPointer checkpoint); + + int virDomainCheckpointFree(DomainCheckpointPointer virDomainCheckpointPtr); + //DomainSnapshot Methods DomainSnapshotPointer virDomainSnapshotCreateXML(DomainPointer virDomainPtr, String xmlDesc, int flags); diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 49d5a6f..679dce5 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -1,5 +1,6 @@ package org.libvirt; +import org.libvirt.Domain.CheckpointListFlags; import org.libvirt.event.*; import java.nio.ByteBuffer; @@ -410,4 +411,175 @@ public void testDomainInterfaceAddresses() throws LibvirtException { dom.undefine(); } } + + /** + * Helper function to create test domains + * @param domainName - Domain name + * @return Domain created + * @throws LibvirtException + */ + private Domain createDomainToCheckpointTest(String domainName) throws LibvirtException{ + String domainXML = "\n" + + " " + domainName + "\n" + + " 512\n" + + " 1\n" + + " \n" + + " hvm\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""; + + Domain domain = conn.domainDefineXML(domainXML); + return domain; + } + + /** + * Check if throw an error when try to create a checkpoint in a inactive domain + * @throws LibvirtException + */ + public void testDomainCheckpointCreateThrowError() throws LibvirtException { + Domain domain = createDomainToCheckpointTest("test-vm-checkpoint-create-throw-error"); + String domainCheckpointXML = "\n" + + "\n" + + " test-checkpoint-create-1\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + LibvirtException virException = null; + try { + domain.checkpointCreateXML(domainCheckpointXML, 0); + fail("Exception should be raised because the checkpoint can not perform in a stopped domain"); + } catch(LibvirtException e) { + virException = e; + } + assertNotNull(virException); + } + + /** + * Check methods to create and destroy checkpoints of a domain + * @throws LibvirtException + */ + public void testDomainCheckpointCreateAndDestroy() throws LibvirtException { + Domain domain = createDomainToCheckpointTest("test-vm-checkpoint-create"); + domain.create(); + assertEquals("The virtual machine should not have checkpoints", 0, domain.listAllCheckpoints(0).length); + String domainCheckpointXML = "\n" + + "\n" + + " test-checkpoint-create-1\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + DomainCheckpoint domainCheckpoint1 = domain.checkpointCreateXML(domainCheckpointXML, 0); + + assertEquals("The checkpoint was not created", 1, domain.listAllCheckpoints(0).length); + domainCheckpointXML = "\n" + + "\n" + + " test-checkpoint-create-2\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + DomainCheckpoint domainCheckpoint2 = domain.checkpointCreateXML(domainCheckpointXML, 0); + assertEquals("The second checkpoint was not created", 2, domain.listAllCheckpoints(0).length); + domainCheckpoint2.delete(DomainCheckpoint.CheckpointDeleteFlags.CHILDREN); + assertEquals("The checkpoint 2 was not deleted", 1, domain.listAllCheckpoints(0).length); + domainCheckpoint1.delete(DomainCheckpoint.CheckpointDeleteFlags.CHILDREN); + assertEquals("The checkpoint 1 was not deleted", 0, domain.listAllCheckpoints(0).length); + } + + /** + * Check methods inside DomainCheckpoint class, like getName, getXMLDesc,... + * @throws LibvirtException + */ + public void testDomainCheckpointMethods() throws LibvirtException { + Domain domain = createDomainToCheckpointTest("test-vm-checkpoint-methods"); + domain.create(); + String domainCheckpointXML = "\n" + + "\n" + + " test-checkpoint-methods-1\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"; + DomainCheckpoint domainCheckpoint = domain.checkpointCreateXML(domainCheckpointXML, 0); + assertEquals("The names should match", "test-checkpoint-methods-1", domainCheckpoint.getName()); + + + String domainCheckpointXMLDesc = domainCheckpoint.getXMLDesc(0); + assertTrue("The XML should contain the tag ", domainCheckpointXMLDesc.contains("")); + assertTrue("The XML should contain the name of checkpoint", domainCheckpointXMLDesc.contains("test-checkpoint-methods-1")); + assertTrue("The XML should contain one of disks to perform the checkpoint", domainCheckpointXMLDesc.contains("vda")); + } + + /** + * Check methods with hierarchy, like listAllChildren, getParent, etc. + * @throws LibvirtException + */ + public void testDomainCheckpointHierarchy() throws LibvirtException { + int NUM_CHECKPOINTS = 10; // Should be bigger than 2 + Domain domain = createDomainToCheckpointTest("test-vm-checkpoint-testDomainCheckpointHierarchy"); + domain.create(); + DomainCheckpoint[] testCheckpoints = new DomainCheckpoint[NUM_CHECKPOINTS]; + String baseCheckpointName = "test-checkpoint-"; + for(int i = 0; i < NUM_CHECKPOINTS; i++) { + String domainCheckpointXML = "\n" + + " " + baseCheckpointName + i + " \n"; // We avoid disks subelement to write less code + testCheckpoints[i] = domain.checkpointCreateXML(domainCheckpointXML, 0); + } + + // Test the lookup function + DomainCheckpoint checkpointLookedup = domain.checkpointLookupByName("test-checkpoint-1"); + // Check if the parent is "test-checkpoint-0" + assertEquals(testCheckpoints[0].getName(), checkpointLookedup.getParent(0).getName()); + + + DomainCheckpoint checkpointNotCreated = domain.checkpointLookupByName("not-created-checkpoint"); + assertNull(checkpointNotCreated); + + // Get all checkpoints in topological order + DomainCheckpoint[] domainCheckpoints = domain.listAllCheckpoints(CheckpointListFlags.TOPOLOGICAL); + assertEquals("One checkpoint was not created", NUM_CHECKPOINTS, domainCheckpoints.length); + // The checkpoints order should be the same. + for (int i = 0; i < NUM_CHECKPOINTS; i++) { + assertEquals("The created checkpoints order should be the same - " + i, testCheckpoints[i].getName(), domainCheckpoints[i].getName()); + } + assertNull(testCheckpoints[0].getParent(0)); + for (int i = 1; i < NUM_CHECKPOINTS; i++) { + assertEquals(domainCheckpoints[i-1].getName(), domainCheckpoints[i].getParent(0).getName()); + } + + // Check checkpointListNames function + String[] checkpointNames = domain.checkpointListNames(CheckpointListFlags.TOPOLOGICAL); + assertEquals("One checkpoint was not created", NUM_CHECKPOINTS, checkpointNames.length); + // The checkpoints order should be the same. + for (int i = 0; i < NUM_CHECKPOINTS; i++) { + assertEquals("The created checkpoints order should be the same - " + i, testCheckpoints[i].getName(), checkpointNames[i]); + } + + // Check listAllChildren function + DomainCheckpoint[] childrenFromFirst = domainCheckpoints[0].listAllChildren(CheckpointListFlags.DESCENDANTS); + assertEquals("One checkpoint was not created", NUM_CHECKPOINTS - 1, childrenFromFirst.length); + for(int i = 1; i < NUM_CHECKPOINTS; i++) { + assertEquals(childrenFromFirst[i-1].getName(), domainCheckpoints[i].getName()); + } + } } From 502125b4fb80a13a10054ec1fac854f4c12d68cf Mon Sep 17 00:00:00 2001 From: Francisco Manuel Garcia Botella Date: Tue, 2 Sep 2025 16:26:40 +0200 Subject: [PATCH 113/114] Add DomainBackupBegin and DomainGetJobStats bindings Added tests to these bindings. Signed-off-by: Francisco Manuel Garcia Botella --- src/main/java/org/libvirt/Domain.java | 211 ++++++++++++++++-- .../java/org/libvirt/DomainCheckpoint.java | 26 +-- .../libvirt/jna/DomainCheckpointPointer.java | 2 +- src/main/java/org/libvirt/jna/Libvirt.java | 4 +- .../org/libvirt/jna/virTypedParameter.java | 7 +- .../java/org/libvirt/TestJavaBindings.java | 62 ++++- 6 files changed, 279 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/libvirt/Domain.java b/src/main/java/org/libvirt/Domain.java index bfd647a..4acd6fe 100644 --- a/src/main/java/org/libvirt/Domain.java +++ b/src/main/java/org/libvirt/Domain.java @@ -58,6 +58,132 @@ private static int bit(final int i) { * TODO: get generated constants from libvirt */ + public static final class JobOperation { + /** + * @see + * Libvirt Documentation + */ + public static final int UNKNOWN = 0; + /** + * @see + * Libvirt Documentation + */ + public static final int START = 1; + + /** + * @see + * Libvirt Documentation + */ + public static final int SAVE = 2; + /** + * @see + * Libvirt Documentation + */ + public static final int RESTORE = 3; + + /** + * @see + * Libvirt Documentation + */ + public static final int MIGRATION_IN = 4; + + /** + * @see + * Libvirt Documentation + */ + public static final int MIGRATION_OUT = 5; + /** + * @see + * Libvirt Documentation + */ + public static final int SNAPSHOT = 6; + + /** + * @see + * Libvirt Documentation + */ + public static final int SNAPSHOT_REVERT = 7; + + /** + * @see + * Libvirt Documentation + */ + public static final int DUMP = 8; + + /** + * @see + * Libvirt Documentation + */ + public static final int BACKUP = 9; + + /** + * @see + * Libvirt Documentation + */ + public static final int SNAPSHOT_DELETE = 10; + /** + * @see + * Libvirt Documentation + */ + public static final int LAST = 11; + } + + public static final class BlockJobType { + /** + * Placeholder + * + * @see + * Libvirt Documentation + */ + public static int UNKNOWN = 0; + + /** + * Block Pull (virDomainBlockPull, or virDomainBlockRebase without flags), job ends on completion + * + * @see + * Libvirt Documentation + */ + public static int PULL = 1; + + /** + * Block Copy (virDomainBlockCopy, or virDomainBlockRebase with flags), job exists as long as mirroring is active + * + * @see + * Libvirt Documentation + */ + public static int COPY = 2; + + /** + * Block Commit (virDomainBlockCommit without flags), job ends on completion + * + * @see + * Libvirt Documentation + */ + public static int COMMIT = 3; + + /** + * Active Block Commit (virDomainBlockCommit with flags), job exists as long as sync is active + * + * @see + * Libvirt Documentation + */ + public static int ACTIVE_COMMIT = 4; + + /** + * Backup (virDomainBackupBegin) + * + * @see + * Libvirt Documentation + */ + public static int BACKUP = 5; + + /** + * @see + * Libvirt Documentation + */ + public static int LAST = 6; + } + public static final class BlockCommitFlags { /** NULL base means next backing file, not whole chain */ public static int SHALLOW = bit(0); @@ -521,11 +647,39 @@ public static final class RebootFlags { /** Use paravirt guest control */ public static final int PARAVIRT = bit(4); } - + + public static final class DomainBackupBeginFlags { + /** + * reuse separately provided images + * + * @see + * Libvirt Documentation + */ + public static final int REUSE_EXTERNAL = bit(0); + } + + public static final class DomainGetJobStatsFlags { + /** + * return stats of a recently completed job + * + * @see + * Libvirt Documentation + */ + public static final int COMPLETED = bit(0); + + /** + * don't remove completed stats when reading them + * + * @see + * Libvirt Documentation + */ + public static final int KEEP_COMPLETED = bit(1); + } + public static final class CheckpointCreateFlags { /** Restore or alter metadata (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -533,7 +687,7 @@ public static final class CheckpointCreateFlags { /** use guest agent to quiesce all mounted file * systems within the domain (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -541,7 +695,7 @@ public static final class CheckpointCreateFlags { /** validate disk data state when redefining * a checkpoint (Since: 6.10.0) - * + * * @see * Libvirt Documentation */ @@ -552,7 +706,7 @@ public static final class CheckpointListFlags { /** List all descendants, not just children, when * listing a checkpoint (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -560,7 +714,7 @@ public static final class CheckpointListFlags { /** Filter by checkpoints with no parents, when * listing a domain (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -568,21 +722,21 @@ public static final class CheckpointListFlags { /** Ensure parents occur before children in * the resulting list (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ public static final int TOPOLOGICAL = bit(1); /** Filter by checkpoints with no children (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ public static final int LEAVES = bit(2); /** Filter by checkpoints that have children (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -845,6 +999,35 @@ public void attachDeviceFlags(final String xmlDesc, final int flags) processError(libvirt.virDomainAttachDeviceFlags(vdp, xmlDesc, flags)); } + /** + * Start a point-in-time backup job for the specified disks of a running domain. + * + * @see + * Libvirt Documentation + * @param backupXML contains details about the backup in the top-level element + * @param checkpointXML description of a checkpoint to create or null + * @param flags the an OR'ed set of {@link DomainBackupBeginFlags} + * @throws LibvirtException + */ + public void backupBegin(final String backupXML, final String checkpointXML, int flags) + throws LibvirtException { + processError(libvirt.virDomainBackupBegin(vdp, backupXML, checkpointXML, flags)); + } + + /** + * Queries the configuration of the active backup job. + * @see + Libvirt Documentation + * @param flags extra flags; not used yet, so callers should always pass 0 + * @returnthe XML document + * @throws LibvirtException + */ + public String getBackupXMLDesc(final int flags) throws LibvirtException { + CString result = libvirt.virDomainBackupGetXMLDesc(vdp, flags); + processError(result); + return result.toString(); + } + /** * This function migrates domain's live block device (disk) to another * block device. @@ -2459,11 +2642,11 @@ public DomainCheckpoint checkpointCreateXML(final String xmlDesc) /** * Array of domain checkpoints for the given domain. - * - * @see Libvirt * Documentation - * + * * @param flags * flags for list the checkpoint, see the {@link CheckpointListFlags} for the flag options * @return Array with domain checkpoints of the given domain @@ -2479,12 +2662,12 @@ public DomainCheckpoint[] listAllCheckpoints(int flags) throws LibvirtException } return new DomainCheckpoint[0]; } - + try { if (count < 0) { processError(count); throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); - } + } DomainCheckpoint[] result = new DomainCheckpoint[count]; Pointer arrayPtr = checkpoints.getValue(); for (int i = 0; i < count; i++) { diff --git a/src/main/java/org/libvirt/DomainCheckpoint.java b/src/main/java/org/libvirt/DomainCheckpoint.java index ecf7ac2..708ae88 100644 --- a/src/main/java/org/libvirt/DomainCheckpoint.java +++ b/src/main/java/org/libvirt/DomainCheckpoint.java @@ -23,7 +23,7 @@ private static int bit(final int i) { public static final class CheckpointDeleteFlags { /** * Also delete children (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -31,7 +31,7 @@ public static final class CheckpointDeleteFlags { /** * Delete just metadata (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -39,7 +39,7 @@ public static final class CheckpointDeleteFlags { /** * Delete just children (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ @@ -48,25 +48,25 @@ public static final class CheckpointDeleteFlags { public static final class XMLFlags { /** Include sensitive data (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ public static final int SECURE = bit(0); /** Supress subelement (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ public static final int NO_DOMAIN = bit(1); /** Include dynamic per- size (Since: 5.6.0) - * + * * @see * Libvirt Documentation */ - public static final int XML_SIZE = bit(2); + public static final int XML_SIZE = bit(2); } /** @@ -176,8 +176,8 @@ public String getName() throws LibvirtException { /** * Array of domain checkpoints children for the given domain checkpoint. - * - * @see Libvirt * Documentation * @param flags @@ -200,8 +200,8 @@ public DomainCheckpoint[] listAllChildren(int flags) throws LibvirtException { if (count < 0) { processError(count); throw new IllegalStateException("virDomainListAllCheckpoints returned " + count); - } - + } + Pointer arrayPtr = checkpoints.getValue(); for (int i = 0; i < count; i++) { Pointer p = arrayPtr.getPointer((long) i * Native.POINTER_SIZE); @@ -216,7 +216,7 @@ public DomainCheckpoint[] listAllChildren(int flags) throws LibvirtException { /** * Get the parent checkpoint for checkpoint, if any. - * + * * @see Libvirt * Documentation @@ -234,7 +234,7 @@ public DomainCheckpoint getParent(int flags) throws LibvirtException { /** * Get the parent checkpoint for checkpoint, if any. - * + * * This is just a convenience method, it has the same effect * as calling {@code getParent(0);}. * diff --git a/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java b/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java index 10115bd..2716e80 100644 --- a/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java +++ b/src/main/java/org/libvirt/jna/DomainCheckpointPointer.java @@ -7,7 +7,7 @@ * Pointer class to provide type safety to the jna interface. */ public class DomainCheckpointPointer extends PointerType { - + public DomainCheckpointPointer() { } diff --git a/src/main/java/org/libvirt/jna/Libvirt.java b/src/main/java/org/libvirt/jna/Libvirt.java index 05473f5..698fbad 100644 --- a/src/main/java/org/libvirt/jna/Libvirt.java +++ b/src/main/java/org/libvirt/jna/Libvirt.java @@ -324,6 +324,8 @@ int virGetVersion(LongByReference libVer, String type, int virDomainAttachDevice(DomainPointer virDomainPtr, String deviceXML); int virDomainAttachDeviceFlags(DomainPointer virDomainPtr, String deviceXML, int flags); + int virDomainBackupBegin(DomainPointer virDomainPtr, String backupXML, String checkpointXML, int flags); + CString virDomainBackupGetXMLDesc(DomainPointer virDomainPtr, int flags); int virDomainBlockCommit(DomainPointer virDomainPtr, String disk, String base, String top, long bandwidth, int flags); int virDomainBlockCopy(DomainPointer virDomainPtr, String disk, @@ -358,7 +360,7 @@ int virDomainGetBlockInfo(DomainPointer virDomainPtr, String path, int virDomainGetID(DomainPointer virDomainPtr); int virDomainGetInfo(DomainPointer virDomainPtr, virDomainInfo vInfo); int virDomainGetJobInfo(DomainPointer virDomainPtr, virDomainJobInfo vInfo); - int virDomainGetJobStats(DomainPointer virDomainPt, IntByReference type, PointerByReference params, + int virDomainGetJobStats(DomainPointer virDomainPtr, IntByReference type, PointerByReference params, IntByReference nparams, int flags); NativeLong virDomainGetMaxMemory(DomainPointer virDomainPtr); int virDomainGetMaxVcpus(DomainPointer virDomainPtr); diff --git a/src/main/java/org/libvirt/jna/virTypedParameter.java b/src/main/java/org/libvirt/jna/virTypedParameter.java index 00b2ded..6a5fd78 100644 --- a/src/main/java/org/libvirt/jna/virTypedParameter.java +++ b/src/main/java/org/libvirt/jna/virTypedParameter.java @@ -25,11 +25,12 @@ public class virTypedParameter extends Structure { public int type; public virTypedParameterValue value; - public virTypedParameter() { + public virTypedParameter(){ + super(); } - public virTypedParameter(Pointer ptr) { - super(ptr); + public virTypedParameter(Pointer p) { + super(p); } @Override diff --git a/src/test/java/org/libvirt/TestJavaBindings.java b/src/test/java/org/libvirt/TestJavaBindings.java index 679dce5..5fa2fb2 100644 --- a/src/test/java/org/libvirt/TestJavaBindings.java +++ b/src/test/java/org/libvirt/TestJavaBindings.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.regex.Pattern; @@ -469,7 +470,7 @@ public void testDomainCheckpointCreateThrowError() throws LibvirtException { } assertNotNull(virException); } - + /** * Check methods to create and destroy checkpoints of a domain * @throws LibvirtException @@ -582,4 +583,63 @@ public void testDomainCheckpointHierarchy() throws LibvirtException { assertEquals(childrenFromFirst[i-1].getName(), domainCheckpoints[i].getName()); } } + + public void testDomainBackupBegin() throws LibvirtException { + /** + * The driver test:///default is not compatible with virBackupBegin function. + * Discomment the test and put your own values and run. + */ + // String connectionURI = "qemu+ssh://root@fgar-libvirt/system"; + // String domainName = "deb12-1"; + // String checkpointName = "test-backup-begin-checkpoint"; + + /** + * In this test: + * - uses your local connection to search the domain. + * - Init backup of given domain. + * - Check if created correctly. + * - Delete the created checkpoint previously. + */ + + // Connect connToThisTest = new Connect(connectionURI, false); + + + // Domain domain = connToThisTest.domainLookupByName(domainName); + // assertEquals("The test domain should not have any domain checkpoint", 0, domain.listAllCheckpoints(0).length); + + // String backupXML = "\n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // " \n" + // + // ""; + + + // String checkpointXML = "\n" + + // " " + checkpointName + "\n" + + // " \n" + + // " \n" + + // " \n" + + // " \n" + + // "\n"; + // domain.backupBegin(backupXML, checkpointXML, 0); + // DomainCheckpoint domainCheckpoint = domain.checkpointLookupByName(checkpointName); + // assertEquals(checkpointName, domainCheckpoint.getName()); + // try { + // Thread.sleep(2000); + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + // Map jobStats = domain.getJobStats(0); + // assertTrue("The jobStats should have the key 'operation'", jobStats.containsKey("operation")); + // assertEquals("The job type should be backup", Domain.JobOperation.BACKUP +"", jobStats.get("operation").getValueAsString()); + // domain.abortJob(); + // domainCheckpoint.delete(DomainCheckpoint.CheckpointDeleteFlags.CHILDREN); + // assertEquals("The checkpoint should be removed", 0, domain.listAllCheckpoints(0).length); + } } From 2ceed90106b11926c23a0dbbd33455f54d079654 Mon Sep 17 00:00:00 2001 From: Pavel Hrdina Date: Mon, 8 Dec 2025 18:22:57 +0100 Subject: [PATCH 114/114] ci: refresh with latest 'lcitool manifest' Removed old OSes: - Fedora 39, Fedora 40 Added new OSes: - AlmaLinux 10 - CentOS Stream 10 - Debian 13 - Fedora 42, Fedora 43 Signed-off-by: Pavel Hrdina --- .gitlab-ci.yml | 1 + ci/buildenv/almalinux-10.sh | 28 ++++++++++ ci/buildenv/almalinux-9.sh | 2 + ci/buildenv/centos-stream-10.sh | 26 ++++++++++ ci/buildenv/debian-13.sh | 26 ++++++++++ ci/buildenv/debian-sid.sh | 2 +- ci/buildenv/{fedora-39.sh => fedora-42.sh} | 0 ci/buildenv/{fedora-40.sh => fedora-43.sh} | 0 ci/buildenv/ubuntu-2204.sh | 2 +- ci/buildenv/ubuntu-2404.sh | 2 +- ci/containers/almalinux-10.Dockerfile | 30 +++++++++++ ci/containers/almalinux-9.Dockerfile | 4 +- ci/containers/centos-stream-10.Dockerfile | 28 ++++++++++ ci/containers/centos-stream-9.Dockerfile | 2 +- ci/containers/debian-12.Dockerfile | 2 +- ci/containers/debian-13.Dockerfile | 29 +++++++++++ ci/containers/debian-sid.Dockerfile | 4 +- ...ora-39.Dockerfile => fedora-42.Dockerfile} | 4 +- ...ora-40.Dockerfile => fedora-43.Dockerfile} | 4 +- ci/containers/fedora-rawhide.Dockerfile | 2 +- ci/containers/opensuse-leap-15.Dockerfile | 2 +- ci/containers/ubuntu-2204.Dockerfile | 4 +- ci/containers/ubuntu-2404.Dockerfile | 12 ++--- ci/gitlab.yml | 1 + ci/gitlab/build-templates.yml | 2 +- ci/gitlab/builds.yml | 51 ++++++++++++++++--- ci/gitlab/containers.yml | 29 +++++++++-- ci/manifest.yml | 18 ++++++- 28 files changed, 280 insertions(+), 37 deletions(-) create mode 100644 ci/buildenv/almalinux-10.sh create mode 100644 ci/buildenv/centos-stream-10.sh create mode 100644 ci/buildenv/debian-13.sh rename ci/buildenv/{fedora-39.sh => fedora-42.sh} (100%) rename ci/buildenv/{fedora-40.sh => fedora-43.sh} (100%) create mode 100644 ci/containers/almalinux-10.Dockerfile create mode 100644 ci/containers/centos-stream-10.Dockerfile create mode 100644 ci/containers/debian-13.Dockerfile rename ci/containers/{fedora-39.Dockerfile => fedora-42.Dockerfile} (92%) rename ci/containers/{fedora-40.Dockerfile => fedora-43.Dockerfile} (92%) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e8f60f..50a3471 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,6 +53,7 @@ website_job: - website variables: NAME: ubuntu-2204 + TARGET_BASE_IMAGE: docker.io/library/ubuntu:22.04 pages: stage: pages diff --git a/ci/buildenv/almalinux-10.sh b/ci/buildenv/almalinux-10.sh new file mode 100644 index 0000000..38b5861 --- /dev/null +++ b/ci/buildenv/almalinux-10.sh @@ -0,0 +1,28 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf update -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y crb + dnf install -y epel-release + dnf install almalinux-release-devel -y + dnf config-manager --set-enabled -y devel + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-21-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/almalinux-9.sh b/ci/buildenv/almalinux-9.sh index f4065ad..38b5861 100644 --- a/ci/buildenv/almalinux-9.sh +++ b/ci/buildenv/almalinux-9.sh @@ -9,6 +9,8 @@ function install_buildenv() { dnf install 'dnf-command(config-manager)' -y dnf config-manager --set-enabled -y crb dnf install -y epel-release + dnf install almalinux-release-devel -y + dnf config-manager --set-enabled -y devel dnf install -y \ ant \ ant-junit \ diff --git a/ci/buildenv/centos-stream-10.sh b/ci/buildenv/centos-stream-10.sh new file mode 100644 index 0000000..4ab6f19 --- /dev/null +++ b/ci/buildenv/centos-stream-10.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + dnf distro-sync -y + dnf install 'dnf-command(config-manager)' -y + dnf config-manager --set-enabled -y crb + dnf install -y epel-release + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-21-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build + rpm -qa | sort > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/debian-13.sh b/ci/buildenv/debian-13.sh new file mode 100644 index 0000000..b294b6d --- /dev/null +++ b/ci/buildenv/debian-13.sh @@ -0,0 +1,26 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +function install_buildenv() { + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get dist-upgrade -y + apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-21-jdk-headless + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen + dpkg-reconfigure locales + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt +} + +export LANG="en_US.UTF-8" diff --git a/ci/buildenv/debian-sid.sh b/ci/buildenv/debian-sid.sh index d2f6a77..b294b6d 100644 --- a/ci/buildenv/debian-sid.sh +++ b/ci/buildenv/debian-sid.sh @@ -17,7 +17,7 @@ function install_buildenv() { libjna-java \ libvirt-dev \ locales \ - openjdk-17-jdk-headless + openjdk-21-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt diff --git a/ci/buildenv/fedora-39.sh b/ci/buildenv/fedora-42.sh similarity index 100% rename from ci/buildenv/fedora-39.sh rename to ci/buildenv/fedora-42.sh diff --git a/ci/buildenv/fedora-40.sh b/ci/buildenv/fedora-43.sh similarity index 100% rename from ci/buildenv/fedora-40.sh rename to ci/buildenv/fedora-43.sh diff --git a/ci/buildenv/ubuntu-2204.sh b/ci/buildenv/ubuntu-2204.sh index d2f6a77..b294b6d 100644 --- a/ci/buildenv/ubuntu-2204.sh +++ b/ci/buildenv/ubuntu-2204.sh @@ -17,7 +17,7 @@ function install_buildenv() { libjna-java \ libvirt-dev \ locales \ - openjdk-17-jdk-headless + openjdk-21-jdk-headless sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen dpkg-reconfigure locales dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt diff --git a/ci/buildenv/ubuntu-2404.sh b/ci/buildenv/ubuntu-2404.sh index a022f83..d2eb642 100644 --- a/ci/buildenv/ubuntu-2404.sh +++ b/ci/buildenv/ubuntu-2404.sh @@ -32,7 +32,7 @@ function install_buildenv() { make \ meson \ ninja-build \ - openjdk-17-jdk-headless \ + openjdk-21-jdk-headless \ perl-base \ pkgconf \ python3 \ diff --git a/ci/containers/almalinux-10.Dockerfile b/ci/containers/almalinux-10.Dockerfile new file mode 100644 index 0000000..4c138b6 --- /dev/null +++ b/ci/containers/almalinux-10.Dockerfile @@ -0,0 +1,30 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/almalinux:10 + +RUN dnf update -y && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y crb && \ + dnf install -y epel-release && \ + dnf install almalinux-release-devel -y && \ + dnf config-manager --set-enabled -y devel && \ + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-21-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ + dnf autoremove -y && \ + dnf clean all -y && \ + rpm -qa | sort > /packages.txt + +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/almalinux-9.Dockerfile b/ci/containers/almalinux-9.Dockerfile index 40db23b..a7843d0 100644 --- a/ci/containers/almalinux-9.Dockerfile +++ b/ci/containers/almalinux-9.Dockerfile @@ -10,6 +10,8 @@ RUN dnf update -y && \ dnf install 'dnf-command(config-manager)' -y && \ dnf config-manager --set-enabled -y crb && \ dnf install -y epel-release && \ + dnf install almalinux-release-devel -y && \ + dnf config-manager --set-enabled -y devel && \ dnf install -y \ ant \ ant-junit \ @@ -25,4 +27,4 @@ RUN dnf update -y && \ dnf clean all -y && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/centos-stream-10.Dockerfile b/ci/containers/centos-stream-10.Dockerfile new file mode 100644 index 0000000..c4a9060 --- /dev/null +++ b/ci/containers/centos-stream-10.Dockerfile @@ -0,0 +1,28 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM quay.io/centos/centos:stream10 + +RUN dnf distro-sync -y && \ + dnf install 'dnf-command(config-manager)' -y && \ + dnf config-manager --set-enabled -y crb && \ + dnf install -y epel-release && \ + dnf install -y \ + ant \ + ant-junit \ + ca-certificates \ + git \ + glibc-langpack-en \ + java-21-openjdk-headless \ + jna \ + junit \ + libvirt-devel \ + rpm-build && \ + dnf autoremove -y && \ + dnf clean all -y && \ + rpm -qa | sort > /packages.txt + +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/centos-stream-9.Dockerfile b/ci/containers/centos-stream-9.Dockerfile index c29ddfb..501aae6 100644 --- a/ci/containers/centos-stream-9.Dockerfile +++ b/ci/containers/centos-stream-9.Dockerfile @@ -26,4 +26,4 @@ RUN dnf distro-sync -y && \ dnf clean all -y && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/debian-12.Dockerfile b/ci/containers/debian-12.Dockerfile index ec45fb8..c7477ab 100644 --- a/ci/containers/debian-12.Dockerfile +++ b/ci/containers/debian-12.Dockerfile @@ -26,4 +26,4 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ dpkg-reconfigure locales && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/debian-13.Dockerfile b/ci/containers/debian-13.Dockerfile new file mode 100644 index 0000000..f895a9b --- /dev/null +++ b/ci/containers/debian-13.Dockerfile @@ -0,0 +1,29 @@ +# THIS FILE WAS AUTO-GENERATED +# +# $ lcitool manifest ci/manifest.yml +# +# https://gitlab.com/libvirt/libvirt-ci + +FROM docker.io/library/debian:13-slim + +RUN export DEBIAN_FRONTEND=noninteractive && \ + apt-get update && \ + apt-get install -y eatmydata && \ + eatmydata apt-get dist-upgrade -y && \ + eatmydata apt-get install --no-install-recommends -y \ + ant \ + ant-optional \ + ca-certificates \ + git \ + junit \ + libjna-java \ + libvirt-dev \ + locales \ + openjdk-21-jdk-headless && \ + eatmydata apt-get autoremove -y && \ + eatmydata apt-get autoclean -y && \ + sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ + dpkg-reconfigure locales && \ + dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt + +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/debian-sid.Dockerfile b/ci/containers/debian-sid.Dockerfile index 03d2f57..9ec4042 100644 --- a/ci/containers/debian-sid.Dockerfile +++ b/ci/containers/debian-sid.Dockerfile @@ -19,11 +19,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libjna-java \ libvirt-dev \ locales \ - openjdk-17-jdk-headless && \ + openjdk-21-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/fedora-39.Dockerfile b/ci/containers/fedora-42.Dockerfile similarity index 92% rename from ci/containers/fedora-39.Dockerfile rename to ci/containers/fedora-42.Dockerfile index afa350f..d19ea84 100644 --- a/ci/containers/fedora-39.Dockerfile +++ b/ci/containers/fedora-42.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:39 +FROM registry.fedoraproject.org/fedora:42 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -32,4 +32,4 @@ exec "$@"\n' > /usr/bin/nosync && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/fedora-40.Dockerfile b/ci/containers/fedora-43.Dockerfile similarity index 92% rename from ci/containers/fedora-40.Dockerfile rename to ci/containers/fedora-43.Dockerfile index 5d8f9b4..1a32678 100644 --- a/ci/containers/fedora-40.Dockerfile +++ b/ci/containers/fedora-43.Dockerfile @@ -4,7 +4,7 @@ # # https://gitlab.com/libvirt/libvirt-ci -FROM registry.fedoraproject.org/fedora:40 +FROM registry.fedoraproject.org/fedora:43 RUN dnf install -y nosync && \ printf '#!/bin/sh\n\ @@ -32,4 +32,4 @@ exec "$@"\n' > /usr/bin/nosync && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile index fff03f4..1aa1d85 100644 --- a/ci/containers/fedora-rawhide.Dockerfile +++ b/ci/containers/fedora-rawhide.Dockerfile @@ -33,4 +33,4 @@ exec "$@"\n' > /usr/bin/nosync && \ nosync dnf clean all -y && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/opensuse-leap-15.Dockerfile b/ci/containers/opensuse-leap-15.Dockerfile index 535e449..a5c2dd0 100644 --- a/ci/containers/opensuse-leap-15.Dockerfile +++ b/ci/containers/opensuse-leap-15.Dockerfile @@ -22,4 +22,4 @@ RUN zypper update -y && \ zypper clean --all && \ rpm -qa | sort > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/ubuntu-2204.Dockerfile b/ci/containers/ubuntu-2204.Dockerfile index b0076c8..a6531cf 100644 --- a/ci/containers/ubuntu-2204.Dockerfile +++ b/ci/containers/ubuntu-2204.Dockerfile @@ -19,11 +19,11 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ libjna-java \ libvirt-dev \ locales \ - openjdk-17-jdk-headless && \ + openjdk-21-jdk-headless && \ eatmydata apt-get autoremove -y && \ eatmydata apt-get autoclean -y && \ sed -Ei 's,^# (en_US\.UTF-8 .*)$,\1,' /etc/locale.gen && \ dpkg-reconfigure locales && \ dpkg-query --showformat '${Package}_${Version}_${Architecture}\n' --show > /packages.txt -ENV LANG "en_US.UTF-8" +ENV LANG="en_US.UTF-8" diff --git a/ci/containers/ubuntu-2404.Dockerfile b/ci/containers/ubuntu-2404.Dockerfile index 1509b9a..cbdb9a6 100644 --- a/ci/containers/ubuntu-2404.Dockerfile +++ b/ci/containers/ubuntu-2404.Dockerfile @@ -34,7 +34,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ make \ meson \ ninja-build \ - openjdk-17-jdk-headless \ + openjdk-21-jdk-headless \ perl-base \ pkgconf \ python3 \ @@ -50,8 +50,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/cc && \ ln -s /usr/bin/ccache /usr/libexec/ccache-wrappers/gcc -ENV CCACHE_WRAPPERSDIR "/usr/libexec/ccache-wrappers" -ENV LANG "en_US.UTF-8" -ENV MAKE "/usr/bin/make" -ENV NINJA "/usr/bin/ninja" -ENV PYTHON "/usr/bin/python3" +ENV CCACHE_WRAPPERSDIR="/usr/libexec/ccache-wrappers" +ENV LANG="en_US.UTF-8" +ENV MAKE="/usr/bin/make" +ENV NINJA="/usr/bin/ninja" +ENV PYTHON="/usr/bin/python3" diff --git a/ci/gitlab.yml b/ci/gitlab.yml index 0daab12..0e6de9f 100644 --- a/ci/gitlab.yml +++ b/ci/gitlab.yml @@ -55,6 +55,7 @@ variables: RUN_UPSTREAM_NAMESPACE: libvirt + CONTAINER_UPSTREAM_NAMESPACE: libvirt FF_SCRIPT_SECTIONS: 1 diff --git a/ci/gitlab/build-templates.yml b/ci/gitlab/build-templates.yml index 5e6b28e..1eb7ccf 100644 --- a/ci/gitlab/build-templates.yml +++ b/ci/gitlab/build-templates.yml @@ -35,7 +35,7 @@ fi - cat /packages.txt variables: - IMAGE: $CI_REGISTRY/$RUN_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest + IMAGE: $CI_REGISTRY/$CONTAINER_UPSTREAM_NAMESPACE/libvirt-java/ci-$NAME:latest rules: ### PUSH events diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml index 0ed5fd0..c911807 100644 --- a/ci/gitlab/builds.yml +++ b/ci/gitlab/builds.yml @@ -19,6 +19,18 @@ x86_64-almalinux-9: TESTS: skip +x86_64-almalinux-10: + extends: .native_build_job + needs: + - job: x86_64-almalinux-10-container + optional: true + allow_failure: false + variables: + NAME: almalinux-10 + TARGET_BASE_IMAGE: docker.io/library/almalinux:10 + TESTS: skip + + x86_64-centos-stream-9: extends: .native_build_job needs: @@ -31,6 +43,18 @@ x86_64-centos-stream-9: TESTS: skip +x86_64-centos-stream-10: + extends: .native_build_job + needs: + - job: x86_64-centos-stream-10-container + optional: true + allow_failure: false + variables: + NAME: centos-stream-10 + TARGET_BASE_IMAGE: quay.io/centos/centos:stream10 + TESTS: skip + + x86_64-debian-12: extends: .native_build_job needs: @@ -42,6 +66,17 @@ x86_64-debian-12: TARGET_BASE_IMAGE: docker.io/library/debian:12-slim +x86_64-debian-13: + extends: .native_build_job + needs: + - job: x86_64-debian-13-container + optional: true + allow_failure: false + variables: + NAME: debian-13 + TARGET_BASE_IMAGE: docker.io/library/debian:13-slim + + x86_64-debian-sid: extends: .native_build_job needs: @@ -53,26 +88,26 @@ x86_64-debian-sid: TARGET_BASE_IMAGE: docker.io/library/debian:sid-slim -x86_64-fedora-39: +x86_64-fedora-42: extends: .native_build_job needs: - - job: x86_64-fedora-39-container + - job: x86_64-fedora-42-container optional: true allow_failure: false variables: - NAME: fedora-39 - TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:39 + NAME: fedora-42 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:42 -x86_64-fedora-40: +x86_64-fedora-43: extends: .native_build_job needs: - - job: x86_64-fedora-40-container + - job: x86_64-fedora-43-container optional: true allow_failure: false variables: - NAME: fedora-40 - TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:40 + NAME: fedora-43 + TARGET_BASE_IMAGE: registry.fedoraproject.org/fedora:43 x86_64-fedora-rawhide: diff --git a/ci/gitlab/containers.yml b/ci/gitlab/containers.yml index 81a9d9f..90693fa 100644 --- a/ci/gitlab/containers.yml +++ b/ci/gitlab/containers.yml @@ -14,6 +14,13 @@ x86_64-almalinux-9-container: NAME: almalinux-9 +x86_64-almalinux-10-container: + extends: .container_job + allow_failure: false + variables: + NAME: almalinux-10 + + x86_64-centos-stream-9-container: extends: .container_job allow_failure: false @@ -21,6 +28,13 @@ x86_64-centos-stream-9-container: NAME: centos-stream-9 +x86_64-centos-stream-10-container: + extends: .container_job + allow_failure: false + variables: + NAME: centos-stream-10 + + x86_64-debian-12-container: extends: .container_job allow_failure: false @@ -28,6 +42,13 @@ x86_64-debian-12-container: NAME: debian-12 +x86_64-debian-13-container: + extends: .container_job + allow_failure: false + variables: + NAME: debian-13 + + x86_64-debian-sid-container: extends: .container_job allow_failure: true @@ -35,18 +56,18 @@ x86_64-debian-sid-container: NAME: debian-sid -x86_64-fedora-39-container: +x86_64-fedora-42-container: extends: .container_job allow_failure: false variables: - NAME: fedora-39 + NAME: fedora-42 -x86_64-fedora-40-container: +x86_64-fedora-43-container: extends: .container_job allow_failure: false variables: - NAME: fedora-40 + NAME: fedora-43 x86_64-fedora-rawhide-container: diff --git a/ci/manifest.yml b/ci/manifest.yml index 09966a4..4243abc 100644 --- a/ci/manifest.yml +++ b/ci/manifest.yml @@ -13,19 +13,33 @@ targets: variables: TESTS: skip + almalinux-10: + jobs: + - arch: x86_64 + variables: + TESTS: skip + centos-stream-9: jobs: - arch: x86_64 variables: TESTS: skip + centos-stream-10: + jobs: + - arch: x86_64 + variables: + TESTS: skip + debian-12: x86_64 + debian-13: x86_64 + debian-sid: x86_64 - fedora-39: x86_64 + fedora-42: x86_64 - fedora-40: x86_64 + fedora-43: x86_64 fedora-rawhide: x86_64