Merge "apt-ostree: Batch Upload of Packages"

This commit is contained in:
Zuul
2024-11-12 19:10:39 +00:00
committed by Gerrit Code Review
2 changed files with 26 additions and 10 deletions

View File

@@ -14,28 +14,28 @@ from software.exceptions import APTOSTreeCommandFail
LOG = logging.getLogger('main_logger')
def package_upload(feed_dir, sw_release, package):
def package_list_upload(feed_dir, sw_release, package_list):
"""
Upload a Debian package to an apt repository.
:param feed_dir: apt package feed directory
:param sw_release: Uploading patch release version (MM.mm.pp)
:param package: Debian package
:param package_list: Debian package list
"""
try:
msg = "Uploading package: %s" % package
LOG.info(msg)
subprocess.run(
["apt-ostree", "repo", "add",
"--feed", str(feed_dir),
"--release", constants.DEBIAN_RELEASE,
"--component", sw_release,
package],
*package_list],
check=True,
capture_output=True)
LOG.info("package list uploaded")
except subprocess.CalledProcessError as e:
msg = "Failed to upload package: %s" % package
packages = " ".join(package_list)
msg = "Failed to upload package list: %s" % packages
info_msg = "\"apt-ostree repo add\" error: return code %s , Output: %s" \
% (e.returncode, e.stderr.decode("utf-8"))
LOG.error(info_msg)

View File

@@ -1014,10 +1014,26 @@ class PatchFile(object):
# Upload the package to the apt repository
deb_dir = os.scandir(tmpdir)
package_list = []
list_size = 25 # Number of files per group
for deb in deb_dir:
apt_utils.package_upload(package_repo_dir,
sw_release,
os.path.join(tmpdir, deb.name))
deb_path = os.path.join(tmpdir, deb.name)
msg = "Adding package to upload list: %s" % deb_path
LOG.info(msg)
package_list.append(os.path.join(tmpdir, deb.name))
if len(package_list) == list_size:
apt_utils.package_list_upload(package_repo_dir,
sw_release,
package_list)
package_list = []
# send the rest of packages to be uploaded
if package_list:
apt_utils.package_list_upload(package_repo_dir,
sw_release,
package_list)
except tarfile.TarError:
msg = "Failed to extract the ostree tarball for %s" \
% sw_version