1#!/usr/bin/env python 2# 3# Copyright 2018 - The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17"""Base device factory. 18 19BaseDeviceFactory provides basic interface to create a device factory. 20 21""" 22 23 24class BaseDeviceFactory(): 25 """A class that provides basic interface to create a device factory.""" 26 27 LATEST = "latest" 28 29 def __init__(self, compute_client): 30 31 self._compute_client = compute_client 32 33 def GetComputeClient(self): 34 """To get client object. 35 36 Returns: 37 Returns an instance of gcompute_client.ComputeClient or its subclass. 38 """ 39 return self._compute_client 40 41 # pylint: disable=no-self-use 42 def CreateInstance(self): 43 """Creates single configured device. 44 45 Subclasses has to define this function 46 47 Returns: 48 The name of the created instance. 49 """ 50 return 51 52 # pylint: disable=no-self-use 53 def GetAdbPorts(self): 54 """Get ADB ports of the created devices. 55 56 Subclasses should define this function if their ADB ports are not 57 constant. 58 59 Returns: 60 The port numbers as a list of integers. 61 """ 62 return [None] 63 64 # pylint: disable=no-self-use 65 def GetFastbootPorts(self): 66 """Get Fastboot ports of the created devices. 67 68 Subclasses should define this function if their ADB ports are not 69 constant. 70 71 Returns: 72 The port numbers as a list of integers. 73 """ 74 return [None] 75 76 # pylint: disable=no-self-use 77 def GetVncPorts(self): 78 """Get VNC ports of the created devices. 79 80 Subclasses should define this function if they support VNC and their 81 VNC ports are not constant. 82 83 Returns: 84 The port numbers as a list of integers. 85 """ 86 return [None] 87 88 # pylint: disable=no-self-use 89 def GetBuildInfoDict(self): 90 """Get build info dictionary. 91 92 Returns: 93 A build info dictionary. 94 """ 95 return None 96 97 # pylint: disable=no-self-use 98 def GetLogs(self): 99 """Get log files of created instances. 100 101 Returns: 102 A dictionary that maps instance names to lists of report.LogFile. 103 """ 104 return {} 105