add support to deploy and configure free radius server
diff --git a/README.md b/README.md
index 16ab5cc..1b9d133 100644
--- a/README.md
+++ b/README.md
@@ -58,10 +58,11 @@
 WITH_BBSIM=yes voltha up
 ```
 
-| OPTION                        | DEFAULT                      | DESCRIPTION                                                                         |
-| ----------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
+| OPTION                          | DEFAULT                      | DESCRIPTION                                                                         |
+| ------------------------------- | ---------------------------- | ----------------------------------------------------------------------------------- |
 | `TYPE`                          | minimal                      | `minimal` or `full` and determines number of cluster nodes and etcd cluster members |
 | `WITH_BBSIM`                    | no                           | Should the BBSIM POD be deployed?                                                   |
+| `WITH_RADIUS`                   | no                           | Should `freeradius` service be deployed?                                            |
 | `JUST_K8S`                      | no                           | Should just the KinD Kubernetes cluster be depoyed? (i.e. no VOLTHA)                |
 | `DEPLOY_K8S`                    | yes                          | Should the KinD Kubernetes cluster be deployed?                                     |
 | `SKIP_RESTART_API`              | no                           | Should the VOLTHA API service be restarted after install to avoid known bug?        |
diff --git a/onos-files/radius-config.json b/onos-files/radius-config.json
new file mode 100644
index 0000000..e8c3803
--- /dev/null
+++ b/onos-files/radius-config.json
@@ -0,0 +1,12 @@
+{
+  "apps": {
+    "org.opencord.aaa": {
+      "AAA": {
+        "radiusIp": ":RADIUS_IP:",
+        "nasIp": ":RADIUS_IP:",
+        "radiusServerPort": "1812",
+        "radiusSecret": "SECRET"
+      }
+    }
+  }
+}
diff --git a/voltha b/voltha
index 1338914..33ec1eb 100755
--- a/voltha
+++ b/voltha
@@ -42,17 +42,18 @@
 
 TYPE=${TYPE:-minimal}
 WITH_BBSIM=${WITH_BBSIM:-no}
+WITH_RADIUS=${WITH_RADIUS:-no}
 JUST_K8S=${JUST_K8S:-no}
 DEPLOY_K8S=${DEPLOY_K8S:-yes}
 SKIP_RESTART_API=${SKIP_RESTART_API:-no}
 INSTALL_KUBECTL=${INSTALL_KUBECTL:-yes}
 INSTALL_HELM=${INSTALL_HELM:-yes}
+USE_GO=${USE_GO:-yes}
+VOLTHA_LOG_LEVEL=${VOLTHA_LOG_LEVEL:-WARN}
 VOLTHA_CHART=${VOLTHA_CHART:=onf/voltha}
 VOLTHA_ADAPTER_SIM_CHART=${VOLTHA_ADAPTER_SIM_CHART:-onf/voltha-adapter-simulated}
 VOLTHA_ADAPTER_OPEN_OLT_CHART=${VOLTHA_ADAPTER_OPEN_OLT_CHART:-onf/voltha-adapter-openolt}
 VOLTHA_ADAPTER_OPEN_ONU_CHART=${VOLTHA_ADAPTER_OPEN_ONU_CHART:-onf/voltha-adapter-openonu}
-VOLTHA_LOG_LEVEL=${VOLTHA_LOG_LEVEL:-WARN}
-USE_GO=${USE_GO:-yes}
 
 HAVE_GO=$(which go >/dev/null 2>&1 && echo "yes" || echo "no")
 HOSTOS=$(uname -s | tr "[:upper:]" "[:lower:"])
@@ -78,6 +79,17 @@
     WITH_BBSIM=no
 fi
 
+# Verify WITH_RADIUS settting and convert uniform value of yes or no
+if [ $(echo ":y:yes:true:n:no:false:1:0:" | grep -ic ":$WITH_RADIUS:") -eq 0 ]; then
+    >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid \$WITH_RADIUS value of '$WITH_RADIUS'. Should be 'yes' or 'no'${NORMAL}"
+    exit 1
+fi
+if [ $(echo ":y:yes:true:1:" | grep -ic ":$WITH_RADIUS:") -eq 1 ]; then
+    WITH_RADIUS=yes
+else
+    WITH_RADIUS=no
+fi
+
 # Verify JUST_K8S settting and convert uniform value of yes or no
 if [ $(echo ":y:yes:true:n:no:false:1:0:" | grep -ic ":$JUST_K8S:") -eq 0 ]; then
     >&2 echo -e "${RED}${BOLD}${ERROR}ERROR:${NORMAL}${RED} Invalid \$JUST_K8S value of '$JUST_K8S'. Should be 'yes' or 'no'${NORMAL}"
@@ -177,7 +189,7 @@
         fi
     else
         EXISTS=$(helm list -q)
-        EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim"
+        EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim radius"
         INTERSECT=
         for i in $EXISTS; do
             if [ $(echo $EXPECT | grep -c $i) -eq 1 ]; then
@@ -198,17 +210,18 @@
 echo "OPTIONS" >> $LOG
 echo "    TYPE                          = $TYPE" >> $LOG
 echo "    WITH_BBSIM                    = $WITH_BBSIM" >> $LOG
+echo "    WITH_RADIUS                   = $WITH_RADIUS" >> $LOG
 echo "    JUST_K8S                      = $JUST_K8S" >> $LOG
 echo "    DEPLOY_K8S                    = $DEPLOY_K8S" >> $LOG
 echo "    SKIP_RESTART_API              = $SKIP_RESTART_API" >> $LOG
 echo "    INSTALL_KUBECTL               = $INSTALL_KUBECTL" >> $LOG
 echo "    INSTALL_HELM                  = $INSTALL_HELM" >> $LOG
+echo "    USE_GO                        = $(echo $USE_GO | test $(grep -c true) -eq 1 && echo yes || echo no)" >> $LOG
+echo "    VOLTHA_LOG_LEVEL              = $VOLTHA_LOG_LEVEL" >> $LOG
 echo "    VOLTHA_CHART                  = $VOLTHA_CHART" >> $LOG
 echo "    VOLTHA_ADAPTER_SIM_CHART      = $VOLTHA_ADAPTER_SIM_CHART" >> $LOG
 echo "    VOLTHA_ADAPTER_OPEN_OLT_CHART = $VOLTHA_ADAPTER_OPEN_OLT_CHART" >> $LOG
 echo "    VOLTHA_ADAPTER_OPEN_ONU_CHART = $VOLTHA_ADAPTER_OPEN_ONU_CHART" >> $LOG
-echo "    VOLTHA_LOG_LEVEL              = $VOLTHA_LOG_LEVEL" >> $LOG
-echo "    USE_GO                        = $(echo $USE_GO | test $(grep -c true) -eq 1 && echo yes || echo no)" >> $LOG
 
 spin() {
     PARTS="\
@@ -261,6 +274,7 @@
 DOWNLOAD="\xf0\x9f\x93\xa5"
 GEAR="\xe2\x9a\x99"
 NO_ENTRY="\xe2\x9b\x94"
+LOCK="\xf0\x9f\x94\x92"
 
 bspin() {
     tput civis
@@ -594,7 +608,7 @@
 if [ ! -x ./onos-files/install-onos-applications.sh ]; then
     bspin - "Verify or download ONOS configuration support files $DOWNLOAD"
     (set -x; mkdir -p ./onos-files  >>$LOG 2>&1) >>$LOG 2>&1
-    for i in dhcp-to-controller-flow.json install-onos-applications.sh olt-onos-enableExtraneousRules.json olt-onos-netcfg.json olt-onos-olt-settings.json; do
+    for i in dhcp-to-controller-flow.json install-onos-applications.sh olt-onos-enableExtraneousRules.json olt-onos-netcfg.json olt-onos-olt-settings.json radius-config.json; do
         if [ ! -r ./onos-files/$i ]; then
             (set -x; curl -o ./onos-files/$i -sSL https://raw.githubusercontent.com/ciena/kind-voltha/master/onos-files/$i >>$LOG 2>&1) >>$LOG 2>&1
         fi
@@ -655,7 +669,7 @@
 
 if [ $WITH_BBSIM == "yes" ]; then
     echo -e "Verify BBSIM $PLUG"
-    bspin - "Verify BBSIM Insalled"
+    bspin - "Verify BBSIM Installed"
     if [ $(helm list --deployed --short --namespace voltha "^bbsim\$" | wc -l) -ne 1 ]; then
         espin - $NOT_VERIFIED
         helm_install - voltha bbsim onf/bbsim "Install BBSIM"
@@ -665,6 +679,18 @@
     wait_for_pods - "voltha" 1 -1 "Waiting for BBSIM to start" "bbsim-.*"
 fi
 
+if [ $WITH_RADIUS == "yes" ]; then
+    echo -e "Verify RADIUS $LOCK"
+    bspin - "Verify RADIUS Installed"
+    if [ $(helm list --deployed --short --namespace voltha "^radius\$" | wc -l) -ne 1 ]; then
+        espin - $NOT_VERIFIED
+        helm_install - voltha radius onf/freeradius "Install RADIUS"
+    else
+        espin - $VERIFIED
+    fi
+    wait_for_pods - "voltha" 1 -1 "Waiting for RADIUS to start" "radius-.*"
+fi
+
 if [ $SKIP_RESTART_API == "no" ]; then
     echo -e "Restart VOLTHA API $RESTART"
     API="voltha-api-server-.* ofagent-.*"
@@ -686,10 +712,16 @@
 (set -x; screen -dmS voltha-ssh-$TYPE kubectl port-forward -n voltha service/voltha-cli $VOLTHA_SSH_PORT:5022 >>$LOG 2>&1) >>$LOG 2>&1
 espin - $VERIFIED
 
-bspin - "Create voltctl configuration file"
+if [ $WITH_RADIUS == "yes" ]; then
+    bspin "Configure ONOS RADIUS Connection $GEAR"
+    (set -x; cat onos-files/radius-config.json | sed -e "s/:RADIUS_IP:/$(kubectl -n voltha get service/radius -o jsonpath={.spec.clusterIP})/g" | curl -XPOST -sSL http://karaf:karaf@localhost:8181/onos/v1/network/configuration -H Content-type:application/json -d@- >>$LOG 2>&1) >>$LOG 2>&1
+    espin $VERIFIED
+fi
+
+bspin "Create voltctl configuration file"
 (set -x; mkdir -p $HOME/.volt >>$LOG 2>&1) >>$LOG 2>&1
 (set -x; voltctl -a v2 -s localhost:$VOLTHA_API_PORT config > $HOME/.volt/config-$TYPE 2>>$LOG) >>$LOG 2>&1
-espin - $VERIFIED
+espin $VERIFIED
 
 echo ""
 echo "Please issue the following commands in your terminal to ensure that you" | tee -a $LOG