diff options
Diffstat (limited to 'harnesses/host_controller/command_processor/command_gsispl.py')
-rw-r--r-- | harnesses/host_controller/command_processor/command_gsispl.py | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/harnesses/host_controller/command_processor/command_gsispl.py b/harnesses/host_controller/command_processor/command_gsispl.py deleted file mode 100644 index 9ebcd68..0000000 --- a/harnesses/host_controller/command_processor/command_gsispl.py +++ /dev/null @@ -1,153 +0,0 @@ -# -# Copyright (C) 2018 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the 'License'); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an 'AS IS' BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -import datetime -import logging -import os -import shutil -import tempfile -import zipfile - -from host_controller import common -from host_controller.command_processor import base_command_processor -from host_controller.utils.gsi import img_utils - -from vts.utils.python.common import cmd_utils - - -class CommandGsispl(base_command_processor.BaseCommandProcessor): - """Command processor for gsispl command. - - Attributes: - arg_parser: ConsoleArgumentParser object, argument parser. - console: cmd.Cmd console object. - command: string, command name which this processor will handle. - command_detail: string, detailed explanation for the command. - """ - - command = "gsispl" - command_detail = "Changes security patch level on a selected GSI file." - - # @Override - def SetUp(self): - """Initializes the parser for device command.""" - self.arg_parser.add_argument( - "--gsi", - help="Path to GSI image to change security patch level. " - "If path is not given, the most recently fetched system.img " - "kept in device_image_info dictionary is used and then " - "device_image_info will be updated with the new GSI file.") - self.arg_parser.add_argument( - "--version", help="New version ID. It should be YYYY-mm-dd format") - self.arg_parser.add_argument( - "--version_from_path", - help="Path to vendor provided image file to retrieve SPL version. " - "If just a file name is given, the most recently fetched .img " - "file will be used.") - self.arg_parser.add_argument( - "--vendor_version", - help="The version of vendor.img that will be used (e.g., 8.1.0).") - - # @Override - def Run(self, arg_line): - """Changes security patch level on a selected GSI file.""" - args = self.arg_parser.ParseLine(arg_line) - if args.gsi: - if os.path.isfile(args.gsi): - gsi_path = args.gsi - else: - logging.error("Cannot find system image in given path") - return - elif "system.img" in self.console.device_image_info: - gsi_path = self.console.device_image_info["system.img"] - else: - logging.error("Cannot find system image.") - return False - - if args.version: - try: - version_date = datetime.datetime.strptime( - args.version, "%Y-%m-%d") - version = "{:04d}-{:02d}-{:02d}".format( - version_date.year, version_date.month, version_date.day) - except ValueError as e: - logging.error("version ID should be YYYY-mm-dd format.") - return - elif args.version_from_path: - dest_path = None - if os.path.isabs(args.version_from_path) and os.path.exists( - args.version_from_path): - img_path = args.version_from_path - elif args.version_from_path in self.console.device_image_info: - img_path = self.console.device_image_info[ - args.version_from_path] - elif (args.version_from_path == "boot.img" - and "full-zipfile" in self.console.device_image_info): - tempdir_base = os.path.join(os.getcwd(), "tmp") - if not os.path.exists(tempdir_base): - os.mkdir(tempdir_base) - dest_path = tempfile.mkdtemp(dir=tempdir_base) - - with zipfile.ZipFile( - self.console.device_image_info["full-zipfile"], - 'r') as zip_ref: - zip_ref.extractall(dest_path) - img_path = os.path.join(dest_path, "boot.img") - if not os.path.exists(img_path): - logging.error("No %s file in device img .zip.", - args.version_from_path) - shutil.rmtree(dest_path) - return - else: - logging.error("Cannot find %s file.", args.version_from_path) - return False - - version_dict = img_utils.GetSPLVersionFromBootImg(img_path) - if dest_path: - shutil.rmtree(dest_path) - if "year" in version_dict and "month" in version_dict: - version = "{:04d}-{:02d}-{:02d}".format( - version_dict["year"], version_dict["month"], - common._SPL_DEFAULT_DAY) - else: - logging.error("Failed to fetch SPL version from %s file.", - img_path) - return False - else: - logging.error("version ID or path of .img file must be given.") - return False - - output_path = os.path.join( - os.path.dirname(os.path.abspath(gsi_path)), - "system-{}.img".format(version)) - command = "{} {} {} {}".format( - os.path.join(os.getcwd(), "..", "bin", - "change_security_patch_ver.sh"), gsi_path, - output_path, version) - if args.vendor_version: - command = command + " -v " + args.vendor_version - if self.console.password.value: - command = "echo {} | sudo -S {}".format( - self.console.password.value, command) - stdout, stderr, err_code = cmd_utils.ExecuteOneShellCommand(command) - if err_code is 0: - if not args.gsi: - logging.info( - "system.img path is updated to : {}".format(output_path)) - self.console.device_image_info["system.img"] = output_path - else: - logging.error("gsispl error: {} {}".format(stdout, stderr)) - return False |