def preprocess_image(test, params, image_name): """ Preprocess a single QEMU image according to the instructions in params. :param test: Autotest test object. :param params: A dict containing image preprocessing parameters. :note: Currently this function just creates an image if requested. """ base_dir = params.get("images_base_dir", data_dir.get_data_dir()) if not storage.preprocess_image_backend(base_dir, params, image_name): logging.error("Backend can't be prepared correctly.") image_filename = storage.get_image_filename(params, base_dir) create_image = False if params.get("force_create_image") == "yes": create_image = True elif (params.get("create_image") == "yes" and not storage.file_exists(params, image_filename)): create_image = True if params.get("backup_image_before_testing", "no") == "yes": image = qemu_storage.QemuImg(params, base_dir, image_name) image.backup_image(params, base_dir, "backup", True, True) if create_image: image = qemu_storage.QemuImg(params, base_dir, image_name) image.create(params)
def preprocess_image(test, params, image_name, vm_process_status=None): """ Preprocess a single QEMU image according to the instructions in params. :param test: Autotest test object. :param params: A dict containing image preprocessing parameters. :param vm_process_status: This is needed in postprocess_image. Add it here only for keep it work with process_images() :note: Currently this function just creates an image if requested. """ base_dir = params.get("images_base_dir", data_dir.get_data_dir()) if not storage.preprocess_image_backend(base_dir, params, image_name): logging.error("Backend can't be prepared correctly.") image_filename = storage.get_image_filename(params, base_dir) create_image = False if params.get("force_create_image") == "yes": create_image = True elif (params.get("create_image") == "yes" and not storage.file_exists(params, image_filename)): create_image = True if params.get("backup_image_before_testing", "no") == "yes": image = qemu_storage.QemuImg(params, base_dir, image_name) image.backup_image(params, base_dir, "backup", True, True) if create_image: image = qemu_storage.QemuImg(params, base_dir, image_name) image.create(params)
def check_image(self, params, root_dir): """ Check an image using the appropriate tools for each virt backend. :param params: Dictionary containing the test parameters. :param root_dir: Base directory for relative filenames. :note: params should contain: image_name -- the name of the image file, without extension image_format -- the format of the image (qcow2, raw etc) :raise VMImageCheckError: In case qemu-img check fails on the image. """ image_filename = self.image_filename logging.debug("Checking image file %s", image_filename) qemu_img_cmd = self.image_cmd image_is_checkable = self.image_format in ['qcow2', 'qed'] if (storage.file_exists(params, image_filename) or params.get("enable_gluster", "no") == "yes") and image_is_checkable: check_img = self.support_cmd("check") and self.support_cmd("info") if not check_img: logging.debug("Skipping image check " "(lack of support in qemu-img)") else: try: utils.run("%s info %s" % (qemu_img_cmd, image_filename), verbose=True) except error.CmdError: logging.error("Error getting info from image %s", image_filename) cmd_result = utils.run("%s check %s" % (qemu_img_cmd, image_filename), ignore_status=True, verbose=True) # Error check, large chances of a non-fatal problem. # There are chances that bad data was skipped though if cmd_result.exit_status == 1: for e_line in cmd_result.stdout.splitlines(): logging.error("[stdout] %s", e_line) for e_line in cmd_result.stderr.splitlines(): logging.error("[stderr] %s", e_line) chk = params.get("backup_image_on_check_error", "no") if chk == "yes": self.backup_image(params, root_dir, "backup", False) raise error.TestWarn("qemu-img check error. Some bad " "data in the image may have gone" " unnoticed (%s)" % image_filename) # Exit status 2 is data corruption for sure, # so fail the test elif cmd_result.exit_status == 2: for e_line in cmd_result.stdout.splitlines(): logging.error("[stdout] %s", e_line) for e_line in cmd_result.stderr.splitlines(): logging.error("[stderr] %s", e_line) chk = params.get("backup_image_on_check_error", "no") if chk == "yes": self.backup_image(params, root_dir, "backup", False) raise virt_vm.VMImageCheckError(image_filename) # Leaked clusters, they are known to be harmless to data # integrity elif cmd_result.exit_status == 3: raise error.TestWarn("Leaked clusters were noticed" " during image check. No data " "integrity problem was found " "though. (%s)" % image_filename) # Just handle normal operation if params.get("backup_image", "no") == "yes": self.backup_image(params, root_dir, "backup", True, True) else: if not storage.file_exists(params, image_filename): logging.debug("Image file %s not found, skipping check", image_filename) elif not image_is_checkable: logging.debug( "Image format %s is not checkable, skipping check", self.image_format)
main.py e 5 anotherkey this is a longer message main.py decrypt -1 thisisverystrongkey hal main.py encrypt 13 thekey -i letter.txt -o secret.txt""" # Validate number of arguments if len(sys.argv) < 5: print(usage()) # Invalid number of arguments exit(-1) # Encryption or decryption encrypt = True if sys.argv[1][0] == 'e' else False # Get the input if '-i' in sys.argv: # Get message from file if not storage.file_exists(sys.argv[5]): # Check if file exists print('File not found.') exit(-1) message = storage.read(sys.argv[5]) else: # Get message from arguments message = ' '.join(sys.argv[4:]) # Get the keys key_caesar = eval( sys.argv[2]) # In the Caesar cipher the key is an integer number key_vigenere = sys.argv[3] # In Vigenere cipher the key is a word # Apply ciphers caesar = cipher.caesar(message.lower(), key_caesar, encrypt) vigenere = cipher.vigenere(message.lower(), key_vigenere.lower(), encrypt)