#!/usr/bin/env python # # Copyright 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. r"""BaseAVDCreate class. Parent class that will hold common logic for AVD creation use cases. """ from acloud.internal import constants from acloud.internal.lib import utils class BaseAVDCreate(object): """Base class for all AVD intance creation classes.""" def _CreateAVD(self, avd_spec, no_prompts): """Do the actual creation work, should be overridden by child classes. Args: avd_spec: AVDSpec object that tells us what we're going to create. no_prompts: Boolean, True to skip all prompts. """ raise NotImplementedError def Create(self, avd_spec, no_prompts): """Create the AVD. Args: avd_spec: AVDSpec object that tells us what we're going to create. no_prompts: Boolean, True to skip all prompts. """ self.PrintAvdDetails(avd_spec) results = self._CreateAVD(avd_spec, no_prompts) utils.PrintDeviceSummary(results) return results @staticmethod def PrintAvdDetails(avd_spec): """Display spec information to user. Example: Creating remote AVD instance with the following details: Image: aosp/master - aosp_cf_x86_phone-userdebug [1234] hw config: cpu - 2 ram - 2GB disk - 10GB display - 1024x862 (224 DPI) Args: avd_spec: AVDSpec object that tells us what we're going to create. """ utils.PrintColorString( "Creating %s AVD instance with the following details:" % avd_spec.instance_type) if avd_spec.image_source == constants.IMAGE_SRC_LOCAL: utils.PrintColorString("Image (local):") utils.PrintColorString(" %s" % (avd_spec.local_image_dir or avd_spec.local_image_artifact)) elif avd_spec.image_source == constants.IMAGE_SRC_REMOTE: utils.PrintColorString("Image:") utils.PrintColorString( " %s - %s [%s]" % (avd_spec.remote_image[constants.BUILD_BRANCH], avd_spec.remote_image[constants.BUILD_TARGET], avd_spec.remote_image[constants.BUILD_ID])) utils.PrintColorString("hw config:") utils.PrintColorString(" cpu - %s" % (avd_spec.hw_property[constants.HW_ALIAS_CPUS])) utils.PrintColorString(" ram - %dGB" % ( int(avd_spec.hw_property[constants.HW_ALIAS_MEMORY]) / 1024)) utils.PrintColorString(" disk - %dGB" % ( int(avd_spec.hw_property[constants.HW_ALIAS_DISK]) / 1024)) utils.PrintColorString( " display - %sx%s (%s DPI)" % (avd_spec.hw_property[constants.HW_X_RES], avd_spec.hw_property[constants.HW_Y_RES], avd_spec.hw_property[constants.HW_ALIAS_DPI])) utils.PrintColorString("\n")