Add in setup command and entry point.

Bug: 110388133
Test: ./run_tests.sh, m acloud && acloud setup
Change-Id: I853996c7d47c826195a21f5507fb06a0b1336976
diff --git a/public/acloud_main.py b/public/acloud_main.py
index 4802bac..a0e7fc6 100644
--- a/public/acloud_main.py
+++ b/public/acloud_main.py
@@ -77,6 +77,8 @@
 from acloud.public import errors
 from acloud.public.actions import create_cuttlefish_action
 from acloud.public.actions import create_goldfish_action
+from acloud.setup import setup
+from acloud.setup import setup_args
 
 LOGGING_FMT = "%(asctime)s |%(levelname)s| %(module)s:%(lineno)s| %(message)s"
 LOGGER_NAME = "acloud_main"
@@ -101,7 +103,8 @@
         Parsed args.
     """
     usage = ",".join([
-        CMD_CREATE, CMD_CREATE_CUTTLEFISH, CMD_DELETE, CMD_CLEANUP, CMD_SSHKEY
+        CMD_CREATE, CMD_CREATE_CUTTLEFISH, CMD_DELETE, CMD_CLEANUP, CMD_SSHKEY,
+        setup_args.CMD_SETUP,
     ])
     parser = argparse.ArgumentParser(
         description=__doc__,
@@ -374,6 +377,9 @@
         "that will be added as project-wide ssh key.")
     subparser_list.append(sshkey_parser)
 
+    # Command "setup"
+    subparser_list.append(setup_args.GetSetupArgParser(subparsers))
+
     # Add common arguments.
     for subparser in subparser_list:
         acloud_common.AddCommonArguments(subparser)
@@ -497,6 +503,7 @@
     # Check access.
     device_driver.CheckAccess(cfg)
 
+    report = None
     if args.which == CMD_CREATE:
         report = device_driver.CreateAndroidVirtualDevices(
             cfg,
@@ -537,15 +544,18 @@
         report = device_driver.Cleanup(cfg, args.expiration_mins)
     elif args.which == CMD_SSHKEY:
         report = device_driver.AddSshRsa(cfg, args.user, args.ssh_rsa_path)
+    elif args.which == setup_args.CMD_SETUP:
+        setup.Run(args)
     else:
         sys.stderr.write("Invalid command %s" % args.which)
         return 2
 
-    report.Dump(args.report_file)
-    if report.errors:
-        msg = "\n".join(report.errors)
-        sys.stderr.write("Encountered the following errors:\n%s\n" % msg)
-        return 1
+    if report:
+        report.Dump(args.report_file)
+        if report.errors:
+            msg = "\n".join(report.errors)
+            sys.stderr.write("Encountered the following errors:\n%s\n" % msg)
+            return 1
     return 0