Simplify cheeps args passing into GCE metadata
Bug: 226315107
Test: atest --host
Test: acloud-dev create --avd-type cheeps
Change-Id: I3d89f844a67efc05b492c6f1296296fbfe25a6d4
diff --git a/create/avd_spec.py b/create/avd_spec.py
index 71d0ccc..9eff3fc 100644
--- a/create/avd_spec.py
+++ b/create/avd_spec.py
@@ -157,6 +157,8 @@
self._stable_cheeps_host_image_project = None
self._username = None
self._password = None
+ self._cheeps_betty_image = None
+ self._cheeps_features = None
# The maximum time in seconds used to wait for the AVD to boot.
self._boot_timeout_secs = None
@@ -368,6 +370,9 @@
self._stable_cheeps_host_image_project = args.stable_cheeps_host_image_project
self._username = args.username
self._password = args.password
+ self._cheeps_betty_image = (
+ args.cheeps_betty_image or self._cfg.betty_image)
+ self._cheeps_features = args.cheeps_features
self._boot_timeout_secs = args.boot_timeout_secs
self._ins_timeout_secs = args.ins_timeout_secs
@@ -602,11 +607,6 @@
self._remote_image[constants.BUILD_TARGET],
self._remote_image[constants.BUILD_BRANCH])
- self._remote_image[constants.CHEEPS_BETTY_IMAGE] = (
- args.cheeps_betty_image or self._cfg.betty_image)
- self._remote_image[constants.CHEEPS_FEATURES] = ','.join(
- args.cheeps_features)
-
# Process system image, kernel image, bootloader, and otatools.
self._system_build_info = {constants.BUILD_ID: args.system_build_id,
constants.BUILD_BRANCH: args.system_branch,
@@ -952,6 +952,16 @@
return self._password
@property
+ def cheeps_betty_image(self):
+ """Return cheeps_betty_image."""
+ return self._cheeps_betty_image
+
+ @property
+ def cheeps_features(self):
+ """Return cheeps_features."""
+ return self._cheeps_features
+
+ @property
def boot_timeout_secs(self):
"""Return boot_timeout_secs."""
return self._boot_timeout_secs
diff --git a/create/avd_spec_test.py b/create/avd_spec_test.py
index ad41336..71d2405 100644
--- a/create/avd_spec_test.py
+++ b/create/avd_spec_test.py
@@ -49,6 +49,12 @@
self.args.launch_args = None
self.Patch(list_instances, "ChooseOneRemoteInstance", return_value=mock.MagicMock())
self.Patch(list_instances, "GetInstancesFromInstanceNames", return_value=mock.MagicMock())
+
+ # Setup mock Acloud config for usage in tests.
+ self.mock_config = mock.MagicMock()
+ self.mock_config.launch_args = None
+ self.Patch(config, 'GetAcloudConfig', return_value=self.mock_config)
+
self.AvdSpec = avd_spec.AVDSpec(self.args)
# pylint: disable=protected-access
@@ -411,32 +417,6 @@
self.AvdSpec._ProcessRemoteBuildArgs(self.args)
self.assertTrue(self.AvdSpec.avd_type == "cuttlefish")
- # Setup acloud config with betty_image spec
- cfg = mock.MagicMock()
- cfg.betty_image = 'foobarbaz'
- cfg.launch_args = None
- self.Patch(config, 'GetAcloudConfig', return_value=cfg)
- self.AvdSpec = avd_spec.AVDSpec(self.args)
- # --betty-image from cmdline should override config
- self.args.cheeps_betty_image = 'abcdefg'
- self.AvdSpec._ProcessRemoteBuildArgs(self.args)
- self.assertEqual(
- self.AvdSpec.remote_image[constants.CHEEPS_BETTY_IMAGE],
- self.args.cheeps_betty_image)
- # acloud config value is used otherwise
- self.args.cheeps_betty_image = None
- self.AvdSpec._ProcessRemoteBuildArgs(self.args)
- self.assertEqual(
- self.AvdSpec.remote_image[constants.CHEEPS_BETTY_IMAGE],
- cfg.betty_image)
-
- # Verify cheeps_features is assigned from args.
- self.args.cheeps_features = ['a', 'b', 'c']
- self.AvdSpec._ProcessRemoteBuildArgs(self.args)
- self.assertEqual(
- self.AvdSpec.remote_image[constants.CHEEPS_FEATURES],
- 'a,b,c')
-
def testEscapeAnsi(self):
"""Test EscapeAnsi."""
test_string = "\033[1;32;40m Manifest branch:"
@@ -536,6 +516,22 @@
self.AvdSpec._ProcessMiscArgs(self.args)
self.assertEqual(self.AvdSpec.stable_host_image_name, "fake_host_image")
+ # Setup acloud config with betty_image spec
+ self.mock_config.betty_image = 'from-config'
+ # --betty-image from cmdline should override config
+ self.args.cheeps_betty_image = 'from-cmdline'
+ self.AvdSpec._ProcessMiscArgs(self.args)
+ self.assertEqual(self.AvdSpec.cheeps_betty_image, 'from-cmdline')
+ # acloud config value is used otherwise
+ self.args.cheeps_betty_image = None
+ self.AvdSpec._ProcessMiscArgs(self.args)
+ self.assertEqual(self.AvdSpec.cheeps_betty_image, 'from-config')
+
+ # Verify cheeps_features is assigned from args.
+ self.args.cheeps_features = ['a', 'b', 'c']
+ self.AvdSpec._ProcessMiscArgs(self.args)
+ self.assertEqual(self.args.cheeps_features, ['a', 'b', 'c'])
+
if __name__ == "__main__":
unittest.main()
diff --git a/internal/constants.py b/internal/constants.py
index ae81865..c0a8732 100755
--- a/internal/constants.py
+++ b/internal/constants.py
@@ -209,10 +209,6 @@
# Remote Log
REMOTE_LOG_FOLDER = "cuttlefish_runtime"
-# Cheeps specific stuff.
-CHEEPS_BETTY_IMAGE = "betty_image"
-CHEEPS_FEATURES = "cheeps_features"
-
# Key name in report
ERROR_LOG_FOLDER = "error_log_folder"
diff --git a/internal/lib/cheeps_compute_client.py b/internal/lib/cheeps_compute_client.py
index c1d9c4b..f6f4aa4 100644
--- a/internal/lib/cheeps_compute_client.py
+++ b/internal/lib/cheeps_compute_client.py
@@ -90,8 +90,8 @@
metadata["android_build_id"] = avd_spec.remote_image[constants.BUILD_ID]
metadata["android_build_target"] = avd_spec.remote_image[constants.BUILD_TARGET]
- metadata["betty_image"] = avd_spec.remote_image[constants.CHEEPS_BETTY_IMAGE]
- metadata["cheeps_features"] = avd_spec.remote_image[constants.CHEEPS_FEATURES]
+ metadata["betty_image"] = avd_spec.cheeps_betty_image
+ metadata["cheeps_features"] = ','.join(avd_spec.cheeps_features)
gcompute_client.ComputeClient.CreateInstance(
self,
diff --git a/internal/lib/cheeps_compute_client_test.py b/internal/lib/cheeps_compute_client_test.py
index 4c66695..8e51592 100644
--- a/internal/lib/cheeps_compute_client_test.py
+++ b/internal/lib/cheeps_compute_client_test.py
@@ -45,7 +45,7 @@
USER = "test_user"
PASSWORD = "test_password"
CHEEPS_BETTY_IMAGE = 'abcasdf'
- CHEEPS_FEATURES = 'a,b,c'
+ CHEEPS_FEATURES = ['a', 'b', 'c']
def _GetFakeConfig(self):
"""Create a fake configuration object.
@@ -89,7 +89,7 @@
'android_build_target': self.ANDROID_BUILD_TARGET,
'avd_type': "cheeps",
'betty_image': self.CHEEPS_BETTY_IMAGE,
- 'cheeps_features': self.CHEEPS_FEATURES,
+ 'cheeps_features': ','.join(self.CHEEPS_FEATURES),
'cvd_01_dpi': str(self.DPI),
'cvd_01_x_res': str(self.X_RES),
'cvd_01_y_res': str(self.Y_RES),
@@ -111,9 +111,9 @@
avd_spec.remote_image = {
constants.BUILD_ID: self.ANDROID_BUILD_ID,
constants.BUILD_TARGET: self.ANDROID_BUILD_TARGET,
- constants.CHEEPS_BETTY_IMAGE: self.CHEEPS_BETTY_IMAGE,
- constants.CHEEPS_FEATURES: self.CHEEPS_FEATURES,
}
+ avd_spec.cheeps_betty_image = self.CHEEPS_BETTY_IMAGE
+ avd_spec.cheeps_features = self.CHEEPS_FEATURES
self.cheeps_compute_client.CreateInstance(
self.INSTANCE,
@@ -139,7 +139,7 @@
'android_build_target': self.ANDROID_BUILD_TARGET,
'avd_type': "cheeps",
'betty_image': None,
- 'cheeps_features': None,
+ 'cheeps_features': "",
'cvd_01_dpi': str(self.DPI),
'cvd_01_x_res': str(self.X_RES),
'cvd_01_y_res': str(self.Y_RES),
@@ -160,9 +160,9 @@
avd_spec.remote_image = {
constants.BUILD_ID: self.ANDROID_BUILD_ID,
constants.BUILD_TARGET: self.ANDROID_BUILD_TARGET,
- constants.CHEEPS_BETTY_IMAGE: None,
- constants.CHEEPS_FEATURES: None,
}
+ avd_spec.cheeps_betty_image = None
+ avd_spec.cheeps_features = []
self.cheeps_compute_client.CreateInstance(
self.INSTANCE,