Manage APT_REPO bucket for each Patch Release
Change-Id: I11cd777896be4e308f450b6a7a7799b7ad88369f Signed-off-by: Lindley Werner <Lindley.Vieira@windriver.com>
This commit is contained in:
parent
4bf81b7374
commit
70b11c4977
|
@ -14,11 +14,11 @@ from software.exceptions import APTOSTreeCommandFail
|
|||
LOG = logging.getLogger('main_logger')
|
||||
|
||||
|
||||
def package_upload(feed_dir, package):
|
||||
def package_upload(bucket_dir, package):
|
||||
"""
|
||||
Upload a Debian package to an apt repository.
|
||||
|
||||
:param feed_dir: apt package feed directory
|
||||
:param bucket_dir: apt package bucket directory
|
||||
:param package: Debian package
|
||||
"""
|
||||
try:
|
||||
|
@ -27,7 +27,7 @@ def package_upload(feed_dir, package):
|
|||
|
||||
subprocess.run(
|
||||
["apt-ostree", "repo", "add",
|
||||
"--feed", str(feed_dir),
|
||||
"--feed", str(bucket_dir),
|
||||
"--release", constants.DEBIAN_RELEASE,
|
||||
package],
|
||||
check=True,
|
||||
|
@ -68,6 +68,29 @@ def package_remove(feed_dir, packages):
|
|||
raise APTOSTreeCommandFail(msg)
|
||||
|
||||
|
||||
def remove_bucket(bucket_dir):
|
||||
"""
|
||||
Remove a bucket from the apt repository.
|
||||
|
||||
:param bucket_dir: apt package bucket directory
|
||||
"""
|
||||
try:
|
||||
msg = "Removing bucket: %s" % bucket_dir
|
||||
LOG.info(msg)
|
||||
|
||||
subprocess.run(
|
||||
["apt-ostree", "repo", "remove",
|
||||
"--feed", str(feed_dir),
|
||||
"--release", constants.DEBIAN_RELEASE],
|
||||
check=True,
|
||||
capture_output=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
msg = "Failed to remove bucket."
|
||||
info_msg = "\"apt-ostree bucket remove\" error: return code %s , Output: %s" \
|
||||
% (e.returncode, e.stderr.decode("utf-8"))
|
||||
LOG.error(info_msg)
|
||||
raise APTOSTreeCommandFail(msg)
|
||||
|
||||
def run_install(repo_dir, packages):
|
||||
"""
|
||||
Run Debian package upgrade.
|
||||
|
|
|
@ -1581,10 +1581,12 @@ class PatchController(PatchService):
|
|||
LOG.exception(msg)
|
||||
raise OSTreeTarFail(msg)
|
||||
|
||||
package_repo_dir = "%s/rel-%s" % (constants.PACKAGE_FEED_DIR, release_sw_version)
|
||||
packages = [pkg.split("_")[0] for pkg in release.packages]
|
||||
if packages:
|
||||
apt_utils.package_remove(package_repo_dir, packages)
|
||||
# Remove debian packages bucket from apt_repo
|
||||
bucket_repo_dir = "%s/rel-%s" % (constants.PACKAGE_FEED_DIR, release_sw_version)
|
||||
apt_utils.remove_bucket(bucket_repo_dir)
|
||||
# packages = [pkg.split("_")[0] for pkg in release.packages]
|
||||
# if packages:
|
||||
# apt_utils.package_remove(bucket_repo_dir, packages)
|
||||
|
||||
# Delete upgrade iso file in folder
|
||||
# TODO(heitormatsui): treat the prepatched iso scenario
|
||||
|
|
|
@ -934,11 +934,12 @@ class PatchFile(object):
|
|||
|
||||
patch_id = thispatch.parse_metadata_string(text)
|
||||
|
||||
patch_sw_version = utils.get_major_release_version(
|
||||
thispatch.metadata[patch_id]["sw_version"])
|
||||
sw_version = thispatch.metadata[patch_id]["sw_version"]
|
||||
patch_sw_version = utils.get_major_release_version(sw_version)
|
||||
abs_ostree_tar_dir = package_dir[patch_sw_version]
|
||||
ostree_tar_filename = "%s/%s-software.tar" % (abs_ostree_tar_dir, patch_id)
|
||||
package_repo_dir = "%s/rel-%s" % (constants.PACKAGE_FEED_DIR, patch_sw_version)
|
||||
debian_packages_dir = "%s/rel-%s" % (constants.PACKAGE_FEED_DIR, patch_sw_version)
|
||||
bucket_repo_dir = "%s/rel-%s" % (constants.PACKAGE_FEED_DIR, sw_version)
|
||||
|
||||
# Create a temporary working directory
|
||||
tmpdir = tempfile.mkdtemp(prefix="deployment_")
|
||||
|
@ -951,7 +952,7 @@ class PatchFile(object):
|
|||
# Upload the package to the apt repository
|
||||
deb_dir = os.scandir(tmpdir)
|
||||
for deb in deb_dir:
|
||||
apt_utils.package_upload(package_repo_dir,
|
||||
apt_utils.package_upload(bucket_repo_dir,
|
||||
os.path.join(tmpdir, deb.name))
|
||||
except tarfile.TarError:
|
||||
msg = "Failed to extract the ostree tarball for %s" \
|
||||
|
@ -960,7 +961,7 @@ class PatchFile(object):
|
|||
raise OSTreeTarFail(msg)
|
||||
except OSError as e:
|
||||
msg = "Failed to scan %s for Debian packages. Error: %s" \
|
||||
% (package_repo_dir, e.errno)
|
||||
% (debian_packages_dir, e.errno)
|
||||
LOG.exception(msg)
|
||||
raise OSTreeTarFail(msg)
|
||||
finally:
|
||||
|
|
Loading…
Reference in New Issue