diff --git a/client/bindir/cloud-update-xenserver-licenses.in b/client/bindir/cloud-update-xenserver-licenses.in index fca48f9eafbb..43f35765c89a 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 2b8ce929c639..ee0d9f1e00b1 100644 --- a/debian/control +++ b/debian/control @@ -2,8 +2,8 @@ Source: cloudstack Section: libs Priority: extra Maintainer: The Apache CloudStack Team -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~), python3-setuptools 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, lsb-release, ufw, apparmor, cpu-checker, libvirt-daemon-driver-storage-rbd, sysstat 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 90458222b134..f1db3fa97fc4 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 @@ def __init__(self, username, password=None, host='localhost', port='3306', db="c 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 36839eef1eff..0ccaf389bc0e 100755 --- a/scripts/util/migrate-dynamicroles.py +++ b/scripts/util/migrate-dynamicroles.py @@ -25,10 +25,13 @@ 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).")