Feature install odl-netconf-clustered-topology

Install the odl-netconf-clustered-topology feature for clustered environments.

Change-Id: Ic369fcbb962c9494dd6e165e38829cc55915689c
Issue-ID: APPC-1242
Signed-off-by: Aaron Hay <aaron.hay@att.com>
diff --git a/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/installFeatures.sh b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/installFeatures.sh
new file mode 100755
index 0000000..724f4e7
--- /dev/null
+++ b/kubernetes/appc/resources/config/appc/opt/onap/appc/bin/installFeatures.sh
@@ -0,0 +1,184 @@
+#!/bin/bash
+
+###
+# ============LICENSE_START=======================================================
+# APPC
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+###
+
+ODL_HOME=${ODL_HOME:-/opt/opendaylight/current}
+APPC_HOME=${APPC_HOME:-/opt/onap/appc}
+ENABLE_ODL_CLUSTER=${ENABLE_ODL_CLUSTER:-false}
+APPC_FEATURE_DIR=${APPC_FEATURE_DIR:-${APPC_HOME}/features}
+
+function featureInstall {
+COUNT=0
+while [ $COUNT -lt 10 ]; do
+  ${ODL_HOME}/bin/client feature:install $1 2> /tmp/installErr
+  cat /tmp/installErr
+  if grep -q 'Failed to get the session' /tmp/installErr; then
+    sleep 10
+  else
+    let COUNT=10
+  fi
+  let COUNT=COUNT+1
+done
+}
+
+ APPC_FEATURES=" \
+ appc-metric \
+ appc-dmaap-adapter \
+ appc-chef-adapter \
+ appc-netconf-adapter \
+ appc-rest-adapter \
+ appc-lifecycle-management \
+ appc-dispatcher \
+ appc-provider \
+ appc-dg-util \
+ appc-dg-shared \
+ appc-sdc-listener \
+ appc-oam \
+ appc-iaas-adapter \
+ appc-ansible-adapter \
+ appc-sequence-generator \
+ appc-artifact-handler \
+ appc-aai-client"
+
+APPC_FEATURES_1=" \
+ onap-appc-core \
+ onap-appc-metric \
+ onap-appc-dmaap-adapter \
+ onap-appc-chef-adapter \
+ onap-appc-netconf-adapter \
+ onap-appc-rest-adapter \
+ onap-appc-lifecycle-management \
+ onap-appc-license-manager"
+
+ APPC_FEATURES_2=" \
+ onap-appc-dg-util \
+ onap-appc-dg-shared \
+ onap-appc-sdc-listener \
+ onap-appc-oam \
+ onap-appc-iaas-adapter \
+ onap-appc-ansible-adapter \
+ onap-appc-sequence-generator \
+ onap-appc-config-generator \
+ onap-appc-config-data-services \
+ onap-appc-config-adaptor \
+ onap-appc-config-audit \
+ onap-appc-config-encryption-tool \
+ onap-appc-config-flow-controller \
+ onap-appc-config-params \
+ onap-appc-artifact-handler
+ onap-appc-aai-client \
+ onap-appc-event-listener \
+ onap-appc-network-inventory-client \
+ onap-appc-design-services \
+ onap-appc-interfaces-service"
+
+ APPC_FEATURES_UNZIP=" \
+ appc-core \
+ appc-metric \
+ appc-dmaap-adapter \
+ appc-event-listener \
+ appc-chef-adapter \
+ appc-netconf-adapter \
+ appc-rest-adapter \
+ appc-lifecycle-management \
+ appc-dispatcher \
+ appc-provider \
+ appc-dg-util \
+ appc-dg-shared \
+ appc-sdc-listener \
+ appc-oam \
+ appc-iaas-adapter \
+ appc-ansible-adapter \
+ appc-sequence-generator \
+ appc-config-generator \
+ appc-config-data-services \
+ appc-config-adaptor \
+ appc-config-audit \
+ appc-config-encryption-tool \
+ appc-config-flow-controller \
+ appc-config-params \
+ appc-artifact-handler \
+ appc-aai-client \
+ appc-network-inventory-client \
+ appc-design-services \
+ appc-interfaces-service"
+
+
+if $ENABLE_ODL_CLUSTER
+  then
+    echo "Enabling core APP-C features with clustering enabled"
+    featureInstall odl-netconf-connector-all
+    featureInstall odl-restconf-noauth
+    featureInstall odl-netconf-clustered-topology
+  else
+    echo "Enabling core APP-C features with clustering disabled"
+    featureInstall odl-netconf-connector-all
+    featureInstall odl-restconf-noauth
+    featureInstall odl-netconf-topology
+fi
+
+sleep 7s
+echo "Installing APP-C Features"
+echo ""
+
+for feature in ${APPC_FEATURES_UNZIP}
+do
+  if [ -f ${APPC_FEATURE_DIR}/${feature}/install-feature.sh ]
+  then
+    ${APPC_FEATURE_DIR}/${feature}/install-feature.sh
+  else
+    echo "No installer found for feature ${feature}"
+  fi
+done
+
+#${ODL_HOME}/bin/client feature:install appc-metric appc-dmaap-adapter appc-event-listener appc-chef-adapter appc-netconf-adapter appc-rest-adapter appc-lifecycle-management appc-dispatcher appc-provider appc-dg-util appc-dg-shared appc-sdc-listener appc-oam appc-iaas-adapter appc-ansible-adapter appc-sequence-generator appc-config-generator appc-config-data-services appc-config-adaptor appc-config-audit appc-config-encryption-tool appc-config-flow-controller appc-config-params appc-artifact-handler appc-aai-client
+
+for feature in ${APPC_FEATURES_1}
+do
+  echo "Installing ${feature}"
+  start=$(date +%s)
+  ${ODL_HOME}/bin/client "feature:install -r ${feature}"
+  end=$(date +%s)
+  echo "Install of ${feature} took $(expr $end - $start) seconds"
+  sleep 7s
+  echo "Sleep Finished"
+done
+
+  echo "Installing dispatcher features"
+  start=$(date +%s)
+  ${ODL_HOME}/bin/client "feature:install -r onap-appc-request-handler onap-appc-command-executor onap-appc-lifecycle-management onap-appc-workflow-management lock-manager onap-appc-provider"
+  end=$(date +%s)
+  echo "Install of dispatcher features took $(expr $end - $start) seconds"
+  sleep 7s
+  echo "Sleep Finished"
+
+for feature in ${APPC_FEATURES_2}
+do
+  echo "Installing ${feature}"
+  start=$(date +%s)
+  ${ODL_HOME}/bin/client "feature:install -r ${feature}"
+  end=$(date +%s)
+  echo "Install of ${feature} took $(expr $end - $start) seconds"
+  sleep 7s
+  echo "Sleep Finished"
+done
+
diff --git a/kubernetes/appc/templates/statefulset.yaml b/kubernetes/appc/templates/statefulset.yaml
index 6b0373f..6677516 100644
--- a/kubernetes/appc/templates/statefulset.yaml
+++ b/kubernetes/appc/templates/statefulset.yaml
@@ -116,6 +116,9 @@
           - mountPath: /opt/onap/appc/bin/installAppcDb.sh
             name: onap-appc-bin
             subPath: installAppcDb.sh
+          - mountPath: /opt/onap/appc/bin/installFeatures.sh
+            name: onap-appc-bin
+            subPath: installFeatures.sh
           - mountPath: /opt/onap/appc/bin/health_check.sh
             name: onap-appc-bin
             subPath: health_check.sh
diff --git a/kubernetes/appc/values.yaml b/kubernetes/appc/values.yaml
index 17f819b..11ec0e9 100644
--- a/kubernetes/appc/values.yaml
+++ b/kubernetes/appc/values.yaml
@@ -31,7 +31,7 @@
 flavor: small
 # application image
 repository: nexus3.onap.org:10001
-image: onap/appc-image:1.4.3
+image: onap/appc-image:1.4.4
 pullPolicy: Always
 
 # flag to enable debugging - application support required