Adding workflow config support through parameters
diff --git a/README.md b/README.md
index e569414..ec1a4f8 100644
--- a/README.md
+++ b/README.md
@@ -74,6 +74,9 @@
 | `WITH_BBSIM`                    | no                           | Should the BBSIM POD be deployed?                                                   |
 | `WITH_ONOS`                     | yes                          | Should `ONOS` service be deployed?                                                  |
 | `WITH_RADIUS`                   | no                           | Should `freeradius` service be deployed?                                            |
+| `WITH_EAPOL`                    | no                           | Configure the OLT app to push EAPOL flows                                           |
+| `WITH_DHCP`                     | no                           | Configure the OLT app to push DCHP flows                                            |
+| `WITH_IGMP`                     | no                           | Configure the OLT app to push IGMP flows                                            |
 | `WITH_TIMINGS`                  | no                           | Outputs duration of various steps of the install                                    |
 | `WITH_CHAOS`                    | no                           | Starts kube-monkey to introduce chaos                                               |
 | `CONFIG_SADIS`                  | no                           | Configure SADIS entries into ONOS, if WITH_ONOS set (see SADIS Configuration        |    
diff --git a/onos-files/olt-onos-olt-settings.json b/onos-files/olt-onos-olt-settings.json
deleted file mode 100644
index 031000d..0000000
--- a/onos-files/olt-onos-olt-settings.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "enableDhcpOnProvisioning" : true,
- "enableDhcpV4": true,
- "enableEapol": true,
- "defaultVlan" : 65535
-}
diff --git a/voltha b/voltha
index ac54d94..52ee03b 100755
--- a/voltha
+++ b/voltha
@@ -70,6 +70,9 @@
 WITH_TIMINGS=${WITH_TIMINGS:-no}
 WITH_BBSIM=${WITH_BBSIM:-no}
 WITH_RADIUS=${WITH_RADIUS:-no}
+WITH_EAPOL=${WITH_EAPOL:-yes}
+WITH_DHCP=${WITH_DHCP:-yes}
+WITH_IGMP=${WITH_IGMP:-no}
 WITH_ONOS=${WITH_ONOS:-yes}
 WITH_CHAOS=${WITH_CHAOS:-no}
 WITH_ADAPTERS=${WITH_ADAPTERS:-yes}
@@ -133,6 +136,9 @@
     WITH_TIMINGS \
     WITH_BBSIM \
     WITH_RADIUS \
+    WITH_EAPOL \
+    WITH_DHCP \
+    WITH_IGMP \
     WITH_ONOS \
     WITH_CHAOS \
     WITH_ADAPTERS \
@@ -371,13 +377,19 @@
 fi
 
 push_onos_config() {
-    local MSG=$1
-    local RESOURCE=$2
-    local DATA=$3
+    local TYPE=$1
+    local MSG=$2
+    local RESOURCE=$3
+    local DATA=$4
 
     bspin - "$MSG $GEAR"
     while true; do
-        (set -x; curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:$ONOS_API_PORT/onos/v1/$RESOURCE --data @$DATA >>$LOG 2>&1) >>$LOG 2>&1
+        if [ $TYPE == "file" ]; then
+          (set -x; curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:$ONOS_API_PORT/onos/v1/$RESOURCE --data @$DATA >>$LOG 2>&1) >>$LOG 2>&1
+        fi
+        if [ $TYPE == "json" ]; then
+          (set -x; curl --fail -sSL --user karaf:karaf -X POST -H Content-Type:application/json http://127.0.0.1:$ONOS_API_PORT/onos/v1/$RESOURCE --data $DATA >>$LOG 2>&1) >>$LOG 2>&1
+        fi
         if [ $? -eq 0 ]; then
             break
         fi
@@ -1063,7 +1075,7 @@
     port_forward default onos-ssh $ONOS_SSH_PORT 8101
     espin - $VERIFIED
     bspin - "Verify or download ONOS configuration support files $DOWNLOAD"
-    ONOS_FILES="olt-onos-enableExtraneousRules.json  olt-onos-olt-settings.json onos-aaa.json \
+    ONOS_FILES="olt-onos-enableExtraneousRules.json onos-aaa.json \
         onos-dhcpl2relay.json onos-kafka.json onos-sadis-sample.json"
     (set -x; mkdir -p ./onos-files  >>$LOG 2>&1) >>$LOG 2>&1
     ERR_OUT=$(mktemp)
@@ -1096,18 +1108,27 @@
     fi
 
     check_onos_app_active org.opencord.kafka
-    push_onos_config "Push ONOS Kafka Configuration" "network/configuration/apps/org.opencord.kafka" "onos-files/onos-kafka.json"
+    push_onos_config "file" "Push ONOS Kafka Configuration" "network/configuration/apps/org.opencord.kafka" "onos-files/onos-kafka.json"
     check_onos_app_active org.opencord.dhcpl2relay
-    push_onos_config "Push ONOS DHCP L2 Relay Configuration" "network/configuration/apps/org.opencord.dhcpl2relay" "onos-files/onos-dhcpl2relay.json"
+    push_onos_config "file" "Push ONOS DHCP L2 Relay Configuration" "network/configuration/apps/org.opencord.dhcpl2relay" "onos-files/onos-dhcpl2relay.json"
     check_onos_app_active org.opencord.olt
-    push_onos_config "Enable VOLTHA ONOS DHCP and EAPOL provisioning" "configuration/org.opencord.olt.impl.OltFlowService" "onos-files/olt-onos-olt-settings.json"
-    push_onos_config "Enabling extraneous rules for ONOS" "configuration/org.onosproject.net.flow.impl.FlowRuleManager" "onos-files/olt-onos-enableExtraneousRules.json"
+    # FIXME use WITH_DHCP and WITH_EAPOL flags to configre OLT App
+    if [ $WITH_EAPOL == "yes" ]; then
+      push_onos_config "json" "Enable VOLTHA ONOS EAPOL provisioning" "configuration/org.opencord.olt.impl.OltFlowService" '{"enableEapol":true}'
+    fi
+    if [ $WITH_DHCP == "yes" ]; then
+      push_onos_config "json" "Enable VOLTHA ONOS DHCP provisioning" "configuration/org.opencord.olt.impl.OltFlowService" '{"enableDhcpOnProvisioning":true,"enableDhcpV4":true}'
+    fi
+    if [ $WITH_IGMP == "yes" ]; then
+      push_onos_config "json" "Enable VOLTHA ONOS IGMP provisioning" "configuration/org.opencord.olt.impl.OltFlowService" '{"enableIgmpOnProvisioning":true}'
+    fi
+    push_onos_config "file" "Enabling extraneous rules for ONOS" "configuration/org.onosproject.net.flow.impl.FlowRuleManager" "onos-files/olt-onos-enableExtraneousRules.json"
     if [ -f onos-files/onos-sadis.json ]; then
-        push_onos_config "[optional] Push ONOS SADIS Configuration" "network/configuration/apps/org.opencord.sadis" "onos-files/onos-sadis.json"
+        push_onos_config "file" "[optional] Push ONOS SADIS Configuration" "network/configuration/apps/org.opencord.sadis" "onos-files/onos-sadis.json"
     elif [ "$CONFIG_SADIS" == "yes" ]; then
         SADIS_CFG=onos-files/onos-sadis-sample.json
         check_onos_app_active org.opencord.sadis
-        push_onos_config "[optional] Push ONOS SADIS Configuration" "network/configuration/apps/org.opencord.sadis" "$SADIS_CFG"
+        push_onos_config "file" "[optional] Push ONOS SADIS Configuration" "network/configuration/apps/org.opencord.sadis" "$SADIS_CFG"
     fi
 fi
 if [ "$WITH_TIMINGS" == "yes" ]; then