xref: /aosp_15_r20/tools/acloud/internal/constants.py (revision 800a58d989c669b8eb8a71d8df53b1ba3d411444)
1#!/usr/bin/env python
2#
3# Copyright 2016 - 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"""This module holds constants used by the driver."""
17BRANCH_PREFIX = "git_"
18BUILD_TARGET_MAPPING = {
19    # TODO: Add aosp goldfish targets and internal cf targets to vendor code
20    # base.
21    "aosp_phone": "aosp_cf_x86_64_phone-userdebug",
22    "aosp_tablet": "aosp_cf_x86_tablet-userdebug",
23}
24SPEC_NAMES = {
25    "nexus5", "nexus6", "nexus7_2012", "nexus7_2013", "nexus9", "nexus10"
26}
27
28DEFAULT_SERIAL_PORT = 1
29LOGCAT_SERIAL_PORT = 2
30
31# Remote image parameters
32BUILD_TARGET = "build_target"
33BUILD_BRANCH = "branch"
34BUILD_ID = "build_id"
35BUILD_ARTIFACT = "artifact"
36
37# Special value of local image parameters
38FIND_IN_BUILD_ENV = ""
39
40# AVD types
41TYPE_CHEEPS = "cheeps"
42TYPE_CF = "cuttlefish"
43TYPE_GCE = "gce"
44TYPE_GF = "goldfish"
45TYPE_FVP = "fvp"
46TYPE_TRUSTY = "trusty"
47
48# Image types
49IMAGE_SRC_REMOTE = "remote_image"
50IMAGE_SRC_LOCAL = "local_image"
51
52# AVD types in build target
53AVD_TYPES_MAPPING = {
54    TYPE_GCE: "gce",
55    TYPE_CF: "cf",
56    TYPE_GF: "sdk",
57    # Cheeps uses the cheets target.
58    TYPE_CHEEPS: "cheets",
59    TYPE_TRUSTY: "trusty",
60}
61
62# Instance types
63INSTANCE_TYPE_REMOTE = "remote"
64INSTANCE_TYPE_LOCAL = "local"
65INSTANCE_TYPE_HOST = "host"
66
67# CF_AVD_BUILD_TARGET_MAPPING
68CF_X86_PATTERN = "cf_x86"
69CF_ARM_PATTERN = "cf_arm"
70CF_AVD_BUILD_TARGET_PATTERN_MAPPING = {
71    INSTANCE_TYPE_REMOTE: CF_X86_PATTERN,
72    INSTANCE_TYPE_LOCAL: CF_X86_PATTERN,
73    INSTANCE_TYPE_HOST: CF_ARM_PATTERN,
74}
75
76# Flavor types
77FLAVOR_PHONE = "phone"
78FLAVOR_AUTO = "auto"
79FLAVOR_WEAR = "wear"
80FLAVOR_TV = "tv"
81FLAVOR_IOT = "iot"
82FLAVOR_TABLET = "tablet"
83FLAVOR_TABLET_3G = "tablet_3g"
84FLAVOR_FOLDABLE = "foldable"
85ALL_FLAVORS = [
86    FLAVOR_PHONE, FLAVOR_AUTO, FLAVOR_WEAR, FLAVOR_TV, FLAVOR_IOT,
87    FLAVOR_TABLET, FLAVOR_TABLET_3G, FLAVOR_FOLDABLE
88]
89
90# HW Property
91HW_ALIAS_CPUS = "cpu"
92HW_ALIAS_RESOLUTION = "resolution"
93HW_ALIAS_DPI = "dpi"
94HW_ALIAS_MEMORY = "memory"
95HW_ALIAS_DISK = "disk"
96HW_PROPERTIES_CMD_EXAMPLE = (
97    f" {HW_ALIAS_CPUS}:2,{HW_ALIAS_RESOLUTION}:1280x700,{HW_ALIAS_DPI}:160,"
98    f"{HW_ALIAS_MEMORY}:2g,{HW_ALIAS_DISK}:2g"
99)
100HW_PROPERTIES = [HW_ALIAS_CPUS, HW_ALIAS_RESOLUTION, HW_ALIAS_DPI,
101                 HW_ALIAS_MEMORY, HW_ALIAS_DISK]
102HW_X_RES = "x_res"
103HW_Y_RES = "y_res"
104
105USER_ANSWER_YES = {"y", "yes", "Y"}
106
107# Cuttlefish groups
108LIST_CF_USER_GROUPS = ["kvm", "cvdnetwork", "render"]
109
110# Report keys
111IP = "ip"
112INSTANCE_NAME = "instance_name"
113GCE_USER = "vsoc-01"
114VNC_PORT = "vnc_port"
115ADB_PORT = "adb_port"
116WEBRTC_PORT = "webrtc_port"
117DEVICE_SERIAL = "device_serial"
118LOGS = "logs"
119BASE_INSTANCE_NUM = "base_instance_num"
120LAUNCH_CVD_COMMAND = "launch_cvd_command"
121# For cuttlefish remote instances
122CF_ADB_PORT = 6520
123CF_VNC_PORT = 6444
124# For cheeps remote instances
125CHEEPS_ADB_PORT = 9222
126CHEEPS_VNC_PORT = 5900
127# For gce_x86_phones remote instances
128GCE_ADB_PORT = 5555
129GCE_VNC_PORT = 6444
130# For ssh connect with GCE hostname
131GCE_HOSTNAME = "gce_hostname"
132# For goldfish remote instances
133GF_ADB_PORT = 5555
134GF_VNC_PORT = 6444
135# For FVP remote instances (no VNC support)
136FVP_ADB_PORT = 5555
137# For Trusty remote instances (no VNC support)
138TRUSTY_ADB_PORT = 5555
139# Maximum port number
140MAX_PORT = 65535
141# Time info to write in report.
142TIME_ARTIFACT = "fetch_artifact_time"
143TIME_GCE = "gce_create_time"
144TIME_LAUNCH = "launch_cvd_time"
145
146COMMAND_PS = ["ps", "aux"]
147CMD_CVD = "cvd"
148# the newer download tool
149CMD_CVD_FETCH = ["cvd", "fetch"]
150CMD_LAUNCH_CVD = "launch_cvd"
151CMD_PGREP = "pgrep"
152CMD_STOP_CVD = "stop_cvd"
153CMD_RUN_CVD = "run_cvd"
154ENV_ANDROID_BUILD_TOP = "ANDROID_BUILD_TOP"
155ENV_ANDROID_EMULATOR_PREBUILTS = "ANDROID_EMULATOR_PREBUILTS"
156ENV_ANDROID_HOST_OUT = "ANDROID_HOST_OUT"
157ENV_ANDROID_PRODUCT_OUT = "ANDROID_PRODUCT_OUT"
158ENV_ANDROID_SOONG_HOST_OUT = "ANDROID_SOONG_HOST_OUT"
159ENV_ANDROID_TMP = "ANDROID_TMP"
160ENV_BUILD_TARGET = "TARGET_PRODUCT"
161# For cvd to run in compatible mode.
162ENV_CVD_ACQUIRE_FILE_LOCK = "CVD_ACQUIRE_FILE_LOCK"
163ENV_LAUNCHED_BY_ACLOUD = "LAUNCHED_BY_ACLOUD"
164
165LOCALHOST = "0.0.0.0"
166LOCALHOST_ADB_SERIAL = LOCALHOST + ":%d"
167REMOTE_INSTANCE_ADB_SERIAL = "127.0.0.1:%s"
168
169SSH_BIN = "ssh"
170SCP_BIN = "scp"
171ADB_BIN = "adb"
172# Default timeout, the unit is seconds.
173DEFAULT_SSH_TIMEOUT = 300
174DEFAULT_CF_BOOT_TIMEOUT = 450
175
176LABEL_CREATE_BY = "created_by"
177
178# for list and delete cmd
179INS_KEY_NAME = "name"
180INS_KEY_FULLNAME = "full_name"
181INS_KEY_STATUS = "status"
182INS_KEY_DISPLAY = "display"
183INS_KEY_IP = "ip"
184INS_KEY_ADB = "adb"
185INS_KEY_VNC = "vnc"
186INS_KEY_WEBRTC = "webrtc"
187INS_KEY_WEBRTC_PORT = "webrtc_port"
188INS_KEY_WEBRTC_DEVICE_ID = "webrtc_device_id"
189INS_KEY_CREATETIME = "creationTimestamp"
190INS_KEY_AVD_TYPE = "avd_type"
191INS_KEY_AVD_FLAVOR = "flavor"
192INS_KEY_IS_LOCAL = "remote"
193INS_KEY_ZONE = "zone"
194INS_STATUS_RUNNING = "RUNNING"
195ENV_CUTTLEFISH_CONFIG_FILE = "CUTTLEFISH_CONFIG_FILE"
196ENV_CUTTLEFISH_INSTANCE = "CUTTLEFISH_INSTANCE"
197ENV_CVD_HOME = "HOME"
198ANDROID_INFO_FILE = "android-info.txt"
199CUTTLEFISH_CONFIG_FILE = "cuttlefish_config.json"
200
201TEMP_ARTIFACTS_FOLDER = "acloud_image_artifacts"
202CVD_HOST_PACKAGE = "cvd-host_package"
203CVD_HOST_TARBALL = "cvd-host_package.tar.gz"
204# cvd tools symbolic link name of local instance.
205CVD_TOOLS_LINK_NAME = "host_bins"
206TOOL_NAME = "acloud"
207# Exit code in metrics
208EXIT_SUCCESS = 0
209EXIT_BY_USER = 1
210EXIT_BY_WRONG_CMD = 2
211EXIT_BY_FAIL_REPORT = 3
212EXIT_BY_ERROR = -99
213
214# For reuse gce instance
215SELECT_ONE_GCE_INSTANCE = "select_one_gce_instance"
216
217# Webrtc
218WEBRTC_LOCAL_PORT = 8443
219WEBRTC_LOCAL_HOST = "localhost"
220WEBRTC_CERTS_PATH = "usr/share/webrtc/certs"
221WEBRTC_CERTS_FILES = ["server.crt", "server.key"]
222SSL_DIR = ".config/acloud/mkcert"
223SSL_CA_NAME = "ACloud-webRTC-CA"
224SSL_TRUST_CA_DIR = "/usr/local/share/ca-certificates"
225
226# Remote Log
227REMOTE_LOG_FOLDER = "cuttlefish_runtime"
228
229# Key name in report
230ERROR_LOG_FOLDER = "error_log_folder"
231
232# Type of "logs" entries in report.
233# The values must be consistent with LogDataType in TradeFed.
234LOG_TYPE_DIR = "DIR"
235LOG_TYPE_KERNEL_LOG = "KERNEL_LOG"
236LOG_TYPE_LOGCAT = "LOGCAT"
237LOG_TYPE_TEXT = "TEXT"
238LOG_TYPE_CUTTLEFISH_LOG = "CUTTLEFISH_LOG"
239
240# Stages for create progress
241STAGE_INIT = 0
242STAGE_GCE = 1
243STAGE_SSH_CONNECT = 2
244STAGE_ARTIFACT = 3
245STAGE_BOOT_UP = 4
246
247# Acloud error types
248# Also update InfraErrorIdentifier.java in TradeFed for the errors to be
249# properly reported.
250ACLOUD_CONFIG_ERROR = "ACLOUD_CONFIG_ERROR"
251ACLOUD_UNKNOWN_ARGS_ERROR = "ACLOUD_UNKNOWN_ARGS_ERROR"
252ACLOUD_BOOT_UP_ERROR = "ACLOUD_BOOT_UP_ERROR"
253ACLOUD_CREATE_GCE_ERROR = "ACLOUD_CREATE_GCE_ERROR"
254ACLOUD_DOWNLOAD_ARTIFACT_ERROR = "ACLOUD_DOWNLOAD_ARTIFACT_ERROR"
255ACLOUD_INIT_ERROR = "ACLOUD_INIT_ERROR"
256ACLOUD_UNKNOWN_ERROR = "ACLOUD_UNKNOWN_ERROR"
257ACLOUD_SSH_CONNECT_ERROR = "ACLOUD_SSH_CONNECT_ERROR"
258GCE_QUOTA_ERROR = "GCE_QUOTA_ERROR"
259ACLOUD_OXYGEN_LEASE_ERROR = "ACLOUD_OXYGEN_LEASE_ERROR"
260ACLOUD_OXYGEN_RELEASE_ERROR = "ACLOUD_OXYGEN_RELEASE_ERROR"
261
262# Key words of error messages.
263ERROR_MSG_VNC_NOT_SUPPORT = "unknown command line flag 'start_vnc_server'"
264ERROR_MSG_WEBRTC_NOT_SUPPORT = "unknown command line flag 'start_webrtc'"
265ERROR_MSG_SSO_INVALID = "stuck at SSO"
266
267# The name of download image tool.
268FETCH_CVD = "fetch_cvd"
269FETCH_CVD_ARGS_FILE = "fetch-cvd-args.txt"
270# The version is used when downloading LKGB fetch_cvd failed.
271FETCH_CVD_SECOND_VERSION = "10176216"
272# Last known good build
273LKGB = "LKGB"
274
275# The name of credential source key json file, a copy of
276# cfg.service_account_json_private_key_path for remote host case.
277FETCH_CVD_CREDENTIAL_SOURCE = "credential_key.json"
278
279# For setup and cleanup
280# Packages "devscripts" and "equivs" are required for "mk-build-deps".
281# Packages from: https://android.googlesource.com/device/google/cuttlefish/
282AVD_REQUIRED_PKGS = [
283    "devscripts", "equivs", "libvirt-clients", "libvirt-daemon-system",
284    "config-package-dev", "golang"]
285BASE_REQUIRED_PKGS = ["ssvnc", "lzop", "python3-tk"]
286CUTTLEFISH_COMMOM_PKG = "cuttlefish-common"
287