#!/usr/bin/env bash
SERVICE_NAME='ACS-CNM-DKMS-DSSQL-MARIADB-JOBS-TASK-OPT-POMAM-PUBSUB-RM-SOLVER'
echo '-----------------------------------'
echo 'Building Module '${SERVICE_NAME}
echo '-----------------------------------'
echo
cd ..
SERVICE_HOME=$PWD
cd ..
PROJECT_HOME=$PWD
SDK_HOME=${PROJECT_HOME}"/c2net-cpl-paas4sla-sdk-code"
ACS_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-acs-code"
CNM_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-cnm-code"
DKMS_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-dst-dkms-code"
DSSQL_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-dst-dssql-code"
JOBS_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-jex-jobs-code"
MARIADB_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-dst-mariadbwrapper-code"
OPT_HOME=${PROJECT_HOME}"/c2net-opt-poma-opc-code"
POMAM_HOME=${PROJECT_HOME}"/c2net-opt-poma-pomam-code"
PUBSUB_HOME=${PROJECT_HOME}"/c2net-dcf-msg-queue-code/pubsubService/components/pubsub"
RM_HOME=${PROJECT_HOME}"/c2net-dcf-msg-queue-code/pubsubService/components/mock_rm"
SOLVER_HOME=${PROJECT_HOME}"/c2net-opt-poma-solvermanager-code"
TASK_HOME=${PROJECT_HOME}"/c2net-cpl-paas4man-jex-taskexecutor-code"
# Front end components
ACSDSSQL_FE_HOME=${SERVICE_HOME}"/components/feacsdssql"
JOBEX_FE_HOME=${SERVICE_HOME}"/components/jobexfe"
ACS=true
CNM=false
DKMS=false
DSSQL=false
MARIADB=false
JOBS=false
TASK=false
OPT=false
POMAM=false
PUBSUB=false
RM=false
SOLVER=true
JOBEX_FE=false
ACSDSSQL_FE=false
VALIDATION=false
#SEMANTIC=false
ZIP=false
COMPILE=true
if ${ACS}
then
echo '----------------------------'
echo ' ACS Component'
echo '----------------------------'
# cd ${MODULE_HOME}
sudo rm -rf ${SERVICE_HOME}/components/acs
mkdir ${SERVICE_HOME}/components/acs
mkdir ${SERVICE_HOME}/components/acs/code
mkdir ${SERVICE_HOME}/components/acs/code/src
echo 'component manifest...'
cp -fr ${ACS_HOME}/Manifest.json ${SERVICE_HOME}/components/acs/.
echo 'blob manifest...'
cp -fr ${ACS_HOME}/code/Manifest.json ${SERVICE_HOME}/components/acs/code/.
echo 'package.json...'
cp -fr ${ACS_HOME}/code/src/package.json ${SERVICE_HOME}/components/acs/code/src/.
echo 'src folder...'
cp -fr ${ACS_HOME}/code/src/src ${SERVICE_HOME}/components/acs/code/src/.
cd ${SERVICE_HOME}/components/acs/code/src/
if ${COMPILE}
then
echo 'compiling...'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component &&
npm install'
fi
echo 'compilation done!'
echo 'Jobs Component DONE!'
fi
if ${CNM}
then
echo '----------------------------'
echo ' CNM Component'
echo '----------------------------'
# cd ${MODULE_HOME}
rm -rf ${SERVICE_HOME}/components/cnm
mkdir ${SERVICE_HOME}/components/cnm
mkdir ${SERVICE_HOME}/components/cnm/code
mkdir ${SERVICE_HOME}/components/cnm/code/src
echo 'component manifest...'
cp -fr ${CNM_HOME}/Manifest.json ${SERVICE_HOME}/components/cnm/.
echo 'blob manifest...'
cp -fr ${CNM_HOME}/code/Manifest.json ${SERVICE_HOME}/components/cnm/code/.
echo 'package.json...'
cp -fr ${CNM_HOME}/code/src/package.json ${SERVICE_HOME}/components/cnm/code/src/.
echo 'src folder...'
cp -fr ${CNM_HOME}/code/src/src ${SERVICE_HOME}/components/cnm/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}/components/cnm/code/src/
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'Jobs Component DONE!'
fi
if ${JOBS}
then
echo '----------------------------'
echo ' JOBS Component'
echo '----------------------------'
# echo 'compiling...'
# cd ${JOBS_HOME}'/code/src'
#
# cd ${MODULE_HOME}
rm -rf ${SERVICE_HOME}/components/jobs
mkdir ${SERVICE_HOME}/components/jobs
mkdir ${SERVICE_HOME}/components/jobs/code
mkdir ${SERVICE_HOME}/components/jobs/code/src
echo 'component manifest...'
cp -fr ${JOBS_HOME}/Manifest.json ${SERVICE_HOME}/components/jobs/.
echo 'blob manifest...'
cp -fr ${JOBS_HOME}/code/Manifest.json ${SERVICE_HOME}/components/jobs/code/.
echo 'package.json...'
cp -fr ${JOBS_HOME}/code/src/package.json ${SERVICE_HOME}/components/jobs/code/src/.
echo 'src folder...'
cp -fr ${JOBS_HOME}/code/src/src ${SERVICE_HOME}/components/jobs/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}/components/jobs/code/src/
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'Jobs Component DONE!'
fi
if ${TASK}
then
echo '----------------------------'
echo ' TASK EXECUTOR Component'
echo '----------------------------'
# cd ${TASK_HOME}'/code/src'
# rm -rf ./node_modules
rm -rf ${SERVICE_HOME}/components/taskexecutor
mkdir ${SERVICE_HOME}/components/taskexecutor
mkdir ${SERVICE_HOME}/components/taskexecutor/code
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src/src
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src/julia
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src/julia/algorithms
#
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src/julia/lib
mkdir ${SERVICE_HOME}/components/taskexecutor/code/src/julia/libmariadb
echo 'folders created'
cp -fr ${TASK_HOME}/Manifest.json ${SERVICE_HOME}/components/taskexecutor/. > log.txt
echo 'component manifest copied'
cp -fr ${TASK_HOME}/code/Manifest.json ${SERVICE_HOME}/components/taskexecutor/code/. > log.txt
echo 'blob manifest copied'
cp -fr ${TASK_HOME}/code/src/package.json ${SERVICE_HOME}/components/taskexecutor/code/src/. > log.txt
echo 'package.json copied'
cp -fr ${TASK_HOME}/code/src/src ${SERVICE_HOME}/components/taskexecutor/code/src/. > log.txt
echo 'src folder copied'
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}/components/taskexecutor/code/src/
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
#echo 'decompresing package...'
#mkdir ./node_modules/drivers > log.txt
#
#dpkg -x ${SOURCE}/code/drivers/libmariadb2_2.0.0-1_amd64.deb ./node_modules/drivers/libmariadb
#
#echo 'copying libmariadb ibraries...'
#cp ./node_modules/drivers/libmariadb/usr/lib/x86_64-linux-gnu/libmariadb.so.2 ./components/taskexecutor/code/drivers/.
cp -fr ${TASK_HOME}/code/src/julia/libmariadb/* ${SERVICE_HOME}/components/taskexecutor/code/src/julia/libmariadb/ > log.txt
echo 'MariaDB driver copied'
cp -fr ${TASK_HOME}/code/src/julia/lib/* ${SERVICE_HOME}/components/taskexecutor/code/src/julia/lib/ > log.txt
echo 'Julia libraries copied'
cp -fr ${TASK_HOME}/code/src/julia/algorithms/. ${SERVICE_HOME}/components/taskexecutor/code/src/julia/algorithms/. > log.txt
echo 'Test Algorithms to Task Executor included'
echo 'Task Executor Component DONE!'
fi
if ${DKMS}
then
echo '----------------------------'
echo ' DKMS Component'
echo '----------------------------'
cd ${SERVICE_HOME}
rm -rf ${SERVICE_HOME}/components/dkms
mkdir ${SERVICE_HOME}/components/dkms
mkdir ${SERVICE_HOME}/components/dkms/code
mkdir ${SERVICE_HOME}/components/dkms/code/src
echo 'component manifest...'
cp -fr ${DKMS_HOME}/Manifest.json ${SERVICE_HOME}/components/dkms/.
echo 'blob manifest...'
cp -fr ${DKMS_HOME}/code/Manifest.json ${SERVICE_HOME}/components/dkms/code/.
echo 'package.json...'
cp -fr ${DKMS_HOME}/code/module/package.json ${SERVICE_HOME}/components/dkms/code/src/.
echo 'src folder...'
cp -fr ${DKMS_HOME}/code/module/src ${SERVICE_HOME}/components/dkms/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}/components/dkms/code/src/
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'DKMS Component DONE!'
fi
if ${DSSQL}
then
echo '----------------------------'
echo ' DSSQL Component'
echo '----------------------------'
cd ${SERVICE_HOME}
rm -rf ${SERVICE_HOME}/components/dssql
mkdir ${SERVICE_HOME}/components/dssql
mkdir ${SERVICE_HOME}/components/dssql/code
mkdir ${SERVICE_HOME}/components/dssql/code/src
echo 'component manifest...'
cp -fr ${DSSQL_HOME}/Manifest.json ${SERVICE_HOME}/components/dssql/.
echo 'blob manifest...'
cp -fr ${DSSQL_HOME}/code/Manifest.json ${SERVICE_HOME}/components/dssql/code/.
echo 'package.json...'
cp -fr ${DSSQL_HOME}/code/src/package.json ${SERVICE_HOME}/components/dssql/code/src/.
echo 'src folder...'
cp -fr ${DSSQL_HOME}/code/src/src ${SERVICE_HOME}/components/dssql/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}/components/dssql/code/src/
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'Dssql Component DONE!'
fi
if ${MARIADB}
then
echo '----------------------------'
echo ' MARIADB Wrapper Component'
echo '----------------------------'
# cd ${SERVICE_HOME}
rm -rf ${SERVICE_HOME}/components/mariadbw
mkdir ${SERVICE_HOME}/components/mariadbw
mkdir ${SERVICE_HOME}/components/mariadbw/code
mkdir ${SERVICE_HOME}/components/mariadbw/code/src
echo 'component manifest...'
cp -fr ${MARIADB_HOME}/Manifest.json ${SERVICE_HOME}/components/mariadbw/.
echo 'blob manifest...'
cp -fr ${MARIADB_HOME}/code/Manifest.json ${SERVICE_HOME}/components/mariadbw/code/.
echo 'package.json...'
cp -fr ${MARIADB_HOME}/code/src/package.json ${SERVICE_HOME}/components/mariadbw/code/src/.
echo 'src folder...'
cp -fr ${MARIADB_HOME}/code/src/src ${SERVICE_HOME}/components/mariadbw/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/mariadbw/code/src/'
docker run --rm --entrypoint=bash -v $(pwd):/tmp/component eslap.cloud/runtime/mariadb:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'MariaDB Wrapper Component DONE!'
fi
function createBlobBundle() {
name=$1
hash=$2
cat <<EOF >Manifest.json
{
"spec" : "http://eslap.cloud/manifest/blob/1_0_0"-
"name" : "$name"-
"hash" : "$hash"
}
EOF
}
if ${OPT}
then
echo '----------------------------'
echo ' OPT Component'
echo '----------------------------'
rm -rf ${SERVICE_HOME}/components/opt
mkdir -p ${SERVICE_HOME}/components/opt/code/src/build/classes
echo 'component manifest...'
cp -fr ${OPT_HOME}/Manifest.json ${SERVICE_HOME}/components/opt/.
echo 'blob manifest...'
cp -fr ${OPT_HOME}/code/Manifest.json ${SERVICE_HOME}/components/opt/code/.
echo 'src folder...'
cp -fr ${OPT_HOME}/code/src/src ${SERVICE_HOME}/components/opt/code/src/.
echo 'lib folder...'
cp -fr ${OPT_HOME}/code/src/lib ${SERVICE_HOME}/components/opt/code/src/.
echo 'component.properties...'
cp -fr ${OPT_HOME}/code/src/component.properties ${SERVICE_HOME}/components/opt/code/src/build/.
if ${COMPILE}
then
echo 'compiling...'
cat <<EOF >${SERVICE_HOME}/components/opt/code/src/build/build.sh
JAVALIB="/eslap/java-runtime-lib"
for i in \$(find \$JAVALIB -name "*.jar");do CLASSPATH="\$i:\$CLASSPATH";done
cd /tmp/component
for i in \$(find lib -name "*.jar");do CLASSPATH="\$i:\$CLASSPATH";done
export CLASSPATH
javac -d build/classes \$(find src -name "*.java")
EOF
docker run --rm -v ${SERVICE_HOME}/components/opt/code/src:/tmp/component --entrypoint=bash c2netproject.eu/runtime/java/dev:1_0_0 -c '. /tmp/component/build/build.sh'
rm ${SERVICE_HOME}/components/opt/code/src/build/build.sh
cd ${SERVICE_HOME}/components/opt/code/src/build
cp -rf ../lib .
zip -r ${SERVICE_HOME}/components/opt/code/code.zip .
echo " - Created code zip"
cd ${SERVICE_HOME}/components/opt/code
rm -rf src
compBlobSha1=$(sha1sum ${SERVICE_HOME}/components/opt/code/code.zip | awk '{print $1}')
blobBundleComponentName="acs-code-blob"
createBlobBundle optimisation-problem-configurator-code-blob ${compBlobSha1}
echo 'compilation done!'
fi
echo 'OPT Component DONE!'
fi
if ${POMAM}
then
echo '----------------------------'
echo ' POMAM Component'
echo '----------------------------'
rm -rf ${SERVICE_HOME}/components/pomam
mkdir -p ${SERVICE_HOME}/components/pomam/code/src/build/classes
echo 'component manifest...'
cp -fr ${POMAM_HOME}/Manifest.json ${SERVICE_HOME}/components/pomam/.
echo 'blob manifest...'
cp -fr ${POMAM_HOME}/code/Manifest.json ${SERVICE_HOME}/components/pomam/code/.
echo 'src folder...'
cp -fr ${POMAM_HOME}/code/src/src ${SERVICE_HOME}/components/pomam/code/src/.
echo 'lib folder...'
cp -fr ${POMAM_HOME}/code/src/lib ${SERVICE_HOME}/components/pomam/code/src/.
echo 'component.properties...'
cp -fr ${POMAM_HOME}/code/src/component.properties ${SERVICE_HOME}/components/pomam/code/src/build/.
if ${COMPILE}
then
echo 'compiling...'
cat <<EOF >${SERVICE_HOME}/components/pomam/code/src/build/build.sh
JAVALIB="/eslap/java-runtime-lib"
for i in \$(find \$JAVALIB -name "*.jar");do CLASSPATH="\$i:\$CLASSPATH";done
cd /tmp/component
for i in \$(find lib -name "*.jar");do CLASSPATH="\$i:\$CLASSPATH";done
export CLASSPATH
javac -d build/classes \$(find src -name "*.java")
EOF
docker run --rm -v ${SERVICE_HOME}/components/pomam/code/src:/tmp/component --entrypoint=bash c2netproject.eu/runtime/java/dev:1_0_0 -c '. /tmp/component/build/build.sh'
rm ${SERVICE_HOME}/components/pomam/code/src/build/build.sh
cd ${SERVICE_HOME}/components/pomam/code/src/build
cp -rf ../lib .
zip -r ${SERVICE_HOME}/components/pomam/code/code.zip .
echo " - Created code zip"
cd ${SERVICE_HOME}/components/pomam/code
rm -rf src
compBlobSha1=$(sha1sum ${SERVICE_HOME}/components/pomam/code/code.zip | awk '{print $1}')
blobBundleComponentName="acs-code-blob"
createBlobBundle poma-manager-code-blob ${compBlobSha1}
echo 'compilation done!'
fi
echo 'POMAM Component DONE!'
fi
if ${PUBSUB}
then
echo '----------------------------'
echo ' PUBSUB Component'
echo '----------------------------'
rm -rf ${SERVICE_HOME}/components/pubsub
mkdir ${SERVICE_HOME}/components/pubsub
mkdir ${SERVICE_HOME}/components/pubsub/code
mkdir ${SERVICE_HOME}/components/pubsub/code/src
echo 'component manifest...'
cp -fr ${PUBSUB_HOME}/Manifest.json ${SERVICE_HOME}/components/pubsub/.
echo 'blob manifest...'
cp -fr ${PUBSUB_HOME}/code/Manifest.json ${SERVICE_HOME}/components/pubsub/code/.
echo 'package.json...'
cp -fr ${PUBSUB_HOME}/code/src/package.json ${SERVICE_HOME}/components/pubsub/code/src/.
echo 'src folder...'
cp -fr ${PUBSUB_HOME}/code/src/src ${SERVICE_HOME}/components/pubsub/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/pubsub/code/src/'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'PUBSUB Component DONE!'
fi
if ${RM}
then
echo '----------------------------'
echo ' RM Component'
echo '----------------------------'
rm -rf ${SERVICE_HOME}/components/rm
mkdir ${SERVICE_HOME}/components/rm
mkdir ${SERVICE_HOME}/components/rm/code
mkdir ${SERVICE_HOME}/components/rm/code/src
echo 'component manifest...'
cp -fr ${RM_HOME}/Manifest.json ${SERVICE_HOME}/components/rm/.
echo 'blob manifest...'
cp -fr ${RM_HOME}/code/Manifest.json ${SERVICE_HOME}/components/rm/code/.
echo 'package.json...'
cp -fr ${RM_HOME}/code/src/package.json ${SERVICE_HOME}/components/rm/code/src/.
echo 'src folder...'
cp -fr ${RM_HOME}/code/src/src ${SERVICE_HOME}/components/rm/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/rm/code/src/'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'RM Component DONE!'
fi
if ${SOLVER}
then
echo '----------------------------'
echo ' SOLVER Component'
echo '----------------------------'
rm -rf ${SERVICE_HOME}/components/solver
mkdir ${SERVICE_HOME}/components/solver
mkdir ${SERVICE_HOME}/components/solver/code
mkdir ${SERVICE_HOME}/components/solver/code/src
echo 'component manifest...'
cp -fr ${SOLVER_HOME}/Manifest.json ${SERVICE_HOME}/components/solver/.
echo 'blob manifest...'
cp -fr ${SOLVER_HOME}/code/Manifest.json ${SERVICE_HOME}/components/solver/code/.
echo 'package.json...'
cp -fr ${SOLVER_HOME}/code/src/package.json ${SERVICE_HOME}/components/solver/code/src/.
echo 'src folder...'
cp -fr ${SOLVER_HOME}/code/src/src ${SERVICE_HOME}/components/solver/code/src/.
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/solver/code/src/'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'SOLVER Component DONE!'
fi
if ${JOBEX_FE}
then
echo '----------------------------'
echo ' JOBEX_FE Component'
echo '----------------------------'
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/jobexfe/code/src/'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'JOBEX_FE DONE!'
fi
if ${ACSDSSQL_FE}
then
echo '----------------------------'
echo ' ACSDSSQL_FE Component'
echo '----------------------------'
if ${COMPILE}
then
echo 'compiling...'
cd ${SERVICE_HOME}'/components/feacsdssql/code/src/'
rm -rf ./node_modules
docker run --rm -v $(pwd):/tmp/component c2netproject.eu/runtime/java/dev:1_0_0 -c 'cd /tmp/component && npm install'
echo 'compilation done!'
fi
echo 'ACSDSSQL_FE Component DONE!'
fi
if ${VALIDATION}
then
echo ' CHECKING Manifests syntax...'
cd ${SDK_HOME}/tools
${SDK_HOME}/tools/manifest-validator.sh ${SERVICE_HOME}
echo ' Manifests syntax correct!'
fi
if ${ZIP}
then
cd ${SERVICE_HOME}
rm module_bundle.zip
cd ${SERVICE_HOME}
echo 'Building bundle...'
echo 'zipping..'
zip -qr module_bundle ./components ./service/Manifest.json ./deployment/Manifest.json
echo 'zipping DONE!'
ls -l ${SERVICE_HOME}/*.zip
fi