#!/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")