Merge "apt-ostree: Batch Upload of Packages"
This commit is contained in:
@@ -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)
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user