summaryrefslogtreecommitdiffstats
path: root/mod/designtool/designtool-web/sh
diff options
context:
space:
mode:
authorAndrew Gauld <agauld@att.com>2020-02-07 15:00:39 +0000
committerAndrew Gauld <agauld@att.com>2020-02-07 20:37:14 +0000
commit9507f2f8d2ec616f01f5ee8825106300b95e8ddc (patch)
tree846762f63ff485c7d8615c64d751231ce603de81 /mod/designtool/designtool-web/sh
parent83f85998b01c7937b84549d81f5ec2a07958f96d (diff)
Add DCAE MOD design tool project
Change-Id: I660b28ebfaa7e4b5f03a1df5fd17d126f58b7c14 Issue-ID: DCAEGEN2-1860 Signed-off-by: Andrew Gauld <agauld@att.com>
Diffstat (limited to 'mod/designtool/designtool-web/sh')
-rwxr-xr-xmod/designtool/designtool-web/sh/applypatches.sh107
-rwxr-xr-xmod/designtool/designtool-web/sh/common.sh43
-rwxr-xr-xmod/designtool/designtool-web/sh/start.sh97
3 files changed, 247 insertions, 0 deletions
diff --git a/mod/designtool/designtool-web/sh/applypatches.sh b/mod/designtool/designtool-web/sh/applypatches.sh
new file mode 100755
index 0000000..47de89c
--- /dev/null
+++ b/mod/designtool/designtool-web/sh/applypatches.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+# ============LICENSE_START=====================================================
+# Copyright (c) 2020 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=======================================================
+
+set -eufx -o pipefail
+
+PATCH_BINARY=/tmp/patches/designtool-web-$1.war
+NIFI_VERSION=$2
+PATCHES=/tmp/patches
+TARGETS=/tmp/targets
+mkdir -p $PATCHES $TARGETS
+# extract patches
+cd $PATCHES
+jar xf $PATCH_BINARY
+rm $PATCH_BINARY
+# extract jars and wars to be patched
+cd $TARGETS
+jar xf $NIFI_BASE_DIR/nifi-current/lib/nifi-framework-nar-$NIFI_VERSION.nar \
+ META-INF/bundled-dependencies/nifi-framework-nar-loading-utils-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-jetty-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-web-api-$NIFI_VERSION.war \
+ META-INF/bundled-dependencies/nifi-web-ui-$NIFI_VERSION.war
+# patch jar files
+cd $PATCHES/WEB-INF/classes
+set +f
+jar uf $NIFI_BASE_DIR/nifi-toolkit-current/lib/nifi-client-dto-$NIFI_VERSION.jar \
+ org/apache/nifi/web/api/dto/FlowConfigurationDTO*.class
+jar uf $TARGETS/META-INF/bundled-dependencies/nifi-jetty-$NIFI_VERSION.jar \
+ org/apache/nifi/web/server/JettyServer*.class
+jar uf $NIFI_BASE_DIR/nifi-current/lib/nifi-properties-$NIFI_VERSION.jar \
+ org/apache/nifi/util/NiFiProperties*.class
+jar uf $NIFI_BASE_DIR/nifi-current/lib/nifi-runtime-$NIFI_VERSION.jar \
+ org/apache/nifi/NiFi*.class
+jar uf $NIFI_BASE_DIR/nifi-toolkit-current/lib/nifi-framework-core-api-$NIFI_VERSION.jar \
+ org/apache/nifi/controller/AbstractPort*.class
+jar uf $TARGETS/META-INF/bundled-dependencies/nifi-framework-nar-loading-utils-$NIFI_VERSION.jar \
+ org/apache/nifi/nar/DCAEClassLoaders*.class \
+ org/apache/nifi/nar/DCAEAutoLoader*.class
+# patch war files
+cd $PATCHES
+jar uf $TARGETS/META-INF/bundled-dependencies/nifi-web-api-$NIFI_VERSION.war \
+ WEB-INF/classes/org/apache/nifi/web/StandardNiFiServiceFacade*.class \
+ WEB-INF/classes/org/apache/nifi/web/api/dto/DtoFactory*.class \
+ WEB-INF/classes/org/apache/nifi/web/dao/impl/StandardConnectionDAO*.class
+set -f
+jar xf $TARGETS/META-INF/bundled-dependencies/nifi-web-ui-$NIFI_VERSION.war \
+ css/nf-canvas-all.css \
+ js/nf/canvas/nf-canvas-all.js \
+ js/nf/summary/nf-summary-all.js
+rm -f \
+ css/nf-canvas-all.css.gz \
+ js/nf/canvas/nf-canvas-all.js.gz \
+ js/nf/summary/nf-summary-all.js.gz
+sed -i \
+ -e '/graph-controls/{r navigation-min.css' -e 'd}' \
+ css/nf-canvas-all.css
+sed -i \
+ -e '/process-group-up-to-date/{r nf-process-group-min.js' -e 'd}' \
+ -e '/div.available-relationship/{r nf-connection-configuration-min.js' -e 'd}' \
+ -e '/nf.FlowVerison/{r nf-flow-version-min.js' -e 'd}' \
+ -e '/controllerConfig/{r nf-settings-min.js' -e 'd}' \
+ -e '/this.breadcrumbs/{r nf-ng-breadcrumbs-controller-min.js' -e 'd}' \
+ -e '/processor-types-table/{r nf-ng-processor-component-min.js' -e 'd}' \
+ js/nf/canvas/nf-canvas-all.js
+sed -i \
+ -e '/controllerConfig/{r nf-settings-min.js' -e 'd}' \
+ js/nf/summary/nf-summary-all.js
+gzip -k \
+ css/nf-canvas-all.css \
+ js/nf/canvas/nf-canvas-all.js \
+ js/nf/summary/nf-summary-all.js
+jar uf $TARGETS/META-INF/bundled-dependencies/nifi-web-ui-$NIFI_VERSION.war \
+ $(find WEB-INF/classes/org/apache/jsp/WEB_002dINF WEB-INF/pages WEB-INF/partials css js images -type f -print)
+# patch scripts
+cp common.sh start.sh $NIFI_BASE_DIR/scripts/
+# patch nar files
+cd $TARGETS
+cp $NIFI_BASE_DIR/nifi-toolkit-current/lib/nifi-client-dto-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-client-dto-$NIFI_VERSION.jar
+jar uf $NIFI_BASE_DIR/nifi-current/lib/nifi-site-to-site-reporting-nar-$NIFI_VERSION.nar \
+ META-INF/bundled-dependencies/nifi-client-dto-$NIFI_VERSION.jar
+cp $NIFI_BASE_DIR/nifi-toolkit-current/lib/nifi-framework-core-api-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-framework-core-api-$NIFI_VERSION.jar
+jar uf $NIFI_BASE_DIR/nifi-current/lib/nifi-framework-nar-$NIFI_VERSION.nar \
+ META-INF/bundled-dependencies/nifi-client-dto-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-framework-core-api-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-framework-nar-loading-utils-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-jetty-$NIFI_VERSION.jar \
+ META-INF/bundled-dependencies/nifi-web-api-$NIFI_VERSION.war \
+ META-INF/bundled-dependencies/nifi-web-ui-$NIFI_VERSION.war
+cp $NIFI_BASE_DIR/nifi-current/lib/nifi-properties-$NIFI_VERSION.jar \
+ $NIFI_BASE_DIR/nifi-toolkit-current/lib/nifi-properties-$NIFI_VERSION.jar
+echo Success
+exit 0
diff --git a/mod/designtool/designtool-web/sh/common.sh b/mod/designtool/designtool-web/sh/common.sh
new file mode 100755
index 0000000..542b777
--- /dev/null
+++ b/mod/designtool/designtool-web/sh/common.sh
@@ -0,0 +1,43 @@
+#!/bin/sh -e
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+#
+# Modifications to the original nifi code for the ONAP project are made
+# available under the Apache License, Version 2.0
+#
+
+# 1 - value to search for
+# 2 - value to replace
+# 3 - file to perform replacement inline
+prop_replace () {
+ target_file=${3:-${nifi_props_file}}
+ echo 'replacing target file ' ${target_file}
+ sed -i -e "s|^$1=.*$|$1=$2|" ${target_file}
+}
+
+# 1 - property name
+# 2 - property value
+# 3 - file to perform replacement inline
+prop_append () {
+ target_file=${3:-${nifi_props_file}}
+ echo 'appending target file ' ${target_file}
+ sed -i "$ a $1=$2" ${target_file}
+}
+
+# NIFI_HOME is defined by an ENV command in the backing Dockerfile
+export nifi_props_file=${NIFI_HOME}/conf/nifi.properties
+export nifi_toolkit_props_file=${HOME}/.nifi-cli.nifi.properties
+export hostname=$(hostname)
diff --git a/mod/designtool/designtool-web/sh/start.sh b/mod/designtool/designtool-web/sh/start.sh
new file mode 100755
index 0000000..8658983
--- /dev/null
+++ b/mod/designtool/designtool-web/sh/start.sh
@@ -0,0 +1,97 @@
+#!/bin/sh -e
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+#
+# Modifications to the original nifi code for the ONAP project are made
+# available under the Apache License, Version 2.0
+#
+
+scripts_dir='/opt/nifi/scripts'
+
+[ -f "${scripts_dir}/common.sh" ] && . "${scripts_dir}/common.sh"
+
+# Establish baseline properties
+prop_replace 'nifi.web.http.port' "${NIFI_WEB_HTTP_PORT:-8080}"
+prop_replace 'nifi.web.http.host' "${NIFI_WEB_HTTP_HOST:-$HOSTNAME}"
+prop_replace 'nifi.remote.input.host' "${NIFI_REMOTE_INPUT_HOST:-$HOSTNAME}"
+prop_replace 'nifi.remote.input.socket.port' "${NIFI_REMOTE_INPUT_SOCKET_PORT:-10000}"
+prop_replace 'nifi.remote.input.secure' 'false'
+
+# Set nifi-toolkit properties files and baseUrl
+"${scripts_dir}/toolkit.sh"
+prop_replace 'baseUrl' "http://${NIFI_WEB_HTTP_HOST:-$HOSTNAME}:${NIFI_WEB_HTTP_PORT:-8080}" ${nifi_toolkit_props_file}
+
+prop_replace 'nifi.variable.registry.properties' "${NIFI_VARIABLE_REGISTRY_PROPERTIES:-}"
+prop_replace 'nifi.cluster.is.node' "${NIFI_CLUSTER_IS_NODE:-false}"
+prop_replace 'nifi.cluster.node.address' "${NIFI_CLUSTER_ADDRESS:-$HOSTNAME}"
+prop_replace 'nifi.cluster.node.protocol.port' "${NIFI_CLUSTER_NODE_PROTOCOL_PORT:-}"
+prop_replace 'nifi.cluster.node.protocol.threads' "${NIFI_CLUSTER_NODE_PROTOCOL_THREADS:-10}"
+prop_replace 'nifi.cluster.node.protocol.max.threads' "${NIFI_CLUSTER_NODE_PROTOCOL_MAX_THREADS:-50}"
+prop_replace 'nifi.zookeeper.connect.string' "${NIFI_ZK_CONNECT_STRING:-}"
+prop_replace 'nifi.zookeeper.root.node' "${NIFI_ZK_ROOT_NODE:-/nifi}"
+prop_replace 'nifi.cluster.flow.election.max.wait.time' "${NIFI_ELECTION_MAX_WAIT:-5 mins}"
+prop_replace 'nifi.cluster.flow.election.max.candidates' "${NIFI_ELECTION_MAX_CANDIDATES:-}"
+prop_replace 'nifi.web.proxy.context.path' "${NIFI_WEB_PROXY_CONTEXT_PATH:-}"
+
+# REVIEW: Could not figure out how the nifi.properties file gets generated so
+# replace value conditionally if the property name exists otherwise append
+if grep -q 'nifi.dcae.jars.index.url' $nifi_props_file
+then
+ prop_replace 'nifi.dcae.jars.index.url' "${NIFI_DCAE_JARS_INDEX_URL:-http://genprocessor-http/nifi-jars/}"
+else
+ prop_append 'nifi.dcae.jars.index.url' "${NIFI_DCAE_JARS_INDEX_URL:-http://genprocessor-http/nifi-jars/}"
+fi
+
+if grep -q 'nifi.ui.dcae.distibutor.api.url' $nifi_props_file
+then
+ prop_replace 'nifi.ui.dcae.distibutor.api.url' "${NIFI_DCAE_DISTRIBUTOR_API_URL:-http://distributor-api}"
+else
+ prop_append 'nifi.ui.dcae.distibutor.api.url' "${NIFI_DCAE_DISTRIBUTOR_API_URL:-http://distributor-api}"
+fi
+
+. "${scripts_dir}/update_cluster_state_management.sh"
+
+# Check if we are secured or unsecured
+case ${AUTH} in
+ tls)
+ echo 'Enabling Two-Way SSL user authentication'
+ . "${scripts_dir}/secure.sh"
+ ;;
+ ldap)
+ echo 'Enabling LDAP user authentication'
+ # Reference ldap-provider in properties
+ prop_replace 'nifi.security.user.login.identity.provider' 'ldap-provider'
+
+ . "${scripts_dir}/secure.sh"
+ . "${scripts_dir}/update_login_providers.sh"
+ ;;
+ *)
+ if [ ! -z "${NIFI_WEB_PROXY_HOST}" ]; then
+ echo 'NIFI_WEB_PROXY_HOST was set but NiFi is not configured to run in a secure mode. Will not update nifi.web.proxy.host.'
+ fi
+ ;;
+esac
+
+# Continuously provide logs so that 'docker logs' can produce them
+tail -F "${NIFI_HOME}/logs/nifi-app.log" &
+"${NIFI_HOME}/bin/nifi.sh" run &
+nifi_pid="$!"
+
+trap "echo Received trapped signal, beginning shutdown...;" KILL TERM HUP INT EXIT;
+
+echo NiFi running with PID ${nifi_pid}.
+wait ${nifi_pid}