Support of an alternate pypi server

Currently pip will get the package from the https://pypi.python.org server.
For CI, it's a problem as Internet connection can be down,
the pypi server down, etc...

The usecase is for a company/user that maintain a local pypi mirror
and give the option to use this server instead of the official one

Change-Id: I83aac4646cb78827a92c9636d78238f8a6118642
Implements: blueprint support-local-pypi-server
diff --git a/stack.sh b/stack.sh
index bd99b5b..51854cc 100755
--- a/stack.sh
+++ b/stack.sh
@@ -652,7 +652,7 @@
 
 # Configure an appropriate python environment
 if [[ "$OFFLINE" != "True" ]]; then
-    $TOP_DIR/tools/install_pip.sh
+    PYPI_ALTERNATIVE_URL=$PYPI_ALTERNATIVE_URL $TOP_DIR/tools/install_pip.sh
 fi
 
 # Do the ugly hacks for borken packages and distros
diff --git a/tools/install_pip.sh b/tools/install_pip.sh
index 150faaa..55ef93e 100755
--- a/tools/install_pip.sh
+++ b/tools/install_pip.sh
@@ -50,6 +50,25 @@
 }
 
 
+function configure_pypi_alternative_url {
+    PIP_ROOT_FOLDER="$HOME/.pip"
+    PIP_CONFIG_FILE="$PIP_ROOT_FOLDER/pip.conf"
+    if [[ ! -d $PIP_ROOT_FOLDER ]]; then
+        echo "Creating $PIP_ROOT_FOLDER"
+        mkdir $PIP_ROOT_FOLDER
+    fi
+    if [[ ! -f $PIP_CONFIG_FILE ]]; then
+        echo "Creating $PIP_CONFIG_FILE"
+        touch $PIP_CONFIG_FILE
+    fi
+    if ! ini_has_option "$PIP_CONFIG_FILE" "global" "index-url"; then
+        #it means that the index-url does not exist
+        iniset "$PIP_CONFIG_FILE" "global" "index-url" "$PYPI_OVERRIDE"
+    fi
+
+}
+
+
 # Show starting versions
 get_versions
 
@@ -60,6 +79,10 @@
 
 install_get_pip
 
+if [[ -n $PYPI_ALTERNATIVE_URL ]]; then
+    configure_pypi_alternative_url
+fi
+
 pip_install -U setuptools
 
 get_versions