diff --git a/.env b/.env deleted file mode 100755 index 47471144..00000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -ENV_TYPE=dev -VERSION=0.8.7 diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/qto/cnf/bin/perl-modules.lst b/bin/cnf/perl/qto-app-perl-modules.lst similarity index 82% rename from src/bash/qto/deploy/single-ubuntu-18.04/qto/cnf/bin/perl-modules.lst rename to bin/cnf/perl/qto-app-perl-modules.lst index 09754a15..c35073eb 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/qto/cnf/bin/perl-modules.lst +++ b/bin/cnf/perl/qto-app-perl-modules.lst @@ -1,18 +1,20 @@ - JSON + ExtUtils::MakeMaker + Spiffy + Carp::Always + JSON JSON::Parse Data::Printer - Carp::Always IO::CaptureOutput Net::DNS Net::Domain::TLD Email::Valid - IPC::System::Simple - Mojolicious + IPC::System::Simple + Mojolicious Mojolicious::Plugin::BasicAuthPlus Mojolicious::Plugin::StaticCache Mojolicious::Plugin::RenderFile Mojolicious::Plugin::Authentication - IO::Socket::SSL + IO::Socket::SSL URL::Encode ExtUtils::Installed File::Copy @@ -26,15 +28,15 @@ File::Copy::Recursive Test::Trap Test::More - Test::Most + Test::Most Test::Mojo - DBD::Pg Tie::Hash::DBD Scalar::Util::Numeric Time::HiRes Mojo::JWT Mojo::Pg - Mojo::Phantom + DBD::Pg + Mojo::Phantom Authen::Passphrase::BlowfishCrypt Term::ReadKey Term::Prompt @@ -45,3 +47,5 @@ Gravatar::URL Mojolicious::Plugin::Gzip Excel::Writer::XLSX + Test::Mojo::WithRoles + Text::Iconv diff --git a/cnf/env/lde.env.json b/cnf/env/lde.env.json new file mode 100644 index 00000000..270df0fc --- /dev/null +++ b/cnf/env/lde.env.json @@ -0,0 +1,71 @@ +{ + "env" : { + "db" : { + "root_pwd" : "c7RN8xzWpW9h", + "postgres_db_useradmin" : "usrldeqtoadmin", + "postgres_db_port" : "15432", + "postgres_db_useradmin_pw" : "bs0HvcKhTBUO", + "postgres_db_user" : "usrldeqtoapp", + "app_user_pwd" : "yE96SvxujCer", + "project_databases" : "lde_qto, lde_ldeel_pro", + "postgres_db_name" : "lde_qto", + "postgres_usr_pw" : "UdDIXogL2yvA", + "postgres_db_host" : "127.0.0.1", + "postgres_os_usr_pw" : "id7V2RKblIwo", + "postgres_db_user_pw" : "u46SLhBNzxys", + "postgres_sys_usr_admin_pw" : "oS6eRolHb9qH", + "AdminEmail" : "dcW6rFF9jwLI" + }, + "app" : { + "web_host" : "host-name", + "mojo_morbo_port" : "3001", + "mojo_hypnotoad_port" : "8078", + "postgres_db_name" : "lde_qto", + "num_of_workers" : "2", + "inactivity_timeout" : "60", + "https_port" : "441", + "port" : "8078", + "ht_protocol" : "http", + "nginx_port" : "78", + "ws_protocol" : "ws" + }, + "log" : { + "LogDir" : "$ProductDir/dat/log", + "LogToFile" : 1, + "PrintDebugMsgs" : 1, + "LogFile" : "$LogDir/$ProductName.%YYYY%.%MM%.%DD%.log", + "TimeFormat" : "YYYY-MM-DD hh:mm:ss", + "LogTimeToTextSeparator" : ":::", + "PrintWarningMsgs" : 1, + "PrintConsoleMsgs" : 1, + "PrintInfoMsgs" : 1, + "PrintErrorMsgs" : 1, + "PrintTraceMsgs" : 1 + }, + "ssh" : { + "ssh_key_pair_file" : "~/.ssh/key-pair-qto-amzn.pem", + "launch_dir" : "/home/ubuntu/dat/tmp", + "ssh_server" : "lde.qto.fi", + "ssh_user" : "ubuntu" + }, + "redis" : { + "server" : "127.0.0.1", + "port" : "16379" + }, + "aws" : { + "AdminEmail" : "yordan.georgiev@gmail.com", + "bucket" : "qto.fi", + "AWS_DEFAULT_REGION" : "eu-west-1", + "AWS_SECRET_ACCESS_KEY" : "WFwdysUn6mJx", + "pem_key_fpath" : "~/.ssh/id_rsa.aws-ec2.qto.lde", + "ssh_key_pair_file" : "~/.ssh/key-pair-qto-amzn.pem", + "availability_zone" : "eu-west-1c", + "AWS_ACCESS_KEY_ID" : "LAvD3tWm1V6M" + }, + "git" : { + "git_clone_url" : "git@github.com:YordanGeorgiev/qto.git", + "private_key_file" : "~/.ssh/id_rsa.ysg" + }, + "ENV_TYPE" : "lde" + } +} diff --git a/cnf/tpl/vagrant/Vagrantfile b/cnf/tpl/vagrant/Vagrantfile index 551fd984..f8038dad 100755 --- a/cnf/tpl/vagrant/Vagrantfile +++ b/cnf/tpl/vagrant/Vagrantfile @@ -7,8 +7,8 @@ ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox' Vagrant.configure("2") do |config| # dev, tst and prd are separate vagrants - config.vm.define "%ENV_TYPE%-qto-vagrant" do |config| - config.vm.hostname = "%ENV_TYPE%-qto-vagrant" + config.vm.define "%ENV%-qto-vagrant" do |config| + config.vm.hostname = "%ENV%-qto-vagrant" # use the latest ubuntu as a base config.vm.box = "generic/ubuntu1804" @@ -41,7 +41,7 @@ Vagrant.configure("2") do |config| # go to the product instance dir cd /home/vagrant/opt - source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV_TYPE.$USER + source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV.$USER # ensure application layer consistency, run db ddl's and load data from s3 bash ./src/bash/qto/qto.sh -a check-perl-syntax -a scramble-confs diff --git a/dat/src/perl/qto/lib/Qto/Controller/Home.pm b/dat/src/perl/qto/lib/Qto/Controller/Home.pm index b89b82b0..800a495b 100755 --- a/dat/src/perl/qto/lib/Qto/Controller/Home.pm +++ b/dat/src/perl/qto/lib/Qto/Controller/Home.pm @@ -69,7 +69,7 @@ sub doRenderPageTemplate { , 'msg' => $msg , 'db' => $db , 'WsProtocol' => $config->{'env'}->{'app'}->{'ws_protocol'} - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/doc/md/installations_doc.md b/doc/md/installations_doc.md index e31738bd..48b8f5b5 100755 --- a/doc/md/installations_doc.md +++ b/doc/md/installations_doc.md @@ -209,7 +209,7 @@ Check the main method in the run.sh and uncomment entities you do not want to in The run of the following "shell actions" will create the QTO database and load it with a snapshot of it's data from an SQL dump stored in s3. If you start getting a lot of Perl "cannot not find module" syntax check error, you probably did not reload the bash shell, by typing "bash" and hitting Enter in the previous step. # go to the product instance dir - source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV_TYPE.$USER + source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV.$USER # ensure application layer consistency, run db ddl's and load data from s3 ./src/bash/qto/qto.sh -a check-perl-syntax -a scramble-confs -a provision-db-admin -a run-qto-db-ddl -a load-db-data-from-s3 @@ -218,7 +218,7 @@ The run of the following "shell actions" will create the QTO database and load i Start the application layer by issuing the following command. The hypnotoad starting script ALWAYS checks whether or not you have public and private files for the JWT auth and if you do not have them if will create them basically only once. So hit Enter or type a password, when executing the action for the first time. # ALWAYS run any shell-action from the product instance dir - cd ~/opt/qto/qto.$VERSION.$ENV_TYPE.$USER + cd ~/opt/qto/qto.$VERSION.$ENV.$USER # start the web server bash src/bash/qto/qto.sh -a mojo-hypnotoad-start @@ -393,7 +393,7 @@ Copy paste the full command below - this is IMPORTANT !!! The run of the following "shell actions" will create the QTO database and load it with a snapshot of its data from a SQL dump stored in s3. # go to the product instance dir - source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV_TYPE.$USER + source $(find . -name '.env') && cd qto/qto.$VERSION.$ENV.$USER # ensure application layer consistency, run db ddl's and load data from s3 bash ./src/bash/qto/qto.sh -a check-perl-syntax -a scramble-confs -a provision-db-admin -a run-qto-db-ddl -a load-db-data-from-s3 diff --git a/doc/txt/qto/helps/dev/clone-to-app.help.txt b/doc/txt/qto/helps/dev/clone-to-app.help.txt index 06759b9d..d840e81b 100755 --- a/doc/txt/qto/helps/dev/clone-to-app.help.txt +++ b/doc/txt/qto/helps/dev/clone-to-app.help.txt @@ -11,30 +11,30 @@ doCloneToApp(){ tgt_app=${tgt_app#$prefix} tgt_environment_name=$(echo $environment_name | perl -ne "s/$run_unit/$tgt_app/g;print") tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$product_version/0.0.0/g;print") - tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$env_type/dev/g;print") + tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$ENV/dev/g;print") tgt_product_dir=$product_base_dir/$tgt_app - tgt_PRODUCT_INSTANCE_DIR=$tgt_product_dir/$tgt_environment_name - mkdir -p $tgt_PRODUCT_INSTANCE_DIR + tgt_PRODUCT_DIR=$tgt_product_dir/$tgt_environment_name + mkdir -p $tgt_PRODUCT_DIR # remove everything from the tgt product version dir - no extra files allowed !!! - rm -fvr $tgt_PRODUCT_INSTANCE_DIR + rm -fvr $tgt_PRODUCT_DIR # if the removal failed exit with error msg - [[ $? -eq 0 ]] || doExit 2 "ERROR --- cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + [[ $? -eq 0 ]] || doExit 2 "ERROR --- cannot write to $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR to_srch=$run_unit to_repl=$tgt_app #-- search and replace in file names - find "$tgt_PRODUCT_INSTANCE_DIR/" -type d |\ + find "$tgt_PRODUCT_DIR/" -type d |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;' - find "$tgt_PRODUCT_INSTANCE_DIR/" -type f |\ + find "$tgt_PRODUCT_DIR/" -type f |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;rename($o,$n) unless -e $n ;' - find $tgt_PRODUCT_INSTANCE_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; + find $tgt_PRODUCT_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; do ( perl -pi -e "s#$to_srch#$to_repl#g" "$file_to_edit" ); @@ -42,9 +42,9 @@ doCloneToApp(){ } # on cygwin the perl -pi leaves backup files => remove them - find $tgt_PRODUCT_INSTANCE_DIR -type f -name '*.bak' | xargs rm -fv + find $tgt_PRODUCT_DIR -type f -name '*.bak' | xargs rm -fv - cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + cp -v $zip_file $tgt_PRODUCT_DIR } #eof func doCloneToApp diff --git a/doc/txt/qto/helps/dev/create-ctags.help.txt b/doc/txt/qto/helps/dev/create-ctags.help.txt index 8fe6c407..7c20a555 100755 --- a/doc/txt/qto/helps/dev/create-ctags.help.txt +++ b/doc/txt/qto/helps/dev/create-ctags.help.txt @@ -9,11 +9,11 @@ doCreateCtags(){ ctags --help >/dev/null 2>&1 || { doLog "ERROR. ctags is not installed or not in PATH. Aborting." >&2; exit 1; } pushd . - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR cmd="rm -fv ./tags" && doRunCmdAndLog "$cmd" cmd="ctags -R -n --fields=+i+K+S+l+m+a ." && doRunCmdAndLog "$cmd" - cmd="ls -la $PRODUCT_INSTANCE_DIR/tags" && doRunCmdAndLog "$cmd" + cmd="ls -la $PRODUCT_DIR/tags" && doRunCmdAndLog "$cmd" popd } diff --git a/doc/txt/qto/helps/pckg/create-relative-package.help.txt b/doc/txt/qto/helps/pckg/create-relative-package.help.txt index 9b255fcc..89a61d78 100755 --- a/doc/txt/qto/helps/pckg/create-relative-package.help.txt +++ b/doc/txt/qto/helps/pckg/create-relative-package.help.txt @@ -5,10 +5,10 @@ # Purpose: # ------------------------------------------------------ creates a zip file with all the files specified in the - met/.<>.qto with their relative file paths so that + met/.<>.qto with their relative file paths so that the user could deploy the product by : - mkdir -p <> - unzip -o <> -d <> + mkdir -p <> + unzip -o <> -d <> # Prerequisites # ------------------------------------------------------ diff --git a/doc/txt/qto/helps/pckg/remove-package.help.txt b/doc/txt/qto/helps/pckg/remove-package.help.txt index b3aa63de..4fa3dae5 100755 --- a/doc/txt/qto/helps/pckg/remove-package.help.txt +++ b/doc/txt/qto/helps/pckg/remove-package.help.txt @@ -11,14 +11,14 @@ doRemovePackage(){ #remove the dirs as well for dir in `cat "$include_file"`; do ( - dir="$PRODUCT_INSTANCE_DIR/$dir" + dir="$PRODUCT_DIR/$dir" test -d "$dir" && cmd="rm -fRv $dir" && doRunCmdAndLog "$cmd" ); done cmd="rm -fv $include_file" && \ doRunCmdAndLog "$cmd" - echo "rm -fvr $PRODUCT_INSTANCE_DIR">>"$product_dir/remove-""$environment_name".sh + echo "rm -fvr $PRODUCT_DIR">>"$product_dir/remove-""$environment_name".sh echo "rm -fv $product_dir/remove-""$environment_name".sh>>"$product_dir/remove-""$environment_name".sh nohup bash "$product_dir/remove-""$environment_name".sh & } diff --git a/lib/bash/funcs/export-json-section-vars.sh b/lib/bash/funcs/export-json-section-vars.sh deleted file mode 100755 index 82ea2fdf..00000000 --- a/lib/bash/funcs/export-json-section-vars.sh +++ /dev/null @@ -1,30 +0,0 @@ -#------------------------------------------------------------------------------ -# usage example: -# source $PRODUCT/lib/bash/funcs/export-json-section-vars.sh -# do_export_json_section_vars cnf/env/dev.env.json '.env.db' -# -# alias psql="PGPASSWORD=${postgres_sys_usr_admin_pw:-} psql -v -t -X -w -U \ -# ${postgres_sys_usr_admin:-} --port $postgres_rdbms_port --host $postgres_rdbms_host" -#------------------------------------------------------------------------------ -do_export_json_section_vars(){ - - json_file="$1" - shift 1; - test -f "$json_file" || echo "the json_file: $json_file does not exist !!! Nothing to do" - test -f "$json_file" || return - - section="$1" - test -z "$section" && echo "the section in do_export_json_section_vars is empty !!! Nothing to do !!!" - test -z "$section" && return - shift 1; - - do_flush_screen - - echo "INFO exporting vars from cnf $json_file: " - while read -r l ; do - key=$(echo $l|cut -d'=' -f1) - val=$(echo $l|cut -d'=' -f2) - eval "$(echo -e 'export '$key=\"\"$val\"\")" - echo "INFO $key=$val" - done < <(cat "$json_file"| jq -r "$section"'|keys_unsorted[] as $key|"\($key)=\"\(.[$key])\""') -} diff --git a/lib/bash/funcs/flush-screen.sh b/lib/bash/funcs/flush-screen.sh index c54510db..d7edef20 100644 --- a/lib/bash/funcs/flush-screen.sh +++ b/lib/bash/funcs/flush-screen.sh @@ -1,9 +1,9 @@ #------------------------------------------------------------------------------ # usage example: -# source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh +# source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh # do_flush_screen # -# if you have sourced $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh before, +# if you have sourced $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh before, # then this function is also imported, so sourcing again is not necessary #------------------------------------------------------------------------------ do_flush_screen(){ diff --git a/lib/bash/funcs/parse-cnf-env-vars.sh b/lib/bash/funcs/parse-cnf-env-vars.sh index 70924559..dea17661 100755 --- a/lib/bash/funcs/parse-cnf-env-vars.sh +++ b/lib/bash/funcs/parse-cnf-env-vars.sh @@ -14,7 +14,7 @@ doParseCnfEnvVars(){ test -z "$cnf_file" && echo " you should set the cnf_file !!!" cnf_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$cnf_file") - PRODUCT_INSTANCE_DIR=${cnf_dir%/*} + PRODUCT_DIR=${cnf_dir%/*} INI_SECTION=MainSection @@ -24,7 +24,7 @@ doParseCnfEnvVars(){ -e 's/#.*$//' \ -e 's/[[:space:]]*$//' \ -e 's/^[[:space:]]*//' \ - -e "s|%ProductInstanceDir%|${PRODUCT_INSTANCE_DIR}|" \ + -e "s|%ProductInstanceDir%|${PRODUCT_DIR}|" \ -e "s/^\(.*\)=\([^\"']*\)$/export \1=\"\2\"/" \ < $cnf_file \ | sed -n -e "/^\[$INI_SECTION\]/,/^\s*\[/{/^[^#].*\=.*/p;}"` diff --git a/lib/make/start-container.func.mk b/lib/make/start-container.func.mk deleted file mode 100644 index 7cee2704..00000000 --- a/lib/make/start-container.func.mk +++ /dev/null @@ -1,11 +0,0 @@ -.PHONY: do-start-$(component)-container ## @-> start a named container - run: container=devops do-start-devops-ter-container -do-start-$(component)-container: demand_var-ENV do-stop-$(component)-container - @clear - docker run -d --restart=always \ - -v $$(pwd):/opt/${PRODUCT} \ - -v $$HOME/.aws:/home/appusr/.aws \ - -v $$HOME/.ssh:/home/appgrp/.ssh \ - -p $(exposed_port):$(exposed_port) \ - --name ${PRODUCT}-$(component)-con ${PRODUCT}-${component}-img ; - @echo -e to attach run: "\ndocker exec -it ${PRODUCT}-${component}-con /bin/bash" - @echo -e to get help run: "\ndocker exec -it ${PRODUCT}-${component}-con ./run --help" diff --git a/lib/make/stop-container.func.mk b/lib/make/stop-container.func.mk deleted file mode 100644 index 87d27266..00000000 --- a/lib/make/stop-container.func.mk +++ /dev/null @@ -1,5 +0,0 @@ -.PHONY: do-stop-$(component)-container ## @-> stop a named container - run: container=devops do-stop-devops-ter-container -do-stop-$(component)-container: - @clear - -@docker container stop $$(docker ps -aqf "name=${PRODUCT}-${component}-con") 2> /dev/null - -@docker container rm $$(docker ps -aqf "name=${PRODUCT}-${component}-con") 2> /dev/null diff --git a/lib/make/uninstall-img.func.mk b/lib/make/uninstall-img.func.mk new file mode 100644 index 00000000..4e4d6cbc --- /dev/null +++ b/lib/make/uninstall-img.func.mk @@ -0,0 +1,15 @@ +# # usage: include it in your Makefile +# include <> +# +# # function usage example: +# +# uninstall-csitea-web: +# $(call uninstall-img,csitea-web,80) + + +define uninstall-img + @clear + -@docker container stop $$(docker ps -aqf "name=${product}-${1}-con") 2> /dev/null + -@docker container rm $$(docker ps -aqf "name=${product}-${1}-con") 2> /dev/null +endef + diff --git a/qto b/qto deleted file mode 100644 index 84422ace..00000000 --- a/qto +++ /dev/null @@ -1,379 +0,0 @@ -#!/usr/bin/env bash -# file: src/bash/qto.sh doc at the eof file - -#------------------------------------------------------------------------------ -# the main shell entry point of the qto application -#------------------------------------------------------------------------------ -main(){ - do_init - - dir=0;actions='' - - while getopts "a:d:f:t:" opt; do - case $opt in - a) actions="${actions}$OPTARG ";; - t) table=("$OPTARG ");; - f) file=("$OPTARG ");; - d) dir=("$OPTARG ");; - \?) do_exit 2 "Invalid option: -$OPTARG";; - :) do_exit 2 "Option -$OPTARG requires an argument." - esac - done - shift $((OPTIND -1)) - - do_set_vars - do_check_required - test -z "${actions:-}" && actions=' print-usage ' - do_run_actions "$actions" - test -d $PRODUCT_INSTANCE_DIR/.git/hooks/ && do_check_git_hooks - do_exit $exit_code "# ::: Shell script run completed ::: $RUN_UNIT " -} - - -#------------------------------------------------------------------------------ -# the "reflection" func - identify the the funcs per file -#------------------------------------------------------------------------------ -get_function_list () { - env -i PATH=/bin:/usr/bin:/usr/local/bin bash --noprofile --norc -c ' - source "'"$1"'" - typeset -f | - grep '\''^[^{} ].* () $'\'' | - awk "{print \$1}" | - while read -r function_name; do - type "$function_name" | head -n 1 | grep -q "is a function$" || continue - echo "$function_name" - done - ' -} - - -# -#------------------------------------------------------------------------------ -# run only the actions passed with the -a <> -#------------------------------------------------------------------------------ -do_run_actions(){ - actions=$1 - test -z ${PROJ_INSTANCE_DIR:-} && PROJ_INSTANCE_DIR=$PRODUCT_INSTANCE_DIR - daily_backup_dir="$PROJ_INSTANCE_DIR/dat/mix/"$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d") - cd $PRODUCT_INSTANCE_DIR - actions="$(echo -e "${actions}"|sed -e 's/^[[:space:]]*//')" #or how-to trim leading space - run_funcs='' - while read -d ' ' arg_action ; do - #debug arg_action:$arg_action ; sleep 2 - while read -r func_file ; do - # debug func func_file:$func_file - while read -r function_name ; do - # debug function_name:$function_name - action_name=`echo $(basename $func_file)|sed -e 's/.func.sh//g'` - # debug action_name: $action_name - test "$action_name" != "$arg_action" && continue - test "$action_name" == "$arg_action" && run_funcs="$(echo -e "${run_funcs}\n$function_name")" - #debug run_funcs: $run_funcs ; sleep 3 - done< <(get_function_list "$func_file") - done < <(find "src/bash/$RUN_UNIT/funcs" -type f -name '*.sh'|sort) - - [[ $arg_action == to-ver=* ]] && run_funcs="$(echo -e "$run_funcs\ndoChangeVersion $arg_action")" - [[ $arg_action == to-env=* ]] && run_funcs="$(echo -e "$run_funcs\ndoChangeEnvType $arg_action")" - [[ $arg_action == cp-to-env=* ]] && run_funcs="$(echo -e "$run_funcs\ndoCpToEnv $arg_action")" - [[ $arg_action == to-app=* ]] && run_funcs="$(echo -e "$run_funcs\ndoCloneToApp $arg_action")" - done < <(echo "$actions") - - run_funcs="$(echo -e "${run_funcs}"|sed -e 's/^[[:space:]]*//')" - while read -r run_func ; do - #debug run_funcs: $run_funcs ; sleep 3 - cd $PRODUCT_INSTANCE_DIR - do_log "INFO START ::: running action :: $run_func" - $run_func - exit_code=$? - if [[ "$exit_code" != "0" ]]; then - exit $exit_code - fi - do_log "INFO STOP ::: running function :: $run_func" - done < <(echo "$run_funcs") - - test -d "$daily_backup_dir" || doBackupPostgresDb - -} - - -#------------------------------------------------------------------------------ -# register the run-time vars before the call of the $0 -#------------------------------------------------------------------------------ -do_init(){ - - # set -x # print the commands - # set -v # print each input line as well - # exit the script if any statement returns a non-true return value. gotcha !!! - # set -e # src: http://mywiki.wooledge.org/BashFAQ/105 - umask 022 ; - set -u -o pipefail - call_start_dir=`pwd` - run_unit_bash_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") - tmp_dir="$run_unit_bash_dir/tmp/.tmp.$$" - mkdir -p "$tmp_dir" - ( set -o posix ; set )| sort >"$tmp_dir/vars.before" - my_name_ext=`basename $0` - RUN_UNIT=${my_name_ext%.*} - host_name=$(hostname -s) - export sleep_interval="${sleep_interval:=0}" - export exit_code=1 -} - - -#------------------------------------------------------------------------------ -# usage example: -# do_apply_shell_expansion /tmp/docker-compose.yml -#------------------------------------------------------------------------------ -do_apply_shell_expansion() { - declare file="$1" - shift 1; - test -f "$file" || do_exit 1 "do_apply_shell_expansion: the file: $file does not exist !!! Nothing to do" - perl -wpe 's#\${?(\w+)}?# $ENV{$1} // $& #ge;' $file -} - - -# ------------------------------------------------------------------------------ -# perform the checks to ensure that all the vars needed to run are set -# ------------------------------------------------------------------------------ -do_check_required(){ - - test -f ${cnf_file-} || doCreateDefaultConfFile - - echo 'checking for the required binaries ...' - command -v zip 2>/dev/null || { echo >&2 "The zip binary is missing ! Aborting ..."; exit 1; } - command -v unzip 2>/dev/null || { echo >&2 "The unzip binary is missing ! Aborting ..."; exit 1; } - which perl 2>/dev/null || { echo >&2 "The perl binary is missing ! Aborting ..."; exit 1; } - which grep 2>/dev/null || { echo >&2 "The grep binary is missing ! Aborting ..."; exit 1; } - which sed 2>/dev/null || { echo >&2 "The sed binary is missing ! Aborting ..."; exit 1; } - which awk 2>/dev/null || { echo >&2 "The awk binary is missing ! Aborting ..."; exit 1; } - which jq 2>/dev/null || { echo >&2 "The jq binary is missing ! Aborting ..."; exit 1; } - echo 'OK' ; printf "\n" - - if [[ "$OSTYPE" == "darwin"* ]]; then - export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" - export PATH="/usr/local/opt/grep/libexec/gnubin/:$PATH" - fi -} - - -trap "exit 1" TERM -export TOP_PID=$$ - - -# ------------------------------------------------------------------------------ -# clean and exit with passed status and message -# call by: -# do_exit 0 "OK msg" -# do_exit 1 "NOK msg" -# ------------------------------------------------------------------------------ -do_exit(){ - exit_code=$1 ; shift - exit_msg="$*" - - if (( ${exit_code:-} != 0 )); then - exit_msg=" ERROR --- exit_code $exit_code --- exit_msg : $exit_msg" - >&2 echo "$exit_msg" - do_log "FATAL STOP FOR $RUN_UNIT RUN with: " - do_log "FATAL exit_code: $exit_code exit_msg: $exit_msg" - else - do_log "INFO STOP FOR $RUN_UNIT RUN with: " - do_log "INFO STOP FOR $RUN_UNIT RUN: $exit_code $exit_msg" - fi - - rm -rf "$run_unit_bash_dir/tmp" #clear the tmpdir - cd $call_start_dir - - test $exit_code -ne 0 && kill -s TERM "$TOP_PID" && exit $exit_code - test $exit_code -eq 0 && exit 0 -} - - -#------------------------------------------------------------------------------ -# echo pass params and print them to a log file and terminal -# with timestamp and $host_name and $0 PID -# usage: -# do_log "INFO some info message" -# do_log "DEBUG some debug message" -#------------------------------------------------------------------------------ -do_log(){ - type_of_msg=$(echo $*|cut -d" " -f1) - msg="$(echo $*|cut -d" " -f2-)" - - [[ $type_of_msg == DEBUG ]] && [[ ${do_print_debug_msgs-} -ne 1 ]] && return - [[ $type_of_msg == INFO ]] && type_of_msg="INFO " - - # print to the terminal if we have one - test -t 1 && echo " [$type_of_msg] `date "+%Y.%m.%d-%H:%M:%S %Z"` [$RUN_UNIT][@$host_name] [$$] $msg " - - # define default log file none specified in cnf file - test -z ${log_file:-} && \ - mkdir -p $PRODUCT_INSTANCE_DIR/dat/log/bash && \ - log_file="$PRODUCT_INSTANCE_DIR/dat/log/bash/$RUN_UNIT.`date "+%Y%m"`.log" - echo " [$type_of_msg] `date "+%Y.%m.%d-%H:%M:%S %Z"` [$RUN_UNIT][@$host_name] [$$] $msg " >> $log_file -} - - -#------------------------------------------------------------------------------ -# run a command and log the call and its output to the log_file -# doPrintHelp: doRunCmdAndLog "$cmd" -#------------------------------------------------------------------------------ -doRunCmdAndLog(){ - cmd="$*" ; - do_log "DEBUG running cmd and log: \"$cmd\"" - - msg=$($cmd 2>&1) - ret_cmd=$? - error_msg=": Failed to run the command: - \"$cmd\" with the output: - \"$msg\" !!!" - - [ $ret_cmd -eq 0 ] || do_log "$error_msg" - do_log "DEBUG : cmdoutput : \"$msg\"" -} - - -# v0.7.1 -#------------------------------------------------------------------------------ -# run a command on failure exit with message -# doPrintHelp: doRunCmdOrExit "$cmd" -# call by: -# set -e ; doRunCmdOrExit "$cmd" ; set +e -#------------------------------------------------------------------------------ -doRunCmdOrExit(){ - cmd=$* ; - - do_log "DEBUG running cmd or exit: "$cmd - msg=$($cmd 2>&1) - export exit_code=$? - - # if occured during the execution exit with error - error_msg="Failed to run the command: - \"$cmd\" with the output: - \"$msg\" !!!" - - if [ $exit_code -ne 0 ] ; then - do_log "ERROR $msg" - do_log "FATAL $msg" - do_exit "$exit_code" "$error_msg" - else - #if no errors occured just log the message - do_log "DEBUG : cmdoutput : "$msg - do_log "INFO "$msg - fi - -} - - -do_set_vars(){ - - cd $run_unit_bash_dir - for i in {1..3} ; do cd .. ; done ; - - export PRODUCT_INSTANCE_DIR=`pwd`; - export environment_name=$(basename "$PRODUCT_INSTANCE_DIR") - - cd $PRODUCT_INSTANCE_DIR # on AWS looks similar to /home/ubuntu/opt/qto/qto.0.8.6.dev.ubuntu@ip-111-11-1-111 - - source $PRODUCT_INSTANCE_DIR/.env - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh - export -f do_export_json_section_vars # exporting this function to sub-processes - export -f do_flush_screen - - export product_version=$VERSION - export env_type=$ENV_TYPE - - if [ "$environment_name" == "$RUN_UNIT" ]; then - product_dir=$PRODUCT_INSTANCE_DIR - else - cd .. ; product_dir=`pwd`; - fi - test -z "$env_type" && export env_type='dev' - cd .. ; product_base_dir=`pwd`; org_name=$(basename `pwd`) # /home/ubuntu/opt - - ( set -o posix ; set ) | sort >"$tmp_dir/vars.after" - - do_log "INFO # --------------------------------------" - do_log "INFO # ::: START MAIN ::: $RUN_UNIT" - do_log "INFO # --------------------------------------" - - exit_code=0 - do_log "INFO using the following variables:" - cmd="$(comm -3 $tmp_dir/vars.before $tmp_dir/vars.after | perl -ne 's#\s+##g;print "\n $_ "' )" - echo -e "$cmd" - vars=$(echo -e "$cmd"); do_log "$vars" - - while read -r func_file ; do source "$func_file" ; done < <(find $PRODUCT_INSTANCE_DIR -name "*func.sh") - do_flush_screen - -} - - -# basically there are very few reason why you should be able to change the src code -# on a non-working instance, thus to prevent regression tests each commit runs them -# locally -do_check_git_hooks(){ - - # check deploy the pre-commit and pre-push hooks - if [[ ! -f $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit || ! -f $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push ]];then - cp -v $PRODUCT_INSTANCE_DIR/cnf/git/hooks/* $PRODUCT_INSTANCE_DIR/.git/hooks/ - chmod -R 770 $PRODUCT_INSTANCE_DIR/.git/hooks/ - fi - - # if the hooks exists, but someone DELIBERATELY AND EXPLICITLY removed the run-functional-tests - RE-ADD them - test "$(grep -c 'run-functional-tests' $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit)" -lt 1 && { - echo " - ./src/bash/qto/qto.sh -a run-functional-tests - " >> $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit - } - # if the hooks exists, but someone DELIBERATELY AND EXPLICITLY removed the unscramble confs re-add them - test "$(grep -c 'unscramble-confs' $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push)" -lt 1 && { - echo " - ./src/bash/qto/qto.sh -a unscramble-confs - " >> $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push - } - -} - - -# Action !!! -main "$@" - -# -#---------------------------------------------------------- -# Purpose: -# the main entry point of the app - runs shell actions -# -a <> which a doRunShellAction func -# stored in the src/bash/qto/funcs/run-shell-action.func.sh -#---------------------------------------------------------- -# a vars -# ${VAR:=default_value} -# var=10 ; if ! ${var+false};then echo "is set";else echo "NOT set";fi # prints is set -# unset var ; if ! ${var+false};then echo "is set";else echo "NOT set";fi # prints NOT set -# +--------------------+----------------------+-----------------+-----------------+ -# | | parameter | parameter | parameter | -# | | Set and Not Null | Set But Null | Unset | -# +--------------------+----------------------+-----------------+-----------------+ -# | ${parameter:-word} | substitute parameter | substitute word | substitute word | -# | ${parameter-word} | substitute parameter | substitute null | substitute word | -# | ${parameter:=word} | substitute parameter | assign word | assign word | -# | ${parameter=word} | substitute parameter | substitute null | assign word | -# | ${parameter:?word} | substitute parameter | error, exit | error, exit | -# | ${parameter?word} | substitute parameter | substitute null | error, exit | -# | ${parameter:+word} | substitute word | substitute null | substitute null | -# | ${parameter+word} | substitute word | substitute word | substitute null | -# +--------------------+----------------------+-----------------+-----------------+ -# -# ${var+blahblah}: if var is defined, 'blahblah' is substituted for the expression, else null is -# substituted -# ${var-blahblah}: if var is defined, it is itself substituted, else 'blahblah' is substituted -# ${var?blahblah}: if var is defined, it is substituted, else the function exists with 'blahblah' as -# an error message. -#---------------------------------------------------------- -# EXIT CODES -# 0 --- Successfull completion -# 1 --- error -#---------------------------------------------------------- -# -# -#eof file src/bash/qto/qto.sh diff --git a/src/bash/deploy-vagrant-vm.sh b/src/bash/deploy-vagrant-vm.sh deleted file mode 100755 index 979e01e7..00000000 --- a/src/bash/deploy-vagrant-vm.sh +++ /dev/null @@ -1,151 +0,0 @@ -#! /usr/bin/env bash - -set -x -main(){ - do_set_vars "$@" - if [[ $app_to_deploy == '--help' ]]; then - usage - fi - do_vagrant_up - do_finalize -} - - -usage(){ - - cat << EOF_USAGE - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - $app_to_deploy deploy-vagrant-vm PURPOSE: - to setup the needed binary configuration for the qto project - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - $app_to_deploy deploy-vagrant-vm USAGE: - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - - # just the deploy the qto packages - ./src/bash/deploy-vagrant-vm.sh - - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - - -EOF_USAGE - do_exit 0 'usage displayed' -} - - -do_vagrant_up(){ - - # kill all the hanging VBoxHeadless - #while read -r pid ; do kill -9 $pid ; done < <(sudo ps -ef | grep -i vbox | grep -i qto_$ENV_TYPE | awk '{print $2}') - - # because idempotence in binary configuration !!! - test -d $product_dir/.vagrant && sudo rm -r $product_dir/.vagrant - - # keep the root dir of the project clean - cp -v $product_dir/cnf/tpl/vagrant/Vagrantfile $vagrant_file - source $product_dir/lib/bash/funcs/export-json-section-vars.sh - - for env in `echo dev tst prd`; do - do_export_json_section_vars $product_dir/cnf/env/$env.env.json '.env.app' - if [[ $env == 'dev' ]]; then - perl -pi -e 's/\%dev_mojo_morbo_port\%/'$mojo_morbo_port'/g' "$vagrant_file" - perl -pi -e 's/\%dev_mojo_hypnotoad_port\%/'$mojo_hypnotoad_port'/g' "$vagrant_file" - fi - if [[ $env == 'tst' ]]; then - perl -pi -e 's/\%tst_mojo_morbo_port\%/'$mojo_morbo_port'/g' "$vagrant_file" - perl -pi -e 's/\%tst_mojo_hypnotoad_port\%/'$mojo_hypnotoad_port'/g' "$vagrant_file" - fi - if [[ $env == 'prd' ]]; then - perl -pi -e 's/\%prd_mojo_morbo_port\%/'$mojo_morbo_port'/g' "$vagrant_file" - perl -pi -e 's/\%prd_mojo_hypnotoad_port\%/'$mojo_hypnotoad_port'/g' "$vagrant_file" - fi - done - - # get the vars to interpolate from the .env and the deploy dir - perl -pi -e 's|\%product_base_dir\%|'"$product_base_dir"'|g' "$vagrant_file" - perl -pi -e 's|\%product_dir\%|'"$product_dir"'|g' "$vagrant_file" - perl -pi -e 's|\%ENV_TYPE\%|'"$ENV_TYPE"'|g' "$vagrant_file" - - # Action !!! - vagrant up -} - - -do_set_vars(){ - set +x # hiding the pipefail message - set -eu -o pipefail - set +e - export app_to_deploy=${1:-qto} - app_owner=$USER || exit 1 - original_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") - export product_base_dir=$(cd $original_dir/../../..; echo `pwd`) - export product_dir=$(cd $original_dir/../..; echo `pwd`) - source "$product_dir/.env" - PRODUCT_INSTANCE_DIR="$product_dir/$app_to_deploy.$VERSION.$ENV_TYPE.$app_owner" - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh - - host_name="$(hostname -s)" - bash_opts_file="~/.bash_opts.$host_name" - - vagrant_file="$product_dir/Vagrantfile" - cd $product_dir -} - - -# ------------------------------------------------------------------------------ -# clean and exit with passed status and message -# call by: -# do_exit 0 "ok msg" -# do_exit 1 "NOK msg" -# ------------------------------------------------------------------------------ -do_exit(){ - exit_code=$1 ; shift - exit_msg="$*" - - if (( ${exit_code:-} != 0 )); then - exit_msg=" ERROR --- exit_code $exit_code --- exit_msg : $exit_msg" - >&2 echo "$exit_msg" - do_log "FATAL STOP FOR $app_to_deploy deployer RUN with: " - do_log "FATAL exit_code: $exit_code exit_msg: $exit_msg" - else - do_log "INFO STOP FOR $app_to_deploy deployer RUN with: " - do_log "INFO STOP FOR $app_to_deploy deployer RUN: $exit_code $exit_msg" - fi - - test -f $vagrant_file && rm -v $vagrant_file - exit $exit_code -} - - -#------------------------------------------------------------------------------ -# echo pass params and print them to a log file and terminal -# usage: -# do_log "INFO some info message" -# do_log "DEBUG some debug message" -#------------------------------------------------------------------------------ -do_log(){ - type_of_msg=$(echo $*|cut -d" " -f1) - msg="$(echo $*|cut -d" " -f2-)" - [[ -t 1 ]] && echo " [$type_of_msg] `date "+%Y-%m-%d %H:%M:%S %Z"` [$app_to_deploy][@$host_name] [$$] $msg " - log_dir="$product_dir/dat/log/bash" ; mkdir -p $log_dir && log_file="$log_dir/$app_to_deploy.`date "+%Y%m"`.log" - echo " [$type_of_msg] `date "+%Y-%m-%d %H:%M:%S %Z"` [$app_to_deploy][@$host_name] [$$] $msg " >> $log_file -} - - -do_finalize(){ - - do_flush_screen - cat << EOF_END - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - DONE - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - to remove completely the vagrant box do: - vagrant halt - vagrant reload - -EOF_END -} - - -main "$@" diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/chk-install-perl-modules.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/chk-install-perl-modules.func.sh deleted file mode 100644 index cd544a4c..00000000 --- a/src/bash/qto/deploy/single-ubuntu-18.04/chk-install-perl-modules.func.sh +++ /dev/null @@ -1,39 +0,0 @@ - - -do_chk_install_perl_modules(){ - cd $PRODUCT_DIR - modules="$(cat src/bash/qto/deploy/single-ubuntu-18.04/qto/cnf/bin/perl-modules.lst)" - - while read -r module ; do - use_modules="${use_modules:-} use $module ; " - done < <(echo "$modules"); - - set -x - perl -e "$use_modules" || { - echo "deploying modules. This WILL take couple of min, but ONLY ONCE !!!" - curl -L http://cpanmin.us | sudo perl - --self-upgrade -l ~/perl5 App::cpanminus \ - && sudo chown -R $USER:$(id -gn) ~/.cpanm && sudo chown -R $USER:$(id -gn) ~/perl5 - ~/perl5/bin/cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) - curl -L cpanmin.us | perl - Mojolicious - test "$(grep -c 'Mlocal::lib' $bash_opts_file)" -eq 0 && \ - echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >> $bash_opts_file - while read -r module ; do cpanm_modules="${cpanm_modules:-} $module " ; done < <(echo "$modules") - #cpanm --force --local-lib=~/perl5 'Net::Google::DataAPI' # does not install otherwise !!! - # probably not needed as all google related modules are out of the setup ^^^ - cmd="cpanm --local-lib=~/perl5 $modules" - $cmd - - - # nasty workaround for the "Moo complainings" in the Net::Google::DataAPI::Oauth2 module - find ~ -type f -name OAuth2.pm -exec perl -pi -e \ - "s/use Any::Moose;/no warnings 'deprecated'; use Any::Moose; use warnings 'deprecated';/g" {} \; - } - - # create the symlink to the hypnotoad - export tgt_path=$HOME/perl5/bin/hypnotoad - export link_path=/usr/local/sbin/hypnotoad - sudo mkdir -p `dirname $link_path` - sudo test -L $link_path && unlink $link_path - sudo ln -s $tgt_path $link_path - ls -la $link_path; -} diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/configure-aws.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/configure-aws.func.sh index 1aa9319b..10156880 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/configure-aws.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/configure-aws.func.sh @@ -1,8 +1,8 @@ do_configure_aws_keys(){ # set up confs - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/create-app-db.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/create-app-db.func.sh index 3a18eb44..094e368b 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/create-app-db.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/create-app-db.func.sh @@ -1,8 +1,8 @@ do_create_app_db(){ # set up confs - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/create-app-user.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/create-app-user.func.sh index f4bef230..6ad2e174 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/create-app-user.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/create-app-user.func.sh @@ -1,7 +1,9 @@ +#!/bin/bash + do_create_app_user(){ set +e - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" @@ -18,10 +20,10 @@ do_create_app_user(){ -f "$sql_script" "${postgres_app_db:-}" > "$tmp_log_file" 2>&1 ret=$? - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && { - sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; - } + sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; + } PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ -h $postgres_rdbms_host -p $postgres_rdbms_port -d postgres -v ON_ERROR_STOP=1 -c \ "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/create-ssh-keys.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/create-ssh-keys.func.sh index 0d4e1dc2..418eccf9 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/create-ssh-keys.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/create-ssh-keys.func.sh @@ -1,16 +1,18 @@ +#!/bin/bash + do_create_ssh_keys(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' which expect || sudo apt-get update && sudo apt-get install -y expect - for env_type in `echo dev tst prd`; do - jwt_private_key_file=~/.ssh/qto.$env_type.jwtRS256.key - jwt_public_key_file=~/.ssh/qto.$env_type.jwtRS256.key.pub + for ENV in `echo dev tst prd`; do + jwt_private_key_file=~/.ssh/qto.$ENV.jwtRS256.key + jwt_public_key_file=~/.ssh/qto.$ENV.jwtRS256.key.pub echo << EOF_USING creating and using the following private and public key files for the Guardian's JWT's : $jwt_private_key_file @@ -26,11 +28,11 @@ EOF_USING private_ssh_key_fpath_no_env=$(echo $private_ssh_key_fpath|rev|cut -c 5-|rev) private_ssh_key_fpath_no_env=$(eval echo $private_ssh_key_fpath_no_env) - - - for env_type in `echo dev tst prd`; do - test -f $private_ssh_key_fpath_no_env'.'$env_type || { - ssh-keygen -q -t rsa -b 4096 -N '' -f $private_ssh_key_fpath_no_env.$env_type <<< ""$'\n'"y" 2>&1 >/dev/null + + + for ENV in `echo dev tst prd`; do + test -f $private_ssh_key_fpath_no_env'.'$ENV || { + ssh-keygen -q -t rsa -b 4096 -N '' -f $private_ssh_key_fpath_no_env.$ENV <<< ""$'\n'"y" 2>&1 >/dev/null } done diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/do-run-ddls.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/do-run-ddls.func.sh index bf29eaac..7aca22c7 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/do-run-ddls.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/do-run-ddls.func.sh @@ -1,20 +1,22 @@ +#!/bin/bash + do_run_ddls(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" - source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" sleep 3 ; do_flush_screen ; echo -e "should run the following files: \n\n" ; find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n # run the sql scripts in alphabetical order - hence the file naming convention - while read -r sql_script ; do + while read -r sql_script ; do tmp_log_file="/tmp/do-run-ddls.$$.log" relative_sql_script=$(echo $sql_script|perl -ne "s|$PRODUCT_DIR\/||g;print") do_log "INFO START ::: running $relative_sql_script" ; echo -e '\n\n' perl -pi -e 's|-- DROP|DROP|g' $sql_script # drop and create the objects - + echo running: psql -v ON_ERROR_STOP=1 -q -t -X -w \ -h $postgres_rdbms_host -p $postgres_rdbms_port -U "${postgres_sys_usr_admin:-}" \ -f "$sql_script" "$postgres_app_db" @@ -24,15 +26,15 @@ do_run_ddls(){ ret=$? perl -pi -e 's|DROP|-- DROP|g' $relative_sql_script - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && sleep 3 test $ret -ne 0 && do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" test $ret -ne 0 && break - + echo -e '\n\n'; do_flush_screen ; do_log "INFO STOP ::: running $relative_sql_script" rm -f tmp_log_file done < <(find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n) - - do_flush_screen ; + + do_flush_screen ; } diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/provision-db-users.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/provision-db-users.func.sh index 88bc4a7c..0948b302 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/provision-db-users.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/provision-db-users.func.sh @@ -1,30 +1,31 @@ +#!/bin/bash + do_chk_provision_db_users(){ - # set up confs - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' # generate the sql for the provisioning of the postgres_sys_usr_admin cat << EOF_SQL_CODE > /tmp/$$.tmp.sql - DO + DO \$\$ DECLARE r record; BEGIN IF NOT EXISTS ( - SELECT + SELECT FROM pg_catalog.pg_roles WHERE rolname = '$postgres_sys_usr_admin') THEN - CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE + CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS PASSWORD '$postgres_sys_usr_admin_pw' LOGIN ; END IF; END ; \$\$; - ALTER ROLE $postgres_sys_usr_admin WITH SUPERUSER CREATEROLE - CREATEDB REPLICATION BYPASSRLS PASSWORD '$postgres_sys_usr_admin_pw' LOGIN ; + ALTER ROLE $postgres_sys_usr_admin WITH SUPERUSER CREATEROLE + CREATEDB REPLICATION BYPASSRLS PASSWORD '$postgres_sys_usr_admin_pw' LOGIN ; GRANT ALL PRIVILEGES ON DATABASE POSTGRES TO $postgres_sys_usr_admin" ; EOF_SQL_CODE - + # run the sql for the provisioning of the postgres_sys_usr_admin sudo -Hiu postgres PGPASSWORD=$postgres_rdbms_usr_pw psql --port $postgres_rdbms_port \ --host $postgres_rdbms_host -d postgres < /tmp/$$.tmp.sql diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/provision-nginx.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/provision-nginx.func.sh index 801c4517..d6e6b9b0 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/provision-nginx.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/provision-nginx.func.sh @@ -43,7 +43,7 @@ EOF sudo systemctl enable nginx sudo systemctl status nginx source $PRODUCT_DIR/.env - do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' } diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/provision-postgres.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/provision-postgres.func.sh index 1c10bce8..354a5660 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/provision-postgres.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/provision-postgres.func.sh @@ -1,19 +1,20 @@ +#!/bin/bash do_chk_provision_postgres(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV_TYPE.env.json '.env.db' + + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.db' # doScrambleConfs # because well they were taken from public git repo psql_cnf_dir='/etc/postgresql/12/main' ; sudo mkdir -p "$psql_cnf_dir" - + set +e - echo "$postgres_rdbms_usr:$postgres_rdbms_usr_pw" | chpasswd + echo "$postgres_rdbms_usr:$postgres_rdbms_usr_pw" | chpasswd echo 'export PS1="`date "+%F %T"` \u@\h \w \\n\\n "' | sudo tee -a /var/lib/postgresql/.bashrc - + sudo /etc/init.d/postgresql restart - + sudo -Hiu postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp";' sudo -Hiu postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "pgcrypto";' - sudo -Hiu postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "dblink";' + sudo -Hiu postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "dblink";' test -f $psql_cnf_dir/pg_hba.conf && \ sudo cp -v $psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf.orig.bak && \ @@ -30,7 +31,7 @@ do_chk_provision_postgres(){ sudo chown -R postgres:postgres "$psql_cnf_dir/postgresql.conf" sudo /etc/init.d/postgresql restart - + expect <<- EOF_EXPECT set timeout -1 spawn sudo -u $postgres_rdbms_usr psql --port $postgres_rdbms_port -c "\\\password" diff --git a/src/bash/qto/deploy/single-ubuntu-18.04/provision-ssh-keys.func.sh b/src/bash/qto/deploy/single-ubuntu-18.04/provision-ssh-keys.func.sh index 21145201..f88a862d 100644 --- a/src/bash/qto/deploy/single-ubuntu-18.04/provision-ssh-keys.func.sh +++ b/src/bash/qto/deploy/single-ubuntu-18.04/provision-ssh-keys.func.sh @@ -1,12 +1,12 @@ do_chk_provision_ssh_keys(){ - do_export_json_section_vars $product_dir/cnf/env/$ENV_TYPE.env.json '.env.db' + do_export_json_section_vars $product_dir/cnf/env/$ENV.env.json '.env.db' which expect || sudo apt-get update && sudo apt-get install -y expect # if the ssh key does not exist create it ... # the perl code for building the private key file path is : - # my $private_key_fpath = $ENV{"HOME"} . '/.ssh/id_rsa.qto.' . $env_type ; - prv_key_fpath=$HOME/.ssh/id_rsa.qto.$ENV_TYPE + # my $private_key_fpath = $ENV{"HOME"} . '/.ssh/id_rsa.qto.' . $ENV ; + prv_key_fpath=$HOME/.ssh/id_rsa.qto.$ENV test -f $prv_key_fpath || { expect <<- EOF_EXPECT set timeout -1 @@ -21,9 +21,9 @@ EOF_EXPECT echo created the fillowing private key file : $prv_key_fpath } - for env_type in `echo dev tst prd`; do - jwt_private_key_file=~/.ssh/qto.$env_type.jwtRS256.key - jwt_public_key_file=~/.ssh/qto.$env_type.jwtRS256.key.pub + for ENV in `echo dev tst prd`; do + jwt_private_key_file=~/.ssh/qto.$ENV.jwtRS256.key + jwt_public_key_file=~/.ssh/qto.$ENV.jwtRS256.key.pub echo << EOF_USING creating and using the following private and public key files for the Guardian's JWT's : $jwt_private_key_file diff --git a/src/bash/qto/funcs/admin/restart-network.func.sh b/src/bash/qto/funcs/admin/restart-network.func.sh index 19187b2d..e6911010 100755 --- a/src/bash/qto/funcs/admin/restart-network.func.sh +++ b/src/bash/qto/funcs/admin/restart-network.func.sh @@ -1,4 +1,6 @@ -doRestartNetwork(){ +#!/bin/bash + +do_restart_network(){ test -z ${USER:-} && export USER=$(echo $HOME|cut -d'/' -f 3) test `sudo -n -l -U $USER 2>&1 | egrep -c -i "not allowed to run sudo|unknown user"` -eq 0 \ diff --git a/src/bash/qto/funcs/backup-postgres-db-inserts.func.sh b/src/bash/qto/funcs/backup-postgres-db-inserts.func.sh index d6873bc5..c18a6076 100755 --- a/src/bash/qto/funcs/backup-postgres-db-inserts.func.sh +++ b/src/bash/qto/funcs/backup-postgres-db-inserts.func.sh @@ -6,13 +6,12 @@ # --------------------------------------------------------- doBackupPostgresDbInserts(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + test -z ${PROJ_CONF_FILE:-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.db' mix_data_dir="$PROJ_INSTANCE_DIR/dat/mix" - test -z "${postgres_app_db-}" && postgres_app_db="${env_type-}"_"${RUN_UNIT//-/_}" + test -z "${postgres_app_db-}" && postgres_app_db="${ENV-}"_"${RUN_UNIT//-/_}" backup_dir=$mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d")/sql/$postgres_app_db backup_fname=$postgres_app_db.`date "+%Y%m%d_%H%M%S"`.insrts.dmp.sql diff --git a/src/bash/qto/funcs/backup-postgres-db.func.sh b/src/bash/qto/funcs/backup-postgres-db.func.sh index bf7cc37f..8a3d96b5 100755 --- a/src/bash/qto/funcs/backup-postgres-db.func.sh +++ b/src/bash/qto/funcs/backup-postgres-db.func.sh @@ -1,13 +1,13 @@ -# src/bash/qto/funcs/backup-postgres-db.func.sh +#!/bin/bash # --------------------------------------------------------- # create a full database backup containing db create clause # --------------------------------------------------------- -doBackupPostgresDb(){ +do_backup_postgres_db(){ + + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' mix_data_dir="$PROJ_INSTANCE_DIR/dat/mix" @@ -27,7 +27,7 @@ doBackupPostgresDb(){ echo -e "\n" wc -l $mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d")/sql/$postgres_app_db/* | sort -nr sleep 1 - + echo "Full database backup completed successfully." } diff --git a/src/bash/qto/funcs/backup-postgres-table-inserts.func.sh b/src/bash/qto/funcs/backup-postgres-table-inserts.func.sh index 9a43b468..850bae72 100644 --- a/src/bash/qto/funcs/backup-postgres-table-inserts.func.sh +++ b/src/bash/qto/funcs/backup-postgres-table-inserts.func.sh @@ -1,8 +1,7 @@ doBackupPostgresTableInserts(){ - - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" diff --git a/src/bash/qto/funcs/backup-postgres-table.func.sh b/src/bash/qto/funcs/backup-postgres-table.func.sh index f59c17ec..f483ee5b 100755 --- a/src/bash/qto/funcs/backup-postgres-table.func.sh +++ b/src/bash/qto/funcs/backup-postgres-table.func.sh @@ -1,9 +1,10 @@ +#!/bin/bash # src/bash/qto/funcs/backup-postgres-table.func.sh -doBackupPostgresTable(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh +do_backup_postgres_table(){ + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PROJ_INSTANCE_DIR/src/sql/pgsql/ad-hoc" sleep 3 ; do_flush_screen ; diff --git a/src/bash/qto/funcs/build-docker-image.func.sh b/src/bash/qto/funcs/build-docker-image.func.sh index 7d84cc89..00cdf0c1 100755 --- a/src/bash/qto/funcs/build-docker-image.func.sh +++ b/src/bash/qto/funcs/build-docker-image.func.sh @@ -1,26 +1,26 @@ -doBuildQtoDockerImage(){ - - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" +do_build_docker_image(){ + + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - test -f "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" || \ + test -f "$PRODUCT_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" || \ do_exit 1 "the src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version cannot be found !!!" - #doRemoveDockerContainers + #doRemoveDockerContainers test ${DOCKER_NUCLEAR_OPTION_PURGE:-0} -eq 1 && doFullCleanDocker # obs clears all docker stuff !!! - #doRemoveDockerImages - cp -v "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" "$PRODUCT_INSTANCE_DIR/Dockerfile" + #doRemoveDockerImages + cp -v "$PRODUCT_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" "$PRODUCT_DIR/Dockerfile" - # for quick tests uncomment ^^^ and use this one : - # cp -v "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-quick-test" "$PRODUCT_INSTANCE_DIR/Dockerfile" + # for quick tests uncomment ^^^ and use this one : + # cp -v "$PRODUCT_DIR/src/docker/Dockerfile.deploy-quick-test" "$PRODUCT_DIR/Dockerfile" docker build \ - --build-arg PRODUCT_INSTANCE_DIR=$PRODUCT_INSTANCE_DIR \ + --build-arg PRODUCT_DIR=$PRODUCT_DIR \ --build-arg postgres_app_db=$postgres_app_db \ --build-arg TZ=${TZ:-} \ - --build-arg ENV_TYPE=$ENV_TYPE \ + --build-arg ENV=$ENV \ --build-arg USER=$USER \ --build-arg UID=$UID \ --build-arg GROUP=$GROUP \ @@ -29,13 +29,13 @@ doBuildQtoDockerImage(){ --build-arg postgres_sys_usr_admin=$postgres_sys_usr_admin \ --build-arg root_pwd=$root_pwd \ --build-arg app_user_pwd=$app_user_pwd \ - -t qto-image:$product_version.$env_type . + -t qto-image:$product_version.$ENV . test $? -ne 0 && do_log "FATAL the docker image building failed !!!" - rm -v "$PRODUCT_INSTANCE_DIR/Dockerfile" - + rm -v "$PRODUCT_DIR/Dockerfile" + echo -e "\n\n to instantiate a new container, run: \n" - echo -e "bash $PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh -a run-container\n\n" + echo -e "bash $PRODUCT_DIR/src/bash/qto/qto.sh -a run-container\n\n" } diff --git a/src/bash/qto/funcs/change-env-type.func.sh b/src/bash/qto/funcs/change-env-type.func.sh index fd01f6ce..c55a5332 100755 --- a/src/bash/qto/funcs/change-env-type.func.sh +++ b/src/bash/qto/funcs/change-env-type.func.sh @@ -10,26 +10,26 @@ doChangeEnvType(){ tgt_env=${tgt_env#$prefix} - tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV_TYPE/$tgt_env/g;print") - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_environment_name + tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV/$tgt_env/g;print") + tgt_PRODUCT_DIR=$product_dir/$tgt_environment_name - test "$tgt_env" == "$env_type" && return + test "$tgt_env" == "$ENV" && return # remove everything from the tgt product version dir - no extra files allowed !!! - mkdir -p $tgt_PRODUCT_INSTANCE_DIR && test -d $tgt_PRODUCT_INSTANCE_DIR && \ - mv -v $tgt_PRODUCT_INSTANCE_DIR $tgt_PRODUCT_INSTANCE_DIR.$(date "+%Y%m%d_%H%M%S") - test $? -eq 0 || do_exit 1 "cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR && test -d $tgt_PRODUCT_DIR && \ + mv -v $tgt_PRODUCT_DIR $tgt_PRODUCT_DIR.$(date "+%Y%m%d_%H%M%S") + test $? -eq 0 || do_exit 1 "cannot write to $tgt_PRODUCT_DIR !" - mkdir -p $tgt_PRODUCT_INSTANCE_DIR - test $? -ne 0 && do_exit 1 "Failed to create $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR + test $? -ne 0 && do_exit 1 "Failed to create $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR - cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR + cp -v $zip_file $tgt_PRODUCT_DIR - perl -pi -e 's|'$env_type'|'$tgt_env'|g' $tgt_PRODUCT_INSTANCE_DIR/.env + perl -pi -e 's|'$ENV'|'$tgt_env'|g' $tgt_PRODUCT_DIR/.env - cd $tgt_PRODUCT_INSTANCE_DIR + cd $tgt_PRODUCT_DIR ln -sf `pwd`/src/bash/qto/qto.sh qto ln -sf `pwd`/src/perl/qto/script/qto.pl qto.pl cd - diff --git a/src/bash/qto/funcs/cp-to-env.func.sh b/src/bash/qto/funcs/cp-to-env.func.sh index 0b497747..476a547f 100644 --- a/src/bash/qto/funcs/cp-to-env.func.sh +++ b/src/bash/qto/funcs/cp-to-env.func.sh @@ -9,16 +9,16 @@ doCpToEnv(){ prefix='cp-to-env=' tgt_env=${tgt_env#$prefix} - tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV_TYPE/$tgt_env/g;print") - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_environment_name + tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV/$tgt_env/g;print") + tgt_PRODUCT_DIR=$product_dir/$tgt_environment_name # do ALWAYS open the met/<> when calling this func !!! - for env in `echo dev tst prd`; do cp -v met/.$ENV_TYPE.qto met/.$env.qto ; done ; - for env in `echo dev tst prd`; do cp -v met/.$ENV_TYPE.qto $tgt_PRODUCT_INSTANCE_DIR/met/.$env.qto ; done ; - test "$tgt_env" == "$env_type" && return + for env in `echo dev tst prd`; do cp -v met/.$ENV.qto met/.$env.qto ; done ; + for env in `echo dev tst prd`; do cp -v met/.$ENV.qto $tgt_PRODUCT_DIR/met/.$env.qto ; done ; + test "$tgt_env" == "$ENV" && return relative_fpath=$(dirname "${file}") - tgt_file=$tgt_PRODUCT_INSTANCE_DIR/$file + tgt_file=$tgt_PRODUCT_DIR/$file mkdir -p $(dirname $tgt_file) test -f $file && cp -v $file $tgt_file @@ -26,5 +26,5 @@ doCpToEnv(){ test -d $file && rsync -v -X -r -E -o -g --perms --acls $file $(dirname $tgt_file) # copy the current site instance configuration file to the secret store as well ... - mkdir -p ~/.qto/cnf ; cp -v cnf/env/$ENV_TYPE.env.json ~/.qto/cnf/ + mkdir -p ~/.qto/cnf ; cp -v cnf/env/$ENV.env.json ~/.qto/cnf/ } diff --git a/src/bash/qto/funcs/create-ctags.func.sh b/src/bash/qto/funcs/create-ctags.func.sh index 7ae50af7..0166252a 100644 --- a/src/bash/qto/funcs/create-ctags.func.sh +++ b/src/bash/qto/funcs/create-ctags.func.sh @@ -13,7 +13,7 @@ doCreateCtags(){ cmd="rm -fv ./tags" && doRunCmdAndLog "$cmd" cmd="ctags -R -n --fields=+i+K+S+l+m+a --exclude=.git --exclude=dat --exclude=*/node_modules/* ." && doRunCmdAndLog "$cmd" - cmd="ls -la $PRODUCT_INSTANCE_DIR/tags" && doRunCmdAndLog "$cmd" + cmd="ls -la $PRODUCT_DIR/tags" && doRunCmdAndLog "$cmd" popd diff --git a/src/bash/qto/funcs/create-relative-package.func.sh b/src/bash/qto/funcs/create-relative-package.func.sh index 30674df3..2d5c1357 100644 --- a/src/bash/qto/funcs/create-relative-package.func.sh +++ b/src/bash/qto/funcs/create-relative-package.func.sh @@ -9,7 +9,7 @@ doCreateRelativePackage(){ test $? -ne 0 && do_exit 2 "Failed to create $product_base_dir/dat/zip !" test -z ${include_file:-} && \ - include_file="$PROJ_INSTANCE_DIR/met/.$env_type.$RUN_UNIT" + include_file="$PROJ_INSTANCE_DIR/met/.$ENV.$RUN_UNIT" # relative file path is passed turn it to absolute one [[ $include_file == /* ]] || include_file=$PROJ_INSTANCE_DIR/$include_file @@ -17,13 +17,13 @@ doCreateRelativePackage(){ test -f $include_file || \ do_exit 3 "did not found any deployment file paths containing deploy file @ $include_file" - tgt_env_type=$(echo `basename "$include_file"`|cut -d'.' -f2) + tgt_ENV=$(echo `basename "$include_file"`|cut -d'.' -f2) timestamp=`date "+%Y%m%d_%H%M%S"` # the last token of the include_file with . token separator - thus no points in names git_short_hash=$(git rev-parse --short HEAD) zip_file_name=$(echo $include_file | rev | cut -d. -f 1 | rev) - zip_file_name="$zip_file_name.$product_version.$tgt_env_type.$timestamp.$git_short_hash.$host_name.rel.zip" + zip_file_name="$zip_file_name.$product_version.$tgt_ENV.$timestamp.$git_short_hash.$host_name.rel.zip" zip_file="$product_base_dir/$zip_file_name" diff --git a/src/bash/qto/funcs/delete-aws-vpc.func.sh b/src/bash/qto/funcs/delete-aws-vpc.func.sh index 693e6e9f..21e7bca7 100644 --- a/src/bash/qto/funcs/delete-aws-vpc.func.sh +++ b/src/bash/qto/funcs/delete-aws-vpc.func.sh @@ -1,13 +1,15 @@ -doDeleteAwsVPC(){ +#!/bin/bash + +do_delete_aws_vpc(){ + + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION # probably a buggy one but just to get you start with something - # ensure your default output is json + you have default region ... + # ensure your default output is json + you have default region ... aws ec2 describe-internet-gateways --filters 'Name=attachment.vpc-id,Values='$vpc_id \ | jq -r ".InternetGateways[].InternetGatewayId" # terminate all vpc instances @@ -60,7 +62,7 @@ doDeleteAwsVPC(){ aws ec2 describe-vpn-gateways --filters 'Name=attachment.vpc-id,Values='$vpc | grep VpnGatewayId aws ec2 describe-network-interfaces --filters 'Name=vpc-id,Values='$vpc | grep NetworkInterfaceId -# while read -r key_pair_id; do -# aws echo ec2 delete-key-pair --key-name $key_pair_id ; +# while read -r key_pair_id; do +# aws echo ec2 delete-key-pair --key-name $key_pair_id ; # done < <(aws ec2 describe-key-pairs | jq -r '.[] | .[] | .KeyPairId') } diff --git a/src/bash/qto/funcs/dev/change-version.func.sh b/src/bash/qto/funcs/dev/change-version.func.sh index 3918bd4c..f27ebdf5 100755 --- a/src/bash/qto/funcs/dev/change-version.func.sh +++ b/src/bash/qto/funcs/dev/change-version.func.sh @@ -4,34 +4,34 @@ doChangeVersion(){ prefix='to-ver=' tgt_version=${tgt_version#$prefix} tgt_env_name=$(echo $environment_name | perl -ne "s/$product_version/$tgt_version/g;print") - tgt_env_name=$(echo $tgt_env_name | perl -ne "s/$env_type/dev/g;print") # ALWAYS !!! - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_env_name - mkdir -p $tgt_PRODUCT_INSTANCE_DIR + tgt_env_name=$(echo $tgt_env_name | perl -ne "s/$ENV/dev/g;print") # ALWAYS !!! + tgt_PRODUCT_DIR=$product_dir/$tgt_env_name + mkdir -p $tgt_PRODUCT_DIR - test "$tgt_PRODUCT_INSTANCE_DIR" == "$PRODUCT_INSTANCE_DIR" && return - rm -fvr $tgt_PRODUCT_INSTANCE_DIR/* - test $? -eq 0 || do_exit 2 "cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + test "$tgt_PRODUCT_DIR" == "$PRODUCT_DIR" && return + rm -fvr $tgt_PRODUCT_DIR/* + test $? -eq 0 || do_exit 2 "cannot write to $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR ; cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR ; cp -v $zip_file $tgt_PRODUCT_DIR # change the current version str to tgt-version in the configuration dir export to_srch=$product_version export to_repl=$tgt_version - export dir_to_morph=$tgt_PRODUCT_INSTANCE_DIR/cnf + export dir_to_morph=$tgt_PRODUCT_DIR/cnf doMorphDir # :fin morph-dir.func.sh # ensure that all the files in the target product version dir are indentical to the current ones while read -r file ; do ( do_log "DEBUG comparing src file: $file" - do_log "DEBUG to tgt file: $tgt_PRODUCT_INSTANCE_DIR/$file" - test -f "$PRODUCT_INSTANCE_DIR/$file" \ - && diff "$PRODUCT_INSTANCE_DIR/$file" "$tgt_PRODUCT_INSTANCE_DIR/$file" + do_log "DEBUG to tgt file: $tgt_PRODUCT_DIR/$file" + test -f "$PRODUCT_DIR/$file" \ + && diff "$PRODUCT_DIR/$file" "$tgt_PRODUCT_DIR/$file" [[ $? != 0 ]] && exit $? ); done < <(cat $include_file) - cd $tgt_PRODUCT_INSTANCE_DIR # to create default links + cd $tgt_PRODUCT_DIR # to create default links ln -sf `pwd`/src/bash/qto/qto.sh qto ; sudo chmod 754 `pwd`/src/bash/qto/qto.sh ln -sf `pwd`/src/perl/qto/script/qto.pl qto.pl ; sudo chmod 754 `pwd`/src/perl/qto/script/qto.pl cd - diff --git a/src/bash/qto/funcs/dev/clone-to-app.func.sh b/src/bash/qto/funcs/dev/clone-to-app.func.sh index e9d744ef..ee285a1d 100755 --- a/src/bash/qto/funcs/dev/clone-to-app.func.sh +++ b/src/bash/qto/funcs/dev/clone-to-app.func.sh @@ -11,32 +11,32 @@ doCloneToApp(){ tgt_app=${tgt_app#$prefix} tgt_environment_name=$(echo $environment_name | perl -ne "s/$RUN_UNIT/$tgt_app/g;print") tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$product_version/0.0.0/g;print") - tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$env_type/dev/g;print") + tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$ENV/dev/g;print") tgt_product_dir=$product_base_dir/$tgt_app - tgt_PRODUCT_INSTANCE_DIR=$tgt_product_dir/$tgt_environment_name + tgt_PRODUCT_DIR=$tgt_product_dir/$tgt_environment_name - mkdir -p $tgt_PRODUCT_INSTANCE_DIR - [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot create the tgt_PRODUCT_INSTANCE_DIR: $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR + [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot create the tgt_PRODUCT_DIR: $tgt_PRODUCT_DIR !" # remove everything from the tgt product version dir - no extra files allowed !!! - rm -fvr $tgt_PRODUCT_INSTANCE_DIR + rm -fvr $tgt_PRODUCT_DIR # if the removal failed exit with error msg - [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot write to $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR to_srch=$RUN_UNIT to_repl=$tgt_app #-- search and replace in file names - find "$tgt_PRODUCT_INSTANCE_DIR/" -type d |\ + find "$tgt_PRODUCT_DIR/" -type d |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;' - find "$tgt_PRODUCT_INSTANCE_DIR/" -type f |\ + find "$tgt_PRODUCT_DIR/" -type f |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;rename($o,$n) unless -e $n ;' - find $tgt_PRODUCT_INSTANCE_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; + find $tgt_PRODUCT_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; do ( perl -pi -e "s#$to_srch#$to_repl#g" "$file_to_edit" ); @@ -44,8 +44,8 @@ doCloneToApp(){ } # on cygwin the perl -pi leaves backup files => remove them - find $tgt_PRODUCT_INSTANCE_DIR -type f -name '*.bak' | xargs rm -fv + find $tgt_PRODUCT_DIR -type f -name '*.bak' | xargs rm -fv - cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + cp -v $zip_file $tgt_PRODUCT_DIR } diff --git a/src/bash/qto/funcs/dev/create-ctags.func.sh b/src/bash/qto/funcs/dev/create-ctags.func.sh index 722b6535..0d35fa2e 100755 --- a/src/bash/qto/funcs/dev/create-ctags.func.sh +++ b/src/bash/qto/funcs/dev/create-ctags.func.sh @@ -9,11 +9,11 @@ doCreateCtags(){ ctags --help >/dev/null 2>&1 || { do_log "ERROR. ctags is not installed or not in PATH. Aborting." >&2; exit 1; } pushd . - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR cmd="rm -fv ./tags" && doRunCmdAndLog "$cmd" cmd="ctags -R -n --fields=+i+K+S+l+m+a --exclude=.git --exclude=dat --exclude=*/node_modules/* ." && doRunCmdAndLog "$cmd" - cmd="ls -la $PRODUCT_INSTANCE_DIR/tags" && doRunCmdAndLog "$cmd" + cmd="ls -la $PRODUCT_DIR/tags" && doRunCmdAndLog "$cmd" popd diff --git a/src/bash/qto/funcs/dev/generate-action-files.func.sh b/src/bash/qto/funcs/dev/generate-action-files.func.sh index bb85b0a1..662795a8 100755 --- a/src/bash/qto/funcs/dev/generate-action-files.func.sh +++ b/src/bash/qto/funcs/dev/generate-action-files.func.sh @@ -74,14 +74,14 @@ doGenerateActionFiles(){ echo -e "generated the following files: \n" ; find . | grep -i $act |cut -c 3-|sort -nr - find . | grep -i $act |cut -c 3-|sort -nr >> met/.$env_type.$RUN_UNIT + find . | grep -i $act |cut -c 3-|sort -nr >> met/.$ENV.$RUN_UNIT echo -e "\n\n" do_log "DEBUG STOP :: checking action: $act" ); done< <(cat "src/bash/$RUN_UNIT/tests/new-$RUN_UNIT-tests.lst") - clear ; for env in `echo dev tst prd src`; do cp -v met/.$env_type.$RUN_UNIT met/.$env.$RUN_UNIT ; done + clear ; for env in `echo dev tst prd src`; do cp -v met/.$ENV.$RUN_UNIT met/.$env.$RUN_UNIT ; done do_log "DEBUG STOP : doGenerateActionFiles" diff --git a/src/bash/qto/funcs/fix-db-permissions.func.sh b/src/bash/qto/funcs/fix-db-permissions.func.sh index d1449fd9..4e848f82 100755 --- a/src/bash/qto/funcs/fix-db-permissions.func.sh +++ b/src/bash/qto/funcs/fix-db-permissions.func.sh @@ -1,14 +1,15 @@ -# use this shell actios ONLY after deployment -doFixDbPermissions(){ +#!/bin/bash - doSetUpDbRoles +do_fix_db_permissions(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z $PROJ_CONF_FILE && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + do_setup_db_roles + + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + + test -z $PROJ_CONF_FILE && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; + do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" cd /tmp @@ -21,13 +22,13 @@ doFixDbPermissions(){ PGPASSWORD=$postgres_sys_usr_admin_pw psql -U "${postgres_sys_usr_admin:-}" \ --host $postgres_rdbms_host --port $postgres_rdbms_port -d "$postgres_app_db" \ - -c " GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; + -c " GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d "$postgres_app_db" -c \ - "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES - IN SCHEMA public TO $postgres_app_usr; + "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES + IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d "$postgres_app_db" -c \ diff --git a/src/bash/qto/funcs/generate-md-docs.func.sh b/src/bash/qto/funcs/generate-md-docs.func.sh index 2904965a..b660a6a2 100755 --- a/src/bash/qto/funcs/generate-md-docs.func.sh +++ b/src/bash/qto/funcs/generate-md-docs.func.sh @@ -6,10 +6,10 @@ # --------------------------------------------------------- doGenerateMdDocs(){ do_log "DEBUG START doGenerateMdDocs" - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/qto/funcs/generate-msft-docs.func.sh b/src/bash/qto/funcs/generate-msft-docs.func.sh index 6ec43d6b..1309fd5d 100755 --- a/src/bash/qto/funcs/generate-msft-docs.func.sh +++ b/src/bash/qto/funcs/generate-msft-docs.func.sh @@ -1,10 +1,10 @@ # file: src/bash/qto/funcs/generate-pdf-docs.func.sh doGenerateMsftDocs(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/qto/funcs/generate-pdf-docs.func.sh b/src/bash/qto/funcs/generate-pdf-docs.func.sh index 4d6a9e81..1097d1a2 100755 --- a/src/bash/qto/funcs/generate-pdf-docs.func.sh +++ b/src/bash/qto/funcs/generate-pdf-docs.func.sh @@ -1,10 +1,10 @@ # file: src/bash/qto/funcs/generate-pdf-docs.func.sh doGeneratePdfDocs(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/qto/funcs/generate-sql.func.sh b/src/bash/qto/funcs/generate-sql.func.sh index 79e79e2f..efe5b36a 100755 --- a/src/bash/qto/funcs/generate-sql.func.sh +++ b/src/bash/qto/funcs/generate-sql.func.sh @@ -12,7 +12,7 @@ doGenerateSQL(){ while read -r list_file ; do #foreach list file in the dat/lst/sql dir - cd $PRODUCT_INSTANCE_DIR/src/sql/mysql/run + cd $PRODUCT_DIR/src/sql/mysql/run # foreach sql template while read -r sql_template ; do @@ -48,13 +48,13 @@ doGenerateSQL(){ done done < <(tail -n +2 "$list_file") # cat all but the first line - done < <(find $PRODUCT_INSTANCE_DIR/src/sql/mysql/run -type f -name '*.SQL') - done < <(find $PRODUCT_INSTANCE_DIR/dat/lst/sql/mysql/run -type f -name '*.list') + done < <(find $PRODUCT_DIR/src/sql/mysql/run -type f -name '*.SQL') + done < <(find $PRODUCT_DIR/dat/lst/sql/mysql/run -type f -name '*.list') IFS=$TMP_IFS # revert back to the original IFS find . -name '*.bak' | xargs rm -fv chmod -v 770 *.sql - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR sleep "$sleep_interval" # add your action implementation code here ... diff --git a/src/bash/qto/funcs/increase-date.func.sh b/src/bash/qto/funcs/increase-date.func.sh index 291a352b..ac52c6d6 100755 --- a/src/bash/qto/funcs/increase-date.func.sh +++ b/src/bash/qto/funcs/increase-date.func.sh @@ -1,3 +1,4 @@ +#!/bin/bash # file: src/bash/qto/funcs/increase-date.func.sh # today is --date="+1 day" # tommorrow is --date="+1 day" @@ -5,11 +6,11 @@ # --------------------------------------------------------- # cat doc/txt/qto/funcs/increase-date.func.txt # --------------------------------------------------------- -doIncreaseDate(){ - - test -z "${PROJ_INSTANCE_DIR:-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' +do_increase_date(){ + + test -z "${PROJ_INSTANCE_DIR:-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' mix_data_dir=$PROJ_INSTANCE_DIR/dat/mix # find the latest project_daily_txt_dir @@ -20,7 +21,7 @@ doIncreaseDate(){ # debug set -x if [[ ${tgt_date+x} && -n $tgt_date ]] ; then - + case "$tgt_date" in today) export tgt_date=$(date --date="+0 day" "+%Y-%m-%d") @@ -39,10 +40,10 @@ doIncreaseDate(){ else export tgt_date=$(date --date="+0 day" "+%Y-%m-%d") fi - + msg="using the following date: \"$tgt_date\"" do_log "INFO $msg" - + # define the today's daily_data_dir tgt_days_monthly_data_dir="$mix_data_dir"/$(date "+%Y" -d "$tgt_date") tgt_days_monthly_data_dir="$tgt_days_monthly_data_dir"/$(date "+%Y-%m" -d "$tgt_date") @@ -50,8 +51,8 @@ doIncreaseDate(){ export daily_data_dir="$tgt_days_monthly_data_dir"'/'$(date "+%Y-%m-%d" -d "$tgt_date") error_msg=" - nothing can be done - as the daily data dir \$daily_data_dir : - $daily_data_dir + nothing can be done - as the daily data dir \$daily_data_dir : + $daily_data_dir already exists !!! " test -d "$daily_data_dir" && do_exit 1 "$error_msg" @@ -62,41 +63,41 @@ doIncreaseDate(){ doRunCmdOrExit "$cmd" ; cd $todays_tmp_dir # foreach sh or txt file - while read -r f ; do + while read -r f ; do export last_day=$(echo $f|cut -d'.' -f 4); - table=$(echo $f|cut -d'.' -f 3); proj=$(echo $f|cut -d'.' -f 2); + table=$(echo $f|cut -d'.' -f 3); proj=$(echo $f|cut -d'.' -f 2); #debug do_log "DEBUG table: $table" - file_ext=$(echo $f|cut -d'.' -f 5); + file_ext=$(echo $f|cut -d'.' -f 5); # debug do_log "DEBUG file_ext: $file_ext" mv "$f" '.'"$proj"."$table".`date "+%Y-%m-%d" -d "$tgt_date"`."$file_ext" # obs works only on gnu find ! done < <(find . -type f -regex ".*\.\(sh\|txt\)") - + # search and replace the daily today=$(date +%Y-%m-%d) - while read -r f ; do - perl -pi -e 's/\@'"$last_day"'/\@'"$today"'/g;' "$f" ; + while read -r f ; do + perl -pi -e 's/\@'"$last_day"'/\@'"$today"'/g;' "$f" ; done < <(find . -type f -name '*.txt' -o -name '*.sh') - + rm -f *.bak # remove any possible bak files mv $todays_tmp_dir $daily_data_dir rm -rfvd $daily_data_dir/tmp - + export daily_data_dir=$mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d") - + # remove all the tmp xls files rm -v "$daily_data_dir/xls/"'/~'*.xlsx # foreach xls file - while read -r f ; do + while read -r f ; do file_name="${f##*/}" - proj=$(echo $file_name|cut -d'.' -f 1); - table=$(echo $file_name|cut -d'.' -f 2); - timestamp=$(echo $file_name|cut -d'.' -f 3); + proj=$(echo $file_name|cut -d'.' -f 1); + table=$(echo $file_name|cut -d'.' -f 2); + timestamp=$(echo $file_name|cut -d'.' -f 3); # file_name="${f%.*}" # file_name=$(basename -- "$f") file_ext="${f##*.}" diff --git a/src/bash/qto/funcs/load-db-data-from-s3.func.sh b/src/bash/qto/funcs/load-db-data-from-s3.func.sh index 8528593b..4b77e7b0 100755 --- a/src/bash/qto/funcs/load-db-data-from-s3.func.sh +++ b/src/bash/qto/funcs/load-db-data-from-s3.func.sh @@ -1,34 +1,33 @@ # # the following db dump in the s3 of the aws credentials owning user should exist: -# https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql -# -doLoadDbDataFromS3(){ - - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' +# https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql +# +do_load_db_data_from_db(){ + + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.aws' - mkdir -p $PRODUCT_INSTANCE_DIR/dat/sql/ + mkdir -p $PRODUCT_DIR/dat/sql/ echo "fetch the db inserts data from the s3 bucket from the following url: " - echo "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql' - wget -O "$PRODUCT_INSTANCE_DIR/dat/sql/"$ENV_TYPE'_'$RUN_UNIT".latest.insrts.dmp.sql" \ - "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql' + echo "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql' + wget -O "$PRODUCT_DIR/dat/sql/"$ENV'_'$RUN_UNIT".latest.insrts.dmp.sql" \ + "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql' # configure psql to access the db of THIS instance PGPASSWORD=${postgres_sys_usr_admin_pw:-} psql -v -t -X -w -U ${postgres_sys_usr_admin:-} \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d $postgres_app_db < \ - "$PRODUCT_INSTANCE_DIR/dat/sql/$ENV_TYPE"'_'"$RUN_UNIT"'.latest.insrts.dmp.sql' + "$PRODUCT_DIR/dat/sql/$ENV"'_'"$RUN_UNIT"'.latest.insrts.dmp.sql' - test -f $PRODUCT_INSTANCE_DIR/dat/tmp/bootstrapping && rm -v $PRODUCT_INSTANCE_DIR/dat/tmp/bootstrapping - test -f $PRODUCT_INSTANCE_DIR/bootstrapping && rm -v $PRODUCT_INSTANCE_DIR/bootstrapping + test -f $PRODUCT_DIR/dat/tmp/bootstrapping && rm -v $PRODUCT_DIR/dat/tmp/bootstrapping + test -f $PRODUCT_DIR/bootstrapping && rm -v $PRODUCT_DIR/bootstrapping # grant the needed select PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -v -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ -h ${postgres_rdbms_host:-} -p ${postgres_rdbms_port:-} -v ON_ERROR_STOP=1 \ -d ${postgres_app_db:-} \ - -c "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; + -c "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" echo "Databases successfully filled with data." diff --git a/src/bash/qto/funcs/log-test-run-entry.func.sh b/src/bash/qto/funcs/log-test-run-entry.func.sh index 8a5de89e..7bde7778 100755 --- a/src/bash/qto/funcs/log-test-run-entry.func.sh +++ b/src/bash/qto/funcs/log-test-run-entry.func.sh @@ -20,7 +20,7 @@ do_logTestRunEntry(){ test -z "$component_name" && component_name="$RUN_UNIT_tester" test -z "$test_run_report_line" && test_run_report_line=' ' test -z "$test_run_report_file" \ - && test_run_report_file="$PRODUCT_INSTANCE_DIR/dat/tests/$component_name"'.test-run-report.'`date "+%Y%m%d_%H%M%S"`'.txt' + && test_run_report_file="$PRODUCT_DIR/dat/tests/$component_name"'.test-run-report.'`date "+%Y%m%d_%H%M%S"`'.txt' echo -e "\n" > "$test_run_report_file" echo -e `date "+%Y-%m-%d %H:%M:%S"`"\t START $component_name test run report \n" >> "$test_run_report_file" echo "result start-time stop-time action-name" >> "$test_run_report_file" @@ -49,7 +49,7 @@ do_logTestRunEntry(){ cat "$test_run_report_file" echo -e "\n\n" # do_log "product instance tests listing" - # find "$PRODUCT_INSTANCE_DIR"'/dat/tests' -type f -exec stat -c "%y %n" {} \; | sort -nr + # find "$PRODUCT_DIR"'/dat/tests' -type f -exec stat -c "%y %n" {} \; | sort -nr echo -e "\n\n" ;; *) diff --git a/src/bash/qto/funcs/man/print-usage.func.sh b/src/bash/qto/funcs/man/print-usage.func.sh index 33071e63..5c93a61b 100755 --- a/src/bash/qto/funcs/man/print-usage.func.sh +++ b/src/bash/qto/funcs/man/print-usage.func.sh @@ -4,7 +4,7 @@ #------------------------------------------------------------------------------ doPrintUsage(){ - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen while read -r f ; do diff --git a/src/bash/qto/funcs/mojo-hypnotoad-start.func.sh b/src/bash/qto/funcs/mojo-hypnotoad-start.func.sh index f350d7a0..8f7eb5a4 100755 --- a/src/bash/qto/funcs/mojo-hypnotoad-start.func.sh +++ b/src/bash/qto/funcs/mojo-hypnotoad-start.func.sh @@ -1,6 +1,6 @@ doMojoHypnotoadStart(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' doMojoHypnotoadStop export MOJO_LOG_LEVEL='error'; #could be warn, debug, info @@ -11,10 +11,10 @@ doMojoHypnotoadStart(){ test $p -ne $$ && kill -9 $p ; done < <(sudo ps -ef | grep -v grep | grep 'mojo-hypnotoad-start'|awk '{print $2}') - cd $PRODUCT_INSTANCE_DIR/src/perl/qto/script + cd $PRODUCT_DIR/src/perl/qto/script hypnotoad qto & - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR sudo service nginx restart test $? -ne 0 && exit 1 sudo ps -ef | grep -v grep | grep qto diff --git a/src/bash/qto/funcs/mojo-hypnotoad-stop.func.sh b/src/bash/qto/funcs/mojo-hypnotoad-stop.func.sh index 9869570c..ebcb97cb 100755 --- a/src/bash/qto/funcs/mojo-hypnotoad-stop.func.sh +++ b/src/bash/qto/funcs/mojo-hypnotoad-stop.func.sh @@ -5,7 +5,7 @@ # --------------------------------------------------------- doMojoHypnotoadStop(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' test -z "${mojo_hypnotoad_port:-}" && export mojo_hypnotoad_port=8080 # try nicely first to stop the hypnotoad worker processes diff --git a/src/bash/qto/funcs/mojo-morbo-start.func.sh b/src/bash/qto/funcs/mojo-morbo-start.func.sh deleted file mode 100755 index 73058ca1..00000000 --- a/src/bash/qto/funcs/mojo-morbo-start.func.sh +++ /dev/null @@ -1,36 +0,0 @@ -# src/bash/qto/funcs/mojo-morbo-start.func.sh - -# v0.7.9 chk: https://github.com/mojolicious/mojo/wiki/%25ENV -doMojoMorboStart(){ - - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' - doMojoMorboStop 0 - - # to prevent the 'failed: could not create socket: Too many open files at sys' error - # perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}' to check - ulimit -n 4096 - - sleep "$sleep_interval" - export MOJO_LOG_LEVEL='debug' - export MOJO_MODE='development' - #export MOJO_MODE='production' - test -z "${mojo_morbo_port:-}" && export mojo_morbo_port='3001' - - export MOJO_LISTEN='http://*:'"$mojo_morbo_port" - test -z "${mojo_morbo_port:-}" && export MOJO_LISTEN='http://*:3001' - - do_log "INFO running: morbo -w $PRODUCT_INSTANCE_DIR/src/perl/script/qto - --listen $MOJO_LISTEN $PRODUCT_INSTANCE_DIR/src/perl/qto/script/qto" - - while read -r p ; do - p=$(echo $p|sed 's/^ *//g') - test $p -ne $$ && kill -9 $p ; - done < <(sudo ps -ef | grep -v grep | grep 'mojo-morbo-start'|awk '{print $2}') - - bash -c "morbo -w $PRODUCT_INSTANCE_DIR/src/perl/qto --listen $MOJO_LISTEN $PRODUCT_INSTANCE_DIR/src/perl/qto/script/qto" & - - # might require sudo visudoers - # usrqtoadmin ALL=(ALL) NOPASSWD: /bin/netstat -tulpn - do_log "INFO check with netstat, running netstat -tulpn" ; netstat -tulpn | grep qto - -} diff --git a/src/bash/qto/funcs/mojo-morbo-stop.func.sh b/src/bash/qto/funcs/mojo-morbo-stop.func.sh deleted file mode 100755 index 82da4031..00000000 --- a/src/bash/qto/funcs/mojo-morbo-stop.func.sh +++ /dev/null @@ -1,22 +0,0 @@ -# file: src/bash/qto/funcs/mojo-morbo-stop.func.sh - -# --------------------------------------------------------- -# stop any running morbo instances listenning on the wanted port -# cat doc/txt/qto/funcs/mojo-morbo-stop.func.txt -# --------------------------------------------------------- -doMojoMorboStop(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' - test -z "${mojo_morbo_port:-}" && export mojo_morbo_port=3001 - found=0 - - while read -r listening_on_port_pid; do - while read -r pid; do - test $listening_on_port_pid -eq $pid && sudo kill -9 $pid - done < <(sudo ps -ef| grep -i qto.$VERSION.$ENV_TYPE| grep -v grep|awk '{print $2}') - done < <(lsof -i:${mojo_morbo_port:-} -t) - - echo start running ps -ef \| grep qto - ps -ef | grep -i qto - echo stop running ps -ef \| grep qto - echo -e "\n" -} diff --git a/src/bash/qto/funcs/pckg/create-full-package.func.sh b/src/bash/qto/funcs/pckg/create-full-package.func.sh index bd33b453..20406158 100755 --- a/src/bash/qto/funcs/pckg/create-full-package.func.sh +++ b/src/bash/qto/funcs/pckg/create-full-package.func.sh @@ -9,17 +9,17 @@ doCreateFullPackage(){ test -z ${qto_project:-} && qto_project=qto #define default vars test -z ${include_file:-} && \ - include_file="$PRODUCT_INSTANCE_DIR/met/.$env_type.$RUN_UNIT" + include_file="$PRODUCT_DIR/met/.$ENV.$RUN_UNIT" # relative file path is passed turn it to absolute one - [[ $include_file == /* ]] || include_file=$PRODUCT_INSTANCE_DIR/$include_file + [[ $include_file == /* ]] || include_file=$PRODUCT_DIR/$include_file if [ ! -f "$include_file" ]; then do_log "FATAL the deployment file: $include_file does not exist !!!" return 1 fi - tgt_env_type=$(echo `basename "$include_file"`|cut -d'.' -f2) + tgt_ENV=$(echo `basename "$include_file"`|cut -d'.' -f2) # start: add the perl_ignore_file_pattern while read -r line ; do \ @@ -38,10 +38,10 @@ doCreateFullPackage(){ # the last token of the include_file with . token separator - thus no points in names zip_file_name=$(echo $include_file | rev | cut -d'.' -f 1 | rev) test $zip_file_name != $RUN_UNIT && zip_file_name="$zip_file_name"'--'"$qto_project" - zip_file_name="$zip_file_name.$product_version.$tgt_env_type.$timestamp.$host_name.zip" + zip_file_name="$zip_file_name.$product_version.$tgt_ENV.$timestamp.$host_name.zip" zip_file="$product_dir/$zip_file_name" - mkdir -p $PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp - echo $zip_file>$PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp/zip_file + mkdir -p $PRODUCT_DIR/dat/$RUN_UNIT/tmp + echo $zip_file>$PRODUCT_DIR/dat/$RUN_UNIT/tmp/zip_file cd $product_base_dir; cd .. ; # zip MM ops @@ -54,10 +54,10 @@ doCreateFullPackage(){ set +x test $ret -gt 0 && ( while IFS='' read f ; do ( - test -d "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'ERROR not a file: "'"$f"'"' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || ret=1 && exit 1 + test -d "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" || do_log 'ERROR not a file: "'"$f"'"' ; + test -f "$PRODUCT_DIR/$f" || ret=1 && exit 1 ); done < <(cat $include_file | egrep -v "$perl_ignore_file_pattern" | sed '/^#/ d') ); @@ -68,7 +68,7 @@ doCreateFullPackage(){ return 1 fi - test -z ${mix_data_dir:-} && mix_data_dir=$PRODUCT_INSTANCE_DIR/dat/mix + test -z ${mix_data_dir:-} && mix_data_dir=$PRODUCT_DIR/dat/mix # backup the project data dir if not running on the product itself ... test -d $mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d") || doIncreaseDate # and zip the project data dir diff --git a/src/bash/qto/funcs/pckg/create-relative-package.func.sh b/src/bash/qto/funcs/pckg/create-relative-package.func.sh index ed0b2b3b..fa8033b1 100755 --- a/src/bash/qto/funcs/pckg/create-relative-package.func.sh +++ b/src/bash/qto/funcs/pckg/create-relative-package.func.sh @@ -4,38 +4,38 @@ doCreateRelativePackage(){ mkdir -p $product_dir/dat/zip - test $? -ne 0 && do_exit 2 "Failed to create $PRODUCT_INSTANCE_DIR/dat/zip !" + test $? -ne 0 && do_exit 2 "Failed to create $PRODUCT_DIR/dat/zip !" test -z ${include_file:-} && \ - include_file="$PRODUCT_INSTANCE_DIR/met/.$env_type.$RUN_UNIT" + include_file="$PRODUCT_DIR/met/.$ENV.$RUN_UNIT" # relative file path is passed turn it to absolute one - [[ $include_file == /* ]] || include_file=$PRODUCT_INSTANCE_DIR/$include_file + [[ $include_file == /* ]] || include_file=$PRODUCT_DIR/$include_file test -f $include_file || \ do_exit 3 "did not found any deployment file paths containing deploy file @ $include_file" - tgt_env_type=$(echo `basename "$include_file"`|cut -d'.' -f2) + tgt_ENV=$(echo `basename "$include_file"`|cut -d'.' -f2) timestamp=`date "+%Y%m%d_%H%M%S"` # the last token of the include_file with . token separator - thus no points in names git_short_hash=$(git rev-parse --short HEAD) zip_file_name=$(echo $include_file | rev | cut -d. -f 1 | rev) - zip_file_name="$zip_file_name.$product_version.$tgt_env_type.$timestamp.$git_short_hash.$host_name.rel.zip" + zip_file_name="$zip_file_name.$product_version.$tgt_ENV.$timestamp.$git_short_hash.$host_name.rel.zip" zip_file="$product_dir/$zip_file_name" ret=0 while read f ; do [[ $f == '#'* ]] && continue ; - test -d "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'FATAL cannot find the file: "'"$PRODUCT_INSTANCE_DIR/$f"'" to package it' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'ERROR search for it in the '"$include_file"' ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'INFO if you need the file add it to the list file ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'INFO if you do not need the file remove it from the list file ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || ret=1 - test -f "$PRODUCT_INSTANCE_DIR/$f" && break ; + test -d "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" || do_log 'FATAL cannot find the file: "'"$PRODUCT_DIR/$f"'" to package it' ; + test -f "$PRODUCT_DIR/$f" || do_log 'ERROR search for it in the '"$include_file"' ' ; + test -f "$PRODUCT_DIR/$f" || do_log 'INFO if you need the file add it to the list file ' ; + test -f "$PRODUCT_DIR/$f" || do_log 'INFO if you do not need the file remove it from the list file ' ; + test -f "$PRODUCT_DIR/$f" || ret=1 + test -f "$PRODUCT_DIR/$f" && break ; done < <(cat $include_file) do_log "DEBUG ret is $ret " diff --git a/src/bash/qto/funcs/pckg/gmail-package.func.sh b/src/bash/qto/funcs/pckg/gmail-package.func.sh index d0f60b6d..fc1798a0 100755 --- a/src/bash/qto/funcs/pckg/gmail-package.func.sh +++ b/src/bash/qto/funcs/pckg/gmail-package.func.sh @@ -15,8 +15,8 @@ doGmailPackage(){ fi # zip_file=$(ls -r1 "$product_dir"/*.zip | head -1) - zip_file=$(cat $PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp/zip_file) - test -z "${zip_file+x}" && zip_file=$(ls -r1 "$PRODUCT_INSTANCE_DIR"/*.zip | head -1) + zip_file=$(cat $PRODUCT_DIR/dat/$RUN_UNIT/tmp/zip_file) + test -z "${zip_file+x}" && zip_file=$(ls -r1 "$PRODUCT_DIR"/*.zip | head -1) test -z "${zip_file+x}" && export exit_code=1 && do_exit " no zip file found for gmailing !!!" zip_file_name=`basename $zip_file` diff --git a/src/bash/qto/funcs/pckg/remove-package.func.sh b/src/bash/qto/funcs/pckg/remove-package.func.sh index b3aa63de..4fa3dae5 100755 --- a/src/bash/qto/funcs/pckg/remove-package.func.sh +++ b/src/bash/qto/funcs/pckg/remove-package.func.sh @@ -11,14 +11,14 @@ doRemovePackage(){ #remove the dirs as well for dir in `cat "$include_file"`; do ( - dir="$PRODUCT_INSTANCE_DIR/$dir" + dir="$PRODUCT_DIR/$dir" test -d "$dir" && cmd="rm -fRv $dir" && doRunCmdAndLog "$cmd" ); done cmd="rm -fv $include_file" && \ doRunCmdAndLog "$cmd" - echo "rm -fvr $PRODUCT_INSTANCE_DIR">>"$product_dir/remove-""$environment_name".sh + echo "rm -fvr $PRODUCT_DIR">>"$product_dir/remove-""$environment_name".sh echo "rm -fv $product_dir/remove-""$environment_name".sh>>"$product_dir/remove-""$environment_name".sh nohup bash "$product_dir/remove-""$environment_name".sh & } diff --git a/src/bash/qto/funcs/perl/check-perl-syntax.func.sh b/src/bash/qto/funcs/perl/check-perl-syntax.func.sh deleted file mode 100755 index 886b9265..00000000 --- a/src/bash/qto/funcs/perl/check-perl-syntax.func.sh +++ /dev/null @@ -1,40 +0,0 @@ -# file: src/bash/qto/funcs/perl/check-perl-syntax.func.sh -doCheckPerlSyntax(){ - - find . -name autosplit.ix | xargs rm -fv # because idempotence - declare -a ret; ret=0 - - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh - - # foreach perl file check the syntax by setting the correct INC dirs - while read -r dir ; do - - echo -e "\n start compiling $dir ..." ; - cd $PRODUCT_INSTANCE_DIR/src/perl/$dir ; - - # run the autoloader utility - find . -name '*.pm' -exec perl -MAutoSplit -e 'autosplit($ARGV[0], $ARGV[1], 0, 1, 1)' {} \; - - c=0 - # feel free to adjust to 5, more might get you the "Out of memory!" error - amount_of_perl_syntax_checks_to_run_in_parallel=1 - while read -r file ; do - c=$((c+1)) ; test $c -eq $amount_of_perl_syntax_checks_to_run_in_parallel && sleep 1 && export c=0 ; - ( - echo -e "\n ::: running: cd src/perl/qto ; perl -MCarp::Always -I `pwd` -I `pwd`/lib -wc \"$file\" ; cd -" - perl -MCarp::Always -I `pwd` -I `pwd`/lib -wc "$file" - # ret=$? ; # probably not needed ... better just to spit out the error for the - # test $ret -ne 0 && break 2 ; - )& - done < <(find "." -type f \( -name "*.pl" -or -name "*.pm" -or -name '*.t' \)) - test $ret -ne 0 && break ; - - echo -e "stop compiling $dir ... \n\n" ; - cd $PRODUCT_INSTANCE_DIR ; - - done < <(ls -1 "src/perl") - - test $ret -ne 0 && do_exit 4 "Perl syntax error" ; - - do_flush_screen -} diff --git a/src/bash/qto/funcs/perl/run-benchmarks.func.sh b/src/bash/qto/funcs/perl/run-benchmarks.func.sh index ab025f39..4df11f5f 100755 --- a/src/bash/qto/funcs/perl/run-benchmarks.func.sh +++ b/src/bash/qto/funcs/perl/run-benchmarks.func.sh @@ -8,8 +8,8 @@ doRunBenchmarks(){ export QTO_NO_AUTH=1 test -z ${qto_project:-} && \ - source "$PRODUCT_INSTANCE_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ - doParseCnfEnvVars "$PRODUCT_INSTANCE_DIR/cnf/$RUN_UNIT.$env_type.*.cnf" + source "$PRODUCT_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ + doParseCnfEnvVars "$PRODUCT_DIR/cnf/$RUN_UNIT.$ENV.*.cnf" do_log "INFO START testing controllers" while read -r f ; do diff --git a/src/bash/qto/funcs/perl/run-functional-tests.func.sh b/src/bash/qto/funcs/perl/run-functional-tests.func.sh index efeb0bf9..98894dfe 100755 --- a/src/bash/qto/funcs/perl/run-functional-tests.func.sh +++ b/src/bash/qto/funcs/perl/run-functional-tests.func.sh @@ -4,14 +4,14 @@ # implement the calls to all the functional tests # --------------------------------------------------------- doRunFunctionalTests(){ - + export QTO_NO_AUTH=1 - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_log "INFO START testing controllers" - while read -r f ; do + while read -r f ; do do_log "INFO START functional test for $f" perl $f ; test $? -ne 0 && do_exit $? " the tests in the $f failed !!!" diff --git a/src/bash/qto/funcs/perl/run-unit-tests.func.sh b/src/bash/qto/funcs/perl/run-unit-tests.func.sh old mode 100755 new mode 100644 index b448a771..6cb1ad53 --- a/src/bash/qto/funcs/perl/run-unit-tests.func.sh +++ b/src/bash/qto/funcs/perl/run-unit-tests.func.sh @@ -4,18 +4,23 @@ # --------------------------------------------------------- # call all the unit tests - fail if even one fails ... # --------------------------------------------------------- -doRunUnitTests(){ - +do_run_unit_tests(){ + export QTO_NO_AUTH=1 - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' - + export PATH=$PATH:~/perl5/bin/ + export PERL5LIB=${PERL5LIB:-}:~/perl5/lib/perl5/:$PRODUCT_DIR/src/perl/qto/t/lib:$PRODUCT_DIR/src/perl/qto/public/lib:$PRODUCT_DIR/src/perl/qto/lib + + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.app' + do_log "INFO START running the unit tests" - while read -r f ; do + while read -r f ; do do_log "INFO START unit test for $f" - perl $f + + perl -MCarp::Always \ + -I $PRODUCT_DIR/src/perl/qto/t/lib/Qto/App -I $PRODUCT_DIR/src/perl/qto/t/lib/Qto/App/lib $f test $? -ne 0 && do_exit $? " the tests in the $f failed !!!" do_log "INFO STOP unit test for $f" sleep 1 diff --git a/src/bash/qto/funcs/provision-db-users.func.sh b/src/bash/qto/funcs/provision-db-users.func.sh index d7915475..9383d6dd 100644 --- a/src/bash/qto/funcs/provision-db-users.func.sh +++ b/src/bash/qto/funcs/provision-db-users.func.sh @@ -1,9 +1,10 @@ -doSetUpDbRoles(){ - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" +#!/bin/bash + +do_setup_db_roles(){ + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; + do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" echo 'export PS1="`date "+%F %T"` \u@\h \w \\n\\n "' | sudo tee -a /var/lib/postgresql/.bashrc sudo -u root echo "postgres:$postgres_rdbms_usr_pw" | sudo chpasswd @@ -18,19 +19,19 @@ doSetUpDbRoles(){ expect eof EOF_EXPECT - + cd /tmp ; sudo -u postgres PGPASSWORD=$postgres_usr_pw psql --port $postgres_rdbms_port -d postgres --host $postgres_rdbms_host -c " DO \$\$DECLARE r record; BEGIN IF NOT EXISTS ( - SELECT + SELECT FROM pg_catalog.pg_roles WHERE rolname = '"$postgres_sys_usr_admin"') THEN - CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE + CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS PASSWORD '"$postgres_sys_usr_admin_pw"' LOGIN ; END IF; END\$\$; - ALTER ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE + ALTER ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS PASSWORD '"$postgres_sys_usr_admin_pw"' LOGIN ; " sudo -u postgres PGPASSWORD=$postgres_usr_pw psql --port $postgres_rdbms_port --host $postgres_rdbms_host -c " grant all privileges on database postgres to $postgres_sys_usr_admin" ; cd - diff --git a/src/bash/qto/funcs/provision-https.func.sh b/src/bash/qto/funcs/provision-https.func.sh index 506e648c..349ae6af 100755 --- a/src/bash/qto/funcs/provision-https.func.sh +++ b/src/bash/qto/funcs/provision-https.func.sh @@ -1,11 +1,11 @@ doProvisionHttps(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' sudo test -f /etc/letsencrypt/live/$web_host/privkey.pem && { - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh for env in `echo dev tst prd`; do \ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env.env.json '.env.app' - sudo cp -v "$PRODUCT_INSTANCE_DIR"'/cnf/nginx/etc/nginx/sites-available/%env%.https-site.conf' \ + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$env.env.json '.env.app' + sudo cp -v "$PRODUCT_DIR"'/cnf/nginx/etc/nginx/sites-available/%env%.https-site.conf' \ "/etc/nginx/sites-available/$env.https-site.conf" sudo perl -pi -e 's|\%nginx_port\%|'"$nginx_port"'|g' "/etc/nginx/sites-available/$env.https-site.conf" sudo perl -pi -e 's|\%nginx_port\%|'"$nginx_port"'|g' "/etc/nginx/sites-available/$env.http-site.conf" @@ -24,6 +24,6 @@ doProvisionHttps(){ sudo chown -R www-data:www-data /etc/nginx sudo service nginx restart sudo service nginx status - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' } } diff --git a/src/bash/qto/funcs/publish-dbdump-to-s3-public.func.sh b/src/bash/qto/funcs/publish-dbdump-to-s3-public.func.sh index f5633065..fef8d620 100644 --- a/src/bash/qto/funcs/publish-dbdump-to-s3-public.func.sh +++ b/src/bash/qto/funcs/publish-dbdump-to-s3-public.func.sh @@ -1,9 +1,9 @@ +#!/bin/bash -doPublishDbdumpToS3(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' +do_publish_db_dump_to_s3(){ + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.aws' dump_file="$(find $PROJ_INSTANCE_DIR/dat/mix/ -type f -name '*.insrts.dmp.sql'|sort -nr|head -n 1)" dump_file_name=$(basename $dump_file) diff --git a/src/bash/qto/funcs/publish-dbdump-to-s3.func.sh b/src/bash/qto/funcs/publish-dbdump-to-s3.func.sh deleted file mode 100755 index fe24b00c..00000000 --- a/src/bash/qto/funcs/publish-dbdump-to-s3.func.sh +++ /dev/null @@ -1,25 +0,0 @@ -doPublishDbdumpToS3(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' - - dump_file="$(find $PROJ_INSTANCE_DIR/dat/mix/ -type f -name '*.insrts.dmp.sql'|sort -nr|head -n 1)" - dump_file_name=$(basename $dump_file) - - export AWS_DEFAULT_PROFILE='default' - aws configure list - # remove the grants to disable full publicity of the data ... - set +x - aws s3 --profile default cp "$dump_file" "s3://$bucket/$postgres_app_db"'.latest.insrts.dmp.sql' - set -x - - cat << EOF - IF error occurs check that your aws credentials file ~/.aws/credentials looks as follws - sudo ntpdate ntp.ubuntu.com - cat ~/.aws/credentials - [default] - aws_access_key_id = BKIAID4UEECKBMVJMG55 - aws_secret_access_key = 7VB1A4tpSfnE0P22jNEFMurPy8G2n9H7lqxSEFa9 -EOF -} diff --git a/src/bash/qto/funcs/remove-action-files.func.sh b/src/bash/qto/funcs/remove-action-files.func.sh index f735b3c6..61163652 100755 --- a/src/bash/qto/funcs/remove-action-files.func.sh +++ b/src/bash/qto/funcs/remove-action-files.func.sh @@ -2,7 +2,7 @@ # v1.1.2 # --------------------------------------------------------- -# obs we assume that the caller is in the PRODUCT_INSTANCE_DIR +# obs we assume that the caller is in the PRODUCT_DIR # simply delete each file which greps finds to match to the action # name(s) configured in the : # src/bash/qto/tests/rem-qto-actions.lst diff --git a/src/bash/qto/funcs/remove-docker-containers.func.sh b/src/bash/qto/funcs/remove-docker-containers.func.sh index a07bcee1..25324fff 100755 --- a/src/bash/qto/funcs/remove-docker-containers.func.sh +++ b/src/bash/qto/funcs/remove-docker-containers.func.sh @@ -8,20 +8,20 @@ doRemoveDockerContainers(){ do_flush_screen - do_log "INFO START removing all docker containers with the $product_version.$env_type tag !!! " + do_log "INFO START removing all docker containers with the $product_version.$ENV tag !!! " do_log "INFO Are you SURE ??!! You have 3 seconds to abort by Ctrl + C !!" sleep 3 - ret=$(docker ps -a|grep -i qto-image.$env_type|awk '{print $1}'|wc -l| perl -ne 's/\s+//g;print') + ret=$(docker ps -a|grep -i qto-image.$ENV|awk '{print $1}'|wc -l| perl -ne 's/\s+//g;print') if test $ret -eq 0 then do_log "INFO No docker containers found. Nothing to do !!!" else do_log "INFO stopping containers ..." - docker stop $(docker ps -a|grep -i qto-image:$product_version.$env_type|awk '{print $1}') + docker stop $(docker ps -a|grep -i qto-image:$product_version.$ENV|awk '{print $1}') sleep 1 do_log "INFO removing containers ..." - docker rm $(docker ps -a|grep -i qto-image:$product_version.$env_type|awk '{print $1}') + docker rm $(docker ps -a|grep -i qto-image:$product_version.$ENV|awk '{print $1}') fi do_log "INFO STOP removing all docker containers" diff --git a/src/bash/qto/funcs/remove-docker-images.func.sh b/src/bash/qto/funcs/remove-docker-images.func.sh index cbd82c3c..bf8f7b18 100755 --- a/src/bash/qto/funcs/remove-docker-images.func.sh +++ b/src/bash/qto/funcs/remove-docker-images.func.sh @@ -16,12 +16,12 @@ doRemoveDockerImages(){ do_log "INFO Are you SURE ??!! You have 3 seconds to abort by Ctrl + C !!" sleep 3 - ret=$(docker images|grep qto-image|grep $product_version.$env_type|awk '{print $3}'|wc -l|perl -ne 's/\s+//g;print') + ret=$(docker images|grep qto-image|grep $product_version.$ENV|awk '{print $3}'|wc -l|perl -ne 's/\s+//g;print') if test $ret -eq 0 then do_log "INFO No docker images found. Nothing to do !!!" else - docker rmi $(docker images | grep qto-image | grep $product_version.$env_type |awk '{print $3}') + docker rmi $(docker images | grep qto-image | grep $product_version.$ENV |awk '{print $3}') fi do_log "INFO STOP removing all the docker images" diff --git a/src/bash/qto/funcs/run-adhoc-pgsql-scripts.func.sh b/src/bash/qto/funcs/run-adhoc-pgsql-scripts.func.sh index bd44cd4a..8dd5573a 100644 --- a/src/bash/qto/funcs/run-adhoc-pgsql-scripts.func.sh +++ b/src/bash/qto/funcs/run-adhoc-pgsql-scripts.func.sh @@ -1,20 +1,20 @@ doRunAdhocPgsqlScripts(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PROJ_INSTANCE_DIR/src/sql/pgsql/ad-hoc" sleep 3 ; do_flush_screen ; echo -e "should run the following files: \n\n" ; find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n # run the sql scripts in alphabetical order - hence the file naming convention - while read -r sql_script ; do + while read -r sql_script ; do tmp_log_file="$tmp_dir/run-adhoc-pgsql-scripts.$$.log" relative_sql_script=$(echo $sql_script|perl -ne "s|$PROJ_INSTANCE_DIR\/||g;print") do_log "INFO START ::: running $relative_sql_script" ; echo -e '\n\n' perl -pi -e 's|-- DROP|DROP|g' $sql_script # drop and create the objects - + echo running: psql -v ON_ERROR_STOP=1 -q -t -X -w \ -h $postgres_rdbms_host -p $postgres_rdbms_port -U "${postgres_sys_usr_admin:-}" \ -f "$sql_script" "$postgres_app_db" @@ -24,15 +24,15 @@ doRunAdhocPgsqlScripts(){ ret=$? perl -pi -e 's|DROP|-- DROP|g' $relative_sql_script - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && sleep 3 test $ret -ne 0 && do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" test $ret -ne 0 && break - + echo -e '\n\n'; do_flush_screen ; do_log "INFO STOP ::: running $relative_sql_script" rm -f tmp_log_file done < <(find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n) - - do_flush_screen ; + + do_flush_screen ; } diff --git a/src/bash/qto/funcs/run-container.func.sh b/src/bash/qto/funcs/run-container.func.sh index 7eec314c..64b12d33 100755 --- a/src/bash/qto/funcs/run-container.func.sh +++ b/src/bash/qto/funcs/run-container.func.sh @@ -5,20 +5,20 @@ doRunContainer(){ do_log "DEBUG START doRunContainer" test -z ${qto_project:-} && \ - source "$PRODUCT_INSTANCE_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ - doParseCnfEnvVars $PRODUCT_INSTANCE_DIR/cnf/$RUN_UNIT.$env_type.$host_name.cnf + source "$PRODUCT_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ + doParseCnfEnvVars $PRODUCT_DIR/cnf/$RUN_UNIT.$ENV.$host_name.cnf - tgt_PRODUCT_INSTANCE_DIR='/opt/csitea/'"$RUN_UNIT/$environment_name" - chmod 777 $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/docker-entry-point.sh + tgt_PRODUCT_DIR='/opt/csitea/'"$RUN_UNIT/$environment_name" + chmod 777 $PRODUCT_DIR/src/bash/qto/install/docker/docker-entry-point.sh container_name='qto-container-'$(date "+%Y%m%d_%H%M%S") docker run -d --name $container_name \ - -e PRODUCT_INSTANCE_DIR=$tgt_PRODUCT_INSTANCE_DIR \ + -e PRODUCT_DIR=$tgt_PRODUCT_DIR \ -e host_host_name=$(hostname -s) \ - -v $PRODUCT_INSTANCE_DIR:$tgt_PRODUCT_INSTANCE_DIR \ - -p 127.0.0.1:${mojo_morbo_port:-}:$mojo_morbo_port \ - 'qto-image':${product_version:-}.$env_type + -v $PRODUCT_DIR:$tgt_PRODUCT_DIR \ + -p 127.0.0.1:${MOJO_MORBO_PORT:-}:$MOJO_MORBO_PORT \ + 'qto-image':${product_version:-}.$ENV # -p 127.0.0.1:${postgres_rdbms_port:-}:$postgres_rdbms_port \ diff --git a/src/bash/qto/funcs/run-integration-tests.func.sh b/src/bash/qto/funcs/run-integration-tests.func.sh index 87a3f0d4..20671faa 100755 --- a/src/bash/qto/funcs/run-integration-tests.func.sh +++ b/src/bash/qto/funcs/run-integration-tests.func.sh @@ -1,19 +1,20 @@ +#!/bin/bash # src/bash/qto/funcs/run-integration-tests.func.sh doRunIntegrationTests(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.app' - bash src/bash/qto/qto.sh -a mojo-morbo-stop - bash src/bash/qto/qto.sh -a mojo-morbo-start + bash src/bash/qto/qto.sh -a mojo-morbo-stop + bash src/bash/qto/qto.sh -a mojo-morbo-start #test $? -ne 0 && return do_log "INFO make a backup of the current db - inserts only " bash src/bash/qto/qto.sh -a backup-postgres-db-inserts - - do_log "INFO re-create the $env_type db" + + do_log "INFO re-create the $ENV db" bash src/bash/qto/qto.sh -a run-pgsql-scripts last_db_backup_file=$(find $PROJ_INSTANCE_DIR/dat/mix -name $postgres_app_db*insrts.dmp.sql | sort -n | tail -n 1) @@ -25,12 +26,12 @@ doRunIntegrationTests(){ do_log "INFO generating md docs" bash src/bash/qto/qto.sh -a generate-md-docs test $? -ne 0 && return - - do_log "INFO START integration testing - do run all the implemented action tests" + + do_log "INFO START integration testing - do run all the implemented action tests" perl src/perl/qto/t/TestQto.pl test $? -ne 0 && return - echo -e "\n\n\n" - + echo -e "\n\n\n" + } # eof file: src/bash/qto/funcs/run-integration-tests.func.sh diff --git a/src/bash/qto/funcs/run-js-unit-tests.func.sh b/src/bash/qto/funcs/run-js-unit-tests.func.sh index 253956da..0c9413c0 100755 --- a/src/bash/qto/funcs/run-js-unit-tests.func.sh +++ b/src/bash/qto/funcs/run-js-unit-tests.func.sh @@ -12,9 +12,9 @@ doRunJsUnitTests(){ # sudo npm install -g --save-dev chrome-remote-interface # which chai 2>/dev/null || \ # { echo >&2 "The chai is missing - \"sudo npm install -g --save-dev chai \" ! Aborting ..."; exit 1; } - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh - js_unit_tests_dir="$PRODUCT_INSTANCE_DIR/src/js/node/js-unit-tests" + js_unit_tests_dir="$PRODUCT_DIR/src/js/node/js-unit-tests" cd $js_unit_tests_dir while read -r d ; do echo -e "cd to dir: $d" diff --git a/src/bash/qto/funcs/run-pgsql-scripts.func.sh b/src/bash/qto/funcs/run-pgsql-scripts.func.sh index 0077a849..d8cb0b9c 100755 --- a/src/bash/qto/funcs/run-pgsql-scripts.func.sh +++ b/src/bash/qto/funcs/run-pgsql-scripts.func.sh @@ -1,9 +1,9 @@ doRunPgsqlScripts(){ - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" - pgsql_scripts_dir="$PRODUCT_INSTANCE_DIR/src/sql/pgsql/qto" + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + + pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" tmp_log_file="$tmp_dir/.$$.log" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" @@ -12,12 +12,12 @@ doRunPgsqlScripts(){ echo -e "should run the following files: \n\n" ; find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n # run the sql scripts in alphabetical order - hence the file naming convention - while read -r sql_script ; do + while read -r sql_script ; do relative_sql_script=$(echo $sql_script|perl -ne "s|$PROJ_INSTANCE_DIR\/||g;print") do_log "INFO START ::: running $relative_sql_script" ; echo -e '\n\n' perl -pi -e 's|-- DROP|DROP|g' $sql_script # drop and create the objects - + set -x PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -v ON_ERROR_STOP=1 -q -t -X -w \ -h $postgres_rdbms_host -p $postgres_rdbms_port -U "${postgres_sys_usr_admin:-}" \ @@ -27,7 +27,7 @@ doRunPgsqlScripts(){ set +x perl -pi -e 's|DROP|-- DROP|g' $relative_sql_script - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && sleep 3 test $ret -ne 0 && do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" test $ret -ne 0 && break @@ -35,6 +35,6 @@ doRunPgsqlScripts(){ echo -e '\n\n'; do_flush_screen ; do_log "INFO STOP ::: running $relative_sql_script" done < <(find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n) - - do_flush_screen ; + + do_flush_screen ; } diff --git a/src/bash/qto/funcs/run-qto-db-ddl.func.sh b/src/bash/qto/funcs/run-qto-db-ddl.func.sh index cff67bac..a826e028 100755 --- a/src/bash/qto/funcs/run-qto-db-ddl.func.sh +++ b/src/bash/qto/funcs/run-qto-db-ddl.func.sh @@ -1,15 +1,16 @@ -doRunQtoDbDdl(){ +#!/bin/bash - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" +do_run_qto_db_ddl(){ + + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" sleep 3; # 00 create the db tmp_log_file="$tmp_dir/.$$.log" - pgsql_scripts_dir="$PRODUCT_INSTANCE_DIR/src/sql/pgsql/qto" + pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" sql_script="$pgsql_scripts_dir/00.create-db.pgsql" PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -v -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ @@ -17,11 +18,11 @@ doRunQtoDbDdl(){ -v postgres_app_db="${postgres_app_db:-}" \ -f "$sql_script" postgres > "$tmp_log_file" 2>&1 ret=$? - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it - test $ret -ne 0 && { + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + test $ret -ne 0 && { sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" ; break ; } - + doRunPgsqlScripts # 01 create / modify the app user sql_script="$pgsql_scripts_dir/01.create-qto-app-user.pgsql" @@ -34,10 +35,10 @@ doRunQtoDbDdl(){ -f "$sql_script" "${postgres_app_db:-}" > "$tmp_log_file" 2>&1 ret=$? - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && { - sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; - } + sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; + } PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ -h $postgres_rdbms_host -p $postgres_rdbms_port -d postgres -v ON_ERROR_STOP=1 -c \ "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; diff --git a/src/bash/qto/funcs/search-and-replace-tokens.func.sh b/src/bash/qto/funcs/search-and-replace-tokens.func.sh index 28071f7c..259116a6 100644 --- a/src/bash/qto/funcs/search-and-replace-tokens.func.sh +++ b/src/bash/qto/funcs/search-and-replace-tokens.func.sh @@ -1,6 +1,6 @@ doSearchAndReplaceTokens(){ - test -d $dir || dir=$PRODUCT_INSTANCE_DIR/src/sql/ + test -d $dir || dir=$PRODUCT_DIR/src/sql/ while read -r l ; do to_srch=$(echo $l|awk '{print $1}') diff --git a/src/bash/qto/funcs/set-up-py-v-env.func.sh b/src/bash/qto/funcs/set-up-py-v-env.func.sh index ac8840da..ae22660c 100644 --- a/src/bash/qto/funcs/set-up-py-v-env.func.sh +++ b/src/bash/qto/funcs/set-up-py-v-env.func.sh @@ -12,22 +12,22 @@ doSetupPyVEnv(){ } pip3 install virtualenv ; python3 -m venv ./venv - pip3 install -r $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + pip3 install -r $PRODUCT_DIR/cnf/bin/python/requirements.txt sleep 1 ; do_flush_screen - installed_python_modules=$(cat $PRODUCT_INSTANCE_DIR/cnf/python/requirements.txt) + installed_python_modules=$(cat $PRODUCT_DIR/cnf/python/requirements.txt) cat << EOF attempted to install the following python modules: $installed_python_modules listed in the following file: - $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + $PRODUCT_DIR/cnf/bin/python/requirements.txt # to activate the virtual environment - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR source ./venv/bin/activate # you MIGHT have to - pip3 install -r $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + pip3 install -r $PRODUCT_DIR/cnf/bin/python/requirements.txt # to exit the venv, run the following cmd: deactivate diff --git a/src/bash/qto/funcs/spawn-aws-ec2.func.sh b/src/bash/qto/funcs/spawn-aws-ec2.func.sh index 79536ebc..fcaca5cc 100644 --- a/src/bash/qto/funcs/spawn-aws-ec2.func.sh +++ b/src/bash/qto/funcs/spawn-aws-ec2.func.sh @@ -1,8 +1,8 @@ doSpawnAwsEc2(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' mkdir -p $PROJ_INSTANCE_DIR/src/terraform/qto @@ -13,7 +13,7 @@ doSpawnAwsEc2(){ sudo timedatectl set-ntp no; timedatectl sudo service ntp stop ; sudo service ntp start; ntpq -p - + export key_name=$(basename `eval echo ${private_ssh_key_fpath:-}`) export public_ssh_key_fpath=$(eval echo ${public_ssh_key_fpath:-}) export public_ssh_key_content=$(cat ${public_ssh_key_fpath:-}) diff --git a/src/bash/qto/funcs/sys/tmux/restore-tmux-session.func.sh b/src/bash/qto/funcs/sys/tmux/restore-tmux-session.func.sh index 50b845ab..35854cef 100755 --- a/src/bash/qto/funcs/sys/tmux/restore-tmux-session.func.sh +++ b/src/bash/qto/funcs/sys/tmux/restore-tmux-session.func.sh @@ -7,7 +7,7 @@ # restores a tmux session # --------------------------------------------------------- doRestoreTmuxSession(){ - source "$PRODUCT_INSTANCE_DIR/src/bash/qto/funcs/sys/tmux/tmux-common.sh" + source "$PRODUCT_DIR/src/bash/qto/funcs/sys/tmux/tmux-common.sh" doCheckTmuxIsInstalled set +e local count=0 diff --git a/src/bash/qto/funcs/unscramble-confs.func.sh b/src/bash/qto/funcs/unscramble-confs.func.sh index 4b739d67..40c3b90a 100755 --- a/src/bash/qto/funcs/unscramble-confs.func.sh +++ b/src/bash/qto/funcs/unscramble-confs.func.sh @@ -3,6 +3,6 @@ doUncrambleConfs(){ test -f $file.bak || continue test -f $file.bak && cp -v $file.bak $file test -f $file.bak && rm -v $file.bak - done < <(find $PRODUCT_INSTANCE_DIR/cnf/env/ -type f -name '*.json') + done < <(find $PRODUCT_DIR/cnf/env/ -type f -name '*.json') exit 0 } diff --git a/src/bash/qto/install/docker/docker-entry-point.sh b/src/bash/qto/install/docker/docker-entry-point.sh index b501dbc9..c67c87a4 100755 --- a/src/bash/qto/install/docker/docker-entry-point.sh +++ b/src/bash/qto/install/docker/docker-entry-point.sh @@ -2,20 +2,20 @@ RUN_UNIT_bash_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") cd $RUN_UNIT_bash_dir -for i in {1..5} ; do cd .. ; done ; export PRODUCT_INSTANCE_DIR=`pwd`; -source $PRODUCT_INSTANCE_DIR/.env +for i in {1..5} ; do cd .. ; done ; export PRODUCT_DIR=`pwd`; +source $PRODUCT_DIR/.env # comment out the sudo right from the app user perl -pi -e 's/^(.*)'"$USER"'(.*$\n)/\#$1'"$USER"'$2/gm' /etc/sudoers sudo sh /etc/init.d/postgresql start -bash $PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh -a run-pgsql-scripts +bash $PRODUCT_DIR/src/bash/qto/qto.sh -a run-pgsql-scripts # todo:ysg # run the DDL scripts # laad the data -bash $PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh -a mojo-morbo-start +bash $PRODUCT_DIR/src/bash/qto/qto.sh -a mojo-morbo-start while true; do sleep 1000; done; diff --git a/src/bash/qto/install/docker/install-postgres.sh b/src/bash/qto/install/docker/install-postgres.sh index e8e65814..bb86bf95 100755 --- a/src/bash/qto/install/docker/install-postgres.sh +++ b/src/bash/qto/install/docker/install-postgres.sh @@ -35,12 +35,12 @@ sudo -u postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "dblink";' psql_cnf_dir='/etc/postgresql/11/main' test -f $psql_cnf_dir/pg_hba.conf && \ sudo cp -v $psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf.orig.bak && \ - sudo cp -v $PRODUCT_INSTANCE_DIR/cnf/postgres/$psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf && \ + sudo cp -v $PRODUCT_DIR/cnf/postgres/$psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf && \ sudo chown postgres:postres $psql_cnf_dir test -f $psql_cnf_dir/postgresql.conf && \ sudo cp -v $psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf.orig && \ - sudo cp -v $PRODUCT_INSTANCE_DIR/cnf/postgres/$psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf + sudo cp -v $PRODUCT_DIR/cnf/postgres/$psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf chown -R postgres:postgres "/etc/postgresql" && \ chown -R postgres:postgres "/var/lib/postgresql" && \ diff --git a/src/bash/qto/install/docker/install-test.sh b/src/bash/qto/install/docker/install-test.sh index 0f9ea2c3..a705d94f 100755 --- a/src/bash/qto/install/docker/install-test.sh +++ b/src/bash/qto/install/docker/install-test.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash set -x -echo from install-test PRODUCT_INSTANCE_DIR: $PRODUCT_INSTANCE_DIR +echo from install-test PRODUCT_DIR: $PRODUCT_DIR echo from install-test hostname $host_host_name diff --git a/src/bash/qto/qto.sh b/src/bash/qto/qto.sh deleted file mode 100755 index 84422ace..00000000 --- a/src/bash/qto/qto.sh +++ /dev/null @@ -1,379 +0,0 @@ -#!/usr/bin/env bash -# file: src/bash/qto.sh doc at the eof file - -#------------------------------------------------------------------------------ -# the main shell entry point of the qto application -#------------------------------------------------------------------------------ -main(){ - do_init - - dir=0;actions='' - - while getopts "a:d:f:t:" opt; do - case $opt in - a) actions="${actions}$OPTARG ";; - t) table=("$OPTARG ");; - f) file=("$OPTARG ");; - d) dir=("$OPTARG ");; - \?) do_exit 2 "Invalid option: -$OPTARG";; - :) do_exit 2 "Option -$OPTARG requires an argument." - esac - done - shift $((OPTIND -1)) - - do_set_vars - do_check_required - test -z "${actions:-}" && actions=' print-usage ' - do_run_actions "$actions" - test -d $PRODUCT_INSTANCE_DIR/.git/hooks/ && do_check_git_hooks - do_exit $exit_code "# ::: Shell script run completed ::: $RUN_UNIT " -} - - -#------------------------------------------------------------------------------ -# the "reflection" func - identify the the funcs per file -#------------------------------------------------------------------------------ -get_function_list () { - env -i PATH=/bin:/usr/bin:/usr/local/bin bash --noprofile --norc -c ' - source "'"$1"'" - typeset -f | - grep '\''^[^{} ].* () $'\'' | - awk "{print \$1}" | - while read -r function_name; do - type "$function_name" | head -n 1 | grep -q "is a function$" || continue - echo "$function_name" - done - ' -} - - -# -#------------------------------------------------------------------------------ -# run only the actions passed with the -a <> -#------------------------------------------------------------------------------ -do_run_actions(){ - actions=$1 - test -z ${PROJ_INSTANCE_DIR:-} && PROJ_INSTANCE_DIR=$PRODUCT_INSTANCE_DIR - daily_backup_dir="$PROJ_INSTANCE_DIR/dat/mix/"$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d") - cd $PRODUCT_INSTANCE_DIR - actions="$(echo -e "${actions}"|sed -e 's/^[[:space:]]*//')" #or how-to trim leading space - run_funcs='' - while read -d ' ' arg_action ; do - #debug arg_action:$arg_action ; sleep 2 - while read -r func_file ; do - # debug func func_file:$func_file - while read -r function_name ; do - # debug function_name:$function_name - action_name=`echo $(basename $func_file)|sed -e 's/.func.sh//g'` - # debug action_name: $action_name - test "$action_name" != "$arg_action" && continue - test "$action_name" == "$arg_action" && run_funcs="$(echo -e "${run_funcs}\n$function_name")" - #debug run_funcs: $run_funcs ; sleep 3 - done< <(get_function_list "$func_file") - done < <(find "src/bash/$RUN_UNIT/funcs" -type f -name '*.sh'|sort) - - [[ $arg_action == to-ver=* ]] && run_funcs="$(echo -e "$run_funcs\ndoChangeVersion $arg_action")" - [[ $arg_action == to-env=* ]] && run_funcs="$(echo -e "$run_funcs\ndoChangeEnvType $arg_action")" - [[ $arg_action == cp-to-env=* ]] && run_funcs="$(echo -e "$run_funcs\ndoCpToEnv $arg_action")" - [[ $arg_action == to-app=* ]] && run_funcs="$(echo -e "$run_funcs\ndoCloneToApp $arg_action")" - done < <(echo "$actions") - - run_funcs="$(echo -e "${run_funcs}"|sed -e 's/^[[:space:]]*//')" - while read -r run_func ; do - #debug run_funcs: $run_funcs ; sleep 3 - cd $PRODUCT_INSTANCE_DIR - do_log "INFO START ::: running action :: $run_func" - $run_func - exit_code=$? - if [[ "$exit_code" != "0" ]]; then - exit $exit_code - fi - do_log "INFO STOP ::: running function :: $run_func" - done < <(echo "$run_funcs") - - test -d "$daily_backup_dir" || doBackupPostgresDb - -} - - -#------------------------------------------------------------------------------ -# register the run-time vars before the call of the $0 -#------------------------------------------------------------------------------ -do_init(){ - - # set -x # print the commands - # set -v # print each input line as well - # exit the script if any statement returns a non-true return value. gotcha !!! - # set -e # src: http://mywiki.wooledge.org/BashFAQ/105 - umask 022 ; - set -u -o pipefail - call_start_dir=`pwd` - run_unit_bash_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") - tmp_dir="$run_unit_bash_dir/tmp/.tmp.$$" - mkdir -p "$tmp_dir" - ( set -o posix ; set )| sort >"$tmp_dir/vars.before" - my_name_ext=`basename $0` - RUN_UNIT=${my_name_ext%.*} - host_name=$(hostname -s) - export sleep_interval="${sleep_interval:=0}" - export exit_code=1 -} - - -#------------------------------------------------------------------------------ -# usage example: -# do_apply_shell_expansion /tmp/docker-compose.yml -#------------------------------------------------------------------------------ -do_apply_shell_expansion() { - declare file="$1" - shift 1; - test -f "$file" || do_exit 1 "do_apply_shell_expansion: the file: $file does not exist !!! Nothing to do" - perl -wpe 's#\${?(\w+)}?# $ENV{$1} // $& #ge;' $file -} - - -# ------------------------------------------------------------------------------ -# perform the checks to ensure that all the vars needed to run are set -# ------------------------------------------------------------------------------ -do_check_required(){ - - test -f ${cnf_file-} || doCreateDefaultConfFile - - echo 'checking for the required binaries ...' - command -v zip 2>/dev/null || { echo >&2 "The zip binary is missing ! Aborting ..."; exit 1; } - command -v unzip 2>/dev/null || { echo >&2 "The unzip binary is missing ! Aborting ..."; exit 1; } - which perl 2>/dev/null || { echo >&2 "The perl binary is missing ! Aborting ..."; exit 1; } - which grep 2>/dev/null || { echo >&2 "The grep binary is missing ! Aborting ..."; exit 1; } - which sed 2>/dev/null || { echo >&2 "The sed binary is missing ! Aborting ..."; exit 1; } - which awk 2>/dev/null || { echo >&2 "The awk binary is missing ! Aborting ..."; exit 1; } - which jq 2>/dev/null || { echo >&2 "The jq binary is missing ! Aborting ..."; exit 1; } - echo 'OK' ; printf "\n" - - if [[ "$OSTYPE" == "darwin"* ]]; then - export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH" - export PATH="/usr/local/opt/grep/libexec/gnubin/:$PATH" - fi -} - - -trap "exit 1" TERM -export TOP_PID=$$ - - -# ------------------------------------------------------------------------------ -# clean and exit with passed status and message -# call by: -# do_exit 0 "OK msg" -# do_exit 1 "NOK msg" -# ------------------------------------------------------------------------------ -do_exit(){ - exit_code=$1 ; shift - exit_msg="$*" - - if (( ${exit_code:-} != 0 )); then - exit_msg=" ERROR --- exit_code $exit_code --- exit_msg : $exit_msg" - >&2 echo "$exit_msg" - do_log "FATAL STOP FOR $RUN_UNIT RUN with: " - do_log "FATAL exit_code: $exit_code exit_msg: $exit_msg" - else - do_log "INFO STOP FOR $RUN_UNIT RUN with: " - do_log "INFO STOP FOR $RUN_UNIT RUN: $exit_code $exit_msg" - fi - - rm -rf "$run_unit_bash_dir/tmp" #clear the tmpdir - cd $call_start_dir - - test $exit_code -ne 0 && kill -s TERM "$TOP_PID" && exit $exit_code - test $exit_code -eq 0 && exit 0 -} - - -#------------------------------------------------------------------------------ -# echo pass params and print them to a log file and terminal -# with timestamp and $host_name and $0 PID -# usage: -# do_log "INFO some info message" -# do_log "DEBUG some debug message" -#------------------------------------------------------------------------------ -do_log(){ - type_of_msg=$(echo $*|cut -d" " -f1) - msg="$(echo $*|cut -d" " -f2-)" - - [[ $type_of_msg == DEBUG ]] && [[ ${do_print_debug_msgs-} -ne 1 ]] && return - [[ $type_of_msg == INFO ]] && type_of_msg="INFO " - - # print to the terminal if we have one - test -t 1 && echo " [$type_of_msg] `date "+%Y.%m.%d-%H:%M:%S %Z"` [$RUN_UNIT][@$host_name] [$$] $msg " - - # define default log file none specified in cnf file - test -z ${log_file:-} && \ - mkdir -p $PRODUCT_INSTANCE_DIR/dat/log/bash && \ - log_file="$PRODUCT_INSTANCE_DIR/dat/log/bash/$RUN_UNIT.`date "+%Y%m"`.log" - echo " [$type_of_msg] `date "+%Y.%m.%d-%H:%M:%S %Z"` [$RUN_UNIT][@$host_name] [$$] $msg " >> $log_file -} - - -#------------------------------------------------------------------------------ -# run a command and log the call and its output to the log_file -# doPrintHelp: doRunCmdAndLog "$cmd" -#------------------------------------------------------------------------------ -doRunCmdAndLog(){ - cmd="$*" ; - do_log "DEBUG running cmd and log: \"$cmd\"" - - msg=$($cmd 2>&1) - ret_cmd=$? - error_msg=": Failed to run the command: - \"$cmd\" with the output: - \"$msg\" !!!" - - [ $ret_cmd -eq 0 ] || do_log "$error_msg" - do_log "DEBUG : cmdoutput : \"$msg\"" -} - - -# v0.7.1 -#------------------------------------------------------------------------------ -# run a command on failure exit with message -# doPrintHelp: doRunCmdOrExit "$cmd" -# call by: -# set -e ; doRunCmdOrExit "$cmd" ; set +e -#------------------------------------------------------------------------------ -doRunCmdOrExit(){ - cmd=$* ; - - do_log "DEBUG running cmd or exit: "$cmd - msg=$($cmd 2>&1) - export exit_code=$? - - # if occured during the execution exit with error - error_msg="Failed to run the command: - \"$cmd\" with the output: - \"$msg\" !!!" - - if [ $exit_code -ne 0 ] ; then - do_log "ERROR $msg" - do_log "FATAL $msg" - do_exit "$exit_code" "$error_msg" - else - #if no errors occured just log the message - do_log "DEBUG : cmdoutput : "$msg - do_log "INFO "$msg - fi - -} - - -do_set_vars(){ - - cd $run_unit_bash_dir - for i in {1..3} ; do cd .. ; done ; - - export PRODUCT_INSTANCE_DIR=`pwd`; - export environment_name=$(basename "$PRODUCT_INSTANCE_DIR") - - cd $PRODUCT_INSTANCE_DIR # on AWS looks similar to /home/ubuntu/opt/qto/qto.0.8.6.dev.ubuntu@ip-111-11-1-111 - - source $PRODUCT_INSTANCE_DIR/.env - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh - export -f do_export_json_section_vars # exporting this function to sub-processes - export -f do_flush_screen - - export product_version=$VERSION - export env_type=$ENV_TYPE - - if [ "$environment_name" == "$RUN_UNIT" ]; then - product_dir=$PRODUCT_INSTANCE_DIR - else - cd .. ; product_dir=`pwd`; - fi - test -z "$env_type" && export env_type='dev' - cd .. ; product_base_dir=`pwd`; org_name=$(basename `pwd`) # /home/ubuntu/opt - - ( set -o posix ; set ) | sort >"$tmp_dir/vars.after" - - do_log "INFO # --------------------------------------" - do_log "INFO # ::: START MAIN ::: $RUN_UNIT" - do_log "INFO # --------------------------------------" - - exit_code=0 - do_log "INFO using the following variables:" - cmd="$(comm -3 $tmp_dir/vars.before $tmp_dir/vars.after | perl -ne 's#\s+##g;print "\n $_ "' )" - echo -e "$cmd" - vars=$(echo -e "$cmd"); do_log "$vars" - - while read -r func_file ; do source "$func_file" ; done < <(find $PRODUCT_INSTANCE_DIR -name "*func.sh") - do_flush_screen - -} - - -# basically there are very few reason why you should be able to change the src code -# on a non-working instance, thus to prevent regression tests each commit runs them -# locally -do_check_git_hooks(){ - - # check deploy the pre-commit and pre-push hooks - if [[ ! -f $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit || ! -f $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push ]];then - cp -v $PRODUCT_INSTANCE_DIR/cnf/git/hooks/* $PRODUCT_INSTANCE_DIR/.git/hooks/ - chmod -R 770 $PRODUCT_INSTANCE_DIR/.git/hooks/ - fi - - # if the hooks exists, but someone DELIBERATELY AND EXPLICITLY removed the run-functional-tests - RE-ADD them - test "$(grep -c 'run-functional-tests' $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit)" -lt 1 && { - echo " - ./src/bash/qto/qto.sh -a run-functional-tests - " >> $PRODUCT_INSTANCE_DIR/.git/hooks/pre-commit - } - # if the hooks exists, but someone DELIBERATELY AND EXPLICITLY removed the unscramble confs re-add them - test "$(grep -c 'unscramble-confs' $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push)" -lt 1 && { - echo " - ./src/bash/qto/qto.sh -a unscramble-confs - " >> $PRODUCT_INSTANCE_DIR/.git/hooks/pre-push - } - -} - - -# Action !!! -main "$@" - -# -#---------------------------------------------------------- -# Purpose: -# the main entry point of the app - runs shell actions -# -a <> which a doRunShellAction func -# stored in the src/bash/qto/funcs/run-shell-action.func.sh -#---------------------------------------------------------- -# a vars -# ${VAR:=default_value} -# var=10 ; if ! ${var+false};then echo "is set";else echo "NOT set";fi # prints is set -# unset var ; if ! ${var+false};then echo "is set";else echo "NOT set";fi # prints NOT set -# +--------------------+----------------------+-----------------+-----------------+ -# | | parameter | parameter | parameter | -# | | Set and Not Null | Set But Null | Unset | -# +--------------------+----------------------+-----------------+-----------------+ -# | ${parameter:-word} | substitute parameter | substitute word | substitute word | -# | ${parameter-word} | substitute parameter | substitute null | substitute word | -# | ${parameter:=word} | substitute parameter | assign word | assign word | -# | ${parameter=word} | substitute parameter | substitute null | assign word | -# | ${parameter:?word} | substitute parameter | error, exit | error, exit | -# | ${parameter?word} | substitute parameter | substitute null | error, exit | -# | ${parameter:+word} | substitute word | substitute null | substitute null | -# | ${parameter+word} | substitute word | substitute word | substitute null | -# +--------------------+----------------------+-----------------+-----------------+ -# -# ${var+blahblah}: if var is defined, 'blahblah' is substituted for the expression, else null is -# substituted -# ${var-blahblah}: if var is defined, it is itself substituted, else 'blahblah' is substituted -# ${var?blahblah}: if var is defined, it is substituted, else the function exists with 'blahblah' as -# an error message. -#---------------------------------------------------------- -# EXIT CODES -# 0 --- Successfull completion -# 1 --- error -#---------------------------------------------------------- -# -# -#eof file src/bash/qto/qto.sh diff --git a/src/bash/qto/scripts/web-to-db-upsert.sh b/src/bash/qto/scripts/web-to-db-upsert.sh index c1793e3d..ed985c61 100644 --- a/src/bash/qto/scripts/web-to-db-upsert.sh +++ b/src/bash/qto/scripts/web-to-db-upsert.sh @@ -2,7 +2,7 @@ if [ \( "$1" = '--usage' \) -o \( "$1" = '' \) -o \( "$1" = '--help' \) ] then - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen url='https://qto.fi:442/qto/select/monthly_issues_202005?oa=prio&with=app_users_guid-eq-02d16010-20af-4b0d-be86-cdf116a7d8c7' diff --git a/src/bash/qto/test-qto.sh b/src/bash/qto/test-qto.sh index 0f09d71f..80a0ce94 100755 --- a/src/bash/qto/test-qto.sh +++ b/src/bash/qto/test-qto.sh @@ -52,13 +52,13 @@ get_function_list() { # run all the actions #------------------------------------------------------------------------------ doRunTests(){ - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR do_logTestRunEntry 'INIT' do_log "INFO actions list file: - $PRODUCT_INSTANCE_DIR/src/bash/qto/tests/run-qto-tests.lst" + $PRODUCT_DIR/src/bash/qto/tests/run-qto-tests.lst" do_log "INFO running the following actions : " - cat $PRODUCT_INSTANCE_DIR/src/bash/qto/tests/run-qto-tests.lst | grep -v '#' + cat $PRODUCT_DIR/src/bash/qto/tests/run-qto-tests.lst | grep -v '#' sleep 1 while read -r action ; do ( @@ -99,7 +99,7 @@ doRunTests(){ done < <(find src/bash/qto/tests -type f -name '*.sh') ); - done < <(cat $PRODUCT_INSTANCE_DIR/src/bash/qto/tests/run-qto-tests.lst) + done < <(cat $PRODUCT_DIR/src/bash/qto/tests/run-qto-tests.lst) do_logTestRunEntry 'STATUS' } @@ -179,8 +179,8 @@ do_log(){ # define default log file none specified in cnf file test -z $log_file && \ - mkdir -p $PRODUCT_INSTANCE_DIR/dat/log/bash && \ - log_file="$PRODUCT_INSTANCE_DIR/dat/log/bash/$RUN_UNIT_TESTER.`date "+%Y%m"`.log" + mkdir -p $PRODUCT_DIR/dat/log/bash && \ + log_file="$PRODUCT_DIR/dat/log/bash/$RUN_UNIT_TESTER.`date "+%Y%m"`.log" echo " [$type_of_msg] `date "+%Y.%m.%d-%H:%M:%S"` [$RUN_UNIT_TESTER][@$host_name] [$$] $msg " >> $log_file } #eof func do_log @@ -255,11 +255,11 @@ doRunCmdOrExit(){ doSetVars(){ cd $wrap_bash_dir for i in {1..3} ; do cd .. ; done ; - export PRODUCT_INSTANCE_DIR=`pwd`; + export PRODUCT_DIR=`pwd`; # add the do_logTestRunEntry func - source "$PRODUCT_INSTANCE_DIR/src/bash/qto/funcs/log-test-run-entry.func.sh" - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source "$PRODUCT_DIR/src/bash/qto/funcs/log-test-run-entry.func.sh" + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh # include all the func files to fetch their funcs while read -r test_file ; do . "$test_file" ; done < <(find . -name "*test.sh") @@ -272,9 +272,9 @@ doSetVars(){ #while read -r test_file ; do echo "$test_file" ; done < <(find . -name "*test.sh") # this will be dev , tst, prd - env_type=$(echo `basename "$PRODUCT_INSTANCE_DIR"`|cut -d'.' -f5) - product_version=$(echo `basename "$PRODUCT_INSTANCE_DIR"`|cut -d'.' -f2-4) - environment_name=$(basename "$PRODUCT_INSTANCE_DIR") + ENV=$(echo `basename "$PRODUCT_DIR"`|cut -d'.' -f5) + product_version=$(echo `basename "$PRODUCT_DIR"`|cut -d'.' -f2-4) + environment_name=$(basename "$PRODUCT_DIR") cd .. product_dir=`pwd`; @@ -331,8 +331,8 @@ doParseConfFile(){ && cnf_file="$wrap_bash_dir/$RUN_UNIT_TESTER.$host_name.cnf" # if we have perl apps they will share the same configuration settings with this one - test -f "$PRODUCT_INSTANCE_DIR/$RUN_UNIT_TESTER.$host_name.cnf" \ - && cnf_file="$PRODUCT_INSTANCE_DIR/$RUN_UNIT_TESTER.$host_name.cnf" + test -f "$PRODUCT_DIR/$RUN_UNIT_TESTER.$host_name.cnf" \ + && cnf_file="$PRODUCT_DIR/$RUN_UNIT_TESTER.$host_name.cnf" # yet finally override if passed as argument to this function # if the the ini file is not passed define the default host independant ini file diff --git a/src/bash/qto/tests/build-docker-image.test.sh b/src/bash/qto/tests/build-docker-image.test.sh index 99fc5140..7e0e9058 100755 --- a/src/bash/qto/tests/build-docker-image.test.sh +++ b/src/bash/qto/tests/build-docker-image.test.sh @@ -10,7 +10,7 @@ doTestBuildQtoDockerImage(){ do_log "DEBUG START doTestBuildQtoDockerImage" # Action !!! - bash "$PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh" -a build-docker-image + bash "$PRODUCT_DIR/src/bash/qto/qto.sh" -a build-docker-image do_log "DEBUG STOP doTestBuildQtoDockerImage" } # eof func doTestBuildQtoDockerImage diff --git a/src/bash/qto/tests/generate-action-files.test.sh b/src/bash/qto/tests/generate-action-files.test.sh index 16f12335..a7f8a3fb 100755 --- a/src/bash/qto/tests/generate-action-files.test.sh +++ b/src/bash/qto/tests/generate-action-files.test.sh @@ -20,7 +20,7 @@ doTestGenerateActionFiles(){ sleep $sleep_interval - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen } diff --git a/src/bash/qto/tests/pckg/create-full-package.test.sh b/src/bash/qto/tests/pckg/create-full-package.test.sh index 35a92f18..a7bef13c 100755 --- a/src/bash/qto/tests/pckg/create-full-package.test.sh +++ b/src/bash/qto/tests/pckg/create-full-package.test.sh @@ -5,7 +5,7 @@ # tests the full package creation #------------------------------------------------------------------------------ doTestCreateFullPackage(){ - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR do_log " INFO START : create-full-package.test" cat doc/txt/qto/tests/pckg/create-full-package.test.txt @@ -21,19 +21,19 @@ doTestCreateFullPackage(){ sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.tst.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.tst.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.prd.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.prd.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.git.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.git.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" diff --git a/src/bash/qto/tests/pckg/gmail-package.test.sh b/src/bash/qto/tests/pckg/gmail-package.test.sh index 3578a45d..d240f7f2 100755 --- a/src/bash/qto/tests/pckg/gmail-package.test.sh +++ b/src/bash/qto/tests/pckg/gmail-package.test.sh @@ -13,7 +13,7 @@ doTestGmailPackage(){ bash src/bash/qto/qto.sh -a create-full-package -a gmail-package sleep "$sleep_interval" - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen do_log "DEBUG STOP doTestGmailPackage" diff --git a/src/bash/qto/tests/pckg/remove-package.test.sh b/src/bash/qto/tests/pckg/remove-package.test.sh index 6cc5ec78..e22f91d9 100755 --- a/src/bash/qto/tests/pckg/remove-package.test.sh +++ b/src/bash/qto/tests/pckg/remove-package.test.sh @@ -11,14 +11,14 @@ doTestRemovePackage(){ #remove the dirs as well for dir in `cat "$include_file"`; do ( - dir="$PRODUCT_INSTANCE_DIR/$dir" + dir="$PRODUCT_DIR/$dir" test -d "$dir" && cmd="rm -fRv $dir" && doRunCmdAndLog "$cmd" ); done cmd="rm -fv $include_file" && \ doRunCmdAndLog "$cmd" - echo "rm -fvr $PRODUCT_INSTANCE_DIR">>"$product_dir/remove-""$environment_name".sh + echo "rm -fvr $PRODUCT_DIR">>"$product_dir/remove-""$environment_name".sh echo "rm -fv $product_dir/remove-""$environment_name".sh>>"$product_dir/remove-""$environment_name".sh nohup bash "$product_dir/remove-""$environment_name".sh & } diff --git a/src/bash/qto/tests/remove-action-files.test.sh b/src/bash/qto/tests/remove-action-files.test.sh index 705e7792..e44f4b3c 100755 --- a/src/bash/qto/tests/remove-action-files.test.sh +++ b/src/bash/qto/tests/remove-action-files.test.sh @@ -9,7 +9,7 @@ # --------------------------------------------------------- doTestRemoveActionFiles(){ - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_log "DEBUG START doTestRemoveActionFiles" doSpecRemoveActionFiles diff --git a/src/bash/run/alpine-chk-install-perl-modules.func.sh b/src/bash/run/alpine-chk-install-perl-modules.func.sh new file mode 100644 index 00000000..61c4c120 --- /dev/null +++ b/src/bash/run/alpine-chk-install-perl-modules.func.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +do_alpine_chk_install_perl_modules(){ + cd $PRODUCT_DIR + modules="$(cat bin/cnf/perl/qto-app-perl-modules.lst)" + + while read -r module ; do + use_modules="${use_modules:-} use $module ; " + done < <(echo "$modules"); + + set -x + perl -e "$use_modules" || { + echo "deploying modules. This WILL take couple of min, but ONLY ONCE !!!" + curl -L http://cpanmin.us | sudo perl - --self-upgrade -l ~/perl5 App::cpanminus \ + && sudo chown -R $APPUSR:$APPGRP ~/.cpanm && sudo chown -R $APPUSR:$APPGRP ~/perl5 + ~/perl5/bin/cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) + curl -L cpanmin.us | perl - Mojolicious + test "$(grep -c 'Mlocal::lib' ~/.bashrc|xargs)" -eq 0 && \ + echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc + while read -r module ; do cpanm_modules="${cpanm_modules:-} $module " ; done < <(echo "$modules") + + #cpanm --force --local-lib=~/perl5 'Net::Google::DataAPI' # does not install otherwise !!! + # probably not needed as all google related modules are out of the setup ^^^ + cmd="cpanm --local-lib=~/perl5 $modules" + $cmd + + # nasty workaround for the "Moo complainings" in the Net::Google::DataAPI::Oauth2 module + find ~ -type f -name OAuth2.pm -exec perl -pi -e \ + "s/use Any::Moose;/no warnings 'deprecated'; use Any::Moose; use warnings 'deprecated';/g" {} \; + } + + set +x + # create the symlink to the hypnotoad + export tgt_path=$HOME/perl5/bin/hypnotoad + export link_path=/usr/local/sbin/hypnotoad + sudo mkdir -p `dirname $link_path` + sudo test -L $link_path && unlink $link_path + sudo ln -s $tgt_path $link_path + ls -la $link_path; + + + export exit_code=0 +} diff --git a/src/bash/run/backup-postgres-db-inserts.func.sh b/src/bash/run/backup-postgres-db-inserts.func.sh index d6873bc5..eb53526d 100644 --- a/src/bash/run/backup-postgres-db-inserts.func.sh +++ b/src/bash/run/backup-postgres-db-inserts.func.sh @@ -6,13 +6,13 @@ # --------------------------------------------------------- doBackupPostgresDbInserts(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.db' mix_data_dir="$PROJ_INSTANCE_DIR/dat/mix" - test -z "${postgres_app_db-}" && postgres_app_db="${env_type-}"_"${RUN_UNIT//-/_}" + test -z "${postgres_app_db-}" && postgres_app_db="${ENV-}"_"${RUN_UNIT//-/_}" backup_dir=$mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d")/sql/$postgres_app_db backup_fname=$postgres_app_db.`date "+%Y%m%d_%H%M%S"`.insrts.dmp.sql diff --git a/src/bash/run/backup-postgres-db.func.sh b/src/bash/run/backup-postgres-db.func.sh index bf7cc37f..cb3a8a0d 100644 --- a/src/bash/run/backup-postgres-db.func.sh +++ b/src/bash/run/backup-postgres-db.func.sh @@ -5,9 +5,9 @@ # --------------------------------------------------------- doBackupPostgresDb(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' mix_data_dir="$PROJ_INSTANCE_DIR/dat/mix" @@ -27,7 +27,7 @@ doBackupPostgresDb(){ echo -e "\n" wc -l $mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d")/sql/$postgres_app_db/* | sort -nr sleep 1 - + echo "Full database backup completed successfully." } diff --git a/src/bash/run/backup-postgres-table-inserts.func.sh b/src/bash/run/backup-postgres-table-inserts.func.sh index 9a43b468..c0dddfa4 100644 --- a/src/bash/run/backup-postgres-table-inserts.func.sh +++ b/src/bash/run/backup-postgres-table-inserts.func.sh @@ -1,8 +1,10 @@ +#!/bin/bash + doBackupPostgresTableInserts(){ - - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" diff --git a/src/bash/run/backup-postgres-table.func.sh b/src/bash/run/backup-postgres-table.func.sh index f59c17ec..723c5b2d 100644 --- a/src/bash/run/backup-postgres-table.func.sh +++ b/src/bash/run/backup-postgres-table.func.sh @@ -1,9 +1,9 @@ # src/bash/qto/funcs/backup-postgres-table.func.sh doBackupPostgresTable(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PROJ_INSTANCE_DIR/src/sql/pgsql/ad-hoc" sleep 3 ; do_flush_screen ; diff --git a/src/bash/run/build-docker-image.func.sh b/src/bash/run/build-docker-image.func.sh index 7d84cc89..d6a28d0a 100644 --- a/src/bash/run/build-docker-image.func.sh +++ b/src/bash/run/build-docker-image.func.sh @@ -1,26 +1,26 @@ doBuildQtoDockerImage(){ - - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - test -f "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" || \ + test -f "$PRODUCT_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" || \ do_exit 1 "the src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version cannot be found !!!" - #doRemoveDockerContainers + #doRemoveDockerContainers test ${DOCKER_NUCLEAR_OPTION_PURGE:-0} -eq 1 && doFullCleanDocker # obs clears all docker stuff !!! - #doRemoveDockerImages - cp -v "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" "$PRODUCT_INSTANCE_DIR/Dockerfile" + #doRemoveDockerImages + cp -v "$PRODUCT_DIR/src/docker/Dockerfile.deploy-$RUN_UNIT.$product_version" "$PRODUCT_DIR/Dockerfile" - # for quick tests uncomment ^^^ and use this one : - # cp -v "$PRODUCT_INSTANCE_DIR/src/docker/Dockerfile.deploy-quick-test" "$PRODUCT_INSTANCE_DIR/Dockerfile" + # for quick tests uncomment ^^^ and use this one : + # cp -v "$PRODUCT_DIR/src/docker/Dockerfile.deploy-quick-test" "$PRODUCT_DIR/Dockerfile" docker build \ - --build-arg PRODUCT_INSTANCE_DIR=$PRODUCT_INSTANCE_DIR \ + --build-arg PRODUCT_DIR=$PRODUCT_DIR \ --build-arg postgres_app_db=$postgres_app_db \ --build-arg TZ=${TZ:-} \ - --build-arg ENV_TYPE=$ENV_TYPE \ + --build-arg ENV=$ENV \ --build-arg USER=$USER \ --build-arg UID=$UID \ --build-arg GROUP=$GROUP \ @@ -29,13 +29,13 @@ doBuildQtoDockerImage(){ --build-arg postgres_sys_usr_admin=$postgres_sys_usr_admin \ --build-arg root_pwd=$root_pwd \ --build-arg app_user_pwd=$app_user_pwd \ - -t qto-image:$product_version.$env_type . + -t qto-image:$product_version.$ENV . test $? -ne 0 && do_log "FATAL the docker image building failed !!!" - rm -v "$PRODUCT_INSTANCE_DIR/Dockerfile" - + rm -v "$PRODUCT_DIR/Dockerfile" + echo -e "\n\n to instantiate a new container, run: \n" - echo -e "bash $PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh -a run-container\n\n" + echo -e "bash $PRODUCT_DIR/src/bash/qto/qto.sh -a run-container\n\n" } diff --git a/src/bash/run/build-docker-image.test.sh b/src/bash/run/build-docker-image.test.sh index 99fc5140..7e0e9058 100644 --- a/src/bash/run/build-docker-image.test.sh +++ b/src/bash/run/build-docker-image.test.sh @@ -10,7 +10,7 @@ doTestBuildQtoDockerImage(){ do_log "DEBUG START doTestBuildQtoDockerImage" # Action !!! - bash "$PRODUCT_INSTANCE_DIR/src/bash/qto/qto.sh" -a build-docker-image + bash "$PRODUCT_DIR/src/bash/qto/qto.sh" -a build-docker-image do_log "DEBUG STOP doTestBuildQtoDockerImage" } # eof func doTestBuildQtoDockerImage diff --git a/src/bash/run/change-env-type.func.sh b/src/bash/run/change-env-type.func.sh index fd01f6ce..c55a5332 100644 --- a/src/bash/run/change-env-type.func.sh +++ b/src/bash/run/change-env-type.func.sh @@ -10,26 +10,26 @@ doChangeEnvType(){ tgt_env=${tgt_env#$prefix} - tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV_TYPE/$tgt_env/g;print") - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_environment_name + tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV/$tgt_env/g;print") + tgt_PRODUCT_DIR=$product_dir/$tgt_environment_name - test "$tgt_env" == "$env_type" && return + test "$tgt_env" == "$ENV" && return # remove everything from the tgt product version dir - no extra files allowed !!! - mkdir -p $tgt_PRODUCT_INSTANCE_DIR && test -d $tgt_PRODUCT_INSTANCE_DIR && \ - mv -v $tgt_PRODUCT_INSTANCE_DIR $tgt_PRODUCT_INSTANCE_DIR.$(date "+%Y%m%d_%H%M%S") - test $? -eq 0 || do_exit 1 "cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR && test -d $tgt_PRODUCT_DIR && \ + mv -v $tgt_PRODUCT_DIR $tgt_PRODUCT_DIR.$(date "+%Y%m%d_%H%M%S") + test $? -eq 0 || do_exit 1 "cannot write to $tgt_PRODUCT_DIR !" - mkdir -p $tgt_PRODUCT_INSTANCE_DIR - test $? -ne 0 && do_exit 1 "Failed to create $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR + test $? -ne 0 && do_exit 1 "Failed to create $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR - cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR + cp -v $zip_file $tgt_PRODUCT_DIR - perl -pi -e 's|'$env_type'|'$tgt_env'|g' $tgt_PRODUCT_INSTANCE_DIR/.env + perl -pi -e 's|'$ENV'|'$tgt_env'|g' $tgt_PRODUCT_DIR/.env - cd $tgt_PRODUCT_INSTANCE_DIR + cd $tgt_PRODUCT_DIR ln -sf `pwd`/src/bash/qto/qto.sh qto ln -sf `pwd`/src/perl/qto/script/qto.pl qto.pl cd - diff --git a/src/bash/run/change-version.func.sh b/src/bash/run/change-version.func.sh index 3918bd4c..f27ebdf5 100644 --- a/src/bash/run/change-version.func.sh +++ b/src/bash/run/change-version.func.sh @@ -4,34 +4,34 @@ doChangeVersion(){ prefix='to-ver=' tgt_version=${tgt_version#$prefix} tgt_env_name=$(echo $environment_name | perl -ne "s/$product_version/$tgt_version/g;print") - tgt_env_name=$(echo $tgt_env_name | perl -ne "s/$env_type/dev/g;print") # ALWAYS !!! - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_env_name - mkdir -p $tgt_PRODUCT_INSTANCE_DIR + tgt_env_name=$(echo $tgt_env_name | perl -ne "s/$ENV/dev/g;print") # ALWAYS !!! + tgt_PRODUCT_DIR=$product_dir/$tgt_env_name + mkdir -p $tgt_PRODUCT_DIR - test "$tgt_PRODUCT_INSTANCE_DIR" == "$PRODUCT_INSTANCE_DIR" && return - rm -fvr $tgt_PRODUCT_INSTANCE_DIR/* - test $? -eq 0 || do_exit 2 "cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + test "$tgt_PRODUCT_DIR" == "$PRODUCT_DIR" && return + rm -fvr $tgt_PRODUCT_DIR/* + test $? -eq 0 || do_exit 2 "cannot write to $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR ; cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR ; cp -v $zip_file $tgt_PRODUCT_DIR # change the current version str to tgt-version in the configuration dir export to_srch=$product_version export to_repl=$tgt_version - export dir_to_morph=$tgt_PRODUCT_INSTANCE_DIR/cnf + export dir_to_morph=$tgt_PRODUCT_DIR/cnf doMorphDir # :fin morph-dir.func.sh # ensure that all the files in the target product version dir are indentical to the current ones while read -r file ; do ( do_log "DEBUG comparing src file: $file" - do_log "DEBUG to tgt file: $tgt_PRODUCT_INSTANCE_DIR/$file" - test -f "$PRODUCT_INSTANCE_DIR/$file" \ - && diff "$PRODUCT_INSTANCE_DIR/$file" "$tgt_PRODUCT_INSTANCE_DIR/$file" + do_log "DEBUG to tgt file: $tgt_PRODUCT_DIR/$file" + test -f "$PRODUCT_DIR/$file" \ + && diff "$PRODUCT_DIR/$file" "$tgt_PRODUCT_DIR/$file" [[ $? != 0 ]] && exit $? ); done < <(cat $include_file) - cd $tgt_PRODUCT_INSTANCE_DIR # to create default links + cd $tgt_PRODUCT_DIR # to create default links ln -sf `pwd`/src/bash/qto/qto.sh qto ; sudo chmod 754 `pwd`/src/bash/qto/qto.sh ln -sf `pwd`/src/perl/qto/script/qto.pl qto.pl ; sudo chmod 754 `pwd`/src/perl/qto/script/qto.pl cd - diff --git a/src/bash/run/check-perl-syntax.func.sh b/src/bash/run/check-perl-syntax.func.sh index 886b9265..e3cc57ef 100644 --- a/src/bash/run/check-perl-syntax.func.sh +++ b/src/bash/run/check-perl-syntax.func.sh @@ -1,40 +1,46 @@ -# file: src/bash/qto/funcs/perl/check-perl-syntax.func.sh -doCheckPerlSyntax(){ - - find . -name autosplit.ix | xargs rm -fv # because idempotence - declare -a ret; ret=0 - - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh - - # foreach perl file check the syntax by setting the correct INC dirs - while read -r dir ; do - - echo -e "\n start compiling $dir ..." ; - cd $PRODUCT_INSTANCE_DIR/src/perl/$dir ; - - # run the autoloader utility - find . -name '*.pm' -exec perl -MAutoSplit -e 'autosplit($ARGV[0], $ARGV[1], 0, 1, 1)' {} \; - - c=0 - # feel free to adjust to 5, more might get you the "Out of memory!" error - amount_of_perl_syntax_checks_to_run_in_parallel=1 - while read -r file ; do - c=$((c+1)) ; test $c -eq $amount_of_perl_syntax_checks_to_run_in_parallel && sleep 1 && export c=0 ; - ( - echo -e "\n ::: running: cd src/perl/qto ; perl -MCarp::Always -I `pwd` -I `pwd`/lib -wc \"$file\" ; cd -" - perl -MCarp::Always -I `pwd` -I `pwd`/lib -wc "$file" - # ret=$? ; # probably not needed ... better just to spit out the error for the - # test $ret -ne 0 && break 2 ; - )& - done < <(find "." -type f \( -name "*.pl" -or -name "*.pm" -or -name '*.t' \)) - test $ret -ne 0 && break ; - - echo -e "stop compiling $dir ... \n\n" ; - cd $PRODUCT_INSTANCE_DIR ; - - done < <(ls -1 "src/perl") - - test $ret -ne 0 && do_exit 4 "Perl syntax error" ; - - do_flush_screen +#!/bin/bash +# file: src/bash/run/check-perl-syntax.func.sh + +do_check_perl_syntax() { + + export PATH=$PATH:~/perl5/bin/ + export PERL5LIB=${PERL5LIB:-}:~/perl5/lib/perl5/:$PRODUCT_DIR/src/perl/qto/t/lib:$PRODUCT_DIR/src/perl/qto/public/lib:$PRODUCT_DIR/src/perl/qto/lib + + find . -name autosplit.ix | xargs rm -fv # because idempotence + declare -a rv + rv=0 + + # foreach perl file check the syntax by setting the correct INC dirs + while read -r dir; do + + echo -e "\n start compiling $dir ..." + cd $PRODUCT_DIR/src/perl/$dir + + # run the autoloader utility + find . -name '*.pm' -exec perl -MAutoSplit -e 'autosplit($ARGV[0], $ARGV[1], 0, 1, 1)' {} \; + + c=0 + # feel free to adjust to 5, more might get you the "Out of memory!" error + amount_of_perl_syntax_checks_to_run_in_parallel=1 + while read -r file; do + c=$((c + 1)) + test $c -eq $amount_of_perl_syntax_checks_to_run_in_parallel && sleep 1 && export c=0 + ( + echo -e "\t ::: running: cd src/perl/qto ; perl -MCarp::Always -I $(pwd) -I $(pwd)/lib -wc \"$file\" ; cd -" + perl -MCarp::Always -I $(pwd) -I $(pwd)/lib -wc "$file" + # rv=$? ; # probably not needed ... better just to spit out the error for the + # test $rv -ne 0 && break 2 ; + ) & + done < <(find "." -type f \( -name "*.pl" -or -name "*.pm" -or -name '*.t' \)) + test $rv -ne 0 && break + + echo -e "stop compiling $dir ... \n\n" + cd $PRODUCT_DIR || exit 1 + + done < <(ls -1 "src/perl") + + test $rv -ne 0 && do_exit 4 "Perl syntax error" + + do_flush_screen + export exit_code=0 } diff --git a/src/bash/run/chk-install-perl-modules.func.sh b/src/bash/run/chk-install-perl-modules.func.sh deleted file mode 100644 index cd544a4c..00000000 --- a/src/bash/run/chk-install-perl-modules.func.sh +++ /dev/null @@ -1,39 +0,0 @@ - - -do_chk_install_perl_modules(){ - cd $PRODUCT_DIR - modules="$(cat src/bash/qto/deploy/single-ubuntu-18.04/qto/cnf/bin/perl-modules.lst)" - - while read -r module ; do - use_modules="${use_modules:-} use $module ; " - done < <(echo "$modules"); - - set -x - perl -e "$use_modules" || { - echo "deploying modules. This WILL take couple of min, but ONLY ONCE !!!" - curl -L http://cpanmin.us | sudo perl - --self-upgrade -l ~/perl5 App::cpanminus \ - && sudo chown -R $USER:$(id -gn) ~/.cpanm && sudo chown -R $USER:$(id -gn) ~/perl5 - ~/perl5/bin/cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) - curl -L cpanmin.us | perl - Mojolicious - test "$(grep -c 'Mlocal::lib' $bash_opts_file)" -eq 0 && \ - echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >> $bash_opts_file - while read -r module ; do cpanm_modules="${cpanm_modules:-} $module " ; done < <(echo "$modules") - #cpanm --force --local-lib=~/perl5 'Net::Google::DataAPI' # does not install otherwise !!! - # probably not needed as all google related modules are out of the setup ^^^ - cmd="cpanm --local-lib=~/perl5 $modules" - $cmd - - - # nasty workaround for the "Moo complainings" in the Net::Google::DataAPI::Oauth2 module - find ~ -type f -name OAuth2.pm -exec perl -pi -e \ - "s/use Any::Moose;/no warnings 'deprecated'; use Any::Moose; use warnings 'deprecated';/g" {} \; - } - - # create the symlink to the hypnotoad - export tgt_path=$HOME/perl5/bin/hypnotoad - export link_path=/usr/local/sbin/hypnotoad - sudo mkdir -p `dirname $link_path` - sudo test -L $link_path && unlink $link_path - sudo ln -s $tgt_path $link_path - ls -la $link_path; -} diff --git a/src/bash/run/clone-to-app.func.sh b/src/bash/run/clone-to-app.func.sh index e9d744ef..ee285a1d 100644 --- a/src/bash/run/clone-to-app.func.sh +++ b/src/bash/run/clone-to-app.func.sh @@ -11,32 +11,32 @@ doCloneToApp(){ tgt_app=${tgt_app#$prefix} tgt_environment_name=$(echo $environment_name | perl -ne "s/$RUN_UNIT/$tgt_app/g;print") tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$product_version/0.0.0/g;print") - tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$env_type/dev/g;print") + tgt_environment_name=$(echo $tgt_environment_name | perl -ne "s/$ENV/dev/g;print") tgt_product_dir=$product_base_dir/$tgt_app - tgt_PRODUCT_INSTANCE_DIR=$tgt_product_dir/$tgt_environment_name + tgt_PRODUCT_DIR=$tgt_product_dir/$tgt_environment_name - mkdir -p $tgt_PRODUCT_INSTANCE_DIR - [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot create the tgt_PRODUCT_INSTANCE_DIR: $tgt_PRODUCT_INSTANCE_DIR !" + mkdir -p $tgt_PRODUCT_DIR + [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot create the tgt_PRODUCT_DIR: $tgt_PRODUCT_DIR !" # remove everything from the tgt product version dir - no extra files allowed !!! - rm -fvr $tgt_PRODUCT_INSTANCE_DIR + rm -fvr $tgt_PRODUCT_DIR # if the removal failed exit with error msg - [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot write to $tgt_PRODUCT_INSTANCE_DIR !" + [[ $? -eq 0 ]] || do_exit 2 "ERROR :: cannot write to $tgt_PRODUCT_DIR !" doCreateRelativePackage - unzip -o $zip_file -d $tgt_PRODUCT_INSTANCE_DIR + unzip -o $zip_file -d $tgt_PRODUCT_DIR to_srch=$RUN_UNIT to_repl=$tgt_app #-- search and replace in file names - find "$tgt_PRODUCT_INSTANCE_DIR/" -type d |\ + find "$tgt_PRODUCT_DIR/" -type d |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;' - find "$tgt_PRODUCT_INSTANCE_DIR/" -type f |\ + find "$tgt_PRODUCT_DIR/" -type f |\ perl -nle '$o=$_;s#'"$to_srch"'#'"$to_repl"'#g;$n=$_;rename($o,$n) unless -e $n ;' - find $tgt_PRODUCT_INSTANCE_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; + find $tgt_PRODUCT_DIR -exec file {} \; | grep text | cut -d: -f1| { while read -r file_to_edit ; do ( perl -pi -e "s#$to_srch#$to_repl#g" "$file_to_edit" ); @@ -44,8 +44,8 @@ doCloneToApp(){ } # on cygwin the perl -pi leaves backup files => remove them - find $tgt_PRODUCT_INSTANCE_DIR -type f -name '*.bak' | xargs rm -fv + find $tgt_PRODUCT_DIR -type f -name '*.bak' | xargs rm -fv - cp -v $zip_file $tgt_PRODUCT_INSTANCE_DIR + cp -v $zip_file $tgt_PRODUCT_DIR } diff --git a/src/bash/run/configure-aws.func.sh b/src/bash/run/configure-aws.func.sh index 1aa9319b..9bbaaaf3 100644 --- a/src/bash/run/configure-aws.func.sh +++ b/src/bash/run/configure-aws.func.sh @@ -1,8 +1,8 @@ do_configure_aws_keys(){ # set up confs - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' diff --git a/src/bash/run/cp-to-env.func.sh b/src/bash/run/cp-to-env.func.sh index 0b497747..476a547f 100644 --- a/src/bash/run/cp-to-env.func.sh +++ b/src/bash/run/cp-to-env.func.sh @@ -9,16 +9,16 @@ doCpToEnv(){ prefix='cp-to-env=' tgt_env=${tgt_env#$prefix} - tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV_TYPE/$tgt_env/g;print") - tgt_PRODUCT_INSTANCE_DIR=$product_dir/$tgt_environment_name + tgt_environment_name=$(echo $environment_name | perl -ne "s/$ENV/$tgt_env/g;print") + tgt_PRODUCT_DIR=$product_dir/$tgt_environment_name # do ALWAYS open the met/<> when calling this func !!! - for env in `echo dev tst prd`; do cp -v met/.$ENV_TYPE.qto met/.$env.qto ; done ; - for env in `echo dev tst prd`; do cp -v met/.$ENV_TYPE.qto $tgt_PRODUCT_INSTANCE_DIR/met/.$env.qto ; done ; - test "$tgt_env" == "$env_type" && return + for env in `echo dev tst prd`; do cp -v met/.$ENV.qto met/.$env.qto ; done ; + for env in `echo dev tst prd`; do cp -v met/.$ENV.qto $tgt_PRODUCT_DIR/met/.$env.qto ; done ; + test "$tgt_env" == "$ENV" && return relative_fpath=$(dirname "${file}") - tgt_file=$tgt_PRODUCT_INSTANCE_DIR/$file + tgt_file=$tgt_PRODUCT_DIR/$file mkdir -p $(dirname $tgt_file) test -f $file && cp -v $file $tgt_file @@ -26,5 +26,5 @@ doCpToEnv(){ test -d $file && rsync -v -X -r -E -o -g --perms --acls $file $(dirname $tgt_file) # copy the current site instance configuration file to the secret store as well ... - mkdir -p ~/.qto/cnf ; cp -v cnf/env/$ENV_TYPE.env.json ~/.qto/cnf/ + mkdir -p ~/.qto/cnf ; cp -v cnf/env/$ENV.env.json ~/.qto/cnf/ } diff --git a/src/bash/run/create-app-db.func.sh b/src/bash/run/create-app-db.func.sh index 3a18eb44..094e368b 100644 --- a/src/bash/run/create-app-db.func.sh +++ b/src/bash/run/create-app-db.func.sh @@ -1,8 +1,8 @@ do_create_app_db(){ # set up confs - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' diff --git a/src/bash/run/create-app-user.func.sh b/src/bash/run/create-app-user.func.sh index f4bef230..4dfa40fd 100644 --- a/src/bash/run/create-app-user.func.sh +++ b/src/bash/run/create-app-user.func.sh @@ -1,7 +1,7 @@ do_create_app_user(){ set +e - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" diff --git a/src/bash/run/create-ctags.func.sh b/src/bash/run/create-ctags.func.sh index 722b6535..0d35fa2e 100644 --- a/src/bash/run/create-ctags.func.sh +++ b/src/bash/run/create-ctags.func.sh @@ -9,11 +9,11 @@ doCreateCtags(){ ctags --help >/dev/null 2>&1 || { do_log "ERROR. ctags is not installed or not in PATH. Aborting." >&2; exit 1; } pushd . - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR cmd="rm -fv ./tags" && doRunCmdAndLog "$cmd" cmd="ctags -R -n --fields=+i+K+S+l+m+a --exclude=.git --exclude=dat --exclude=*/node_modules/* ." && doRunCmdAndLog "$cmd" - cmd="ls -la $PRODUCT_INSTANCE_DIR/tags" && doRunCmdAndLog "$cmd" + cmd="ls -la $PRODUCT_DIR/tags" && doRunCmdAndLog "$cmd" popd diff --git a/src/bash/run/create-full-package.func.sh b/src/bash/run/create-full-package.func.sh index bd33b453..20406158 100644 --- a/src/bash/run/create-full-package.func.sh +++ b/src/bash/run/create-full-package.func.sh @@ -9,17 +9,17 @@ doCreateFullPackage(){ test -z ${qto_project:-} && qto_project=qto #define default vars test -z ${include_file:-} && \ - include_file="$PRODUCT_INSTANCE_DIR/met/.$env_type.$RUN_UNIT" + include_file="$PRODUCT_DIR/met/.$ENV.$RUN_UNIT" # relative file path is passed turn it to absolute one - [[ $include_file == /* ]] || include_file=$PRODUCT_INSTANCE_DIR/$include_file + [[ $include_file == /* ]] || include_file=$PRODUCT_DIR/$include_file if [ ! -f "$include_file" ]; then do_log "FATAL the deployment file: $include_file does not exist !!!" return 1 fi - tgt_env_type=$(echo `basename "$include_file"`|cut -d'.' -f2) + tgt_ENV=$(echo `basename "$include_file"`|cut -d'.' -f2) # start: add the perl_ignore_file_pattern while read -r line ; do \ @@ -38,10 +38,10 @@ doCreateFullPackage(){ # the last token of the include_file with . token separator - thus no points in names zip_file_name=$(echo $include_file | rev | cut -d'.' -f 1 | rev) test $zip_file_name != $RUN_UNIT && zip_file_name="$zip_file_name"'--'"$qto_project" - zip_file_name="$zip_file_name.$product_version.$tgt_env_type.$timestamp.$host_name.zip" + zip_file_name="$zip_file_name.$product_version.$tgt_ENV.$timestamp.$host_name.zip" zip_file="$product_dir/$zip_file_name" - mkdir -p $PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp - echo $zip_file>$PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp/zip_file + mkdir -p $PRODUCT_DIR/dat/$RUN_UNIT/tmp + echo $zip_file>$PRODUCT_DIR/dat/$RUN_UNIT/tmp/zip_file cd $product_base_dir; cd .. ; # zip MM ops @@ -54,10 +54,10 @@ doCreateFullPackage(){ set +x test $ret -gt 0 && ( while IFS='' read f ; do ( - test -d "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'ERROR not a file: "'"$f"'"' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || ret=1 && exit 1 + test -d "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" || do_log 'ERROR not a file: "'"$f"'"' ; + test -f "$PRODUCT_DIR/$f" || ret=1 && exit 1 ); done < <(cat $include_file | egrep -v "$perl_ignore_file_pattern" | sed '/^#/ d') ); @@ -68,7 +68,7 @@ doCreateFullPackage(){ return 1 fi - test -z ${mix_data_dir:-} && mix_data_dir=$PRODUCT_INSTANCE_DIR/dat/mix + test -z ${mix_data_dir:-} && mix_data_dir=$PRODUCT_DIR/dat/mix # backup the project data dir if not running on the product itself ... test -d $mix_data_dir/$(date "+%Y")/$(date "+%Y-%m")/$(date "+%Y-%m-%d") || doIncreaseDate # and zip the project data dir diff --git a/src/bash/run/create-full-package.test.sh b/src/bash/run/create-full-package.test.sh index 35a92f18..a7bef13c 100644 --- a/src/bash/run/create-full-package.test.sh +++ b/src/bash/run/create-full-package.test.sh @@ -5,7 +5,7 @@ # tests the full package creation #------------------------------------------------------------------------------ doTestCreateFullPackage(){ - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR do_log " INFO START : create-full-package.test" cat doc/txt/qto/tests/pckg/create-full-package.test.txt @@ -21,19 +21,19 @@ doTestCreateFullPackage(){ sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.tst.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.tst.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.prd.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.prd.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" test $exit_code -ne 0 && return - bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_INSTANCE_DIR/met/.git.qto + bash src/bash/qto/qto.sh -a create-full-package -i $PRODUCT_DIR/met/.git.qto export exit_code=$? do_log " create-relative-package.test-1 exit_code: $exit_code " sleep "$sleep_interval" diff --git a/src/bash/run/create-relative-package.func.sh b/src/bash/run/create-relative-package.func.sh index ed0b2b3b..fa8033b1 100644 --- a/src/bash/run/create-relative-package.func.sh +++ b/src/bash/run/create-relative-package.func.sh @@ -4,38 +4,38 @@ doCreateRelativePackage(){ mkdir -p $product_dir/dat/zip - test $? -ne 0 && do_exit 2 "Failed to create $PRODUCT_INSTANCE_DIR/dat/zip !" + test $? -ne 0 && do_exit 2 "Failed to create $PRODUCT_DIR/dat/zip !" test -z ${include_file:-} && \ - include_file="$PRODUCT_INSTANCE_DIR/met/.$env_type.$RUN_UNIT" + include_file="$PRODUCT_DIR/met/.$ENV.$RUN_UNIT" # relative file path is passed turn it to absolute one - [[ $include_file == /* ]] || include_file=$PRODUCT_INSTANCE_DIR/$include_file + [[ $include_file == /* ]] || include_file=$PRODUCT_DIR/$include_file test -f $include_file || \ do_exit 3 "did not found any deployment file paths containing deploy file @ $include_file" - tgt_env_type=$(echo `basename "$include_file"`|cut -d'.' -f2) + tgt_ENV=$(echo `basename "$include_file"`|cut -d'.' -f2) timestamp=`date "+%Y%m%d_%H%M%S"` # the last token of the include_file with . token separator - thus no points in names git_short_hash=$(git rev-parse --short HEAD) zip_file_name=$(echo $include_file | rev | cut -d. -f 1 | rev) - zip_file_name="$zip_file_name.$product_version.$tgt_env_type.$timestamp.$git_short_hash.$host_name.rel.zip" + zip_file_name="$zip_file_name.$product_version.$tgt_ENV.$timestamp.$git_short_hash.$host_name.rel.zip" zip_file="$product_dir/$zip_file_name" ret=0 while read f ; do [[ $f == '#'* ]] && continue ; - test -d "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" && continue ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'FATAL cannot find the file: "'"$PRODUCT_INSTANCE_DIR/$f"'" to package it' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'ERROR search for it in the '"$include_file"' ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'INFO if you need the file add it to the list file ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || do_log 'INFO if you do not need the file remove it from the list file ' ; - test -f "$PRODUCT_INSTANCE_DIR/$f" || ret=1 - test -f "$PRODUCT_INSTANCE_DIR/$f" && break ; + test -d "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" && continue ; + test -f "$PRODUCT_DIR/$f" || do_log 'FATAL cannot find the file: "'"$PRODUCT_DIR/$f"'" to package it' ; + test -f "$PRODUCT_DIR/$f" || do_log 'ERROR search for it in the '"$include_file"' ' ; + test -f "$PRODUCT_DIR/$f" || do_log 'INFO if you need the file add it to the list file ' ; + test -f "$PRODUCT_DIR/$f" || do_log 'INFO if you do not need the file remove it from the list file ' ; + test -f "$PRODUCT_DIR/$f" || ret=1 + test -f "$PRODUCT_DIR/$f" && break ; done < <(cat $include_file) do_log "DEBUG ret is $ret " diff --git a/src/bash/run/create-ssh-keys.func.sh b/src/bash/run/create-ssh-keys.func.sh index 0d4e1dc2..2a59063a 100644 --- a/src/bash/run/create-ssh-keys.func.sh +++ b/src/bash/run/create-ssh-keys.func.sh @@ -1,16 +1,16 @@ do_create_ssh_keys(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' which expect || sudo apt-get update && sudo apt-get install -y expect - for env_type in `echo dev tst prd`; do - jwt_private_key_file=~/.ssh/qto.$env_type.jwtRS256.key - jwt_public_key_file=~/.ssh/qto.$env_type.jwtRS256.key.pub + for ENV in `echo dev tst prd`; do + jwt_private_key_file=~/.ssh/qto.$ENV.jwtRS256.key + jwt_public_key_file=~/.ssh/qto.$ENV.jwtRS256.key.pub echo << EOF_USING creating and using the following private and public key files for the Guardian's JWT's : $jwt_private_key_file @@ -28,9 +28,9 @@ EOF_USING private_ssh_key_fpath_no_env=$(eval echo $private_ssh_key_fpath_no_env) - for env_type in `echo dev tst prd`; do - test -f $private_ssh_key_fpath_no_env'.'$env_type || { - ssh-keygen -q -t rsa -b 4096 -N '' -f $private_ssh_key_fpath_no_env.$env_type <<< ""$'\n'"y" 2>&1 >/dev/null + for ENV in `echo dev tst prd`; do + test -f $private_ssh_key_fpath_no_env'.'$ENV || { + ssh-keygen -q -t rsa -b 4096 -N '' -f $private_ssh_key_fpath_no_env.$ENV <<< ""$'\n'"y" 2>&1 >/dev/null } done diff --git a/src/bash/run/delete-aws-vpc.func.sh b/src/bash/run/delete-aws-vpc.func.sh index 693e6e9f..309e8fd5 100644 --- a/src/bash/run/delete-aws-vpc.func.sh +++ b/src/bash/run/delete-aws-vpc.func.sh @@ -1,13 +1,13 @@ doDeleteAwsVPC(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' export AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION # probably a buggy one but just to get you start with something - # ensure your default output is json + you have default region ... + # ensure your default output is json + you have default region ... aws ec2 describe-internet-gateways --filters 'Name=attachment.vpc-id,Values='$vpc_id \ | jq -r ".InternetGateways[].InternetGatewayId" # terminate all vpc instances @@ -60,7 +60,7 @@ doDeleteAwsVPC(){ aws ec2 describe-vpn-gateways --filters 'Name=attachment.vpc-id,Values='$vpc | grep VpnGatewayId aws ec2 describe-network-interfaces --filters 'Name=vpc-id,Values='$vpc | grep NetworkInterfaceId -# while read -r key_pair_id; do -# aws echo ec2 delete-key-pair --key-name $key_pair_id ; +# while read -r key_pair_id; do +# aws echo ec2 delete-key-pair --key-name $key_pair_id ; # done < <(aws ec2 describe-key-pairs | jq -r '.[] | .[] | .KeyPairId') } diff --git a/src/bash/run/do-run-ddls.func.sh b/src/bash/run/do-run-ddls.func.sh index bf29eaac..568b7615 100644 --- a/src/bash/run/do-run-ddls.func.sh +++ b/src/bash/run/do-run-ddls.func.sh @@ -1,6 +1,6 @@ do_run_ddls(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$env_type.env.json" + source $PRODUCT_DIR/.env ; ENV=$ENV + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PRODUCT_DIR/cnf/env/$ENV.env.json" source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" diff --git a/src/bash/run/fix-db-permissions.func.sh b/src/bash/run/fix-db-permissions.func.sh index d1449fd9..83df6e77 100644 --- a/src/bash/run/fix-db-permissions.func.sh +++ b/src/bash/run/fix-db-permissions.func.sh @@ -3,12 +3,12 @@ doFixDbPermissions(){ doSetUpDbRoles - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z $PROJ_CONF_FILE && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z $PROJ_CONF_FILE && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; + do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" cd /tmp @@ -21,13 +21,13 @@ doFixDbPermissions(){ PGPASSWORD=$postgres_sys_usr_admin_pw psql -U "${postgres_sys_usr_admin:-}" \ --host $postgres_rdbms_host --port $postgres_rdbms_port -d "$postgres_app_db" \ - -c " GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; + -c " GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d "$postgres_app_db" -c \ - "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES - IN SCHEMA public TO $postgres_app_usr; + "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES + IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" sudo -u postgres PGPASSWORD=$postgres_usr_pw psql \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d "$postgres_app_db" -c \ diff --git a/src/bash/run/generate-action-files.func.sh b/src/bash/run/generate-action-files.func.sh index bb85b0a1..662795a8 100644 --- a/src/bash/run/generate-action-files.func.sh +++ b/src/bash/run/generate-action-files.func.sh @@ -74,14 +74,14 @@ doGenerateActionFiles(){ echo -e "generated the following files: \n" ; find . | grep -i $act |cut -c 3-|sort -nr - find . | grep -i $act |cut -c 3-|sort -nr >> met/.$env_type.$RUN_UNIT + find . | grep -i $act |cut -c 3-|sort -nr >> met/.$ENV.$RUN_UNIT echo -e "\n\n" do_log "DEBUG STOP :: checking action: $act" ); done< <(cat "src/bash/$RUN_UNIT/tests/new-$RUN_UNIT-tests.lst") - clear ; for env in `echo dev tst prd src`; do cp -v met/.$env_type.$RUN_UNIT met/.$env.$RUN_UNIT ; done + clear ; for env in `echo dev tst prd src`; do cp -v met/.$ENV.$RUN_UNIT met/.$env.$RUN_UNIT ; done do_log "DEBUG STOP : doGenerateActionFiles" diff --git a/src/bash/run/generate-action-files.test.sh b/src/bash/run/generate-action-files.test.sh index 16f12335..a7f8a3fb 100644 --- a/src/bash/run/generate-action-files.test.sh +++ b/src/bash/run/generate-action-files.test.sh @@ -20,7 +20,7 @@ doTestGenerateActionFiles(){ sleep $sleep_interval - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen } diff --git a/src/bash/run/generate-md-docs.func.sh b/src/bash/run/generate-md-docs.func.sh index 2904965a..b660a6a2 100644 --- a/src/bash/run/generate-md-docs.func.sh +++ b/src/bash/run/generate-md-docs.func.sh @@ -6,10 +6,10 @@ # --------------------------------------------------------- doGenerateMdDocs(){ do_log "DEBUG START doGenerateMdDocs" - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/run/generate-msft-docs.func.sh b/src/bash/run/generate-msft-docs.func.sh index 6ec43d6b..1309fd5d 100644 --- a/src/bash/run/generate-msft-docs.func.sh +++ b/src/bash/run/generate-msft-docs.func.sh @@ -1,10 +1,10 @@ # file: src/bash/qto/funcs/generate-pdf-docs.func.sh doGenerateMsftDocs(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/run/generate-pdf-docs.func.sh b/src/bash/run/generate-pdf-docs.func.sh index 4d6a9e81..1097d1a2 100644 --- a/src/bash/run/generate-pdf-docs.func.sh +++ b/src/bash/run/generate-pdf-docs.func.sh @@ -1,10 +1,10 @@ # file: src/bash/qto/funcs/generate-pdf-docs.func.sh doGeneratePdfDocs(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" test -z "${docs_root_dir-}" && docs_root_dir="$PROJ_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json + test -z ${PROJ_CONF_FILE-} && PROJ_CONF_FILE=$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json do_export_json_section_vars $PROJ_CONF_FILE '.env.app' # <>:<>/<>/select/export_files?as=grid&od=id diff --git a/src/bash/run/generate-sql.func.sh b/src/bash/run/generate-sql.func.sh index 79e79e2f..efe5b36a 100644 --- a/src/bash/run/generate-sql.func.sh +++ b/src/bash/run/generate-sql.func.sh @@ -12,7 +12,7 @@ doGenerateSQL(){ while read -r list_file ; do #foreach list file in the dat/lst/sql dir - cd $PRODUCT_INSTANCE_DIR/src/sql/mysql/run + cd $PRODUCT_DIR/src/sql/mysql/run # foreach sql template while read -r sql_template ; do @@ -48,13 +48,13 @@ doGenerateSQL(){ done done < <(tail -n +2 "$list_file") # cat all but the first line - done < <(find $PRODUCT_INSTANCE_DIR/src/sql/mysql/run -type f -name '*.SQL') - done < <(find $PRODUCT_INSTANCE_DIR/dat/lst/sql/mysql/run -type f -name '*.list') + done < <(find $PRODUCT_DIR/src/sql/mysql/run -type f -name '*.SQL') + done < <(find $PRODUCT_DIR/dat/lst/sql/mysql/run -type f -name '*.list') IFS=$TMP_IFS # revert back to the original IFS find . -name '*.bak' | xargs rm -fv chmod -v 770 *.sql - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR sleep "$sleep_interval" # add your action implementation code here ... diff --git a/src/bash/run/gmail-package.func.sh b/src/bash/run/gmail-package.func.sh index 71ebca4f..b7dff505 100644 --- a/src/bash/run/gmail-package.func.sh +++ b/src/bash/run/gmail-package.func.sh @@ -15,8 +15,8 @@ do_gmail_package(){ fi # zip_file=$(ls -r1 "$product_dir"/*.zip | head -1) - zip_file=$(cat $PRODUCT_INSTANCE_DIR/dat/$RUN_UNIT/tmp/zip_file) - test -z "${zip_file+x}" && zip_file=$(ls -r1 "$PRODUCT_INSTANCE_DIR"/*.zip | head -1) + zip_file=$(cat $PRODUCT_DIR/dat/$RUN_UNIT/tmp/zip_file) + test -z "${zip_file+x}" && zip_file=$(ls -r1 "$PRODUCT_DIR"/*.zip | head -1) test -z "${zip_file+x}" && export exit_code=1 && do_exit " no zip file found for gmailing !!!" zip_file_name=`basename $zip_file` diff --git a/src/bash/run/gmail-package.test.sh b/src/bash/run/gmail-package.test.sh index a189bae0..1ce8ecdb 100644 --- a/src/bash/run/gmail-package.test.sh +++ b/src/bash/run/gmail-package.test.sh @@ -13,7 +13,7 @@ do_test_gmail_package(){ bash src/bash/qto/qto.sh -a create-full-package -a gmail-package sleep "$sleep_interval" - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_flush_screen do_log "DEBUG STOP doTestGmailPackage" diff --git a/src/bash/run/increase-date.func.sh b/src/bash/run/increase-date.func.sh index f0995794..24f4de13 100644 --- a/src/bash/run/increase-date.func.sh +++ b/src/bash/run/increase-date.func.sh @@ -7,9 +7,9 @@ # --------------------------------------------------------- do_increase_date(){ - test -z "${PROJ_INSTANCE_DIR:-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' + test -z "${PROJ_INSTANCE_DIR:-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' mix_data_dir=$PROJ_INSTANCE_DIR/dat/mix # find the latest project_daily_txt_dir diff --git a/src/bash/run/load-db-data-from-s3.func.sh b/src/bash/run/load-db-data-from-s3.func.sh index 8528593b..60761143 100644 --- a/src/bash/run/load-db-data-from-s3.func.sh +++ b/src/bash/run/load-db-data-from-s3.func.sh @@ -1,34 +1,34 @@ # # the following db dump in the s3 of the aws credentials owning user should exist: -# https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql -# +# https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql +# doLoadDbDataFromS3(){ - - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' - mkdir -p $PRODUCT_INSTANCE_DIR/dat/sql/ + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.aws' + + mkdir -p $PRODUCT_DIR/dat/sql/ echo "fetch the db inserts data from the s3 bucket from the following url: " - echo "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql' - wget -O "$PRODUCT_INSTANCE_DIR/dat/sql/"$ENV_TYPE'_'$RUN_UNIT".latest.insrts.dmp.sql" \ - "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV_TYPE"_$RUN_UNIT"'.latest.insrts.dmp.sql' + echo "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql' + wget -O "$PRODUCT_DIR/dat/sql/"$ENV'_'$RUN_UNIT".latest.insrts.dmp.sql" \ + "https://s3-$AWS_DEFAULT_REGION.amazonaws.com/$bucket/"$ENV"_$RUN_UNIT"'.latest.insrts.dmp.sql' # configure psql to access the db of THIS instance PGPASSWORD=${postgres_sys_usr_admin_pw:-} psql -v -t -X -w -U ${postgres_sys_usr_admin:-} \ --port $postgres_rdbms_port --host $postgres_rdbms_host -d $postgres_app_db < \ - "$PRODUCT_INSTANCE_DIR/dat/sql/$ENV_TYPE"'_'"$RUN_UNIT"'.latest.insrts.dmp.sql' + "$PRODUCT_DIR/dat/sql/$ENV"'_'"$RUN_UNIT"'.latest.insrts.dmp.sql' - test -f $PRODUCT_INSTANCE_DIR/dat/tmp/bootstrapping && rm -v $PRODUCT_INSTANCE_DIR/dat/tmp/bootstrapping - test -f $PRODUCT_INSTANCE_DIR/bootstrapping && rm -v $PRODUCT_INSTANCE_DIR/bootstrapping + test -f $PRODUCT_DIR/dat/tmp/bootstrapping && rm -v $PRODUCT_DIR/dat/tmp/bootstrapping + test -f $PRODUCT_DIR/bootstrapping && rm -v $PRODUCT_DIR/bootstrapping # grant the needed select PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -v -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ -h ${postgres_rdbms_host:-} -p ${postgres_rdbms_port:-} -v ON_ERROR_STOP=1 \ -d ${postgres_app_db:-} \ - -c "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; + -c "GRANT SELECT,INSERT,UPDATE,DELETE,TRUNCATE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO $postgres_app_usr" echo "Databases successfully filled with data." diff --git a/src/bash/run/log-test-run-entry.func.sh b/src/bash/run/log-test-run-entry.func.sh index 8a5de89e..7bde7778 100644 --- a/src/bash/run/log-test-run-entry.func.sh +++ b/src/bash/run/log-test-run-entry.func.sh @@ -20,7 +20,7 @@ do_logTestRunEntry(){ test -z "$component_name" && component_name="$RUN_UNIT_tester" test -z "$test_run_report_line" && test_run_report_line=' ' test -z "$test_run_report_file" \ - && test_run_report_file="$PRODUCT_INSTANCE_DIR/dat/tests/$component_name"'.test-run-report.'`date "+%Y%m%d_%H%M%S"`'.txt' + && test_run_report_file="$PRODUCT_DIR/dat/tests/$component_name"'.test-run-report.'`date "+%Y%m%d_%H%M%S"`'.txt' echo -e "\n" > "$test_run_report_file" echo -e `date "+%Y-%m-%d %H:%M:%S"`"\t START $component_name test run report \n" >> "$test_run_report_file" echo "result start-time stop-time action-name" >> "$test_run_report_file" @@ -49,7 +49,7 @@ do_logTestRunEntry(){ cat "$test_run_report_file" echo -e "\n\n" # do_log "product instance tests listing" - # find "$PRODUCT_INSTANCE_DIR"'/dat/tests' -type f -exec stat -c "%y %n" {} \; | sort -nr + # find "$PRODUCT_DIR"'/dat/tests' -type f -exec stat -c "%y %n" {} \; | sort -nr echo -e "\n\n" ;; *) diff --git a/src/bash/run/mojo-hypnotoad-start.func.sh b/src/bash/run/mojo-hypnotoad-start.func.sh index f350d7a0..8f7eb5a4 100644 --- a/src/bash/run/mojo-hypnotoad-start.func.sh +++ b/src/bash/run/mojo-hypnotoad-start.func.sh @@ -1,6 +1,6 @@ doMojoHypnotoadStart(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' doMojoHypnotoadStop export MOJO_LOG_LEVEL='error'; #could be warn, debug, info @@ -11,10 +11,10 @@ doMojoHypnotoadStart(){ test $p -ne $$ && kill -9 $p ; done < <(sudo ps -ef | grep -v grep | grep 'mojo-hypnotoad-start'|awk '{print $2}') - cd $PRODUCT_INSTANCE_DIR/src/perl/qto/script + cd $PRODUCT_DIR/src/perl/qto/script hypnotoad qto & - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR sudo service nginx restart test $? -ne 0 && exit 1 sudo ps -ef | grep -v grep | grep qto diff --git a/src/bash/run/mojo-hypnotoad-stop.func.sh b/src/bash/run/mojo-hypnotoad-stop.func.sh index 2fb25a2d..670e3c05 100644 --- a/src/bash/run/mojo-hypnotoad-stop.func.sh +++ b/src/bash/run/mojo-hypnotoad-stop.func.sh @@ -5,7 +5,7 @@ # --------------------------------------------------------- do_mojo_hypnotoad_stop(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' test -z "${mojo_hypnotoad_port:-}" && export mojo_hypnotoad_port=8080 # try nicely first to stop the hypnotoad worker processes diff --git a/src/bash/run/mojo-morbo-start.func.sh b/src/bash/run/mojo-morbo-start.func.sh index b0c94811..c950274a 100644 --- a/src/bash/run/mojo-morbo-start.func.sh +++ b/src/bash/run/mojo-morbo-start.func.sh @@ -1,36 +1,42 @@ -# src/bash/qto/funcs/mojo-morbo-start.func.sh +#!/bin/bash -# v0.7.9 chk: https://github.com/mojolicious/mojo/wiki/%25ENV +# v0. chk: https://github.com/mojolicious/mojo/wiki/%25ENV do_mojo_morbo_start(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' - doMojoMorboStop 0 - # to prevent the 'failed: could not create socket: Too many open files at sys' error - # perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}' to check - ulimit -n 4096 + export PATH=$PATH:~/perl5/bin/ + export PERL5LIB=${PERL5LIB:-}:~/perl5/lib/perl5/:$PRODUCT_DIR/src/perl/qto/t/lib:$PRODUCT_DIR/src/perl/qto/public/lib:$PRODUCT_DIR/src/perl/qto/lib - sleep "$sleep_interval" - export MOJO_LOG_LEVEL='debug' - export MOJO_MODE='development' - #export MOJO_MODE='production' - test -z "${mojo_morbo_port:-}" && export mojo_morbo_port='3001' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' + do_mojo_morbo_stop 0 - export MOJO_LISTEN='http://*:'"$mojo_morbo_port" - test -z "${mojo_morbo_port:-}" && export MOJO_LISTEN='http://*:3001' + # to prevent the 'failed: could not create socket: Too many open files at sys' error + # perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}' to check + ulimit -n 4096 - do_log "INFO running: morbo -w $PRODUCT_INSTANCE_DIR/src/perl/script/qto - --listen $MOJO_LISTEN $PRODUCT_INSTANCE_DIR/src/perl/qto/script/qto" + sleep "${sleep_interval:=0}" + export MOJO_LOG_LEVEL='debug' + export MOJO_MODE='development' + #export MOJO_MODE='production' + test -z "${MOJO_MORBO_PORT:-}" && export MOJO_MORBO_PORT='3001' - while read -r p ; do - p=$(echo $p|sed 's/^ *//g') - test $p -ne $$ && kill -9 $p ; - done < <(sudo ps -ef | grep -v grep | grep 'mojo-morbo-start'|awk '{print $2}') + export MOJO_LISTEN='http://*:'"$MOJO_MORBO_PORT" + test -z "${MOJO_MORBO_PORT:-}" && export MOJO_LISTEN='http://*:3001' - bash -c "morbo -w $PRODUCT_INSTANCE_DIR/src/perl/qto --listen $MOJO_LISTEN $PRODUCT_INSTANCE_DIR/src/perl/qto/script/qto" & + do_log "INFO running: morbo -w $PRODUCT_DIR/src/perl/script/qto + --listen $MOJO_LISTEN $PRODUCT_DIR/src/perl/qto/script/qto" - # might require sudo visudoers - # usrqtoadmin ALL=(ALL) NOPASSWD: /bin/netstat -tulpn - do_log "INFO check with netstat, running netstat -tulpn" ; netstat -tulpn | grep qto + while read -r p ; do + p=$(echo $p|sed 's/^ *//g') + test $p -ne $$ && kill -9 $p ; + done < <(sudo ps -ef | grep -v grep | grep 'mojo-morbo-start'|awk '{print $2}') + + export PERL5LIB=${PERL5LIB:-}:/opt/qto/src/perl/qto/t/lib:/opt/qto/src/perl/qto/public/lib:/opt/qto/src/perl/qto/lib + + bash -c "morbo -w $PRODUCT_DIR/src/perl/qto --listen $MOJO_LISTEN $PRODUCT_DIR/src/perl/qto/script/qto" & + + # might require sudo visudoers + # usrqtoadmin ALL=(ALL) NOPASSWD: /bin/netstat -tulpn + do_log "INFO check with netstat, running netstat -tulpn" ; netstat -tulpn | grep qto } diff --git a/src/bash/run/mojo-morbo-stop.func.sh b/src/bash/run/mojo-morbo-stop.func.sh index 82da4031..76e2c432 100644 --- a/src/bash/run/mojo-morbo-stop.func.sh +++ b/src/bash/run/mojo-morbo-stop.func.sh @@ -1,22 +1,27 @@ -# file: src/bash/qto/funcs/mojo-morbo-stop.func.sh +#!/bin/bash + # --------------------------------------------------------- # stop any running morbo instances listenning on the wanted port # cat doc/txt/qto/funcs/mojo-morbo-stop.func.txt # --------------------------------------------------------- -doMojoMorboStop(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' - test -z "${mojo_morbo_port:-}" && export mojo_morbo_port=3001 - found=0 +do_mojo_morbo_stop(){ + + export PATH=$PATH:~/perl5/bin/ + export PERL5LIB=${PERL5LIB:-}:~/perl5/lib/perl5/:$PRODUCT_DIR/src/perl/qto/t/lib:$PRODUCT_DIR/src/perl/qto/public/lib:$PRODUCT_DIR/src/perl/qto/lib - while read -r listening_on_port_pid; do - while read -r pid; do + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' + test -z "${MOJO_MORBO_PORT:-}" && export MOJO_MORBO_PORT=3001 + + while read -r listening_on_port_pid; do + while read -r pid; do test $listening_on_port_pid -eq $pid && sudo kill -9 $pid - done < <(sudo ps -ef| grep -i qto.$VERSION.$ENV_TYPE| grep -v grep|awk '{print $2}') - done < <(lsof -i:${mojo_morbo_port:-} -t) - + done < <(sudo ps -ef| grep -i qto| grep -v grep|awk '{print $2}') + done < <(lsof -i:${MOJO_MORBO_PORT:-} -t) + echo start running ps -ef \| grep qto ps -ef | grep -i qto echo stop running ps -ef \| grep qto echo -e "\n" + export exit_code=0 } diff --git a/src/bash/run/morph-dir.func.sh b/src/bash/run/morph-dir.func.sh index 02a98c27..49fa8cfe 100644 --- a/src/bash/run/morph-dir.func.sh +++ b/src/bash/run/morph-dir.func.sh @@ -1,70 +1,79 @@ -# v0.4.9 +#!/bin/bash #------------------------------------------------------------------------------ -# Purpose: +# Purpose: # to search for a string and replace it with another recursively in a dir # both in dir and file paths and their contents # Prerequisites: setting vars in the caller shell -# export dir_to_morph=<> +# export dir_to_morph=<> # export to_srch=<> # export to_repl=<> # while read -r f ; do cp -v $f $(echo $f|perl -ne 's#func#help#g;print'|perl -ne # 's#src#doc#g;print'|perl -ne 's#bash#txt#g;print'|perl -ne 's#help.sh#help.txt#g;print') ; done < -# <(find src/bash/qto/funcs/ -type f) +# <(find src/bash/run/ -type f) #------------------------------------------------------------------------------ -doMorphDir(){ +do_morph_dir(){ - # set -x - # some initial checks the users should set the vars in their shells !!! - test -z $dir_to_morph && do_exit 1 "You must export dir_to_morph=<> - it is empty !!!" - test -d $dir_to_morph || do_exit 1 "The dir to morph : \"$dir_to_morph\" is not a dir !!!" - test -z $to_srch && do_exit 1 "You must export to_srch=<> - it is empty !!!" - test -z $to_repl && do_exit 1 "You must export to_repl=<> - it is empty !!!" + # set -x + # some initial checks the users should set the vars in their shells !!! + test -z $dir_to_morph && { + echo "You must export dir_to_morph=<> - it is empty !!!"; exit 1; } + test -d $dir_to_morph || { + echo "The dir to morph : \"$dir_to_morph\" is not a dir !!!"; exit 1; } + test -z $to_srch && { + echo "You must export to_srch=<> - it is empty !!!"; exit 1; } + test -z $to_repl && { + echo "You must export to_repl=<> - it is empty !!!";exit 1; } - do_log "INFO dir_to_morph: $dir_to_morph" - do_log "INFO to_srch:\"$to_srch\" " ; - do_log "INFO to_repl:\"$to_repl\" " ; - sleep 2 - - do_log "INFO START :: search and replace in non-binary files" - #search and replace ONLY in the txt files and omit the binary files - while read -r file ; do ( - #debug do_log doing find and replace in $file - do_log "DEBUG working on file: $file" - do_log "DEBUG searching for $to_srch , replacing with :: $to_repl" + do_log "INFO dir_to_morph: $dir_to_morph" + do_log "INFO to_srch:\"$to_srch\" " ; + do_log "INFO to_repl:\"$to_repl\" " ; + sleep 2 - # we do not want to mess with out .git dir - # or how-to check that a string contains another string - case "$file" in - *.git*) - continue - ;; - esac - perl -pi -e "s#\Q$to_srch\E#$to_repl#g" "$file" - ); - done < <(find $dir_to_morph -type f -not -exec file {} \; | grep text | cut -d: -f1) - - do_log "INFO STOP :: search and replace in non-binary files" + do_log "INFO START :: search and replace in non-binary files" + #search and replace ONLY in the txt files and omit the binary files + while read -r file ; do ( + #debug do_log doing find and replace in $file + do_log "DEBUG working on file: $file" + do_log "DEBUG searching for $to_srch , replacing with :: $to_repl" - #search and repl %var_id% with var_id_val in deploy_tmp_dir - do_log "INFO search and replace in dir and file paths dir_to_morph:$dir_to_morph" - # rename the dirs according to the pattern - while read -r dir ; do ( - echo $dir|perl -nle '$o=$_;s#'"\Q$to_srch\E"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;' - ); - done < <(find $dir_to_morph -type d -not -path "/*node_modules/*" |grep -v '.git') + # we do not want to mess with out .git dir + # or how-to check that a string contains another string + case "$file" in + *.git*) + continue + ;; + esac + perl -pi -e "s|\Q$to_srch\E|$to_repl|g" "$file" + ); + done < <(find $dir_to_morph -type f -not -path "*/.venv/*" -not -exec file {} \; | grep text | cut -d: -f1) - # rename the files according to the pattern - while read -r file ; do ( - echo $file | perl -nle '$o=$_;s|'"\Q$to_srch\E"'|'"$to_repl"'|g;$n=$_;rename($o,$n) unless -e $n ;' - ); - done < <(find $dir_to_morph -type f -not -path "*/node_modules/*" |grep -v '.git') - - while read -r dir ; do ( - rm -rv $dir - ); - done < <(find $dir_to_morph -type d -not -path "/*node_modules/*" |grep -v '.git'|grep "$to_srch") + do_log "INFO STOP :: search and replace in non-binary files" + + #search and repl %var_id% with var_id_val in deploy_tmp_dir + do_log "INFO search and replace in dir and file paths dir_to_morph:$dir_to_morph" + # rename the dirs according to the pattern + while read -r dir ; do ( + echo $dir|perl -nle '$o=$_;s#'"\Q$to_srch\E"'#'"$to_repl"'#g;$n=$_;`mkdir -p $n` ;' + ); + done < <(find $dir_to_morph -type d -not -path "*/.venv/*" \ + -not -path "/*node_modules/*" |grep -v '.git') + + # rename the files according to the pattern + while read -r file ; do ( + echo $file | perl -nle '$o=$_;s|'"\Q$to_srch\E"'|'"$to_repl"'|g;$n=$_;rename($o,$n) unless -e $n ;' + ); + done < <(find $dir_to_morph -type f -not -path "*/.venv/*" \ + -not -path "*/node_modules/*" |grep -v '.git') + + while read -r dir ; do ( + rm -rv $dir + ); + done < <(find $dir_to_morph -type d -not -path "*/.venv/*" -not -path "/*node_modules/*" \ + | grep -v '.git'|grep "$to_srch") + + + export exit_code=0 } -#eof doMorphDir -#eof file: src/bash/qto/funcs/dev/morph-dir.func.sh +#eof file: src/bash/run/morph-dir.func.sh diff --git a/src/bash/run/provision-db-users.func.sh b/src/bash/run/provision-db-users.func.sh index d7915475..4dddaf72 100644 --- a/src/bash/run/provision-db-users.func.sh +++ b/src/bash/run/provision-db-users.func.sh @@ -1,9 +1,9 @@ doSetUpDbRoles(){ - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; + do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" echo 'export PS1="`date "+%F %T"` \u@\h \w \\n\\n "' | sudo tee -a /var/lib/postgresql/.bashrc sudo -u root echo "postgres:$postgres_rdbms_usr_pw" | sudo chpasswd @@ -18,19 +18,19 @@ doSetUpDbRoles(){ expect eof EOF_EXPECT - + cd /tmp ; sudo -u postgres PGPASSWORD=$postgres_usr_pw psql --port $postgres_rdbms_port -d postgres --host $postgres_rdbms_host -c " DO \$\$DECLARE r record; BEGIN IF NOT EXISTS ( - SELECT + SELECT FROM pg_catalog.pg_roles WHERE rolname = '"$postgres_sys_usr_admin"') THEN - CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE + CREATE ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS PASSWORD '"$postgres_sys_usr_admin_pw"' LOGIN ; END IF; END\$\$; - ALTER ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE + ALTER ROLE "$postgres_sys_usr_admin" WITH SUPERUSER CREATEROLE CREATEDB REPLICATION BYPASSRLS PASSWORD '"$postgres_sys_usr_admin_pw"' LOGIN ; " sudo -u postgres PGPASSWORD=$postgres_usr_pw psql --port $postgres_rdbms_port --host $postgres_rdbms_host -c " grant all privileges on database postgres to $postgres_sys_usr_admin" ; cd - diff --git a/src/bash/run/provision-https.func.sh b/src/bash/run/provision-https.func.sh index 506e648c..349ae6af 100644 --- a/src/bash/run/provision-https.func.sh +++ b/src/bash/run/provision-https.func.sh @@ -1,11 +1,11 @@ doProvisionHttps(){ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' sudo test -f /etc/letsencrypt/live/$web_host/privkey.pem && { - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh for env in `echo dev tst prd`; do \ - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$env.env.json '.env.app' - sudo cp -v "$PRODUCT_INSTANCE_DIR"'/cnf/nginx/etc/nginx/sites-available/%env%.https-site.conf' \ + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$env.env.json '.env.app' + sudo cp -v "$PRODUCT_DIR"'/cnf/nginx/etc/nginx/sites-available/%env%.https-site.conf' \ "/etc/nginx/sites-available/$env.https-site.conf" sudo perl -pi -e 's|\%nginx_port\%|'"$nginx_port"'|g' "/etc/nginx/sites-available/$env.https-site.conf" sudo perl -pi -e 's|\%nginx_port\%|'"$nginx_port"'|g' "/etc/nginx/sites-available/$env.http-site.conf" @@ -24,6 +24,6 @@ doProvisionHttps(){ sudo chown -R www-data:www-data /etc/nginx sudo service nginx restart sudo service nginx status - do_export_json_section_vars $PRODUCT_INSTANCE_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' } } diff --git a/src/bash/run/provision-nginx.func.sh b/src/bash/run/provision-nginx.func.sh index 801c4517..d6e6b9b0 100644 --- a/src/bash/run/provision-nginx.func.sh +++ b/src/bash/run/provision-nginx.func.sh @@ -43,7 +43,7 @@ EOF sudo systemctl enable nginx sudo systemctl status nginx source $PRODUCT_DIR/.env - do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV_TYPE.env.json '.env.app' + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.app' } diff --git a/src/bash/run/provision-postgres.func.sh b/src/bash/run/provision-postgres.func.sh index 1c10bce8..df65e91e 100644 --- a/src/bash/run/provision-postgres.func.sh +++ b/src/bash/run/provision-postgres.func.sh @@ -1,6 +1,6 @@ do_chk_provision_postgres(){ - source $PRODUCT_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV_TYPE.env.json '.env.db' + source $PRODUCT_DIR/.env ; ENV=$ENV + do_export_json_section_vars $PRODUCT_DIR/cnf/env/$ENV.env.json '.env.db' # doScrambleConfs # because well they were taken from public git repo psql_cnf_dir='/etc/postgresql/12/main' ; sudo mkdir -p "$psql_cnf_dir" diff --git a/src/bash/run/provision-ssh-keys.func.sh b/src/bash/run/provision-ssh-keys.func.sh index 21145201..f88a862d 100644 --- a/src/bash/run/provision-ssh-keys.func.sh +++ b/src/bash/run/provision-ssh-keys.func.sh @@ -1,12 +1,12 @@ do_chk_provision_ssh_keys(){ - do_export_json_section_vars $product_dir/cnf/env/$ENV_TYPE.env.json '.env.db' + do_export_json_section_vars $product_dir/cnf/env/$ENV.env.json '.env.db' which expect || sudo apt-get update && sudo apt-get install -y expect # if the ssh key does not exist create it ... # the perl code for building the private key file path is : - # my $private_key_fpath = $ENV{"HOME"} . '/.ssh/id_rsa.qto.' . $env_type ; - prv_key_fpath=$HOME/.ssh/id_rsa.qto.$ENV_TYPE + # my $private_key_fpath = $ENV{"HOME"} . '/.ssh/id_rsa.qto.' . $ENV ; + prv_key_fpath=$HOME/.ssh/id_rsa.qto.$ENV test -f $prv_key_fpath || { expect <<- EOF_EXPECT set timeout -1 @@ -21,9 +21,9 @@ EOF_EXPECT echo created the fillowing private key file : $prv_key_fpath } - for env_type in `echo dev tst prd`; do - jwt_private_key_file=~/.ssh/qto.$env_type.jwtRS256.key - jwt_public_key_file=~/.ssh/qto.$env_type.jwtRS256.key.pub + for ENV in `echo dev tst prd`; do + jwt_private_key_file=~/.ssh/qto.$ENV.jwtRS256.key + jwt_public_key_file=~/.ssh/qto.$ENV.jwtRS256.key.pub echo << EOF_USING creating and using the following private and public key files for the Guardian's JWT's : $jwt_private_key_file diff --git a/src/bash/run/publish-dbdump-to-s3-public.func.sh b/src/bash/run/publish-dbdump-to-s3-public.func.sh index f5633065..288511be 100644 --- a/src/bash/run/publish-dbdump-to-s3-public.func.sh +++ b/src/bash/run/publish-dbdump-to-s3-public.func.sh @@ -1,9 +1,9 @@ doPublishDbdumpToS3(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.aws' dump_file="$(find $PROJ_INSTANCE_DIR/dat/mix/ -type f -name '*.insrts.dmp.sql'|sort -nr|head -n 1)" dump_file_name=$(basename $dump_file) diff --git a/src/bash/run/publish-dbdump-to-s3.func.sh b/src/bash/run/publish-dbdump-to-s3.func.sh index fe24b00c..eb110ce6 100644 --- a/src/bash/run/publish-dbdump-to-s3.func.sh +++ b/src/bash/run/publish-dbdump-to-s3.func.sh @@ -1,8 +1,8 @@ doPublishDbdumpToS3(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.aws' + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.aws' dump_file="$(find $PROJ_INSTANCE_DIR/dat/mix/ -type f -name '*.insrts.dmp.sql'|sort -nr|head -n 1)" dump_file_name=$(basename $dump_file) diff --git a/src/bash/run/qto/cnf/bin/perl-modules.lst b/src/bash/run/qto/cnf/bin/perl-modules.lst deleted file mode 100644 index 09754a15..00000000 --- a/src/bash/run/qto/cnf/bin/perl-modules.lst +++ /dev/null @@ -1,47 +0,0 @@ - JSON - JSON::Parse - Data::Printer - Carp::Always - IO::CaptureOutput - Net::DNS - Net::Domain::TLD - Email::Valid - IPC::System::Simple - Mojolicious - Mojolicious::Plugin::BasicAuthPlus - Mojolicious::Plugin::StaticCache - Mojolicious::Plugin::RenderFile - Mojolicious::Plugin::Authentication - IO::Socket::SSL - URL::Encode - ExtUtils::Installed - File::Copy - File::Find - File::Path - Spreadsheet::ParseExcel - Spreadsheet::XLSX - Spreadsheet::ParseExcel::FmtJapan - Text::CSV_XS - Module::Build::Tiny - File::Copy::Recursive - Test::Trap - Test::More - Test::Most - Test::Mojo - DBD::Pg - Tie::Hash::DBD - Scalar::Util::Numeric - Time::HiRes - Mojo::JWT - Mojo::Pg - Mojo::Phantom - Authen::Passphrase::BlowfishCrypt - Term::ReadKey - Term::Prompt - DBIx::ProcedureCall - Storable - Redis - Crypt::OpenSSL::RSA - Gravatar::URL - Mojolicious::Plugin::Gzip - Excel::Writer::XLSX diff --git a/src/bash/run/remove-action-files.func.sh b/src/bash/run/remove-action-files.func.sh index f735b3c6..61163652 100644 --- a/src/bash/run/remove-action-files.func.sh +++ b/src/bash/run/remove-action-files.func.sh @@ -2,7 +2,7 @@ # v1.1.2 # --------------------------------------------------------- -# obs we assume that the caller is in the PRODUCT_INSTANCE_DIR +# obs we assume that the caller is in the PRODUCT_DIR # simply delete each file which greps finds to match to the action # name(s) configured in the : # src/bash/qto/tests/rem-qto-actions.lst diff --git a/src/bash/run/remove-action-files.test.sh b/src/bash/run/remove-action-files.test.sh index 705e7792..e44f4b3c 100644 --- a/src/bash/run/remove-action-files.test.sh +++ b/src/bash/run/remove-action-files.test.sh @@ -9,7 +9,7 @@ # --------------------------------------------------------- doTestRemoveActionFiles(){ - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh do_log "DEBUG START doTestRemoveActionFiles" doSpecRemoveActionFiles diff --git a/src/bash/run/remove-docker-containers.func.sh b/src/bash/run/remove-docker-containers.func.sh index a07bcee1..25324fff 100644 --- a/src/bash/run/remove-docker-containers.func.sh +++ b/src/bash/run/remove-docker-containers.func.sh @@ -8,20 +8,20 @@ doRemoveDockerContainers(){ do_flush_screen - do_log "INFO START removing all docker containers with the $product_version.$env_type tag !!! " + do_log "INFO START removing all docker containers with the $product_version.$ENV tag !!! " do_log "INFO Are you SURE ??!! You have 3 seconds to abort by Ctrl + C !!" sleep 3 - ret=$(docker ps -a|grep -i qto-image.$env_type|awk '{print $1}'|wc -l| perl -ne 's/\s+//g;print') + ret=$(docker ps -a|grep -i qto-image.$ENV|awk '{print $1}'|wc -l| perl -ne 's/\s+//g;print') if test $ret -eq 0 then do_log "INFO No docker containers found. Nothing to do !!!" else do_log "INFO stopping containers ..." - docker stop $(docker ps -a|grep -i qto-image:$product_version.$env_type|awk '{print $1}') + docker stop $(docker ps -a|grep -i qto-image:$product_version.$ENV|awk '{print $1}') sleep 1 do_log "INFO removing containers ..." - docker rm $(docker ps -a|grep -i qto-image:$product_version.$env_type|awk '{print $1}') + docker rm $(docker ps -a|grep -i qto-image:$product_version.$ENV|awk '{print $1}') fi do_log "INFO STOP removing all docker containers" diff --git a/src/bash/run/remove-docker-images.func.sh b/src/bash/run/remove-docker-images.func.sh index cbd82c3c..bf8f7b18 100644 --- a/src/bash/run/remove-docker-images.func.sh +++ b/src/bash/run/remove-docker-images.func.sh @@ -16,12 +16,12 @@ doRemoveDockerImages(){ do_log "INFO Are you SURE ??!! You have 3 seconds to abort by Ctrl + C !!" sleep 3 - ret=$(docker images|grep qto-image|grep $product_version.$env_type|awk '{print $3}'|wc -l|perl -ne 's/\s+//g;print') + ret=$(docker images|grep qto-image|grep $product_version.$ENV|awk '{print $3}'|wc -l|perl -ne 's/\s+//g;print') if test $ret -eq 0 then do_log "INFO No docker images found. Nothing to do !!!" else - docker rmi $(docker images | grep qto-image | grep $product_version.$env_type |awk '{print $3}') + docker rmi $(docker images | grep qto-image | grep $product_version.$ENV |awk '{print $3}') fi do_log "INFO STOP removing all the docker images" diff --git a/src/bash/run/remove-package.func.sh b/src/bash/run/remove-package.func.sh index b3aa63de..4fa3dae5 100644 --- a/src/bash/run/remove-package.func.sh +++ b/src/bash/run/remove-package.func.sh @@ -11,14 +11,14 @@ doRemovePackage(){ #remove the dirs as well for dir in `cat "$include_file"`; do ( - dir="$PRODUCT_INSTANCE_DIR/$dir" + dir="$PRODUCT_DIR/$dir" test -d "$dir" && cmd="rm -fRv $dir" && doRunCmdAndLog "$cmd" ); done cmd="rm -fv $include_file" && \ doRunCmdAndLog "$cmd" - echo "rm -fvr $PRODUCT_INSTANCE_DIR">>"$product_dir/remove-""$environment_name".sh + echo "rm -fvr $PRODUCT_DIR">>"$product_dir/remove-""$environment_name".sh echo "rm -fv $product_dir/remove-""$environment_name".sh>>"$product_dir/remove-""$environment_name".sh nohup bash "$product_dir/remove-""$environment_name".sh & } diff --git a/src/bash/run/remove-package.test.sh b/src/bash/run/remove-package.test.sh index 6cc5ec78..e22f91d9 100644 --- a/src/bash/run/remove-package.test.sh +++ b/src/bash/run/remove-package.test.sh @@ -11,14 +11,14 @@ doTestRemovePackage(){ #remove the dirs as well for dir in `cat "$include_file"`; do ( - dir="$PRODUCT_INSTANCE_DIR/$dir" + dir="$PRODUCT_DIR/$dir" test -d "$dir" && cmd="rm -fRv $dir" && doRunCmdAndLog "$cmd" ); done cmd="rm -fv $include_file" && \ doRunCmdAndLog "$cmd" - echo "rm -fvr $PRODUCT_INSTANCE_DIR">>"$product_dir/remove-""$environment_name".sh + echo "rm -fvr $PRODUCT_DIR">>"$product_dir/remove-""$environment_name".sh echo "rm -fv $product_dir/remove-""$environment_name".sh>>"$product_dir/remove-""$environment_name".sh nohup bash "$product_dir/remove-""$environment_name".sh & } diff --git a/src/bash/run/restart-network.func.sh b/src/bash/run/restart-network.func.sh index 19187b2d..e6911010 100644 --- a/src/bash/run/restart-network.func.sh +++ b/src/bash/run/restart-network.func.sh @@ -1,4 +1,6 @@ -doRestartNetwork(){ +#!/bin/bash + +do_restart_network(){ test -z ${USER:-} && export USER=$(echo $HOME|cut -d'/' -f 3) test `sudo -n -l -U $USER 2>&1 | egrep -c -i "not allowed to run sudo|unknown user"` -eq 0 \ diff --git a/src/bash/run/restore-tmux-session.func.sh b/src/bash/run/restore-tmux-session.func.sh index 50b845ab..35854cef 100644 --- a/src/bash/run/restore-tmux-session.func.sh +++ b/src/bash/run/restore-tmux-session.func.sh @@ -7,7 +7,7 @@ # restores a tmux session # --------------------------------------------------------- doRestoreTmuxSession(){ - source "$PRODUCT_INSTANCE_DIR/src/bash/qto/funcs/sys/tmux/tmux-common.sh" + source "$PRODUCT_DIR/src/bash/qto/funcs/sys/tmux/tmux-common.sh" doCheckTmuxIsInstalled set +e local count=0 diff --git a/src/bash/run/run-adhoc-pgsql-scripts.func.sh b/src/bash/run/run-adhoc-pgsql-scripts.func.sh index bd44cd4a..f00c2d01 100644 --- a/src/bash/run/run-adhoc-pgsql-scripts.func.sh +++ b/src/bash/run/run-adhoc-pgsql-scripts.func.sh @@ -1,20 +1,20 @@ doRunAdhocPgsqlScripts(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' pgsql_scripts_dir="$PROJ_INSTANCE_DIR/src/sql/pgsql/ad-hoc" sleep 3 ; do_flush_screen ; echo -e "should run the following files: \n\n" ; find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n # run the sql scripts in alphabetical order - hence the file naming convention - while read -r sql_script ; do + while read -r sql_script ; do tmp_log_file="$tmp_dir/run-adhoc-pgsql-scripts.$$.log" relative_sql_script=$(echo $sql_script|perl -ne "s|$PROJ_INSTANCE_DIR\/||g;print") do_log "INFO START ::: running $relative_sql_script" ; echo -e '\n\n' perl -pi -e 's|-- DROP|DROP|g' $sql_script # drop and create the objects - + echo running: psql -v ON_ERROR_STOP=1 -q -t -X -w \ -h $postgres_rdbms_host -p $postgres_rdbms_port -U "${postgres_sys_usr_admin:-}" \ -f "$sql_script" "$postgres_app_db" @@ -24,15 +24,15 @@ doRunAdhocPgsqlScripts(){ ret=$? perl -pi -e 's|DROP|-- DROP|g' $relative_sql_script - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && sleep 3 test $ret -ne 0 && do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" test $ret -ne 0 && break - + echo -e '\n\n'; do_flush_screen ; do_log "INFO STOP ::: running $relative_sql_script" rm -f tmp_log_file done < <(find "$pgsql_scripts_dir" -type f -name "*.sql"|sort -n) - - do_flush_screen ; + + do_flush_screen ; } diff --git a/src/bash/run/run-benchmarks.func.sh b/src/bash/run/run-benchmarks.func.sh index ab025f39..4df11f5f 100644 --- a/src/bash/run/run-benchmarks.func.sh +++ b/src/bash/run/run-benchmarks.func.sh @@ -8,8 +8,8 @@ doRunBenchmarks(){ export QTO_NO_AUTH=1 test -z ${qto_project:-} && \ - source "$PRODUCT_INSTANCE_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ - doParseCnfEnvVars "$PRODUCT_INSTANCE_DIR/cnf/$RUN_UNIT.$env_type.*.cnf" + source "$PRODUCT_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ + doParseCnfEnvVars "$PRODUCT_DIR/cnf/$RUN_UNIT.$ENV.*.cnf" do_log "INFO START testing controllers" while read -r f ; do diff --git a/src/bash/run/run-container.func.sh b/src/bash/run/run-container.func.sh index 7eec314c..64b12d33 100644 --- a/src/bash/run/run-container.func.sh +++ b/src/bash/run/run-container.func.sh @@ -5,20 +5,20 @@ doRunContainer(){ do_log "DEBUG START doRunContainer" test -z ${qto_project:-} && \ - source "$PRODUCT_INSTANCE_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ - doParseCnfEnvVars $PRODUCT_INSTANCE_DIR/cnf/$RUN_UNIT.$env_type.$host_name.cnf + source "$PRODUCT_DIR/lib/bash/funcs/parse-cnf-env-vars.sh" && \ + doParseCnfEnvVars $PRODUCT_DIR/cnf/$RUN_UNIT.$ENV.$host_name.cnf - tgt_PRODUCT_INSTANCE_DIR='/opt/csitea/'"$RUN_UNIT/$environment_name" - chmod 777 $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/docker-entry-point.sh + tgt_PRODUCT_DIR='/opt/csitea/'"$RUN_UNIT/$environment_name" + chmod 777 $PRODUCT_DIR/src/bash/qto/install/docker/docker-entry-point.sh container_name='qto-container-'$(date "+%Y%m%d_%H%M%S") docker run -d --name $container_name \ - -e PRODUCT_INSTANCE_DIR=$tgt_PRODUCT_INSTANCE_DIR \ + -e PRODUCT_DIR=$tgt_PRODUCT_DIR \ -e host_host_name=$(hostname -s) \ - -v $PRODUCT_INSTANCE_DIR:$tgt_PRODUCT_INSTANCE_DIR \ - -p 127.0.0.1:${mojo_morbo_port:-}:$mojo_morbo_port \ - 'qto-image':${product_version:-}.$env_type + -v $PRODUCT_DIR:$tgt_PRODUCT_DIR \ + -p 127.0.0.1:${MOJO_MORBO_PORT:-}:$MOJO_MORBO_PORT \ + 'qto-image':${product_version:-}.$ENV # -p 127.0.0.1:${postgres_rdbms_port:-}:$postgres_rdbms_port \ diff --git a/src/bash/run/run-functional-tests.func.sh b/src/bash/run/run-functional-tests.func.sh index efeb0bf9..98894dfe 100644 --- a/src/bash/run/run-functional-tests.func.sh +++ b/src/bash/run/run-functional-tests.func.sh @@ -4,14 +4,14 @@ # implement the calls to all the functional tests # --------------------------------------------------------- doRunFunctionalTests(){ - + export QTO_NO_AUTH=1 - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_log "INFO START testing controllers" - while read -r f ; do + while read -r f ; do do_log "INFO START functional test for $f" perl $f ; test $? -ne 0 && do_exit $? " the tests in the $f failed !!!" diff --git a/src/bash/run/run-integration-tests.func.sh b/src/bash/run/run-integration-tests.func.sh index 87a3f0d4..722f71fa 100644 --- a/src/bash/run/run-integration-tests.func.sh +++ b/src/bash/run/run-integration-tests.func.sh @@ -1,19 +1,19 @@ # src/bash/qto/funcs/run-integration-tests.func.sh doRunIntegrationTests(){ - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.app' - bash src/bash/qto/qto.sh -a mojo-morbo-stop - bash src/bash/qto/qto.sh -a mojo-morbo-start + bash src/bash/qto/qto.sh -a mojo-morbo-stop + bash src/bash/qto/qto.sh -a mojo-morbo-start #test $? -ne 0 && return do_log "INFO make a backup of the current db - inserts only " bash src/bash/qto/qto.sh -a backup-postgres-db-inserts - - do_log "INFO re-create the $env_type db" + + do_log "INFO re-create the $ENV db" bash src/bash/qto/qto.sh -a run-pgsql-scripts last_db_backup_file=$(find $PROJ_INSTANCE_DIR/dat/mix -name $postgres_app_db*insrts.dmp.sql | sort -n | tail -n 1) @@ -25,12 +25,12 @@ doRunIntegrationTests(){ do_log "INFO generating md docs" bash src/bash/qto/qto.sh -a generate-md-docs test $? -ne 0 && return - - do_log "INFO START integration testing - do run all the implemented action tests" + + do_log "INFO START integration testing - do run all the implemented action tests" perl src/perl/qto/t/TestQto.pl test $? -ne 0 && return - echo -e "\n\n\n" - + echo -e "\n\n\n" + } # eof file: src/bash/qto/funcs/run-integration-tests.func.sh diff --git a/src/bash/run/run-js-unit-tests.func.sh b/src/bash/run/run-js-unit-tests.func.sh index 253956da..0c9413c0 100644 --- a/src/bash/run/run-js-unit-tests.func.sh +++ b/src/bash/run/run-js-unit-tests.func.sh @@ -12,9 +12,9 @@ doRunJsUnitTests(){ # sudo npm install -g --save-dev chrome-remote-interface # which chai 2>/dev/null || \ # { echo >&2 "The chai is missing - \"sudo npm install -g --save-dev chai \" ! Aborting ..."; exit 1; } - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/flush-screen.sh + source $PRODUCT_DIR/lib/bash/funcs/flush-screen.sh - js_unit_tests_dir="$PRODUCT_INSTANCE_DIR/src/js/node/js-unit-tests" + js_unit_tests_dir="$PRODUCT_DIR/src/js/node/js-unit-tests" cd $js_unit_tests_dir while read -r d ; do echo -e "cd to dir: $d" diff --git a/src/bash/run/run-pgsql-scripts.func.sh b/src/bash/run/run-pgsql-scripts.func.sh index 496377af..030cbf02 100644 --- a/src/bash/run/run-pgsql-scripts.func.sh +++ b/src/bash/run/run-pgsql-scripts.func.sh @@ -1,9 +1,9 @@ doRunPgsqlScripts(){ - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" - pgsql_scripts_dir="$PRODUCT_INSTANCE_DIR/src/sql/pgsql/qto" + pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" tmp_log_file="$tmp_dir/.$$.log" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" diff --git a/src/bash/run/run-qto-db-ddl.func.sh b/src/bash/run/run-qto-db-ddl.func.sh index cff67bac..f1afa72a 100644 --- a/src/bash/run/run-qto-db-ddl.func.sh +++ b/src/bash/run/run-qto-db-ddl.func.sh @@ -1,15 +1,15 @@ doRunQtoDbDdl(){ - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" do_export_json_section_vars $PROJ_CONF_FILE '.env.db' do_log "INFO using PROJ_INSTANCE_DIR: $PROJ_INSTANCE_DIR" ; do_log "INFO using PROJ_CONF_FILE: $PROJ_CONF_FILE" sleep 3; # 00 create the db tmp_log_file="$tmp_dir/.$$.log" - pgsql_scripts_dir="$PRODUCT_INSTANCE_DIR/src/sql/pgsql/qto" + pgsql_scripts_dir="$PRODUCT_DIR/src/sql/pgsql/qto" sql_script="$pgsql_scripts_dir/00.create-db.pgsql" PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -v -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ @@ -17,11 +17,11 @@ doRunQtoDbDdl(){ -v postgres_app_db="${postgres_app_db:-}" \ -f "$sql_script" postgres > "$tmp_log_file" 2>&1 ret=$? - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it - test $ret -ne 0 && { + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + test $ret -ne 0 && { sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!" ; break ; } - + doRunPgsqlScripts # 01 create / modify the app user sql_script="$pgsql_scripts_dir/01.create-qto-app-user.pgsql" @@ -34,10 +34,10 @@ doRunQtoDbDdl(){ -f "$sql_script" "${postgres_app_db:-}" > "$tmp_log_file" 2>&1 ret=$? - cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it + cat "$tmp_log_file" ; cat "$tmp_log_file" >> $log_file # show it and save it test $ret -ne 0 && { - sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; - } + sleep 3 ; do_exit 1 "pid: $$ psql ret $ret - failed to run sql_script: $sql_script !!!"; + } PGPASSWORD="${postgres_sys_usr_admin_pw:-}" psql -q -t -X -w -U "${postgres_sys_usr_admin:-}" \ -h $postgres_rdbms_host -p $postgres_rdbms_port -d postgres -v ON_ERROR_STOP=1 -c \ "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO $postgres_app_usr; diff --git a/src/bash/run/run-unit-tests.func.sh b/src/bash/run/run-unit-tests.func.sh index b448a771..ad828f2a 100644 --- a/src/bash/run/run-unit-tests.func.sh +++ b/src/bash/run/run-unit-tests.func.sh @@ -1,21 +1,24 @@ -# file: src/bash/qto/funcs/run-unit-tests.func.sh +#!/bin/bash -# v0.7.8 +# v0.8.8 # --------------------------------------------------------- # call all the unit tests - fail if even one fails ... # --------------------------------------------------------- -doRunUnitTests(){ - +do_run_unit_tests(){ + + export PATH=$PATH:~/perl5/bin/ + export PERL5LIB=${PERL5LIB:-}:~/perl5/lib/perl5/:$PRODUCT_DIR/src/perl/qto/t/lib:$PRODUCT_DIR/src/perl/qto/public/lib:$PRODUCT_DIR/src/perl/qto/lib + export QTO_NO_AUTH=1 - test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.db' - do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json '.env.app' - + test -z "${PROJ_INSTANCE_DIR-}" && PROJ_INSTANCE_DIR="$PRODUCT_DIR" + # + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.db' + do_export_json_section_vars $PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json '.env.app' + do_log "INFO START running the unit tests" - while read -r f ; do + while read -r f ; do do_log "INFO START unit test for $f" - perl $f + perl -MCarp::Always $f test $? -ne 0 && do_exit $? " the tests in the $f failed !!!" do_log "INFO STOP unit test for $f" sleep 1 diff --git a/src/bash/run/search-and-replace-tokens.func.sh b/src/bash/run/search-and-replace-tokens.func.sh index 28071f7c..259116a6 100644 --- a/src/bash/run/search-and-replace-tokens.func.sh +++ b/src/bash/run/search-and-replace-tokens.func.sh @@ -1,6 +1,6 @@ doSearchAndReplaceTokens(){ - test -d $dir || dir=$PRODUCT_INSTANCE_DIR/src/sql/ + test -d $dir || dir=$PRODUCT_DIR/src/sql/ while read -r l ; do to_srch=$(echo $l|awk '{print $1}') diff --git a/src/bash/run/set-up-py-v-env.func.sh b/src/bash/run/set-up-py-v-env.func.sh index ac8840da..ae22660c 100644 --- a/src/bash/run/set-up-py-v-env.func.sh +++ b/src/bash/run/set-up-py-v-env.func.sh @@ -12,22 +12,22 @@ doSetupPyVEnv(){ } pip3 install virtualenv ; python3 -m venv ./venv - pip3 install -r $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + pip3 install -r $PRODUCT_DIR/cnf/bin/python/requirements.txt sleep 1 ; do_flush_screen - installed_python_modules=$(cat $PRODUCT_INSTANCE_DIR/cnf/python/requirements.txt) + installed_python_modules=$(cat $PRODUCT_DIR/cnf/python/requirements.txt) cat << EOF attempted to install the following python modules: $installed_python_modules listed in the following file: - $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + $PRODUCT_DIR/cnf/bin/python/requirements.txt # to activate the virtual environment - cd $PRODUCT_INSTANCE_DIR + cd $PRODUCT_DIR source ./venv/bin/activate # you MIGHT have to - pip3 install -r $PRODUCT_INSTANCE_DIR/cnf/bin/python/requirements.txt + pip3 install -r $PRODUCT_DIR/cnf/bin/python/requirements.txt # to exit the venv, run the following cmd: deactivate diff --git a/src/bash/run/spawn-aws-ec2.func.sh b/src/bash/run/spawn-aws-ec2.func.sh index 79536ebc..fcaca5cc 100644 --- a/src/bash/run/spawn-aws-ec2.func.sh +++ b/src/bash/run/spawn-aws-ec2.func.sh @@ -1,8 +1,8 @@ doSpawnAwsEc2(){ - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" - source $PROJ_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh + # + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" + do_export_json_section_vars $PROJ_CONF_FILE '.env.aws' mkdir -p $PROJ_INSTANCE_DIR/src/terraform/qto @@ -13,7 +13,7 @@ doSpawnAwsEc2(){ sudo timedatectl set-ntp no; timedatectl sudo service ntp stop ; sudo service ntp start; ntpq -p - + export key_name=$(basename `eval echo ${private_ssh_key_fpath:-}`) export public_ssh_key_fpath=$(eval echo ${public_ssh_key_fpath:-}) export public_ssh_key_content=$(cat ${public_ssh_key_fpath:-}) diff --git a/src/bash/run/unscramble-confs.func.sh b/src/bash/run/unscramble-confs.func.sh index 4b739d67..df542a89 100644 --- a/src/bash/run/unscramble-confs.func.sh +++ b/src/bash/run/unscramble-confs.func.sh @@ -1,8 +1,13 @@ -doUncrambleConfs(){ +#!/bin/bash + +do_unscramble_confs(){ + + + while read -r file ; do test -f $file.bak || continue test -f $file.bak && cp -v $file.bak $file test -f $file.bak && rm -v $file.bak - done < <(find $PRODUCT_INSTANCE_DIR/cnf/env/ -type f -name '*.json') + done < <(find $PRODUCT_DIR/cnf/env/ -type f -name '*.json') exit 0 } diff --git a/src/docker/Dockerfile.deploy-qto-app-host.0.7.2 b/src/docker/Dockerfile.deploy-qto-app-host.0.7.2 index fbabdc7c..3910a0d4 100755 --- a/src/docker/Dockerfile.deploy-qto-app-host.0.7.2 +++ b/src/docker/Dockerfile.deploy-qto-app-host.0.7.2 @@ -1,8 +1,8 @@ # vim:set ft=dockerfile: FROM ubuntu:18.04 -ARG PRODUCT_INSTANCE_DIR -ENV PRODUCT_INSTANCE_DIR $PRODUCT_INSTANCE_DIR +ARG PRODUCT_DIR +ENV PRODUCT_DIR $PRODUCT_DIR ARG postgres_app_db ENV postgres_app_db $postgres_app_db ARG postgres_sys_usr_admin='usrqtoadmin' @@ -21,8 +21,8 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y wget curl sudo perl zip unzip gnupg2 gnupg1 git bash jq vim WORKDIR /opt/ -ADD . $PRODUCT_INSTANCE_DIR -WORKDIR $PRODUCT_INSTANCE_DIR +ADD . $PRODUCT_DIR +WORKDIR $PRODUCT_DIR # ^^^ todo:ysg replace with the git clone RUN chmod 755 src/bash/qto/install/docker/install-admin-utils.sh && \ @@ -41,18 +41,18 @@ RUN chmod 755 src/bash/qto/install/docker/install-perl-modules.sh && \ RUN chown -R usrqtoadmin:grpqtoadmin "/opt/csitea" && \ chmod 777 "/opt" && \ - chmod 755 "$PRODUCT_INSTANCE_DIR/src/bash/qto/bootstrap-qto-docker.sh" + chmod 755 "$PRODUCT_DIR/src/bash/qto/bootstrap-qto-docker.sh" USER usrqtoadmin -WORKDIR $PRODUCT_INSTANCE_DIR -RUN $PRODUCT_INSTANCE_DIR/src/bash/qto/bootstrap-qto-docker.sh +WORKDIR $PRODUCT_DIR +RUN $PRODUCT_DIR/src/bash/qto/bootstrap-qto-docker.sh USER root RUN rm -vr /opt/csitea && chmod 755 "/opt" USER usrqtoadmin -WORKDIR $PRODUCT_INSTANCE_DIR +WORKDIR $PRODUCT_DIR # CMD ["bash","-c","while true; do sleep 1; done;"] -CMD bash -c $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/docker-entry-point.sh +CMD bash -c $PRODUCT_DIR/src/bash/qto/install/docker/docker-entry-point.sh diff --git a/src/docker/Dockerfile.deploy-qto-db-host.0.7.2 b/src/docker/Dockerfile.deploy-qto-db-host.0.7.2 index fbabdc7c..3910a0d4 100755 --- a/src/docker/Dockerfile.deploy-qto-db-host.0.7.2 +++ b/src/docker/Dockerfile.deploy-qto-db-host.0.7.2 @@ -1,8 +1,8 @@ # vim:set ft=dockerfile: FROM ubuntu:18.04 -ARG PRODUCT_INSTANCE_DIR -ENV PRODUCT_INSTANCE_DIR $PRODUCT_INSTANCE_DIR +ARG PRODUCT_DIR +ENV PRODUCT_DIR $PRODUCT_DIR ARG postgres_app_db ENV postgres_app_db $postgres_app_db ARG postgres_sys_usr_admin='usrqtoadmin' @@ -21,8 +21,8 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y wget curl sudo perl zip unzip gnupg2 gnupg1 git bash jq vim WORKDIR /opt/ -ADD . $PRODUCT_INSTANCE_DIR -WORKDIR $PRODUCT_INSTANCE_DIR +ADD . $PRODUCT_DIR +WORKDIR $PRODUCT_DIR # ^^^ todo:ysg replace with the git clone RUN chmod 755 src/bash/qto/install/docker/install-admin-utils.sh && \ @@ -41,18 +41,18 @@ RUN chmod 755 src/bash/qto/install/docker/install-perl-modules.sh && \ RUN chown -R usrqtoadmin:grpqtoadmin "/opt/csitea" && \ chmod 777 "/opt" && \ - chmod 755 "$PRODUCT_INSTANCE_DIR/src/bash/qto/bootstrap-qto-docker.sh" + chmod 755 "$PRODUCT_DIR/src/bash/qto/bootstrap-qto-docker.sh" USER usrqtoadmin -WORKDIR $PRODUCT_INSTANCE_DIR -RUN $PRODUCT_INSTANCE_DIR/src/bash/qto/bootstrap-qto-docker.sh +WORKDIR $PRODUCT_DIR +RUN $PRODUCT_DIR/src/bash/qto/bootstrap-qto-docker.sh USER root RUN rm -vr /opt/csitea && chmod 755 "/opt" USER usrqtoadmin -WORKDIR $PRODUCT_INSTANCE_DIR +WORKDIR $PRODUCT_DIR # CMD ["bash","-c","while true; do sleep 1; done;"] -CMD bash -c $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/docker-entry-point.sh +CMD bash -c $PRODUCT_DIR/src/bash/qto/install/docker/docker-entry-point.sh diff --git a/src/docker/Dockerfile.deploy-qto.0.7.2 b/src/docker/Dockerfile.deploy-qto.0.7.2 index fb134e26..3d597fd4 100755 --- a/src/docker/Dockerfile.deploy-qto.0.7.2 +++ b/src/docker/Dockerfile.deploy-qto.0.7.2 @@ -2,12 +2,12 @@ FROM ubuntu:18.04 ARG TZ=$TZ -ARG ENV_TYPE=$ENV_TYPE +ARG ENV=$ENV ARG USER=$USER ARG UID=$UID ARG GROUP=$GROUP ARG GID=$GID -ARG PRODUCT_INSTANCE_DIR=$PRODUCT_INSTANCE_DIR +ARG PRODUCT_DIR=$PRODUCT_DIR ARG postgres_app_db=$postgres_app_db ARG postgres_sys_usr_admin=$postgres_sys_usr_admin ARG root_pwd=$root_pwd @@ -70,11 +70,11 @@ sudo -u postgres psql template1 -c 'CREATE EXTENSION IF NOT EXISTS "dblink";' ENV psql_cnf_dir='/etc/postgresql/11/main' RUN cp -v $psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf.orig.bak && \ - cp -v $PRODUCT_INSTANCE_DIR/cnf/postgres/$psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf && \ + cp -v $PRODUCT_DIR/cnf/postgres/$psql_cnf_dir/pg_hba.conf $psql_cnf_dir/pg_hba.conf && \ chown postgres:postres $psql_cnf_dir RUN sudo cp -v $psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf.orig && \ - sudo cp -v $PRODUCT_INSTANCE_DIR/cnf/postgres/$psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf + sudo cp -v $PRODUCT_DIR/cnf/postgres/$psql_cnf_dir/postgresql.conf $psql_cnf_dir/postgresql.conf RUN chown -R postgres:postgres "/etc/postgresql" && \ chown -R postgres:postgres "/var/lib/postgresql" && \ @@ -123,7 +123,7 @@ USER $USER # stop ::: install perl modules USER $USER -WORKDIR $PRODUCT_INSTANCE_DIR +WORKDIR $PRODUCT_DIR # CMD ["bash","-c","while true; do sleep 1; done;"] -CMD bash -c $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/docker-entry-point.sh +CMD bash -c $PRODUCT_DIR/src/bash/qto/install/docker/docker-entry-point.sh diff --git a/src/docker/Dockerfile.deploy-quick-test b/src/docker/Dockerfile.deploy-quick-test index e021a977..ef8e6933 100755 --- a/src/docker/Dockerfile.deploy-quick-test +++ b/src/docker/Dockerfile.deploy-quick-test @@ -3,21 +3,21 @@ FROM ubuntu:18.04 USER root -ARG PRODUCT_INSTANCE_DIR=/opt/csitea/qto/qto.0.6.5.dev.usrqtoadmin -ENV PRODUCT_INSTANCE_DIR $PRODUCT_INSTANCE_DIR +ARG PRODUCT_DIR=/opt/csitea/qto/qto.0.6.5.dev.usrqtoadmin +ENV PRODUCT_DIR $PRODUCT_DIR ARG host_host_name ENV host_host_name $host_host_name WORKDIR /opt/ -ADD . $PRODUCT_INSTANCE_DIR -WORKDIR $PRODUCT_INSTANCE_DIR +ADD . $PRODUCT_DIR +WORKDIR $PRODUCT_DIR # obs !!! todo: parametrize qto-190616104728 RUN echo "root:root" | chpasswd RUN echo 'export PS1="`date "+%F %T"` \u@\h \w \\n\\n "' >> /root/.bashrc # src: https://stackoverflow.com/a/28769950/65706 -RUN chmod 755 $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/install-test.sh && \ - bash $PRODUCT_INSTANCE_DIR/src/bash/qto/install/docker/install-test.sh +RUN chmod 755 $PRODUCT_DIR/src/bash/qto/install/docker/install-test.sh && \ + bash $PRODUCT_DIR/src/bash/qto/install/docker/install-test.sh CMD ["bash","-c","while true; do sleep 1; done;"] diff --git a/src/docker/app/Dockerfile b/src/docker/app/Dockerfile index 9c191200..4cc38d95 100644 --- a/src/docker/app/Dockerfile +++ b/src/docker/app/Dockerfile @@ -21,11 +21,13 @@ VOLUME $PRODUCT_DIR # install OS utils RUN apk update && apk upgrade && apk add --no-cache \ - bash binutils vim jq wget curl zip unzip busybox-extras su-exec sudo shadow + bash binutils vim jq wget curl zip unzip tar busybox-extras su-exec sudo shadow -# install backend-utils + +# install build utils && backend-utils +# gnupg is needed for Module::Signature. RUN apk update && apk upgrade && apk add --no-cache \ - build-base gcc openssl-dev libmagic ttf-freefont + build-base make gcc openssl-dev libmagic ttf-freefont gnupg libpq libpq-dev # start ::: adding OS APPUSR and APPGRP @@ -44,13 +46,10 @@ RUN set -x ; addgroup -g "$GID" -S "$APPGRP" && \ -G "$APPGRP" "$APPUSR" && exit 0 ; exit 1 RUN echo "$APPUSR ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers -RUN echo "export PS1=\"$PS1\"" >> /home/$APPUSR/.bashrc + # stop ::: adding OS APPUSR and APPGRP -## alpine curl and wget aren't fully compatible, so we install them -## here. gnupg is needed for Module::Signature. -RUN apk update && apk upgrade && apk add curl tar make gcc build-base wget gnupg RUN mkdir -p /usr/src/perl @@ -84,10 +83,15 @@ RUN curl -SLO https://www.cpan.org/src/5.0/perl-5.32.0.tar.gz \ ## from tianon/perl ENV PERL_CPANM_OPT --verbose --mirror https://cpan.metacpan.org --mirror-only -RUN cpanm Digest::SHA Module::Signature && rm -rf ~/.cpanm -ENV PERL_CPANM_OPT $PERL_CPANM_OPT --verify +RUN cpanm Digest::SHA Module::Signature && \ + cpanm local::lib && \ +rm -rf ~/.cpanm +ENV PERL_CPANM_OPT $PERL_CPANM_OPT --verify +RUN echo "export PS1=\"$PS1\"" >> /home/$APPUSR/.bashrc && \ + chown -R $APPUSR:$APPGRP /home/$APPUSR && \ + chmod -R 0775 /home/$APPUSR ADD --chown=$APPUSR:$APPGRP "." /home/$APPUSR$PRODUCT_DIR # switch to the app user @@ -96,11 +100,13 @@ USER $APPUSR # stop ::: adding OS APPUSR and APPGRP +WORKDIR $PRODUCT_DIR + # Note: using $APPUSR/$PRODUCT_DIR will result in /home/appusr//opt/product/r # ~~~^^^~~~ -# RUN SUB_COMPONENT=tpl-gen bash /home/$APPUSR$PRODUCT_DIR/run -a do_check_install_py_modules +RUN bash /home/$APPUSR$PRODUCT_DIR/run -a do_alpine_chk_install_perl_modules + -WORKDIR $PRODUCT_DIR CMD exec /bin/bash -c /home/$APPUSR$PRODUCT_DIR/src/bash/run/docker-init-app.sh diff --git a/src/perl/qto/lib/Qto.pm b/src/perl/qto/lib/Qto.pm index 4d17ee38..df2b7ee2 100755 --- a/src/perl/qto/lib/Qto.pm +++ b/src/perl/qto/lib/Qto.pm @@ -2,7 +2,7 @@ package Qto; use Mojo::Base 'Mojolicious'; -use strict ; use warnings ; +use strict ; use warnings ; use utf8; use strict; use autodie; @@ -12,7 +12,7 @@ use open qw< :std :utf8 >; use charnames qw< :full >; use feature qw< unicode_strings >; -use Data::Printer ; +use Data::Printer ; use Cwd qw ( abs_path ); use File::Basename qw< basename >; use Carp qw< carp croak confess cluck >; @@ -21,16 +21,17 @@ use Unicode::Normalize qw< NFD NFC >; use IO::Compress::Gzip 'gzip' ; use URL::Encode qw(url_encode url_decode); -use Mojolicious::Plugin::RenderFile ; -use Mojolicious::Plugin::Gzip ; +use Mojolicious::Plugin::RenderFile ; +# use Mojolicious::Plugin::Gzip ; +# todo:remove ^^^ ?! use Qto::App::Utils::Initiator; use Qto::App::Utils::Logger; -use Qto::App::Mdl::Model ; +use Qto::App::Mdl::Model ; use JSON::Parse 'json_file_to_perl'; use Qto::App::Cnvr::CnrDbName qw(toPlainName toEnvName); -use Qto::Controller::MetaDataController ; -use Qto::App::IO::In::RdrDirs ; +use Qto::Controller::MetaDataController ; +use Qto::App::IO::In::RdrDirs ; use Qto::App::Sec::Guardian ; my $module_trace = 0; @@ -49,15 +50,15 @@ sub startup { my $self = shift; - $self->doRegisterPlugins() ; + $self->doRegisterPlugins() ; + + $self->doSetSessions() ; - $self->doSetSessions() ; - $self->doLoadAppConfig(); $self->doReloadProjectsDbMeta(); - - $self->doSetHooks() ; + + $self->doSetHooks() ; $self->doSetRoutes(); @@ -71,24 +72,24 @@ sub startup { # ----------------------------------------------------------------------------- sub doLoadAppConfig { - my $self = shift ; + my $self = shift ; my $msg = 'error during initialization !!!'; my $ret = 1; $objInitiator = 'Qto::App::Utils::Initiator'->new(); $config = json_file_to_perl ($objInitiator->doResolveConfFile()); - my $ProductInstanceDir = $objInitiator->doResolveProductInstanceDir(-1); - $config->{'env'}->{'run'}->{'ProductInstanceDir'} = $ProductInstanceDir ; + my $ProductInstanceDir = $objInitiator->doResolveProductInstanceDir(-1); + $config->{'env'}->{'run'}->{'ProductInstanceDir'} = $ProductInstanceDir ; $config->{'env'}->{'run'}->{'ProductName'} = $objInitiator->doResolveProductName(); $config->{'env'}->{'run'}->{'VERSION'} = $objInitiator->doResolveVersion(); - $config->{'env'}->{'run'}->{'ENV_TYPE'} = $objInitiator->doResolveEnvType(); + $config->{'env'}->{'run'}->{'ENV'} = $objInitiator->doResolveEnvType(); $objLogger = 'Qto::App::Utils::Logger'->new(\$config); my $currentShortHash = `git rev-parse --short HEAD` ; chomp($currentShortHash); - $config->{'env'}->{'run'}->{ 'GitShortHash' } = $currentShortHash || "" ; + $config->{'env'}->{'run'}->{ 'GitShortHash' } = $currentShortHash || "" ; my $port = $config->{'env'}->{'app'}->{ 'port' }; my $protocol = $config->{'env'}->{'app'}->{ 'ht_protocol' }; - my $num_of_workers = $config->{'env'}->{'app'}->{ 'num_of_workers' } || 5 ; + my $num_of_workers = $config->{'env'}->{'app'}->{ 'num_of_workers' } || 5 ; my $inactivity_timeout = $config->{'env'}->{'app'}->{ 'inactivity_timeout' } || 60 ; my $listen = 'http://*:'.$port; @@ -106,16 +107,16 @@ sub doLoadAppConfig { $config->{'env'}->{'run'}->{ 'PublicRSAKey' } = $objGuardian->doGetPublicKeySecret(); $self->set('ObjGuardian', $objGuardian ); - my $objRdrDirs = 'Qto::App::IO::In::RdrDirs'->new (); - my $arrDirs = $objRdrDirs->doFindMaxDepth( "$ProductInstanceDir/src/perl/qto/public", 1) ; + my $objRdrDirs = 'Qto::App::IO::In::RdrDirs'->new (); + my $arrDirs = $objRdrDirs->doFindMaxDepth( "$ProductInstanceDir/src/perl/qto/public", 1) ; foreach my $dir (@{$arrDirs}) { $dir =~ s/(.*)[\\|\/](.*?)/$2/g; } - my @dirsAndFiles = @{$arrDirs} ; push @dirsAndFiles , 'index.html' ; + my @dirsAndFiles = @{$arrDirs} ; push @dirsAndFiles , 'index.html' ; $config->{'env'}->{'run'}->{ 'PublicLevel1Dirs' } = \@dirsAndFiles ; # debug rint $config; $self = $self->config( $config ); - + $self->renderer->cache->max_keys(0); $msg = "START MAIN"; @@ -124,12 +125,12 @@ sub doLoadAppConfig { # ----------------------------------------------------------------------------- -# initial load into redis the metadata of ALL databases +# initial load into redis the metadata of ALL databases # ----------------------------------------------------------------------------- sub doReloadProjectsDbMeta { my $self = shift ; my $start_time = Time::HiRes::gettimeofday(); - my $msg = '' ; + my $msg = '' ; my $config = $self->config ; # the global config my $cnf = $self->config->{'env'}->{'db'}; # the db section only ... @@ -139,9 +140,9 @@ sub doReloadProjectsDbMeta { my @dbs = split (',',$proj_dbs_str); foreach my $db ( @dbs ) { - #print "start loading meta for db : \"" . "$db" . '"' . " \n" ; + #print "start loading meta for db : \"" . "$db" . '"' . " \n" ; my $item = 'app-startup'; - my $objModel = 'Qto::App::Mdl::Model'->new ( \$config , $db , $item) ; + my $objModel = 'Qto::App::Mdl::Model'->new ( \$config , $db , $item) ; $db = toEnvName ( $db , $config ) ; my $objMetaDataController = 'Qto::Controller::MetaDataController'->new(\$config, \$objModel); $objMetaDataController->doReloadProjDbMetaData($db,$item); @@ -167,9 +168,9 @@ sub doReloadProjectsDbMeta { # src: https://mojolicious.org/perldoc/Mojolicious/Plugins # ----------------------------------------------------------------------------- sub doRegisterPlugins { - - my $self = shift ; - + + my $self = shift ; + $self->plugin('BasicAuthPlus'); $self->plugin('RenderFile'); # $self->plugin('Config'); @@ -181,8 +182,8 @@ sub doRegisterPlugins { # src: https://mojolicious.org/perldoc/Mojolicious/Guides/Routing#Hooks # ----------------------------------------------------------------------------- sub doSetHooks { - - my $self = shift ; + + my $self = shift ; $self->hook(before_render => sub { my ($c, $args) = @_; @@ -232,15 +233,15 @@ sub doSetHooks { $c->res->headers->accept_charset('UTF-8'); $c->res->headers->accept_language('fi, en'); }); - - # chk: https://toroid.org/mojolicious-static-resources, + + # chk: https://toroid.org/mojolicious-static-resources, # obs: after_static_dispatch deprecated $self->hook( 'after_dispatch' => sub { my $c = shift; my $url = (split('#',$c->req->url->path))[0]; - my $msg = '' ; + my $msg = '' ; + - # If so, try to prevent caching $c->res->headers->header( Expires => Mojo::Date->new(time-365*86400) @@ -248,13 +249,13 @@ sub doSetHooks { $c->res->headers->header( "Cache-Control" => "max-age=1, no-cache" ); - + my $type = $c->res->headers->content_type; # only auth#entiation for dynamic resources and json # return unless ( defined $type || $type =~ /text\/html/g || $type =~ /application\/json/g); # obs no authentication for static resources ... qto-200314095059 - return unless $type ; + return unless $type ; return if ($type =~ /^text\/css/g || $type =~ /javascript/g || $type =~ /image/g || $type =~ /font/g); return unless $c->req->url->path->parts->[0] ; # bare url address typed - https://qto.fi @@ -262,16 +263,16 @@ sub doSetHooks { my $route = (split('/',$url))[2]; #this will fail on new static resource types ... my $db = (split('/',$url))[1]; $db = toEnvName($db,$c->app->config); - my @open_routes = (); - my @open_in_routes = (); - - my $lvl_1_public_dirs = $config->{'env'}->{'run'}->{ 'PublicLevel1Dirs' } ; + my @open_routes = (); + my @open_in_routes = (); + + my $lvl_1_public_dirs = $config->{'env'}->{'run'}->{ 'PublicLevel1Dirs' } ; # basically a static resource fetch ... # do not check src/perl/qto/public/poc like locations / routes my $pdb = toPlainName($db); return if grep ( /^$pdb$/, @$lvl_1_public_dirs); - + # but if the :db is not configured nor static root => something fishy !!! unless ( defined ($config->{'env'}->{'app'}->{$db . '.meta-routes'} )) { my $redirect_db = $config->{'env'}->{'db'}->{'postgres_app_db'}; @@ -282,12 +283,12 @@ sub doSetHooks { $c->redirect_to($backend_error_url); return; } - - # chk if it is a publicall opened route ( login , error , etc. ) + + # chk if it is a publicall opened route ( login , error , etc. ) foreach my $k(keys %{$config->{'env'}->{'app'}->{$db . '.meta-routes'}}){ my $r = $config->{'env'}->{'app'}->{$db . '.meta-routes'}->{$k}; - push @open_routes, $r->{'name'} if $r->{'is_open'} == 1 ; - push @open_in_routes, $r->{'name'} if $r->{'is_open_in'} == 1 ; + push @open_routes, $r->{'name'} if $r->{'is_open'} == 1 ; + push @open_in_routes, $r->{'name'} if $r->{'is_open_in'} == 1 ; } my $flag_found_open_route = grep ( /^$route$/, @open_routes); @@ -348,13 +349,13 @@ sub doSetHooks { } - + # ----------------------------------------------------------------------------- # src: https://mojolicious.org/perldoc/Mojolicious/Sessions # ----------------------------------------------------------------------------- sub doSetSessions { - - my $self = shift ; + + my $self = shift ; $self->sessions->default_expiration(86400); # set expiry to 1 day $self->secrets(['Mojolicious rocks!!!' . rndStr(12, 'A'..'Z', 0..9, 'a'..'z')]); @@ -365,60 +366,60 @@ sub doSetSessions { # src: https://mojolicious.org/perldoc/Mojolicious/Guides/Routing # ----------------------------------------------------------------------------- sub doSetRoutes { - - my $self = shift ; + + my $self = shift ; my $r = $self->routes; - + $r->get('/:db/serve/:item')->to( controller => 'Serve' , action => 'doServe' ); - + $r->get('/')->to( controller => 'Index' , action => 'doServeIndex' ); - + $r->get('/:db/home')->to( controller => 'Search' , action => 'doSearchItems' ); - + $r->get('/:db/login')->to( controller => 'Login' , action => 'doInitShowLoginUI' ); - + $r->get('/:db/logon')->to( controller => 'Logon' , action => 'doInitShowLogonUI' ); - + $r->post('/:db/login')->to( controller => 'Login' , action => 'doLoginUser' ); - + $r->post('/:db/logon')->to( controller => 'Logon' , action => 'doLogonUser' ); - + $r->get('/:db/search')->to( controller => 'Search' , action => 'doSearchItems' ); - + $r->get('/:db/report/:report_name')->to( controller => 'Report' , action => 'doListReportResultItems' ); - + $r->get('/:db/query')->to( controller => 'Query' , action => 'doQueryItems' ); - + $r->get('/:db/call-func/:func')->to( controller => 'CallFunc' , action => 'doCallFunc' @@ -434,59 +435,59 @@ sub doSetRoutes { controller => 'Select' , action => 'doSelectTables' ); - - + + $r->get('/:db/hiselect/:item')->to( controller => 'HiSelect' , action => 'doHiSelectItems' ); - - + + $r->post('/:db/create/:item')->to( controller => 'Create' , action => 'doCreateById' ); - + $r->post('/:db/multi-create/:item')->to( controller => 'MultiCreate' , action => 'doMultiCreate' ); - + $r->post('/:db/create-my/:item')->to( controller => 'CreateMy' , action => 'doCreateMyById' ); - + $r->post('/:db/hicreate/:item')->to( controller => 'HiCreate' , action => 'doHiCreate' ); - + $r->delete('/:db/delete/:item')->to( controller => 'Delete' , action => 'doRemoveById' ); - + $r->delete('/:db/hidelete/:item')->to( controller => 'HiDelete' , action => 'doHiDelete' ); - + $r->get('/:db/truncate/:item')->to( controller => 'Truncate' , action => 'doTruncateItem' ); - + $r->post('/:db/update/:item')->to( controller => 'Update' , action => 'doUpdateById' ); - + $r->get('/:db/select/:item')->to( controller => 'Select' , action => 'doSelectItems' ); - + $r->get('/:db/select-col/:item')->to( controller => 'SelectCol' , action => 'doSelectColItems' @@ -496,17 +497,17 @@ sub doSetRoutes { controller => 'SelectMy' , action => 'doSelectMyItems' ); - + $r->get('/:db/select-item-meta-for/:item')->to( controller => 'Select' , action => 'doSelectItemMetaFor' ); - + $r->get('/:db/list/:item')->to( controller => 'List' , action => 'doListItems' ); - + $r->get('/:db/list-my/:item')->to( controller => 'ListMy' , action => 'doListMyItems' @@ -516,7 +517,7 @@ sub doSetRoutes { controller => 'Export' , action => 'doExportItems' ); - + $r->get('/:db/view/:item')->to( controller => 'View' , action => 'doViewItems' @@ -526,7 +527,7 @@ sub doSetRoutes { controller => 'Search' , action => 'doSearchItems' ); - + $r->post('/upload-files/')->to( controller => 'Upload' , action => 'doUploadFiles' @@ -544,11 +545,11 @@ sub get { my $self = shift; my $name = shift; - croak "\@TRYING to get an undef name" unless $name ; - croak "\@TRYING to get an undefined value" unless ( $self->{"$name"} ) ; + croak "\@TRYING to get an undef name" unless $name ; + croak "\@TRYING to get an undefined value" unless ( $self->{"$name"} ) ; return $self->{ $name }; -} +} # ----------------------------------------------------------------------------- # set a field's value - aka the "setter" @@ -572,7 +573,7 @@ sub dumpFields { } return $strFields; -} +} sub rndStr{ join'', @_[ map{ rand @_ } 1 .. shift ] } diff --git a/src/perl/qto/lib/Qto/App/Cnvr/CnrDbName.pm b/src/perl/qto/lib/Qto/App/Cnvr/CnrDbName.pm index 2846012a..1d1617db 100755 --- a/src/perl/qto/lib/Qto/App/Cnvr/CnrDbName.pm +++ b/src/perl/qto/lib/Qto/App/Cnvr/CnrDbName.pm @@ -11,13 +11,13 @@ sub toEnvName { my $db = shift ; my $config = shift ; - carp "appconfig->env_type is undef " unless $config->{'env'}->{'run'}->{ 'ENV_TYPE' } ; + carp "appconfig->ENV is undef " unless $config->{'env'}->{'run'}->{ 'ENV' } ; carp "db is undef " unless $db ; my @env_prefixes = ( 'dev_' , 'tst_' , 'qas_' , 'prd_' ); my $db_prefix = substr($db,0,4); unless ( grep ( /^$db_prefix$/, @env_prefixes)) { - $db = $config->{'env'}->{'run'}->{'ENV_TYPE'} . '_' . $db ; + $db = $config->{'env'}->{'run'}->{'ENV'} . '_' . $db ; } return $db ; } diff --git a/src/perl/qto/lib/Qto/App/Sec/Guardian.pm b/src/perl/qto/lib/Qto/App/Sec/Guardian.pm index 9f0387da..936cc76c 100755 --- a/src/perl/qto/lib/Qto/App/Sec/Guardian.pm +++ b/src/perl/qto/lib/Qto/App/Sec/Guardian.pm @@ -296,9 +296,9 @@ sub new { sub do_init { my $self = shift ; - my $env_type = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; - $jwt_private_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$env_type" . '.jwtRS256.key'; - $jwt_public_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$env_type" . '.jwtRS256.key.pub'; + my $ENV = $config->{'env'}->{'run'}->{'ENV'} ; + $jwt_private_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$ENV" . '.jwtRS256.key'; + $jwt_public_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$ENV" . '.jwtRS256.key.pub'; } diff --git a/src/perl/qto/lib/Qto/App/Utils/Initiator.pm b/src/perl/qto/lib/Qto/App/Utils/Initiator.pm index ec1cc5ab..08622c6a 100755 --- a/src/perl/qto/lib/Qto/App/Utils/Initiator.pm +++ b/src/perl/qto/lib/Qto/App/Utils/Initiator.pm @@ -136,14 +136,14 @@ package Qto::App::Utils::Initiator ; $rel_levels = 0 unless $rel_levels ; my $msg = (); my $levels_up = 5 + $rel_levels ; - my $PRODUCT_INSTANCE_DIR = '' ; + my $PRODUCT_DIR = '' ; my @DirParts = @{doGetDirParts ( $levels_up )} ; - $PRODUCT_INSTANCE_DIR = join( '/' , @DirParts ); + $PRODUCT_DIR = join( '/' , @DirParts ); - $ProductInstanceDir = $PRODUCT_INSTANCE_DIR ; - $PRODUCT_INSTANCE_DIR = $self->untaint ( $PRODUCT_INSTANCE_DIR); - $ProductInstanceDir = $self->untaint ( $PRODUCT_INSTANCE_DIR); + $ProductInstanceDir = $PRODUCT_DIR ; + $PRODUCT_DIR = $self->untaint ( $PRODUCT_DIR); + $ProductInstanceDir = $self->untaint ( $PRODUCT_DIR); $self->{'ProductInstanceDir'} = $ProductInstanceDir ; $config->{'ProductInstanceDir'} = $ProductInstanceDir ; $self->{'AppConfig'} = $config; @@ -181,10 +181,10 @@ package Qto::App::Utils::Initiator ; open my $fh, '<', $file or carp "no .env file $file in the product instance dir !!!" ; while( my $line = <$fh>){ - next unless $line =~ m/ENV_TYPE/; + next unless $line =~ m/ENV/; $EnvType = $line; - $EnvType =~ s/ENV_TYPE=(.*)$/$1/g; + $EnvType =~ s/ENV=(.*)$/$1/g; last if $EnvType =~ m/|dev|tst|stg|qas|prd|/g ; } close $fh; diff --git a/src/perl/qto/lib/Qto/App/Utils/Timer.pm b/src/perl/qto/lib/Qto/App/Utils/Timer.pm index 904c812c..5d5bd5a3 100755 --- a/src/perl/qto/lib/Qto/App/Utils/Timer.pm +++ b/src/perl/qto/lib/Qto/App/Utils/Timer.pm @@ -1,51 +1,51 @@ -package Qto::App::Utils::Timer ; +package Qto::App::Utils::Timer ; - use strict ; use warnings ; - my $VERSION='1.2.9' ; + use strict ; use warnings ; + my $VERSION='1.2.9' ; require Exporter; our @ISA = qw(Exporter Qto::App::Utils::OO::SetGetable); - use AutoLoader ; + use AutoLoader ; my @EXPORT = qw(dumpFields GetHumanReadableTime ); use base qw(Qto::App::Utils::OO::SetGetable); use POSIX qw(strftime); - use Time::Local qw( timelocal_nocheck ) ; + use Time::Local qw( timelocal_nocheck ) ; my $TimeFormat = 'YYYY-MM-DD hh:mm:ss' ; # the default one sub new { - - my $invocant = shift; - my $class = ref ( $invocant ) || $invocant ; + + my $invocant = shift; + my $class = ref ( $invocant ) || $invocant ; $TimeFormat = shift || 'YYYY-MM-DD hh:mm:ss' ; - my $self = {}; - bless( $self, $class ); + my $self = {}; + bless( $self, $class ); return $self; - } + } sub AUTOLOAD { - my $self = shift ; - no strict 'refs'; + my $self = shift ; + no strict 'refs'; my $name = our $AUTOLOAD; - *$AUTOLOAD = sub { + *$AUTOLOAD = sub { my $msg = "BOOM! BOOM! BOOM! \n RunTime Error !!!\nUndefined Function $name(@_)\n" ; cluck( "$msg"); }; goto &$AUTOLOAD; # Restart the new routine. - } + } sub DESTROY { my $self = shift; - #debug rint "the DESTRUCTOR is called \n" ; - return ; - } + #debug rint "the DESTRUCTOR is called \n" ; + return ; + } # @@ -54,47 +54,44 @@ package Qto::App::Utils::Timer ; # ----------------------------------------------------------------------------- sub GetHumanReadableTime { - my $self = shift ; + my $self = shift ; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = (); - ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $self->GetTimeUnits(); + ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $self->GetTimeUnits(); my $HumanReadableTime = ''; - $HumanReadableTime = $TimeFormat ; - $HumanReadableTime =~ s/YYYY/$year/ ; - $HumanReadableTime =~ s/MM/$mon/ ; - $HumanReadableTime =~ s/DD/$mday/ ; - $HumanReadableTime =~ s/hh/$hour/ ; + $HumanReadableTime = $TimeFormat ; + $HumanReadableTime =~ s/YYYY/$year/ ; + $HumanReadableTime =~ s/MM/$mon/ ; + $HumanReadableTime =~ s/DD/$mday/ ; + $HumanReadableTime =~ s/hh/$hour/ ; $HumanReadableTime =~ s/mm/$min/ ; $HumanReadableTime =~ s/ss/$sec/ ; - return "$HumanReadableTime"; + return "$HumanReadableTime"; - } + } # # ----------------------------------------------------------------------------- - # call by: - # my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $objTimer-> GetTimeUnits(); + # call by: + # my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $objTimer-> GetTimeUnits(); # ----------------------------------------------------------------------------- sub GetTimeUnits { - my $self = shift ; + my $self = shift ; - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - $sec = "0$sec" if ($sec < 10); - $min = "0$min" if ($min < 10); + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $sec = "0$sec" if ($sec < 10); + $min = "0$min" if ($min < 10); $hour = "0$hour" if ($hour < 10); $mon = $mon + 1; - $mon = "0$mon" if ($mon < 10); + $mon = "0$mon" if ($mon < 10); $year = $year + 1900; - $mday = "0$mday" if ($mday < 10); - - return ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) ; - } - - + $mday = "0$mday" if ($mday < 10); + return ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) ; + } 1; @@ -105,17 +102,17 @@ __END__ =head1 NAME -Timer +Timer =head1 SYNOPSIS -use Qto::App::Utils::Timer ; -my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $objTimer-> GetTimeUnits(); +use Qto::App::Utils::Timer ; +my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = $objTimer-> GetTimeUnits(); =head1 DESCRIPTION -A simple class proding OO methods for time and time formatting +A simple class proding OO methods for time and time formatting =head2 EXPORT qw(dumpFields GetHumanReadableTime ) diff --git a/src/perl/qto/lib/Qto/Controller/List.pm b/src/perl/qto/lib/Qto/Controller/List.pm index f0eac1ac..8deb7747 100755 --- a/src/perl/qto/lib/Qto/Controller/List.pm +++ b/src/perl/qto/lib/Qto/Controller/List.pm @@ -166,7 +166,7 @@ my $objModel = ${ shift @_ } ; , 'item' => $item , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/ListMy.pm b/src/perl/qto/lib/Qto/Controller/ListMy.pm index 9745b322..8eaea30f 100644 --- a/src/perl/qto/lib/Qto/Controller/ListMy.pm +++ b/src/perl/qto/lib/Qto/Controller/ListMy.pm @@ -166,7 +166,7 @@ my $objModel = ${ shift @_ } ; , 'item' => $item , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/Login.pm b/src/perl/qto/lib/Qto/Controller/Login.pm index 9327fcb0..790e871b 100755 --- a/src/perl/qto/lib/Qto/Controller/Login.pm +++ b/src/perl/qto/lib/Qto/Controller/Login.pm @@ -157,7 +157,7 @@ sub doRenderPageTemplate { , 'msg' => $msg , 'msg_color' => $msg_color , 'db' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $ProductVersion , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/Logon.pm b/src/perl/qto/lib/Qto/Controller/Logon.pm index dfa34854..c5522a5c 100755 --- a/src/perl/qto/lib/Qto/Controller/Logon.pm +++ b/src/perl/qto/lib/Qto/Controller/Logon.pm @@ -203,7 +203,7 @@ sub doRenderPageTemplate { , 'db' => $db , 'edb' => $edb , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $ProductVersion , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/Report.pm b/src/perl/qto/lib/Qto/Controller/Report.pm index 5547e5df..d0b059bb 100644 --- a/src/perl/qto/lib/Qto/Controller/Report.pm +++ b/src/perl/qto/lib/Qto/Controller/Report.pm @@ -100,7 +100,7 @@ sub doListReportResultItems { , 'msg' => '' , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time @@ -154,7 +154,7 @@ sub doRenderPageTemplateNotResultSet { , 'msg' => $msg , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/Search.pm b/src/perl/qto/lib/Qto/Controller/Search.pm index 84c1271f..d9c9efa3 100755 --- a/src/perl/qto/lib/Qto/Controller/Search.pm +++ b/src/perl/qto/lib/Qto/Controller/Search.pm @@ -82,7 +82,7 @@ sub doSearchItems { , 'msg' => '' , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time @@ -172,7 +172,7 @@ sub doRenderPageTemplate { , 'msg' => $msg , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/Qto/Controller/View.pm b/src/perl/qto/lib/Qto/Controller/View.pm index b7a7a23b..7e08de6f 100755 --- a/src/perl/qto/lib/Qto/Controller/View.pm +++ b/src/perl/qto/lib/Qto/Controller/View.pm @@ -127,7 +127,7 @@ sub doRenderPageTemplate { , 'item' => $item , 'db' => $db , 'pdb' => $pdb - , 'EnvType' => $config->{'env'}->{'run'}->{'ENV_TYPE'} + , 'EnvType' => $config->{'env'}->{'run'}->{'ENV'} , 'ProductVersion' => $config->{'env'}->{'run'}->{'VERSION'} , 'GitShortHash' => $config->{'env'}->{'run'}->{'GitShortHash'} , 'page_load_time' => $page_load_time diff --git a/src/perl/qto/lib/auto/AutoLoadableChild/autosplit.ix b/src/perl/qto/lib/auto/AutoLoadableChild/autosplit.ix new file mode 100644 index 00000000..2848e6c6 --- /dev/null +++ b/src/perl/qto/lib/auto/AutoLoadableChild/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./t/lib/Qto/App/Utils/OO/AutoLoadableChild.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlDbToXls/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlDbToXls/autosplit.ix new file mode 100644 index 00000000..fde924c4 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlDbToXls/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Ctrl/CtrlDbToXls.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlHTableToHTable/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlHTableToHTable/autosplit.ix new file mode 100644 index 00000000..36f04c66 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlHTableToHTable/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Ctrl/CtrlHTableToHTable.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToDb/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToDb/autosplit.ix new file mode 100644 index 00000000..e52152bc --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToDb/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Ctrl/CtrlXlsToDb.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToTable/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToTable/autosplit.ix new file mode 100644 index 00000000..701b01ec --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Ctrl/CtrlXlsToTable/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Ctrl/CtrlXlsToTable.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Ctrl/Dispatcher/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Ctrl/Dispatcher/autosplit.ix new file mode 100644 index 00000000..e6ee882b --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Ctrl/Dispatcher/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Ctrl/Dispatcher.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/MojoPgWrapper/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/MojoPgWrapper/autosplit.ix new file mode 100644 index 00000000..20f6b244 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/MojoPgWrapper/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Db/In/Postgres/MojoPgWrapper.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/RdrPostgresDb/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/RdrPostgresDb/autosplit.ix new file mode 100644 index 00000000..2f898e9d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Db/In/Postgres/RdrPostgresDb/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Db/In/Postgres/RdrPostgresDb.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Db/In/RdrRedis/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Db/In/RdrRedis/autosplit.ix new file mode 100644 index 00000000..cb89fae3 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Db/In/RdrRedis/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Db/In/RdrRedis.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Db/Out/Postgres/WtrPostgresDb/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Db/Out/Postgres/WtrPostgresDb/autosplit.ix new file mode 100644 index 00000000..fbbd30c2 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Db/Out/Postgres/WtrPostgresDb/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Db/Out/Postgres/WtrPostgresDb.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Db/Out/WtrRedis/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Db/Out/WtrRedis/autosplit.ix new file mode 100644 index 00000000..a629f46d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Db/Out/WtrRedis/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Db/Out/WtrRedis.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/CnrEncrypter/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrEncrypter/autosplit.ix new file mode 100644 index 00000000..14441566 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrEncrypter/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/CnrEncrypter.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/CnrPostPrms/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrPostPrms/autosplit.ix new file mode 100644 index 00000000..1d7ee1fc --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrPostPrms/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/CnrPostPrms.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/CnrUrlPrms/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrUrlPrms/autosplit.ix new file mode 100644 index 00000000..185565b6 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/CnrUrlPrms/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/CnrUrlPrms.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/RdrCmdArgs/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrCmdArgs/autosplit.ix new file mode 100644 index 00000000..5f2a50a9 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrCmdArgs/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/RdrCmdArgs.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/RdrDirs/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrDirs/autosplit.ix new file mode 100644 index 00000000..a2c60805 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrDirs/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/RdrDirs.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/RdrEnv/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrEnv/autosplit.ix new file mode 100644 index 00000000..a05aa577 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrEnv/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/RdrEnv.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/RdrFiles/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrFiles/autosplit.ix new file mode 100644 index 00000000..e63524a0 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrFiles/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/RdrFiles.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/In/RdrXls/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrXls/autosplit.ix new file mode 100644 index 00000000..017e8d16 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/In/RdrXls/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/In/RdrXls.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrDirs/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrDirs/autosplit.ix new file mode 100644 index 00000000..9fcc1d4b --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrDirs/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrDirs.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterMd/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterMd/autosplit.ix new file mode 100644 index 00000000..e5dcbff9 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterMd/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrExporterMd.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterXls/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterXls/autosplit.ix new file mode 100644 index 00000000..dcf61be7 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrExporterXls/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrExporterXls.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrFiles/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrFiles/autosplit.ix new file mode 100644 index 00000000..43e42ed3 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrFiles/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrFiles.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrGitHubMd/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrGitHubMd/autosplit.ix new file mode 100644 index 00000000..17366120 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrGitHubMd/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrGitHubMd.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrParadoxMd/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrParadoxMd/autosplit.ix new file mode 100644 index 00000000..f2733dd2 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrParadoxMd/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrParadoxMd.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrXls/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrXls/autosplit.ix new file mode 100644 index 00000000..883fab27 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/IO/Out/WtrXls/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/IO/Out/WtrXls.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Mdl/Model/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Mdl/Model/autosplit.ix new file mode 100644 index 00000000..ff698f9d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Mdl/Model/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Mdl/Model.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToJson/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToJson/autosplit.ix new file mode 100644 index 00000000..5614568a --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToJson/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/RAM/CnrHsr2ToJson.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToTxt/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToTxt/autosplit.ix new file mode 100644 index 00000000..21f9ea9b --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/RAM/CnrHsr2ToTxt/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/RAM/CnrHsr2ToTxt.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/RAM/CnrJsonToHsr2/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/RAM/CnrJsonToHsr2/autosplit.ix new file mode 100644 index 00000000..6355f75d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/RAM/CnrJsonToHsr2/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/RAM/CnrJsonToHsr2.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/RAM/CnrTxtToHtml/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/RAM/CnrTxtToHtml/autosplit.ix new file mode 100644 index 00000000..ec5ca829 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/RAM/CnrTxtToHtml/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/RAM/CnrTxtToHtml.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Sec/Guardian/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Sec/Guardian/autosplit.ix new file mode 100644 index 00000000..1d121c5d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Sec/Guardian/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Sec/Guardian.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/UI/Controls/WtrListLabels/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/UI/Controls/WtrListLabels/autosplit.ix new file mode 100644 index 00000000..8d3e2f3d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/UI/Controls/WtrListLabels/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/UI/Controls/WtrListLabels.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Utils/Initiator/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Utils/Initiator/autosplit.ix new file mode 100644 index 00000000..e8e136ba --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Utils/Initiator/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Utils/Initiator.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Utils/Logger/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Utils/Logger/autosplit.ix new file mode 100644 index 00000000..d2d273e3 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Utils/Logger/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Utils/Logger.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Utils/OO/SetGetableChild/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Utils/OO/SetGetableChild/autosplit.ix new file mode 100644 index 00000000..cb5d2939 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Utils/OO/SetGetableChild/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./t/lib/Qto/App/Utils/OO/SetGetableChild.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/App/Utils/Timer/autosplit.ix b/src/perl/qto/lib/auto/Qto/App/Utils/Timer/autosplit.ix new file mode 100644 index 00000000..b10c61bb --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/App/Utils/Timer/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/App/Utils/Timer.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Auth/Role/autosplit.ix b/src/perl/qto/lib/auto/Qto/Auth/Role/autosplit.ix new file mode 100644 index 00000000..4c86df85 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Auth/Role/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Auth/Role.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Auth/User/autosplit.ix b/src/perl/qto/lib/auto/Qto/Auth/User/autosplit.ix new file mode 100644 index 00000000..1353590e --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Auth/User/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Auth/User.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/CallFunc/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/CallFunc/autosplit.ix new file mode 100644 index 00000000..90bebc23 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/CallFunc/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/CallFunc.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Create/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Create/autosplit.ix new file mode 100644 index 00000000..6aba9bfe --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Create/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Create.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/CreateMy/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/CreateMy/autosplit.ix new file mode 100644 index 00000000..be67c9ce --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/CreateMy/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/CreateMy.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Delete/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Delete/autosplit.ix new file mode 100644 index 00000000..24155dfc --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Delete/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Delete.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Export/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Export/autosplit.ix new file mode 100644 index 00000000..87202c4d --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Export/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Export.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/HiCreate/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/HiCreate/autosplit.ix new file mode 100644 index 00000000..8e019031 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/HiCreate/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/HiCreate.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/HiDelete/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/HiDelete/autosplit.ix new file mode 100644 index 00000000..b6293607 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/HiDelete/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/HiDelete.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/HiSelect/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/HiSelect/autosplit.ix new file mode 100644 index 00000000..b19bb30c --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/HiSelect/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/HiSelect.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Index/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Index/autosplit.ix new file mode 100644 index 00000000..e694fa6a --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Index/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Index.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/List/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/List/autosplit.ix new file mode 100644 index 00000000..294ed1f3 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/List/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/List.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/ListMy/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/ListMy/autosplit.ix new file mode 100644 index 00000000..7ed3b344 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/ListMy/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/ListMy.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Logon/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Logon/autosplit.ix new file mode 100644 index 00000000..7f901a2e --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Logon/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Logon.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/MetaDataController/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/MetaDataController/autosplit.ix new file mode 100644 index 00000000..601b0e8e --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/MetaDataController/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/MetaDataController.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/MultiCreate/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/MultiCreate/autosplit.ix new file mode 100644 index 00000000..6b8e9a47 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/MultiCreate/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/MultiCreate.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Query/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Query/autosplit.ix new file mode 100644 index 00000000..5e19db0b --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Query/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Query.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Report/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Report/autosplit.ix new file mode 100644 index 00000000..5ede1626 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Report/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Report.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Search/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Search/autosplit.ix new file mode 100644 index 00000000..f90c5470 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Search/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Search.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Select/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Select/autosplit.ix new file mode 100644 index 00000000..fa153e94 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Select/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Select.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/SelectCol/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/SelectCol/autosplit.ix new file mode 100644 index 00000000..3970ef98 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/SelectCol/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/SelectCol.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/SelectMy/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/SelectMy/autosplit.ix new file mode 100644 index 00000000..c3c88121 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/SelectMy/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/SelectMy.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Serve/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Serve/autosplit.ix new file mode 100644 index 00000000..0f92db9c --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Serve/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Serve.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Truncate/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Truncate/autosplit.ix new file mode 100644 index 00000000..2ff8377c --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Truncate/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Truncate.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Update/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Update/autosplit.ix new file mode 100644 index 00000000..4e1e85cb --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Update/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Update.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/Upload/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/Upload/autosplit.ix new file mode 100644 index 00000000..ebe39160 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/Upload/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/Upload.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/View/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/View/autosplit.ix new file mode 100644 index 00000000..ee992043 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/View/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/View.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/WebSocketPoc/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/WebSocketPoc/autosplit.ix new file mode 100644 index 00000000..10169465 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/WebSocketPoc/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/WebSocketPoc.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/lib/auto/Qto/Controller/WsSelect/autosplit.ix b/src/perl/qto/lib/auto/Qto/Controller/WsSelect/autosplit.ix new file mode 100644 index 00000000..e32ffa40 --- /dev/null +++ b/src/perl/qto/lib/auto/Qto/Controller/WsSelect/autosplit.ix @@ -0,0 +1,3 @@ +# Index created by AutoSplit for ./lib/Qto/Controller/WsSelect.pm +# (file acts as timestamp) +1; diff --git a/src/perl/qto/script/qto.pl b/src/perl/qto/script/qto.pl index 06835fdb..81ac2cb0 100755 --- a/src/perl/qto/script/qto.pl +++ b/src/perl/qto/script/qto.pl @@ -35,7 +35,9 @@ BEGIN $my_inc_path =~ m/^(.*)(\\|\/)(.*?)(\\|\/)(.*)/; $my_inc_path = $1; - # debug ok print "\$my_inc_path $my_inc_path \n" ; + # debug ok + # print "\$my_inc_path $my_inc_path \n" ; + # sleep 10; unless (grep { $_ eq "$my_inc_path" } @INC) { push(@INC, "$my_inc_path"); @@ -56,9 +58,9 @@ BEGIN use Qto::App::Utils::Logger; use Qto::App::Utils::Timer; use Qto::App::Ctrl::Dispatcher; -use Qto::App::Mdl::Model ; -use Qto::App::IO::In::RdrCmdArgs ; -use Qto::App::IO::In::RdrEnv ; +use Qto::App::Mdl::Model ; +use Qto::App::IO::In::RdrCmdArgs ; +use Qto::App::IO::In::RdrEnv ; # give a full stack dump on any untrapped exceptions local $SIG{__DIE__} = sub { @@ -123,11 +125,11 @@ sub do_init { $config->{'env'}->{'run'}->{'ProductInstanceDir'} = $objInitiator->doResolveProductInstanceDir(-1); $config->{'env'}->{'run'}->{'ProductName'} = $objInitiator->doResolveProductName(); $config->{'env'}->{'run'}->{'VERSION'} = $objInitiator->doResolveVersion(); - $config->{'env'}->{'run'}->{'ENV_TYPE'} = $objInitiator->doResolveEnvType(); + $config->{'env'}->{'run'}->{'ENV'} = $objInitiator->doResolveEnvType(); if ( defined $ENV{'PROJ_CONF_FILE'} ) { my $projConfig = json_file_to_perl ($ENV{'PROJ_CONF_FILE'} ); - $config->{'env'}->{'db'} = $projConfig->{'env'}->{'db'} ; + $config->{'env'}->{'db'} = $projConfig->{'env'}->{'db'} ; } p $config ; # not a debug print !!! @@ -137,10 +139,10 @@ sub do_init { my $m = "START MAIN"; $objLogger->info($m); - $objModel = 'Qto::App::Mdl::Model'->new ( \$config , $db , 'xls') ; - my $objRdrCmdArgs = 'Qto::App::IO::In::RdrCmdArgs'->new(\$config , \$objModel ) ; + $objModel = 'Qto::App::Mdl::Model'->new ( \$config , $db , 'xls') ; + my $objRdrCmdArgs = 'Qto::App::IO::In::RdrCmdArgs'->new(\$config , \$objModel ) ; $objRdrCmdArgs->doRead(); - my $objRdrEnv = 'Qto::App::IO::In::RdrEnv'->new(\$config, \$objModel ) ; + my $objRdrEnv = 'Qto::App::IO::In::RdrEnv'->new(\$config, \$objModel ) ; $objRdrEnv->doRead(); $ret = 0; @@ -167,8 +169,6 @@ sub doExit { my $msg = "STOP MAIN"; $objLogger->info($msg); - $msg = "19d94b2c-096c-4bf9-b6ba-780c3f90bf70"; - $objLogger->doRunLogMsg($msg); exit($exit_code); } diff --git a/src/perl/qto/t/lib/Qto/App/Sec/TestGuardian.t b/src/perl/qto/t/lib/Qto/App/Sec/TestGuardian.t index 99922669..20cce737 100755 --- a/src/perl/qto/t/lib/Qto/App/Sec/TestGuardian.t +++ b/src/perl/qto/t/lib/Qto/App/Sec/TestGuardian.t @@ -18,9 +18,9 @@ my $objGuardian = {} ; my $t = Test::Mojo->new('Qto'); my $config = $t->app->config ; my $db = $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; -my $env_type = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; -my $jwt_private_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$env_type" . '.jwtRS256.key'; -my $jwt_public_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$env_type" . '.jwtRS256.key.pub'; +my $ENV = $config->{'env'}->{'run'}->{'ENV'} ; +my $jwt_private_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$ENV" . '.jwtRS256.key'; +my $jwt_public_key_file = $ENV{'HOME'} . '/.ssh/qto.' . "$ENV" . '.jwtRS256.key.pub'; $objGuardian = 'Qto::App::Sec::Guardian'->new ( \$config ) ; $tn = 'test-01' ; diff --git a/src/perl/qto/t/lib/Qto/App/Utils/TestInitiator.t b/src/perl/qto/t/lib/Qto/App/Utils/TestInitiator.t index ecfaa7ae..b4a1d457 100755 --- a/src/perl/qto/t/lib/Qto/App/Utils/TestInitiator.t +++ b/src/perl/qto/t/lib/Qto/App/Utils/TestInitiator.t @@ -22,7 +22,7 @@ $init_config = $objInitiator->get ('AppConfig'); use Carp ; -my $product_base_dir = $ENV { 'PRODUCT_INSTANCE_DIR' } ; +my $product_base_dir = $ENV { 'PRODUCT_DIR' } ; $product_base_dir =~ s/(.*)([\/\\])(.*)/$1/g ; $product_base_dir =~ s/(.*)([\/\\])(.*)/$1/g ; my $product_dir = "$product_base_dir/$3" ; @@ -41,7 +41,7 @@ ok ( $ProductDir eq $product_dir , $msg ) ; $tn = 'test-03' ; $msg = "$tn ::: " .'The ProductInstanceDir is the next level' ; -ok ( $ProductInstanceDir eq $ENV{'PRODUCT_INSTANCE_DIR'} , $msg ) ; +ok ( $ProductInstanceDir eq $ENV{'PRODUCT_DIR'} , $msg ) ; $tn = 'test-04' ; diff --git a/src/perl/qto/t/lib/Qto/App/Utils/TestLogger.t b/src/perl/qto/t/lib/Qto/App/Utils/TestLogger.t index 63442dfa..2d7d3651 100755 --- a/src/perl/qto/t/lib/Qto/App/Utils/TestLogger.t +++ b/src/perl/qto/t/lib/Qto/App/Utils/TestLogger.t @@ -19,7 +19,7 @@ $config = json_file_to_perl ($objInitiator->doResolveConfFile()); $config->{'env'}->{'run'}->{'ProductInstanceDir'} = $objInitiator->doResolveProductInstanceDir(-1); $config->{'env'}->{'run'}->{'ProductName'} = $objInitiator->doResolveProductName(); $config->{'env'}->{'run'}->{'VERSION'} = $objInitiator->doResolveVersion(); -$config->{'env'}->{'run'}->{'ENV_TYPE'} = $objInitiator->doResolveEnvType(); +$config->{'env'}->{'run'}->{'ENV'} = $objInitiator->doResolveEnvType(); my $ConfFile = $objInitiator->{'ConfFile'} ; ok ( defined ( $config ) , "test-01 the config is defineD") ; diff --git a/src/perl/qto/t/lib/Qto/App/Utils/TestRdrCmdArgs.t b/src/perl/qto/t/lib/Qto/App/Utils/TestRdrCmdArgs.t index 2f98a9fc..2fe17699 100755 --- a/src/perl/qto/t/lib/Qto/App/Utils/TestRdrCmdArgs.t +++ b/src/perl/qto/t/lib/Qto/App/Utils/TestRdrCmdArgs.t @@ -19,7 +19,7 @@ $config = json_file_to_perl ($objInitiator->doResolveConfFile $config->{'env'}->{'run'}->{'ProductInstanceDir'} = $objInitiator->doResolveProductInstanceDir(-1); $config->{'env'}->{'run'}->{'ProductName'} = $objInitiator->doResolveProductName(); $config->{'env'}->{'run'}->{'VERSION'} = $objInitiator->doResolveVersion(); -$config->{'env'}->{'run'}->{'ENV_TYPE'} = $objInitiator->doResolveEnvType(); +$config->{'env'}->{'run'}->{'ENV'} = $objInitiator->doResolveEnvType(); my $objModel = 'Qto::App::Mdl::Model'->new ( \$config ) ; my $objRdrCmdArgs = 'Qto::App::IO::In::RdrCmdArgs'->new(\$config , \$objModel ) ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestAppLabel.todo b/src/perl/qto/t/lib/Qto/Controller/TestAppLabel.todo index 5bd8ffec..0812a2b0 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestAppLabel.todo +++ b/src/perl/qto/t/lib/Qto/Controller/TestAppLabel.todo @@ -24,7 +24,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } foreach my $web_action ( @web_actions ) { # debug p $t->ua->get($url)->result->body ; # this needs to be asyncrounous with using client code as well ... - my $env = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; + my $env = $config->{'env'}->{'run'}->{'ENV'} ; my $db = $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; # because each instance has it's own ... $tm = "$web_action userstories product_type: $env " ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestCreate.t b/src/perl/qto/t/lib/Qto/Controller/TestCreate.t index b670b38e..1cfc6c2f 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestCreate.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestCreate.t @@ -51,7 +51,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } $tm = 'the ret var from the response should be the same as the http code => 200'; ok ( $res->{'ret'} eq 200 , $tm ) ; - my $env = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; + my $env = $config->{'env'}->{'run'}->{'ENV'} ; $tm = 'return 400 on non_existent_db create call' ; $exp_err_msg = 'FATAL: database "' . $env . '_non_existent_db" does not exist'; $url = '/non_existent_db/create/test_create_table' ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestDelete.t b/src/perl/qto/t/lib/Qto/Controller/TestDelete.t index 5c2537de..4e5b761b 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestDelete.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestDelete.t @@ -18,7 +18,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } my $config = $t->app->config ; my $exp_err_msg = '' ; my $db = $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; # OBS instance specific !!! - my $env = $config->{'env'}->{'ENV_TYPE' }; + my $env = $config->{'env'}->{'ENV' }; my $ua = $t->ua ; my $objTimer = {} ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestListAsOutputType.t b/src/perl/qto/t/lib/Qto/Controller/TestListAsOutputType.t index c3ea0d01..a90f175a 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestListAsOutputType.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestListAsOutputType.t @@ -17,7 +17,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } my $exp_txt = {} ; # the expected text to check my $response = {} ; # the response obj after each request my $db_name = {} ; # the proj name - my $PRODUCT_INSTANCE_DIR = $config->{'env'}->{'run'}->{'ProductInstanceDir'}; + my $PRODUCT_DIR = $config->{'env'}->{'run'}->{'ProductInstanceDir'}; $db_name= $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; $url = '/' . $db_name . '/select-tables' ; @@ -63,7 +63,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } my $http_protocol = $config->{'env'}->{'app'}->{'ht_protocol'}; my $web_host = $config->{'env'}->{'app'}->{'web_host'}; $url = "$http_protocol" . '://' . "$web_host" . ':' . "$port" . "$url"; - my $cmd = "nodejs $PRODUCT_INSTANCE_DIR/src/js/node/scrap-html.js \"$url\""; + my $cmd = "nodejs $PRODUCT_DIR/src/js/node/scrap-html.js \"$url\""; my $s = `$cmd`; for my $e (Mojo::DOM->new($s)->find("table button")->each){ unless ( $e->all_text =~ /^$/g ) { diff --git a/src/perl/qto/t/lib/Qto/Controller/TestLogin.t b/src/perl/qto/t/lib/Qto/Controller/TestLogin.t index 5b586ae7..fe002331 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestLogin.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestLogin.t @@ -87,7 +87,7 @@ BEGIN { printf "\n"; # check that the product version , and the short hash are on the page - my $env = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; + my $env = $config->{'env'}->{'run'}->{'ENV'} ; my $dom = {} ; # the mojo dom parser $dom = Mojo::DOM->new($tx->result->dom->all_text) ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestLogon.t b/src/perl/qto/t/lib/Qto/Controller/TestLogon.t index a20421ab..b2450a3c 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestLogon.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestLogon.t @@ -109,7 +109,7 @@ use Qto::App::Cnvr::CnrDbName qw(toPlainName toEnvName); printf "\n"; # check that the product version , and the short hash are on the page - my $env = $config->{'env'}->{'run'}->{'ENV_TYPE'} ; + my $env = $config->{'env'}->{'run'}->{'ENV'} ; my $dom = {} ; # the mojo dom parser $dom = Mojo::DOM->new($tx->result->dom->all_text) ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestSelect.t b/src/perl/qto/t/lib/Qto/Controller/TestSelect.t index 8728ddd7..9daada2a 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestSelect.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestSelect.t @@ -17,7 +17,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } $t->get_ok('/' . $db . '/select-databases')->status_is(200) ; my $url = '/' . $db . '/select-tables' ; - my $env = $config->{'env'}->{'ENV_TYPE'}; + my $env = $config->{'env'}->{'ENV'}; $t->get_ok($url) diff --git a/src/perl/qto/t/lib/Qto/Controller/TestSelectMeta.t b/src/perl/qto/t/lib/Qto/Controller/TestSelectMeta.t index d9191332..53cb57d4 100644 --- a/src/perl/qto/t/lib/Qto/Controller/TestSelectMeta.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestSelectMeta.t @@ -17,7 +17,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } $t->get_ok('/' . $db . '/select-databases')->status_is(200) ; my $url = '/' . $db . '/select-item-meta-for' ; - my $env = $config->{'env'}->{'ENV_TYPE'}; + my $env = $config->{'env'}->{'ENV'}; $t->get_ok($url) diff --git a/src/perl/qto/t/lib/Qto/Controller/TestSelectMy.tmp b/src/perl/qto/t/lib/Qto/Controller/TestSelectMy.tmp index 21142770..a630af56 100644 --- a/src/perl/qto/t/lib/Qto/Controller/TestSelectMy.tmp +++ b/src/perl/qto/t/lib/Qto/Controller/TestSelectMy.tmp @@ -20,7 +20,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" ; } my $db = $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; $t->app->session->{'app.' . $db . '.user'} = 'myuser@gmail.com' ; my $url = '/' . $db . '/select-tables' ; - my $env = $config->{'env'}->{'ENV_TYPE'}; + my $env = $config->{'env'}->{'ENV'}; $t->get_ok($url) ->status_is(200) diff --git a/src/perl/qto/t/lib/Qto/Controller/TestTruncate.t b/src/perl/qto/t/lib/Qto/Controller/TestTruncate.t index 0ad2377b..c99c3461 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestTruncate.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestTruncate.t @@ -20,7 +20,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } my $db = $config->{'env'}->{'db'}->{'postgres_app_db'} ; # OBS instance specific !!! my $ua = $t->ua ; my $objTimer = {} ; - my $env = $config->{'env'}->{'run'}->{'ENV_TYPE' }; + my $env = $config->{'env'}->{'run'}->{'ENV' }; $tm = 'the table is truncated' ; $url = '/' . $db . '/truncate/test_truncate_table' ; diff --git a/src/perl/qto/t/lib/Qto/Controller/TestUpdate.t b/src/perl/qto/t/lib/Qto/Controller/TestUpdate.t index 1c40533e..0d1affeb 100755 --- a/src/perl/qto/t/lib/Qto/Controller/TestUpdate.t +++ b/src/perl/qto/t/lib/Qto/Controller/TestUpdate.t @@ -18,7 +18,7 @@ BEGIN { unshift @INC, "$FindBin::Bin/../../../../../qto/lib" } my $t = Test::Mojo->new('Qto'); my $config = $t->app->config ; my $db = $config->{'env'}->{'db'}->{ 'postgres_app_db' } ; - my $env = $config->{'env'}->{ 'ENV_TYPE' } ; + my $env = $config->{'env'}->{ 'ENV' } ; #insert into test_update_table ( id,seq,name,description) values (1,1,'name-1','the name should be updated to updated-name-1'); #insert into test_update_table ( id,seq,name,description) values (2,2,'name-2','the name attr should NOT be updated'); diff --git a/src/python/tpl_gen.py b/src/python/tpl_gen.py index 062bd2b4..0b84fa12 100644 --- a/src/python/tpl_gen.py +++ b/src/python/tpl_gen.py @@ -25,7 +25,7 @@ def set_vars(): pp = pprint.PrettyPrinter(indent=3) product_instance_dir = path.abspath(path.join(__file__ ,"../../..")) do_read_conf_fle(product_instance_dir + '/.env') # env agnostic - env = os.environ['ENV_TYPE'] + env = os.environ['ENV'] version = os.environ['VERSION'] with open(product_instance_dir + '/cnf/env/' + env + '.env.json') as json_cnf_fle: diff --git a/src/tpl/psql-code-generator/psql-code-generator.sh b/src/tpl/psql-code-generator/psql-code-generator.sh index 09f34736..12861e2a 100755 --- a/src/tpl/psql-code-generator/psql-code-generator.sh +++ b/src/tpl/psql-code-generator/psql-code-generator.sh @@ -13,7 +13,7 @@ main(){ do_set_vars "$@" do_get_psql_meta_data do_print=0; do_print_meta_json_str - do_print=0; do_build_cols_lst_comma + do_print=0; do_build_cols_lst_comma do_print=1; do_build_cols_lst_table_col do_print=0; do_build_cols_lst_old do_print=0; do_build_cols_lst_new @@ -38,7 +38,7 @@ do_generate_psql_select_into_another_table(){ ( <%= $cols_lst_comma %> ) SELECT <%= $cols_lst_comma %> FROM <%= $table_name_01 %> - ON CONFLICT (id) DO UPDATE SET + ON CONFLICT (id) DO UPDATE SET <%= $cols_lst_excluded %>; EOF @@ -83,7 +83,7 @@ do_generate_psql_html_with_perl_code_example(){ IFS='' read -r -d '' perl_code <<"EOF_PERL_CODE" use strict; use warnings; binmode STDOUT, ":utf8"; use utf8; use JSON; use Data::Printer;use Mojo::Template; use feature ':5.12'; my $mt = Mojo::Template->new; - my $json_var = decode_json($ENV{'meta_json_str'}) ; + my $json_var = decode_json($ENV{'meta_json_str'}) ; p $json_var ; say $mt->render(<<'EOF', [1 .. 13], 'Hello World!'); % my ($numbers, $title) = @_; @@ -108,7 +108,7 @@ EOF_PERL_CODE # init the minimal possible amount of vars to even fail properly #------------------------------------------------------------------------------ do_init(){ - umask 022 ; set -u -o pipefail + umask 022 ; set -u -o pipefail call_start_dir=`pwd` run_unit_bash_dir=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0") tmp_dir="$run_unit_bash_dir/tmp/.tmp.$$" @@ -116,7 +116,7 @@ do_init(){ ( set -o posix ; set )| sort >"$tmp_dir/vars.before" my_name_ext=`basename $0` RUN_UNIT=${my_name_ext%.*} - + export postgres_app_db=${1:-} export table_name_01=${2:-} export table_name_02=${3:-} @@ -128,27 +128,27 @@ do_init(){ do_set_vars(){ cd $run_unit_bash_dir - for i in {1..3} ; do cd .. ; done ; export PRODUCT_INSTANCE_DIR=`pwd`; - environment_name=$(basename "$PRODUCT_INSTANCE_DIR") - cd $PRODUCT_INSTANCE_DIR - - source $PRODUCT_INSTANCE_DIR/.env - source $PROJ_INSTANCE_DIR/.env ; env_type=$ENV_TYPE - source $PRODUCT_INSTANCE_DIR/lib/bash/funcs/export-json-section-vars.sh - - test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_INSTANCE_DIR" - test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$env_type.env.json" + for i in {1..3} ; do cd .. ; done ; export PRODUCT_DIR=`pwd`; + environment_name=$(basename "$PRODUCT_DIR") + cd $PRODUCT_DIR + + source $PRODUCT_DIR/.env + # + source $PRODUCT_DIR/lib/bash/funcs/export-json-section-vars.sh + + test -z "${PROJ_INSTANCE_DIR-}" && export PROJ_INSTANCE_DIR="$PRODUCT_DIR" + test -z ${PROJ_CONF_FILE:-} && export PROJ_CONF_FILE="$PROJ_INSTANCE_DIR/cnf/env/$ENV.env.json" if [ "$environment_name" == "$RUN_UNIT" ]; then - product_dir=$PRODUCT_INSTANCE_DIR + product_dir=$PRODUCT_DIR else cd .. ; product_dir=`pwd`; fi cd .. ; product_base_dir=`pwd`; org_name=$(basename `pwd`) - + do_export_json_section_vars $PROJ_CONF_FILE '.env.db' - + if [[ $do_print -eq 1 ]]; then ( set -o posix ; set ) | sort >"$tmp_dir/vars.after" echo "INFO using the following vars:" @@ -160,7 +160,7 @@ do_set_vars(){ } -do_chk_print_usage(){ +do_chk_print_usage(){ db=dev_qto if [[ -z "${1:-}" || -z "${2:-}" ]]; then @@ -171,7 +171,7 @@ do_chk_print_usage(){ example: bash $0 dev_qto release_issues - example to generate code for all the tables in a db: + example to generate code for all the tables in a db: while read -r t; do $0 dev_qto \$t ; done < <(psql -d dev_qto -t -q -c "SELECT table_name FROM information_schema.tables where 1=1 and table_catalog='dev_qto' and table_schema='public'") needless to say anything you print you could append to a file as follows: @@ -244,7 +244,7 @@ do_build_cols_lst_excluded(){ do_exit(){ - exit_code="$1";shift + exit_code="$1";shift rm -rf "$run_unit_bash_dir/tmp" #clear the tmpdir cd $call_start_dir exit $exit_code diff --git a/src/tpl/src/terraform/qto/main.tf.tpl b/src/tpl/src/terraform/qto/main.tf.tpl index 37be7969..19df4968 100644 --- a/src/tpl/src/terraform/qto/main.tf.tpl +++ b/src/tpl/src/terraform/qto/main.tf.tpl @@ -24,7 +24,7 @@ data "aws_ami" "ubuntu" { variable "environment_tag" { description = "Environment tag" - default = "{{ ENV_TYPE }}" + default = "{{ ENV }}" } variable "availability_zone" { @@ -38,34 +38,34 @@ variable "public_key_path" { } // VPC Resource -resource "aws_vpc" "vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}" { +resource "aws_vpc" "vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}" { cidr_block = "10.0.0.0/16" enable_dns_support = true enable_dns_hostnames = true tags = { - Name = "vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}" + Name = "vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}" Version = "{{ VERSION }}" } } // subnets -resource "aws_subnet" "subnet_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}" { - cidr_block = "${cidrsubnet(aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.cidr_block, 3, 1)}" - vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" +resource "aws_subnet" "subnet_{{ PROJ }}_{{ ENV }}_{{ VER }}" { + cidr_block = "${cidrsubnet(aws_vpc.vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}.cidr_block, 3, 1)}" + vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" availability_zone = "{{ aws['availability_zone'] }}" tags = { - Name = "subnet_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}" + Name = "subnet_{{ PROJ }}_{{ ENV }}_{{ VER }}" Version = "{{ VER }}" } } -resource "aws_security_group" "{{ ENV_TYPE }}_{{ VER }}_sgr_qto_web" { -name = "{{ ENV_TYPE }}_{{ VER }}_sgr_qto_web" -vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" +resource "aws_security_group" "{{ ENV }}_{{ VER }}_sgr_qto_web" { +name = "{{ ENV }}_{{ VER }}_sgr_qto_web" +vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" // morbo dev ingress { @@ -178,50 +178,50 @@ vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" -resource "aws_internet_gateway" "{{ ENV_TYPE }}_{{ VER }}_gw" { - vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" +resource "aws_internet_gateway" "{{ ENV }}_{{ VER }}_gw" { + vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" tags = { - Name = "{{ ENV_TYPE }}_{{ VER }}_aws_internet_gateway" + Name = "{{ ENV }}_{{ VER }}_aws_internet_gateway" Version = "{{ VERSION}}" } } -resource "aws_route_table" "{{ ENV_TYPE }}_{{ VER }}_route-table" { - vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" +resource "aws_route_table" "{{ ENV }}_{{ VER }}_route-table" { + vpc_id = "${aws_vpc.vpc_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" route { cidr_block = "0.0.0.0/0" - gateway_id = "${aws_internet_gateway.{{ ENV_TYPE }}_{{ VER }}_gw.id}" + gateway_id = "${aws_internet_gateway.{{ ENV }}_{{ VER }}_gw.id}" } tags = { - Name = "{{ ENV_TYPE }}_{{ VER }}_aws_route_table" + Name = "{{ ENV }}_{{ VER }}_aws_route_table" Version = "{{ VERSION}}" } } -resource "aws_route_table_association" "{{ ENV_TYPE }}_{{ VER }}_subnet-association" { - subnet_id = "${aws_subnet.subnet_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" - route_table_id = "${aws_route_table.{{ ENV_TYPE }}_{{ VER }}_route-table.id}" +resource "aws_route_table_association" "{{ ENV }}_{{ VER }}_subnet-association" { + subnet_id = "${aws_subnet.subnet_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" + route_table_id = "${aws_route_table.{{ ENV }}_{{ VER }}_route-table.id}" } -resource "aws_key_pair" "{{ ENV_TYPE }}_{{ VER }}_aws_key_pair" { +resource "aws_key_pair" "{{ ENV }}_{{ VER }}_aws_key_pair" { key_name = "$key_name" public_key = "$public_ssh_key_content" } -resource "aws_instance" "{{ ENV_TYPE }}_{{ VER }}_qto_inst" { +resource "aws_instance" "{{ ENV }}_{{ VER }}_qto_inst" { ami = "${data.aws_ami.ubuntu.id}" instance_type = "t2.micro" - subnet_id = "${aws_subnet.subnet_{{ PROJ }}_{{ ENV_TYPE }}_{{ VER }}.id}" + subnet_id = "${aws_subnet.subnet_{{ PROJ }}_{{ ENV }}_{{ VER }}.id}" associate_public_ip_address = "true" - security_groups = ["${aws_security_group.{{ ENV_TYPE }}_{{ VER }}_sgr_qto_web.id}"] + security_groups = ["${aws_security_group.{{ ENV }}_{{ VER }}_sgr_qto_web.id}"] key_name = "$key_name" tags = { - Name = "{{ ENV_TYPE }}_{{ VER }}_qto-ec2" + Name = "{{ ENV }}_{{ VER }}_qto-ec2" Version = "{{ VERSION}}" } }