def drop_into_layer(image_obj, layer_index): """Given the image object and the layer index, mount all the layers upto the specified layer index and drop into a shell session""" rootfs.set_up() if layer_index == 0: # mount only one layer target = rootfs.mount_base_layer( image_obj.layers[layer_index].tar_file) else: # mount all layers uptil the provided layer index target = report.mount_overlay_fs(image_obj, layer_index) # check if there is a shell shell = check_shell() if shell: rootfs.prep_rootfs(target) print("Done. Run 'sudo chroot . {}' to look around.".format(shell)) else: print("A shell binary doesn't exist in the filesystem. You're on " "your own.") print("Working directory is: {}".format(get_mount_path())) sys.exit(0)
'execute with. Useful when testing commands in the ' 'snippet library') args = parser.parse_args() # first, mount all the layers in the image report.setup(image_tag_string=args.image) image_obj = report.load_full_image(args.image) if image_obj.origins.is_empty(): # image loading was successful # proceed mounting diff filesystems if len(image_obj.layers) == 1: # mount only one layer target = rootfs.mount_base_layer(image_obj.layers[0].tar_file) rootfs.prep_rootfs(target) else: report.mount_overlay_fs(image_obj, len(image_obj.layers) - 1) # invoke commands in chroot # if we're looking up the snippets library # we should see 'snippets' in the keys if 'snippets' in args.keys and 'packages' in args.keys: # get the package info that corresponds to the package name # or get the default last = args.keys.pop() info_list = look_up_lib(args.keys) info_dict = command_lib.check_for_unique_package( info_list, args.package)[last] else: info_dict = look_up_lib(args.keys) # try to invoke the commands try: result = command_lib.get_pkg_attr_list(