Skip to content
This repository was archived by the owner on Oct 10, 2020. It is now read-only.
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 26 additions & 9 deletions Atomic/syscontainers.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def _checkout_layer(self, repo, rootfs_fd, rootfs, rev):
stdin=DEVNULL,
stdout=DEVNULL,
stderr=DEVNULL)

def set_args(self, args):
self.args = args

Expand Down Expand Up @@ -254,27 +254,43 @@ def _checkout_system_container(self, repo, name, img, deployment, upgrade, value
return self._do_checkout_system_container(repo, name, img, upgrade, values, destination, unitfileout, tmpfilesout, extract_only, remote)
except (ValueError, OSError) as e:
try:
shutil.rmtree(destination)
if not extract_only:
shutil.rmtree(destination)
except OSError:
pass
try:
if not upgrade:
if not extract_only and not upgrade:
shutil.rmtree(unitfileout)
except OSError:
pass
try:
if not upgrade:
if not extract_only and not upgrade:
shutil.rmtree(tmpfilesout)
except OSError:
pass
raise e

# Accept both name and version Id, and return the ostree rev
def _resolve_image(self, repo, img):
# image specified by Id
if len(img) == 64 and str.isalnum(str(img)):
for i in self.get_system_images(get_all=True, repo=repo):
if i['Id'] == img:
return i['OSTree-rev']
else:
imagebranch = SystemContainers._get_ostree_image_branch(img)
return repo.resolve_rev(imagebranch, False)[1]
return None

def _do_checkout_system_container(self, repo, name, img, upgrade, values, destination, unitfileout, tmpfilesout, extract_only, remote):
if not values:
values = {}

remote_path = self._resolve_remote_path(remote)
imagebranch = SystemContainers._get_ostree_image_branch(img)

rev = self._resolve_image(repo, img)
if rev is None:
raise ValueError("Image %s not found" % img)

if remote_path:
remote_rootfs = os.path.join(remote_path, "rootfs")
Expand Down Expand Up @@ -326,7 +342,6 @@ def _do_checkout_system_container(self, repo, name, img, upgrade, values, destin
else:
os.makedirs(rootfs)

rev = repo.resolve_rev(imagebranch, False)[1]
manifest = self._image_manifest(repo, rev)

if not remote_path:
Expand Down Expand Up @@ -608,11 +623,13 @@ def inspect_system_image(self, image):
repo = self._get_ostree_repo()
if not repo:
return None
imagebranch = SystemContainers._get_ostree_image_branch(image)
return self._inspect_system_branch(repo, imagebranch)
return self._inspect_system_branch(repo, image)

def _inspect_system_branch(self, repo, imagebranch):
commit_rev = repo.resolve_rev(imagebranch, False)[1]
if imagebranch.startswith(OSTREE_OCIIMAGE_PREFIX):
commit_rev = repo.resolve_rev(imagebranch, False)[1]
else:
commit_rev = self._resolve_image(repo, imagebranch)
commit = repo.load_commit(commit_rev)[1]

branch_id = SystemContainers._decode_from_ostree_ref(imagebranch.replace(OSTREE_OCIIMAGE_PREFIX, ""))
Expand Down