Revert "Revert "GS Cache: using vpython""

This reverts commit 30c6bbd0a05990b744de7ba9f501973172d612a7.

The original CL got reverted due to a bug in chromite. Now it has been
fixed in crosreview/1050876. Thus this CL can re-merged.
The original review for the CL is crosreview/1038646.

BUG=chromium:824580
TEST=None

Change-Id: I6112af5d9d71205dcadebe4223a60c3a2526a779
Reviewed-on: https://chromium-review.googlesource.com/1056158
Commit-Ready: Congbin Guo <guocb@chromium.org>
Tested-by: Congbin Guo <guocb@chromium.org>
Reviewed-by: Congbin Guo <guocb@chromium.org>
diff --git a/bin/gs_archive_server b/bin/gs_archive_server
index 17de3e4..06cd7ec 100755
--- a/bin/gs_archive_server
+++ b/bin/gs_archive_server
@@ -3,12 +3,16 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# Run a archive server of Google Storage inside virtualenv
+# Run Google Storage archive server from inside virtual environment.
 set -eu
+readonly bindir=$(dirname -- "$(readlink -e -- "$0")")
+readonly homedir=$(cd "$bindir"/../gs_cache; pwd)
+export PYTHONPATH=$homedir
 
-original=$(pwd)
-cd -- "$(dirname -- "$(readlink -e -- "$0")")"
-. ./find_virtualenv.sh
-cd -- "$original"
-
-exec_python_module gs_archive_server.gs_archive_server "$@"
+# Run the server, or run tests
+if [[ $(basename "$0") == gs_archive_server_test ]]; then
+  exec vpython -vpython-spec $homedir/.vpython -m pytest \
+      "$homedir"/gs_archive_server_test.py "$@"
+else
+  exec vpython -vpython-spec $homedir/.vpython -m gs_archive_server "$@"
+fi
diff --git a/bin/gs_archive_server_test b/bin/gs_archive_server_test
new file mode 120000
index 0000000..d349ad7
--- /dev/null
+++ b/bin/gs_archive_server_test
@@ -0,0 +1 @@
+gs_archive_server
\ No newline at end of file
diff --git a/gs_cache/.vpython b/gs_cache/.vpython
new file mode 100644
index 0000000..95ff3f5
--- /dev/null
+++ b/gs_cache/.vpython
@@ -0,0 +1,66 @@
+python_version: "2.7"
+
+wheel: <
+  name: "infra/python/wheels/attrs-py2_py3"
+  version: "version:17.4.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/backports_functools_lru_cache-py2_py3"
+  version: "version:1.5"
+>
+
+wheel: <
+  name: "infra/python/wheels/cheroot-py2_py3"
+  version: "version:6.2.4"
+>
+
+wheel: <
+  name: "infra/python/wheels/cherrypy-py2_py3"
+  version: "version:14.2.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/funcsigs-py2_py3"
+  version: "version:1.0.2"
+>
+
+wheel: <
+  name: "infra/python/wheels/more-itertools-py2_py3"
+  version: "version:4.1.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/pluggy-py2_py3"
+  version: "version:0.6.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/portend-py2_py3"
+  version: "version:2.2"
+>
+
+wheel: <
+  name: "infra/python/wheels/py-py2_py3"
+  version: "version:1.5.3"
+>
+
+wheel: <
+  name: "infra/python/wheels/pytest-py2_py3"
+  version: "version:3.5.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/pytz-py2_py3"
+  version: "version:2018.4"
+>
+
+wheel: <
+  name: "infra/python/wheels/six-py2_py3"
+  version: "version:1.11.0"
+>
+
+wheel: <
+  name: "infra/python/wheels/tempora-py2_py3"
+  version: "version:1.11"
+>
diff --git a/gs_cache/chromite b/gs_cache/chromite
new file mode 120000
index 0000000..d780b88
--- /dev/null
+++ b/gs_cache/chromite
@@ -0,0 +1 @@
+../../../../chromite
\ No newline at end of file
diff --git a/venv/gs_archive_server/gs_archive_server.py b/gs_cache/gs_archive_server.py
similarity index 100%
rename from venv/gs_archive_server/gs_archive_server.py
rename to gs_cache/gs_archive_server.py
diff --git a/venv/gs_archive_server/gs_archive_server_test.py b/gs_cache/gs_archive_server_test.py
similarity index 97%
rename from venv/gs_archive_server/gs_archive_server_test.py
rename to gs_cache/gs_archive_server_test.py
index 56cf478..c6047f5 100644
--- a/venv/gs_archive_server/gs_archive_server_test.py
+++ b/gs_cache/gs_archive_server_test.py
@@ -13,8 +13,8 @@
 import cherrypy
 from cherrypy.test import helper
 
+import gs_archive_server
 from chromite.lib import gs
-from gs_archive_server import gs_archive_server
 
 _DIR = '/gs_archive_server_test'
 # some REAL files and info on Google Storage
diff --git a/venv/gs_archive_server/__init__.py b/venv/gs_archive_server/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/venv/gs_archive_server/__init__.py
+++ /dev/null