This is an automated email from the ASF dual-hosted git repository.

weizhouapache pushed a commit to branch 4.22
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.22 by this push:
     new bd809515e6c Add support for java 21 for debian packages (#14418)
bd809515e6c is described below

commit bd809515e6ca155b4bdcf0b93e6ba6b0d6276663
Author: Vishesh <[email protected]>
AuthorDate: Tue Oct 20 12:11:16 2026 +0530

    Add support for java 21 for debian packages (#14418)
---
 client/bindir/cloud-update-xenserver-licenses.in |  7 +++++--
 debian/control                                   | 10 +++++-----
 python/lib/cloudutils/db.py                      | 13 ++++++++-----
 scripts/util/migrate-dynamicroles.py             | 15 +++++++++------
 4 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/client/bindir/cloud-update-xenserver-licenses.in 
b/client/bindir/cloud-update-xenserver-licenses.in
index fca48f9eafb..43f35765c89 100755
--- a/client/bindir/cloud-update-xenserver-licenses.in
+++ b/client/bindir/cloud-update-xenserver-licenses.in
@@ -24,7 +24,10 @@ import glob
 from random import choice
 import string
 from optparse import OptionParser
-import mysql.connector
+try:
+    import mysql.connector as mysqldb
+except ImportError:
+    import pymysql as mysqldb
 import paramiko
 from threading import Thread
 
@@ -71,7 +74,7 @@ def e(msg):
 
 
 def getknownhosts(host, username, password):
-    conn = mysql.connector.connect(host=host, user=username, password=password)
+    conn = mysqldb.connect(host=host, user=username, password=password)
     cur = conn.cursor()
     cur.execute(
         "SELECT h.private_ip_address,d.value FROM cloud.host h inner join 
cloud.host_details d on (h.id = d.host_id) where d.name = 'username' and setup 
= 1"
diff --git a/debian/control b/debian/control
index 2b8ce929c63..ee0d9f1e00b 100644
--- a/debian/control
+++ b/debian/control
@@ -2,8 +2,8 @@ Source: cloudstack
 Section: libs
 Priority: extra
 Maintainer: The Apache CloudStack Team <[email protected]>
-Build-Depends: debhelper (>= 9), openjdk-17-jdk | java17-sdk | java17-jdk | 
zulu-17 | openjdk-11-jdk | java11-sdk | java11-jdk | zulu-11, genisoimage,
- python-mysql.connector | python3-mysql.connector | 
mysql-connector-python-py3, maven (>= 3) | maven3,
+Build-Depends: debhelper (>= 9), openjdk-17-jdk | java17-sdk | java17-jdk | 
zulu-17 | openjdk-21-jdk | java21-sdk | java21-jdk | zulu-21 | openjdk-11-jdk | 
java11-sdk | java11-jdk | zulu-11, genisoimage,
+ python-mysql.connector | python3-mysql.connector | mysql-connector-python-py3 
| python3-pymysql, maven (>= 3) | maven3,
  python3 (>= 3), python3-setuptools,
  nodejs (>= 12), lsb-release, dh-systemd | debhelper (>= 13)
 Standards-Version: 3.8.1
@@ -17,14 +17,14 @@ Description: A common package which contains files which 
are shared by several C
 
 Package: cloudstack-management
 Architecture: all
-Depends: ${python3:Depends}, openjdk-17-jre-headless | java17-runtime-headless 
| java17-runtime | zulu-17, cloudstack-common (= ${source:Version}), net-tools, 
sudo, python3-mysql.connector | mysql-connector-python-py3, augeas-tools, 
mysql-client | mariadb-client, adduser, bzip2, ipmitool, file, gawk, iproute2, 
qemu-utils, rng-tools, python3-dnspython, lsb-release, init-system-helpers (>= 
1.14~), python3-setuptools
+Depends: ${python3:Depends}, openjdk-17-jre-headless | java17-runtime-headless 
| java17-runtime | zulu-17 | openjdk-21-jre-headless | java21-runtime-headless 
| java21-runtime | zulu-21, cloudstack-common (= ${source:Version}), net-tools, 
sudo, python3-mysql.connector | mysql-connector-python-py3 | python3-pymysql, 
augeas-tools, mysql-client | mariadb-client, adduser, bzip2, ipmitool, file, 
gawk, iproute2, qemu-utils, rng-tools, python3-dnspython, lsb-release, 
init-system-helpers (>= 1.14 [...]
 Conflicts: cloud-server, cloud-client, cloud-client-ui
 Description: CloudStack server library
  The CloudStack management server
 
 Package: cloudstack-agent
 Architecture: all
-Depends: ${python:Depends}, ${python3:Depends}, openjdk-17-jre-headless | 
java17-runtime-headless | java17-runtime | zulu-17, cloudstack-common (= 
${source:Version}), lsb-base (>= 9), openssh-client, qemu-kvm (>= 2.5) | 
qemu-system-x86 (>= 5.2), libvirt-bin (>= 1.3) | libvirt-daemon-system (>= 
3.0), iproute2, ebtables, vlan, ipset, python3-libvirt, ethtool, iptables, 
cryptsetup, rng-tools, rsync, ovmf, swtpm, lsb-release, ufw, apparmor, 
cpu-checker, libvirt-daemon-driver-storage-rbd, sysstat
+Depends: ${python:Depends}, ${python3:Depends}, openjdk-17-jre-headless | 
java17-runtime-headless | java17-runtime | zulu-17 | openjdk-21-jre-headless | 
java21-runtime-headless | java21-runtime | zulu-21, cloudstack-common (= 
${source:Version}), lsb-base (>= 9), openssh-client, qemu-kvm (>= 2.5) | 
qemu-system-x86 (>= 5.2), libvirt-bin (>= 1.3) | libvirt-daemon-system (>= 
3.0), iproute2, ebtables, vlan, ipset, python3-libvirt, ethtool, iptables, 
cryptsetup, rng-tools, rsync, ovmf, swtpm,  [...]
 Recommends: init-system-helpers
 Conflicts: cloud-agent, cloud-agent-libs, cloud-agent-deps, cloud-agent-scripts
 Description: CloudStack agent
@@ -34,7 +34,7 @@ Description: CloudStack agent
 
 Package: cloudstack-usage
 Architecture: all
-Depends: openjdk-17-jre-headless | java17-runtime-headless | java17-runtime | 
zulu-17, cloudstack-common (= ${source:Version}), init-system-helpers
+Depends: openjdk-17-jre-headless | java17-runtime-headless | java17-runtime | 
zulu-17 | openjdk-21-jre-headless | java21-runtime-headless | java21-runtime | 
zulu-21, cloudstack-common (= ${source:Version}), init-system-helpers
 Description: CloudStack usage monitor
  The CloudStack usage monitor provides usage accounting across the entire 
cloud for
  cloud operators to charge based on usage parameters.
diff --git a/python/lib/cloudutils/db.py b/python/lib/cloudutils/db.py
index 90458222b13..f1db3fa97fc 100644
--- a/python/lib/cloudutils/db.py
+++ b/python/lib/cloudutils/db.py
@@ -17,7 +17,10 @@
 import os
 from .utilities import bash
 from .cloudException import CloudRuntimeException
-import mysql.connector
+try:
+    import mysql.connector as mysqldb
+except ImportError:
+    import pymysql as mysqldb
 
 class Database(object):
     """Database connection"""
@@ -29,10 +32,10 @@ class Database(object):
         self.db = db
 
     def connect(self):
-        return mysql.connector.connect(host=self.host,
-                                       user=self.username,
-                                       password=self.password,
-                                       database=self.db)
+        return mysqldb.connect(host=self.host,
+                               user=self.username,
+                               password=self.password,
+                               database=self.db)
 
     def execute(self, statement):
         txn = None
diff --git a/scripts/util/migrate-dynamicroles.py 
b/scripts/util/migrate-dynamicroles.py
index 36839eef1ef..0ccaf389bc0 100755
--- a/scripts/util/migrate-dynamicroles.py
+++ b/scripts/util/migrate-dynamicroles.py
@@ -25,10 +25,13 @@ from contextlib import closing
 from optparse import OptionParser
 
 try:
-    import mysql.connector
+    import mysql.connector as mysqldb
 except ImportError:
-    print("mysql.connector cannot be imported, please install 
mysql-connector-python")
-    sys.exit(1)
+    try:
+        import pymysql as mysqldb
+    except ImportError:
+        print("Neither mysql.connector nor pymysql can be imported, please 
install mysql-connector-python or PyMySQL")
+        sys.exit(1)
 
 dryrun = False
 
@@ -92,12 +95,12 @@ def main():
     if options.dryrun:
         dryrun = True
 
-    conn = mysql.connector.connect(
+    conn = mysqldb.connect(
             host=options.host,
             user=options.user,
-            passwd=options.password,
+            password=options.password,
             port=int(options.port),
-            db=options.db)
+            database=options.db)
 
     if options.defaultRules:
         print("Applying the default role permissions, ignoring any provided 
properties files(s).")

Reply via email to