aboutsummaryrefslogtreecommitdiff
path: root/reconnect/reconnect.py
diff options
context:
space:
mode:
Diffstat (limited to 'reconnect/reconnect.py')
-rw-r--r--reconnect/reconnect.py38
1 files changed, 25 insertions, 13 deletions
diff --git a/reconnect/reconnect.py b/reconnect/reconnect.py
index 413b1463..b4dc0275 100644
--- a/reconnect/reconnect.py
+++ b/reconnect/reconnect.py
@@ -21,12 +21,12 @@ Reconnect will:
from __future__ import print_function
-from collections import namedtuple
import getpass
import re
from acloud.delete import delete
-from acloud.internal import constants
+from acloud.internal.lib import auth
+from acloud.internal.lib import android_compute_client
from acloud.internal.lib import utils
from acloud.internal.lib.adb_tools import AdbTools
from acloud.list import list as list_instance
@@ -34,15 +34,6 @@ from acloud.public import config
_RE_DISPLAY = re.compile(r"([\d]+)x([\d]+)\s.*")
_VNC_STARTED_PATTERN = "ssvnc vnc://127.0.0.1:%(vnc_port)d"
-# TODO(b/122929848): merge all definition of ForwardedPorts into one spot.
-ForwardedPorts = namedtuple("ForwardedPorts",
- [constants.VNC_PORT, constants.ADB_PORT])
-_AVD_PORT_CLASS_DICT = {
- constants.TYPE_GCE: ForwardedPorts(constants.DEFAULT_GCE_VNC_PORT,
- constants.DEFAULT_GCE_ADB_PORT),
- constants.TYPE_CF: ForwardedPorts(constants.CF_TARGET_VNC_PORT,
- constants.CF_TARGET_ADB_PORT)
-}
def StartVnc(vnc_port, display):
@@ -68,6 +59,26 @@ def StartVnc(vnc_port, display):
utils.LaunchVncClient(vnc_port)
+def AddPublicSshRsaToInstance(cfg, user, instance_name):
+ """Add the public rsa key to the instance's metadata.
+
+ When the public key doesn't exist in the metadata, it will add it.
+
+ Args:
+ cfg: An AcloudConfig instance.
+ user: String, the ssh username to access instance.
+ instance_name: String, instance name.
+ """
+ credentials = auth.CreateCredentials(cfg)
+ compute_client = android_compute_client.AndroidComputeClient(
+ cfg, credentials)
+ compute_client.AddSshRsaInstanceMetadata(
+ cfg.zone,
+ user,
+ cfg.ssh_public_key_path,
+ instance_name)
+
+
def ReconnectInstance(ssh_private_key_path, instance):
"""Reconnect adb/vnc/ssh to the specified instance.
@@ -88,8 +99,8 @@ def ReconnectInstance(ssh_private_key_path, instance):
forwarded_ports = utils.AutoConnect(
instance.ip,
ssh_private_key_path,
- _AVD_PORT_CLASS_DICT.get(instance.avd_type).vnc_port,
- _AVD_PORT_CLASS_DICT.get(instance.avd_type).adb_port,
+ utils.AVD_PORT_DICT[instance.avd_type].vnc_port,
+ utils.AVD_PORT_DICT[instance.avd_type].adb_port,
getpass.getuser())
vnc_port = forwarded_ports.vnc_port
@@ -112,4 +123,5 @@ def Run(args):
if not instances_to_reconnect:
instances_to_reconnect = list_instance.ChooseInstances(cfg, args.all)
for instance in instances_to_reconnect:
+ AddPublicSshRsaToInstance(cfg, getpass.getuser(), instance.name)
ReconnectInstance(cfg.ssh_private_key_path, instance)