Add in option to report internal IP (--report_internal_ip).

--report_internal_ip will report the internal IP instead of the external
IP. This is needed when someone is connecting to the AVD GCE instance from
another GCE instance.

Note: I ignored pylint duplicate code errors since common_operations,
create_cuttlefish_action, and create_goldfish_action are so similar. The
create work will refactor out the common code into 1 place so it's safe
to ignore for now.

Bug: 113535553
Test: ./run_tests.sh and acloud create
m acloud_test && acloud_test
Change-Id: I6ac840048eb0854f7dcdc223b846826e266b0ad5
diff --git a/public/device_driver_test.py b/public/device_driver_test.py
index 41853ba..b38c405 100644
--- a/public/device_driver_test.py
+++ b/public/device_driver_test.py
@@ -22,12 +22,14 @@
 import unittest
 import mock
 
+# pylint: disable=import-error
 import dateutil.parser
 
 from acloud.internal.lib import auth
 from acloud.internal.lib import android_build_client
 from acloud.internal.lib import android_compute_client
 from acloud.internal.lib import driver_test_lib
+from acloud.internal.lib import gcompute_client
 from acloud.internal.lib import gstorage_client
 from acloud.public import device_driver
 
@@ -75,7 +77,7 @@
         """Test CreateAndroidVirtualDevices."""
         cfg = _CreateCfg()
         fake_gs_url = "fake_gs_url"
-        fake_ip = "140.1.1.1"
+        fake_ip = gcompute_client.IP(external="140.1.1.1", internal="10.1.1.1")
         fake_instance = "fake-instance"
         fake_image = "fake-image"
         fake_build_target = "fake_target"
@@ -116,7 +118,7 @@
                 "devices": [
                     {
                         "instance_name": fake_instance,
-                        "ip": fake_ip,
+                        "ip": fake_ip.external,
                     },
                 ],
             }
@@ -124,6 +126,32 @@
         self.assertEquals(report.command, "create")
         self.assertEquals(report.status, "SUCCESS")
 
+    # pylint: disable=invalid-name
+    def testCreateAndroidVirtualDevicesInternalIP(self):
+        """Test CreateAndroidVirtualDevices with internal IP."""
+        cfg = _CreateCfg()
+        fake_ip = gcompute_client.IP(external="140.1.1.1", internal="10.1.1.1")
+        fake_instance = "fake-instance"
+        fake_build_target = "fake_target"
+        fake_build_id = "12345"
+
+        self.compute_client.GetInstanceIP.return_value = fake_ip
+        self.compute_client.GenerateInstanceName.return_value = fake_instance
+
+        report = device_driver.CreateAndroidVirtualDevices(
+            cfg, fake_build_target, fake_build_id, report_internal_ip=True)
+
+        self.assertEquals(
+            report.data,
+            {
+                "devices": [
+                    {
+                        "instance_name": fake_instance,
+                        "ip": fake_ip.internal,
+                    },
+                ],
+            }
+        )
 
     def testDeleteAndroidVirtualDevices(self):
         """Test DeleteAndroidVirtualDevices."""