aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md16
-rw-r--r--cdf/src/cdf-prop-value/README.md53
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/pom.xml28
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/.gitignore3
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/makefile33
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/.gitignore1
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/CdfPropValue.java86
-rw-r--r--cdf/src/cdf-prop-value/cdf-prop-value/src/test/java/org/onap/dcae/cdf/cdfpropvalue/AppTest.java53
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/pom.xml26
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/.gitignore2
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/makefile50
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/.gitignore1
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/AsHex.java116
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Classify.java109
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java131
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Convert.java97
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/G2CookieGen.java209
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Hostname.java108
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pair.java40
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pid.java37
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Popen.java84
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple2.java25
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple3.java29
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple4.java29
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Uid.java69
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/.gitignore1
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configurable.java28
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configuration.java579
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/ConfigurationRegistry.java106
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/EncryptedConfiguration.java219
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/PropValue.java245
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/.gitignore1
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/TaskThread.java164
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/ThreadUtils.java89
-rw-r--r--cdf/src/cdf-prop-value/cdf-util/src/test/java/org/onap/dcae/cdf/util/AppTest.java53
-rw-r--r--cdf/src/cdf-prop-value/makefile13
-rwxr-xr-xcdf/src/common/postinst50
-rw-r--r--cdf/src/makefile53
-rw-r--r--cdf/src/repackage.json29
-rwxr-xr-xcdf/src/stage/opt/app/cdf/bin/getpropvalue31
-rwxr-xr-xcdf/src/stage/opt/app/cdf/bin/setencryptedvalues30
-rw-r--r--cdf/src/stage/opt/app/cdf/lib/cdf.cfg.tmpl18
-rw-r--r--cdf/src/stage/opt/app/cdf/lib/jars/which_files3
-rw-r--r--makefile5
-rwxr-xr-xpgaas/src/common/postinst58
-rw-r--r--pgaas/src/makefile47
-rw-r--r--pgaas/src/repackage.json32
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/check_cluster170
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/dcae_admin_db.py892
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/dump-designate-zone88
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/gen-repmgr-info247
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/healthcheck_status3
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/in.json97
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/isrw35
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/list_masters79
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/makefile69
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_copy97
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_ctl_promote27
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_ctl_restart43
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_ctl_start31
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_ctl_status27
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/pg_ctl_stop26
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/pgaas-verify-install240
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/pgwget4
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/repmgrc30
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/repmgrd-status-changes54
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/repmgrdc31
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/runpsql32
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/runpsqll32
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/setpropvalue67
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_is_in_recovery19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_activity19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_archiver19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_bgwriter19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database_conflicts19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_indexes19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_tables19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_functions19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_indexes19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_sequences19
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_tables19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/start_maintenance_mode48
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/startpsql31
-rw-r--r--pgaas/src/stage/opt/app/pgaas/bin/stop_maintenance_mode28
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/update_var_run_isrw32
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/bin/verify_pg_privileges188
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/common-db-tasks43
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-cdf-master54
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-cdf-secondary62
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-db-backup38
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-db-master72
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-db-secondary122
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-extensions53
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-repmgr-user40
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-ssh-master40
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create-ssh-secondary102
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/create_dcae_rotate.sql21
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/dcae_admin_db.cfg2
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/do-post-install-config157
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/do-post-install-post35
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/do-post-install-prep259
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/do-post-install-tools51
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/etc/do-pre-rm.prep17
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/gen-pgpass28
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/gen-recovery.conf51
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/etc/gen-repmgr.conf63
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/lock-and-create-db-backup37
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/etc/makecerts98
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/makefile44
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/reset-db-secondary59
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/ssleay.cnf33
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/start-db33
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/update-db-master63
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary95
-rw-r--r--pgaas/src/stage/opt/app/pgaas/etc/update-postgres-user34
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/init-pgaas-idns.conf21
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/init-pgaas-init.conf24
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/logrotate24
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/makefile38
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/pglogs.cron4
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/systemd-pgaas-idns.service16
-rw-r--r--pgaas/src/stage/opt/app/pgaas/init/tmpfiles-pgaas-init.conf7
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/lib/CommonLogger.py941
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/green-flasher-12x10.gifbin827 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/grey-flasher-12x10.gifbin48 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/makefile37
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/red-flasher-12x10.gifbin201 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-G-12x25.gifbin975 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-R-12x25.gifbin963 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-Y-12x25.gifbin966 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g-12x25.gifbin975 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g2-12x25.gifbin916 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-green.gifbin916 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-red.gifbin425 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-yellow.gifbin432 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r-12x25.gifbin963 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r2-12x25.gifbin909 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r3-12x25.gifbin425 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-green.gifbin827 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-red.gifbin201 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-yellow.gifbin256 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y-12x25.gifbin966 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y2-12x25.gifbin909 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y3-12x25.gifbin432 -> 0 bytes
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/gif/yellow-flasher-12x10.gifbin256 -> 0 bytes
-rwxr-xr-xpgaas/src/stage/opt/app/pgaas/lib/iDNS-responder.py1105
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/init-logger.cfg40
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/makefile39
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/pgaas.cfg31
-rw-r--r--pgaas/src/stage/opt/app/pgaas/lib/profile.additions10
-rw-r--r--pgaas/src/stage/opt/app/pgaas/main/makefile38
-rw-r--r--pgaas/src/stage/opt/app/pgaas/main/pg_hba.conf.orig127
-rw-r--r--pgaas/src/stage/opt/app/pgaas/main/pg_ident.conf42
-rw-r--r--pgaas/src/stage/opt/app/pgaas/main/postgresql.conf.orig655
-rw-r--r--pgaas/src/stage/opt/app/pgaas/makefile40
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/.gitignore2
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/check_cluster.man40
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/dcae_admin_db.man72
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.json58
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.yaml68
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/isrw.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/list_masters.man30
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/makefile101
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/pg_ctl_promote.man20
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/pg_ctl_restart.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/pg_ctl_start.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/pg_ctl_status.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/pg_ctl_stop.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/repmgrc.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/repmgrdc.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/runpsql.man21
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/runpsqll.man22
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/setpropvalue.man26
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_is_in_recovery.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_activity.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_archiver.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_bgwriter.man20
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database_conflicts.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_indexes.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_tables.man20
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_functions.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_indexes.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_sequences.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_tables.man19
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/start_maintenance_mode.man28
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/startpsql.man21
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/stop_maintenance_mode.man24
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/todo5
-rw-r--r--pgaas/src/stage/opt/app/pgaas/man/update_var_run_isrw.man23
-rw-r--r--pgaas/src/testlock/.gitignore1
-rw-r--r--pgaas/src/testlock/makefile59
-rw-r--r--pgaas/src/testlock/testlock.138
-rw-r--r--pgaas/src/testlock/testlock.c110
-rw-r--r--pgaas/src/testlock/testlock.md27
196 files changed, 7 insertions, 12462 deletions
diff --git a/README.md b/README.md
index 9c1717e..79aabd4 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,7 @@
# PostgreSQL as a Service (PGaaS) DB VM.
-This package is built on top of the stock PostgreSQL and Repmgr packages.
+This package is not being used in R2 Beijing because of the move to Kubernetes with OOM.
-PGaaS contains a set of configuration scripts, daemons, and administrative scripts
-that allow PostgreSQL to be deployed, configured and managed by the DCAE Controller.
-PGaaS may be deployed singly or in a cascaded cluster.
+If you need this package, use the R1 Amsterdam release packages.
-The running daemons provide health check and other information suitable for the
-DCAE Controller and future dashboard access.
-
-
-## Building the Code
-
-To build the code, use the "make build" command.
-
-To build the code and upload to a debian repository, use the "make debian" command.
+I'm not removing the repo though because it is likely that we will need to add things in R3 Casablanca.
diff --git a/cdf/src/cdf-prop-value/README.md b/cdf/src/cdf-prop-value/README.md
deleted file mode 100644
index f83617e..0000000
--- a/cdf/src/cdf-prop-value/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-org.onap.dcae.cdf [^1]
-======================
-
-This repository contails two modules:
-* `cdf-util`: a port of the support functions needed to support CdfPortValue command
-* `cdf-prop-value` : contains only the CdfPortValue command
-
-## Building
-
-To build:
-* `cd cdf-util-build; mvn package`
-
-## Usage
-
-Command: `/opt/cdf/bin/getpropvalue`
-
-`/opt/cdf/bin/getpropvalue [-x] -n property -f property-file`
- Extract the named value from the given property-file (or full pathname[^2])
-
-`/opt/cdf/bin/getpropvalue -e method [-n property] [-s salt] -v value`
- Encrypt the given property with the given name and value
-
-`/opt/cdf/bin/getpropvalue -u value`
- Decrypt the given value, expressed as a triple METHOD:HEXSALT:HEXVAL
-
-`/opt/cdf/bin/setencryptedvalues` (same as `/opt/cdf/bin/getpropvalue -E`)
- Encrypt all lines that look like ENCRYPTME.METHOD.name=value
-
-## Examples
-
- # using config files:
-
- # echo ENCRYPTME.AES.input=bogus | /opt/cdf/bin/setencryptedvalues > testconfig.txt
-
- # cat testconfig.txt
- input.x=AES:353438323235:bf046d8a3e8b12fb678f5dec1e9d5743
-
- # /opt/cdf/bin/getpropvalue -x -n input -f /home/ht1659/src/cdf/testconfig.txt
- bogus
-
- # No file:
-
- # /opt/cdf/bin/getpropvalue -e AES -v bogus
- AES:34383638353831:0e699f0f818593e3adbc642efed20341
-
- # /opt/cdf/bin/getpropvalue -u AES:323937323833:8d95d8803978c4b13497b394d56a4a9c
- bogus
-
-
-
-[^1]: Version 1.0, 24 Dec 2015
-
-[^2]: The property-file valued currently requires a rooted (full) pathname.
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/pom.xml b/cdf/src/cdf-prop-value/cdf-prop-value/pom.xml
deleted file mode 100644
index c88885a..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/pom.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.onap.dcae.cdf</groupId>
- <artifactId>cdf-prop-value</artifactId>
- <packaging>jar</packaging>
- <version>1.1.0-SNAPSHOT</version>
- <name>cdf-prop-value</name>
- <url>http://maven.apache.org</url>
-
- <dependencies>
- <dependency>
- <groupId>org.onap.dcae.cdf</groupId>
- <artifactId>cdf-util</artifactId>
- <version>1.1.0-SNAPSHOT</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/.gitignore b/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/.gitignore
deleted file mode 100644
index 9709069..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-javadoc
-javadocs.built
-*.jar
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/makefile b/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/makefile
deleted file mode 100644
index 194ca4c..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-go=$$(find ~/.m2 -name '*getopt*.jar' | tail -1)
-cu=../../../../cdf-util/src/main/java/cdf-util.jar
-
-.SUFFIXES= .class
-
-JAVA=org/onap/dcae/cdf/CdfPropValue.java
-CLASSES=$(JAVA:.java=.class)
-
-JAR=cdf-prop-value.jar
-
-all:
-
-build: $(JAR)
-
-classes: $(CLASSES)
-
-clean:
- find . -name '*.class' -exec rm -f {} +
- rm -rf javadoc javadocs.built $(JAR)
-
-$(JAR): $(CLASSES)
- rm -f $(JAR)
- jar cvf $(JAR) $(CLASSES)
-
-$(CLASSES): $(JAVA)
- javac -cp $(go):$(cu) $(JAVA)
-
-javadocs: javadocs.built
-javadocs.built: $(JAR)
- rm -rf javadoc
- mkdir -p javadoc
- javadoc -d javadoc -classpath $(go):$(cu) $(JAVA)
- touch javadocs.built
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/.gitignore b/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/.gitignore
deleted file mode 100644
index 6b468b6..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/CdfPropValue.java b/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/CdfPropValue.java
deleted file mode 100644
index cd9a51c..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/src/main/java/org/onap/dcae/cdf/CdfPropValue.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf;
-
-import org.onap.dcae.cdf.util.config.PropValue;
-import java.util.logging.Logger;
-import org.onap.dcae.cdf.util.config.Configuration;
-import java.io.InputStream;
-import java.io.PrintStream;
-
-public class CdfPropValue extends PropValue {
- public static String getCDFHOME() {
- String optCdf = System.getProperty("CDF_HOME");
- if (optCdf == null) optCdf = System.getenv("CDF_HOME");
- if (optCdf == null) optCdf = "/opt/app/cdf";
- return optCdf;
- }
-
- public static String getGLOBALPROPFILE() {
- String optCdfCfg = System.getProperty("CDF_CFG");
- if (optCdfCfg == null) optCdfCfg = System.getenv("CDF_CFG");
- if (optCdfCfg == null) optCdfCfg = getCDFHOME() + "/lib/cdf.cfg";
- return optCdfCfg;
- }
-
- public static void init() {
- PropValue.setGlobalPropFile(getGLOBALPROPFILE());
- PropValue.setEncryptionKeyProperty("Global_Title");
- }
- static {
- init();
- }
-
- public static void printEncryptedProperty(String method, String name, String salt, String value, String globalPropFile) {
- PropValue.printEncryptedProperty(method, name, salt, value, globalPropFile);
- }
- public static String generateEncryptedProperty(String method, String salt, String value, String globalPropFile) throws Exception {
- return PropValue.generateEncryptedProperty(method, salt, value, globalPropFile);
- }
- public static String generateEncryptedProperty(String method, String salt, String value, PropValue propValue) throws Exception {
- return PropValue.generateEncryptedProperty(method, salt, value, propValue);
- }
- public static void extractProperty(String f, String name, boolean encrypted) {
- PropValue.extractProperty(f, name, encrypted);
- }
- public static void extractProperty(String f, String name, boolean encrypted, String globalPropFile) {
- PropValue.extractProperty(f, name, encrypted, globalPropFile);
- }
- public static String decryptTriple(String triple, String globalPropFile) {
- return PropValue.decryptTriple(triple, globalPropFile);
- }
- public static String decryptTriple(String triple, PropValue propValue) {
- return PropValue.decryptTriple(triple, propValue);
- }
- public static void encryptInput(InputStream in, PrintStream out) throws Exception {
- PropValue.encryptInput(in, out);
- }
- public static void encryptInput() throws Exception {
- PropValue.encryptInput();
- }
- public static void encryptInput(String globalPropFile, InputStream sysin, PrintStream sysout) throws Exception {
- PropValue.encryptInput(globalPropFile, sysin, sysout);
- }
- public static void main(String args[]) throws Exception {
- PropValue.main(args);
- }
-
-
- public CdfPropValue(Configuration globalConfig, Logger logger) {
- super(globalConfig, logger);
- }
-
-}
diff --git a/cdf/src/cdf-prop-value/cdf-prop-value/src/test/java/org/onap/dcae/cdf/cdfpropvalue/AppTest.java b/cdf/src/cdf-prop-value/cdf-prop-value/src/test/java/org/onap/dcae/cdf/cdfpropvalue/AppTest.java
deleted file mode 100644
index 64753bd..0000000
--- a/cdf/src/cdf-prop-value/cdf-prop-value/src/test/java/org/onap/dcae/cdf/cdfpropvalue/AppTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.cdfpropvalue;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Unit test for simple App.
- */
-public class AppTest
- extends TestCase
-{
- /**
- * Create the test case
- *
- * @param testName name of the test case
- */
- public AppTest( String testName )
- {
- super( testName );
- }
-
- /**
- * @return the suite of tests being tested
- */
- public static Test suite()
- {
- return new TestSuite( AppTest.class );
- }
-
- /**
- * Rigourous Test :-)
- */
- public void testApp()
- {
- assertTrue( true );
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/pom.xml b/cdf/src/cdf-prop-value/cdf-util/pom.xml
deleted file mode 100644
index 0227504..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/pom.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.onap.dcae.cdf</groupId>
- <artifactId>cdf-util</artifactId>
- <packaging>jar</packaging>
- <version>1.1.0-SNAPSHOT</version>
- <name>cdf-util</name>
- <url>http://maven.apache.org</url>
-
- <dependencies>
- <dependency>
- <groupId>gnu.getopt</groupId>
- <artifactId>java-getopt</artifactId>
- <version>1.0.13</version>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/.gitignore b/cdf/src/cdf-prop-value/cdf-util/src/main/java/.gitignore
deleted file mode 100644
index 87070e9..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-javadoc
-*.jar
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/makefile b/cdf/src/cdf-prop-value/cdf-util/src/main/java/makefile
deleted file mode 100644
index 71e77b3..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-go=$$(find ~/.m2 -name '*getopt*.jar' | tail -1)
-
-.SUFFIXES= .class
-
-JAVA= org/onap/dcae/cdf/util/common/Classify.java \
- org/onap/dcae/cdf/util/common/Tuple3.java \
- org/onap/dcae/cdf/util/common/AsHex.java \
- org/onap/dcae/cdf/util/common/G2CookieGen.java \
- org/onap/dcae/cdf/util/common/Compress.java \
- org/onap/dcae/cdf/util/common/Pair.java \
- org/onap/dcae/cdf/util/common/Tuple4.java \
- org/onap/dcae/cdf/util/common/Hostname.java \
- org/onap/dcae/cdf/util/common/Uid.java \
- org/onap/dcae/cdf/util/common/Tuple2.java \
- org/onap/dcae/cdf/util/common/Pid.java \
- org/onap/dcae/cdf/util/common/Convert.java \
- org/onap/dcae/cdf/util/common/Popen.java \
- org/onap/dcae/cdf/util/config/PropValue.java \
- org/onap/dcae/cdf/util/config/Configuration.java \
- org/onap/dcae/cdf/util/config/EncryptedConfiguration.java \
- org/onap/dcae/cdf/util/config/Configurable.java \
- org/onap/dcae/cdf/util/config/ConfigurationRegistry.java \
- org/onap/dcae/cdf/util/threads/TaskThread.java \
- org/onap/dcae/cdf/util/threads/ThreadUtils.java
-
-CLASSES=$(JAVA:.java=.class)
-
-JAR=cdf-util.jar
-
-all:
-
-build: $(JAR)
-
-$(JAR): $(CLASSES)
- rm -f $(JAR)
- jar cvf $(JAR) $(CLASSES)
-
-clean:
- find . -name '*.class' -exec rm -f {} +
- rm -rf javadoc javadocs.built
-
-$(CLASSES): $(JAVA)
- javac -cp $(go) $(JAVA)
-
-javadocs: javadocs.built
-javadocs.built: $(JAR)
- rm -rf javadoc
- mkdir -p javadoc
- javadoc -d javadoc -classpath $(go) $(JAVA)
- touch javadocs.built
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/.gitignore b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/.gitignore
deleted file mode 100644
index 6b468b6..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/AsHex.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/AsHex.java
deleted file mode 100644
index 05d8f37..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/AsHex.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-public class AsHex
-{
- public static String asHex(byte[] data, int offset, int length, String sep) {
- return asHex(data, offset, length, true);
- }
- public static String asHex(byte[] data, String sep) {
- return asHex(data, 0, data.length, sep);
- }
- public static String asHex(byte[] data, int offset, int length) {
- return asHex(data, offset, length, " ");
- }
- public static String asHex(byte[] data) {
- return asHex(data, 0, data.length);
- }
-
- public static String asHex(String data) {
- return asHex(data.getBytes());
- }
-
- static private int asHexBlockLength = 16;
- public static void setAsHexBlockLength(int n) { asHexBlockLength = n; }
- public static int getAsHexBlockLength() { return asHexBlockLength; }
-
- private final static char[] hexdigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
- /**
- * return a byte buf as a hex string
- */
- public static String asHex(byte[] buf, int offset, int length, boolean addFinalNL) {
- StringBuilder ret = new StringBuilder();
- return asHex(ret, buf, offset, length, addFinalNL).toString();
- }
-
- /**
- * Return a byte buf as hex into the provided StringBuilder.
- */
- public static StringBuilder asHex(StringBuilder ret, byte[] buf, int offset, int length, boolean addFinalNL) {
- final int blockLength = asHexBlockLength;
- for (int o = 0; o < length; o += blockLength) {
- int iend = (o + blockLength < length) ? (o + blockLength) : length;
- int pend = o + blockLength;
- for (int i = o; i < iend; i++) {
- int b = (int)(buf[i+offset] & 0xFF);
- ret.append(hexdigits[b/16]);
- ret.append(hexdigits[b%16]);
- }
- for (int i = iend; i < pend; i++) {
- ret.append(" ");
- }
- ret.append(" ");
- for (int i = o; i < iend; i++) {
- byte b = buf[i+offset];
- int ib = (int)(b & 0xFF);
- if ((ib >= 0x20) && (ib < 0x7f)) ret.append((char)b);
- else ret.append('.');
- }
- if (iend < length) ret.append('\n');
- }
- if (addFinalNL && (length%blockLength != 0)) ret.append('\n');
- return ret;
- }
-
- /**
- * Return a byte buf as hex with a maximum number of lines.
- */
- public static String asHexWithMaxLines(byte[] buf, int offset, int length, int maxLines, boolean addFinalNL) {
- StringBuilder ret = new StringBuilder();
- return asHexWithMaxLines(ret, buf, offset, length, maxLines, addFinalNL).toString();
- }
-
- /**
- * Return a byte buf as hex into the provided StringBuilder with a maximum number of lines.
- */
- public static StringBuilder asHexWithMaxLines(StringBuilder ret, byte[] buf, int offset, int length, int maxLines, boolean addFinalNL) {
- int bytesToPrint = length - offset;
- if (maxLines < 1) maxLines = 1;
- int maxBytesToPrint = maxLines * asHexBlockLength;
- if (bytesToPrint <= maxBytesToPrint) {
- return asHex(ret, buf, offset, length, addFinalNL);
- } else {
- if (bytesToPrint > maxBytesToPrint) bytesToPrint = maxBytesToPrint;
- asHex(ret, buf, offset, offset + bytesToPrint, false);
- ret.append(" ....");
- if (addFinalNL) ret.append("\n");
- return ret;
- // return asHex(ret, buf, length - halfBytesToPrint, length, addFinalNL);
- }
- }
-
- // Convert a hex string back to a byte array.
- // This assumes that there is no whitespace within the string.
- // public static byte[] fromHex(String hexStr) {
- // byte[] bts = new byte[hexStr.length() / 2];
- // for (int i = 0; i < bts.length; i++) {
- // bts[i] = (byte) Integer.parseInt(hexStr.substring(2*i, 2*i+2), 16);
- // }
- // return bts;
- // }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Classify.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Classify.java
deleted file mode 100644
index e0b9203..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Classify.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import java.lang.Character;
-
-/**
- * Classify holds various checking functions.
- */
-public final class Classify {
-
- /**
- * isHex(ch) - is a character a hex value?
- *
- * @param ch (char)
- * @return boolean
- */
- public static boolean isHex(char ch) {
- return (ch >= '0' && ch <= '9') ||
- (ch >= 'A' && ch <= 'F') ||
- (ch >= 'a' && ch <= 'f');
- }
-
- /**
- * isValidGuid
- *
- * @param input (String)
- * @return boolean
- */
-
- public static boolean isValidGuid(String input) {
- // Checks if the GUID has the following format: "0f114b6f-3f1d-4c8f-a065-2a2ec3d0f522"
-
- if ( (input == null) || (input.length() != 36)) return false;
-
- for (int i=0; i < 36; i++) {
- char c = input.charAt(i);
- if ( (i==8 || i==13 || i==18 || i==23)) {
- if (c != '-') return false;
- }
- else if (!isHex(c)) return false;
- }
- return true;
- }
-
-
- /**
- * isValidClli
- *
- * @param input (String)
- * @return boolean
- */
-
- public static boolean isValidClli(String input) {
- // Checks if the CLLI only contains letters or digits.
-
- if (input == null) return false;
- int len = input.length();
- if (len == 0) return false;
-
- for (int i=0; i < len; i++) {
- char c = input.charAt(i);
- if (!Character.isLetterOrDigit(c)) return false;
- }
- return true;
- }
-
-
- /**
- * isValidCanonicalIpv4Address
- *
- * @param ipAddress (String)
- * @return boolean
- */
-
- public static boolean isValidCanonicalIpv4Address(String ipAddress) {
-
- String[] parts = ipAddress.split( "\\." );
-
- if ( parts.length != 4 ) {
- return false;
- }
- for ( String s : parts ) {
- try {
- int i = Integer.parseInt( s );
- if ( (i < 0) || (i > 255) ) {
- return false;
- }
- } catch (Exception ex) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java
deleted file mode 100644
index 86ff60b..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Compress.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import java.util.zip.GZIPOutputStream;
-import java.util.zip.ZipOutputStream;
-import java.util.zip.ZipEntry;
-// import java.io.InputStream;
-import java.io.FileOutputStream;
-import java.io.FileInputStream;
-import java.io.File;
-import java.io.IOException;
-
-public class Compress {
-
- /**
- * Compress a file with the gzip algorithm, sending output to outFilename.
- * Based on code at http://www.java-tips.org/java-se-tips/java.util.zip/how-to-compress-a-file-in-the-gip-format.html.
- */
- public static void gzip(String inFilename, String outFilename) throws IOException {
- String tmpFilename = outFilename + ".tmp";
- try {
- // Create the GZIP output stream
- GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(tmpFilename));
-
- // Open the input file
- FileInputStream in = new FileInputStream(inFilename);
-
- // Transfer bytes from the input file to the GZIP output stream
- byte[] buf = new byte[4096];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
-
- // Complete the GZIP file
- out.finish();
- out.close();
-
- // rename .gz.tmp to .gz
- File target = new File(outFilename);
- if (target.exists()) target.delete();
- File file = new File(tmpFilename);
- boolean result = file.renameTo(target);
- if (!result) throw new IOException("Cannot rename " + tmpFilename + " to " + outFilename);
- } catch (IOException e) {
- // If we can't write the gzip file, remove it and pass on the exception.
- File f = new File(outFilename);
- f.delete();
- throw e;
- }
- }
-
- /**
- * Compress a file with the gzip algorithm, sending output to filename+".gz".
- */
- public static void gzip(String filename) throws IOException {
- gzip(filename, filename + ".gz");
- }
-
- /**
- * Compress a file with the zip algorithm, sending output to outFilename
- * Based on code at http://www.java-tips.org/java-se-tips/java.util.zip/how-to-compress-a-file-in-the-gip-format.html.
- */
- public static void zip(String inFilename, String outFilename) throws IOException {
- String tmpFilename = outFilename + ".tmp";
- try {
- // Create the ZIP output stream
- ZipOutputStream out = new ZipOutputStream(new FileOutputStream(tmpFilename));
- ZipEntry zipEntry = new ZipEntry(inFilename);
- out.putNextEntry(zipEntry);
-
- // Open the input file
- FileInputStream in = new FileInputStream(inFilename);
-
- // Transfer bytes from the input file to the ZIP output stream
- byte[] buf = new byte[4096];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
-
- // Complete the ZIP file
- out.finish();
- out.close();
-
- // rename .zip.tmp to .zip
- File target = new File(outFilename);
- if (target.exists()) target.delete();
- File file = new File(tmpFilename);
- boolean result = file.renameTo(target);
- if (!result) throw new IOException("Cannot rename " + tmpFilename + " to " + outFilename);
- } catch (IOException e) {
- // If we can't write the zip file, remove it and pass on the exception.
- File f = new File(outFilename);
- f.delete();
- throw e;
- }
- }
-
- /**
- * Compress a file with the gzip algorithm, sending output to filename+".zip".
- */
- public static void zip(String filename) throws IOException {
- zip(filename, filename + ".zip");
- }
-
- public static void main(String args[]) throws Exception {
- if (args.length == 1) {
- gzip(args[0]);
- zip(args[0]);
- } else {
- System.err.println("Usage: java Compress filename");
- }
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Convert.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Convert.java
deleted file mode 100644
index 6182fde..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Convert.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import java.lang.Character;
-
-/**
- * Covert holds various conversion functions.
- */
-public final class Convert {
-
- private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray();
-
- /**
- * toHexString(String) - convert a string into its hex equivalent
- */
- public static String toHexString(String buf) {
- if (buf == null) return "";
- return toHexString(buf.getBytes());
- }
-
- /**
- * toHexString(byte[]) - convert a byte-string into its hex equivalent
- */
- public static String toHexString(byte[] buf) {
- if (buf == null) return "";
- char[] chars = new char[2 * buf.length];
- for (int i = 0; i < buf.length; ++i) {
- chars[2 * i] = HEX_CHARS[(buf[i] & 0xF0) >>> 4];
- chars[2 * i + 1] = HEX_CHARS[buf[i] & 0x0F];
- }
- return new String(chars);
- }
-
- // alternate implementation that's slightly slower
- // protected static final byte[] Hexhars = {
- // '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
- // };
- // public static String encode(byte[] b) {
- // StringBuilder s = new StringBuilder(2 * b.length);
- // for (int i = 0; i < b.length; i++) {
- // int v = b[i] & 0xff;
- // s.append((char)Hexhars[v >> 4]);
- // s.append((char)Hexhars[v & 0xf]);
- // }
- // return s.toString();
- // }
-
- /**
- * Convert a hex string to its equivalent value.
- */
- public static String stringFromHex(String hexString) throws Exception {
- if (hexString == null) return "";
- return stringFromHex(hexString.toCharArray());
- }
-
- public static String stringFromHex(char[] hexCharArray) throws Exception {
- if (hexCharArray == null) return "";
- return new String(bytesFromHex(hexCharArray));
- }
-
- public static byte[] bytesFromHex(String hexString) throws Exception {
- if (hexString == null) return new byte[0];
- return bytesFromHex(hexString.toCharArray());
- }
-
- public static byte[] bytesFromHex(char[] hexCharArray) throws Exception {
- if (hexCharArray == null) return new byte[0];
- int len = hexCharArray.length;
- if ((len % 2) != 0) throw new Exception("Odd number of characters: '" + hexCharArray + "'");
- byte [] txtInByte = new byte [len / 2];
- int j = 0;
- for (int i = 0; i < len; i += 2) {
- txtInByte[j++] = (byte)(((fromHexDigit(hexCharArray[i], i) << 4) | fromHexDigit(hexCharArray[i+1], i)) & 0xFF);
- }
- return txtInByte;
- }
-
- protected final static int fromHexDigit(char ch, int index) throws Exception {
- int digit = Character.digit(ch, 16);
- if (digit == -1) throw new Exception("Illegal hex character '" + ch + "' at index " + index);
- return digit;
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/G2CookieGen.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/G2CookieGen.java
deleted file mode 100644
index 738fb3c..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/G2CookieGen.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import javax.crypto.Cipher;
-// import javax.crypto.SecretKey;
-// import javax.crypto.KeyGenerator;
-// import javax.crypto.spec.IvParameterSpec;
-import java.security.Key;
-// import java.security.NoSuchAlgorithmException;
-// import java.security.SecureRandom;
-// import javax.crypto.SecretKey;
-// import sun.misc.*;
-import java.util.*;
-
-public class G2CookieGen
-{
- private Cipher cipher;
- private Key key = null;
-
- private static String alg = "DES";
- private static String desecb = "DES/ECB/PKCS5Padding";
-
- public static String G2_CLIENT_MEC_ID_1 = "MEC0001";
- private static String G2_CLIENT_MEC_ID_2 = "MEC0002";
- public static String G2_ENCRYPT_KEY = "secretK9";
- public static String G2_EPOCH_TM_STR = null;
-
-
- private static long G2_TM_DELTA_IN_MILLISECONDS = 10*60*1000;
-
- class G2WSSKey implements Key
- {
- private final byte[] keyBytes;
- private final String alg;
-
- G2WSSKey(String algorithm, byte[] keyBytes)
- {
- this.alg = algorithm;
- this.keyBytes = keyBytes;
- }
-
- public String getAlgorithm()
- {
- return alg;
- }
- public String getFormat()
- {
- return "RAW";
- }
- public byte[] getEncoded()
- {
- return (byte[])keyBytes.clone();
- }
- }
-
-
- public G2CookieGen() {
- try {
- cipher = Cipher.getInstance(desecb);
- } catch (Throwable t) {
- System.err.println(t.toString());
- return;
- }
- }
-
-
- public static String getClient1MacId() {
- return G2_CLIENT_MEC_ID_1;
- }
-
- public static String getClient2MacId() {
- return G2_CLIENT_MEC_ID_2;
- }
-
- public static String toHexStringFromByteArray(byte[] bytes)
- {
- StringBuilder retString = new StringBuilder();
- for (int i = 0; i < bytes.length; ++i) {
- retString.append(Integer.toHexString(0x0100 + (bytes[i] & 0x00FF)).substring(1));
- }
- return retString.toString();
- }
-
- public static byte[] toByteArrayFromHexString(String hexStr)
- {
- byte[] bts = new byte[hexStr.length() / 2];
- for (int i = 0; i < bts.length; i++) {
- bts[i] = (byte) Integer.parseInt(hexStr.substring(2*i, 2*i+2), 16);
- }
- return bts;
- }
-
- public byte[] encryptData(String sData)
- {
- try {
- byte[] data = sData.getBytes();
- //System.out.println("Original data : " + new String(data));
- if (key == null) setKey(G2_ENCRYPT_KEY);
- cipher.init(Cipher.ENCRYPT_MODE, key);
- byte[] result = cipher.doFinal(data);
- return result;
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public String decryptData(byte[] sData)
- {
- try {
- cipher.init(Cipher.DECRYPT_MODE, key);
- byte[] result = cipher.doFinal(sData);
- return new String(result);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- public String constructCookie(String mechId) {
- return mechId + ":" + System.currentTimeMillis();
- }
-
- public void setKey(String g2EncryptKey) {
- key = new G2WSSKey(this.alg, g2EncryptKey.getBytes());
- }
-
- public String getEncryptedCookie(String mechId, String g2EncryptKey) {
- setKey(g2EncryptKey);
- String tmp = constructCookie(mechId);
- byte[] byteArray = this.encryptData(tmp);
- return this.toHexStringFromByteArray(byteArray);
- }
-
- public long getTimeMillisFromCookie(String cookie) {
- StringTokenizer tkn = new StringTokenizer(cookie,":");
- String tmStr = null;
- while (tkn.hasMoreTokens()) {
- tmStr = tkn.nextToken();
- }
- Long tmLong = new Long(tmStr);
- return tmLong.longValue();
- }
-
- public boolean isValid(long tm) {
- long ctm = System.currentTimeMillis();
-System.out.println("Current Time="+ctm);
-System.out.println("G2_TM_DELTA_IN_MILLISECONDS="+G2_TM_DELTA_IN_MILLISECONDS);
- if ( Math.abs(ctm - tm) <= G2_TM_DELTA_IN_MILLISECONDS ) {
- return true;
- }
- return false;
- }
-
-
- public static void main(String argv[]) {
- try {
- if (argv.length > 0) {
-System.out.println("using Client MACID="+argv[0]);
- G2_CLIENT_MEC_ID_1 = argv[0];
-
- }
-
- if (argv.length > 1) {
- if (argv[1].length() == 8) {
-System.out.println("using Key="+argv[1]);
- G2_ENCRYPT_KEY = argv[1];
- }
- }
-
- if (argv.length > 2) {
-System.out.println("using Epoch Time (in seconds) ="+argv[2]);
- G2_EPOCH_TM_STR = argv[2];
- }
-
-
- G2CookieGen wssc = new G2CookieGen();
-
-// System.out.println("tz_diff="+G2_CLIENT_TM_ZONE_TO_PDT_IN_MILLISECONDS);
-System.out.println("macid="+G2_CLIENT_MEC_ID_1);
-
- String cookie = wssc.constructCookie(G2_EPOCH_TM_STR);
-System.out.println("original cookie="+cookie);
-
- byte[] byteArrary = wssc.encryptData(cookie);
- String hexString = wssc.toHexStringFromByteArray(byteArrary);
-System.out.println("encrypted cookie="+hexString);
- System.exit(0);
-
- } catch (Exception e) {
- System.err.println("Error: " + e);
- System.exit(1);
- }
- } /* main */
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Hostname.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Hostname.java
deleted file mode 100644
index 4385c01..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Hostname.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import java.net.InetAddress;
-
-public class Hostname {
-
- /**
- * Hostname FQDN
- */
- public static String getHostName() {
- return getHostName("unknown.unknown");
- }
-
- /**
- * Hostname FQDN
- */
- public static String getHostName(String def) {
- return (uname == null) ? def : hostName;
- }
-
- /**
- * uname, the 1st portion of the hostname FQDN
- */
- public static String getUname() {
- return getUname("unknown");
- }
-
- /**
- * uname, the 1st portion of the hostname FQDN
- */
- public static String getUname(String def) {
- return (uname == null) ? def : uname;
- }
-
- /**
- * Get an IP address for this machine
- */
- public static String getLocalIP() {
- return defaultLocalIP;
- }
- /**
- * Get an IP address for this machine
- */
- public static String getLocalIPinHex() {
- return defaultLocalIPinHex;
- }
- /**
- * Get a host name for this machine
- */
- public static String getCanonicalHostName() {
- return defaultCanonicalHostName;
- }
-
- /**
- * Value returned by getLocalIP() method
- */
- private static String defaultLocalIP;
- private static String defaultLocalIPinHex;
- private static String defaultCanonicalHostName;
- private static String hostName = null; // Hostname FQDN
- private static String uname = null; // Hostname 1st part
-
- static {
- try {
- InetAddress ia = InetAddress.getLocalHost();
- defaultLocalIP = ia.getHostAddress();
- byte b[] = ia.getAddress();
- defaultLocalIPinHex = Convert.toHexString(b);
- defaultCanonicalHostName = ia.getCanonicalHostName();
- } catch (Exception e) {
- defaultLocalIP = "127.0.0.1";
- defaultLocalIPinHex = "7F000001";
- defaultCanonicalHostName = "localhost";
- }
-
- try {
- hostName = InetAddress.getLocalHost().getHostName();
- String hostNameParts[] = hostName.split("\\.");
- uname = hostNameParts[0];
- } catch (Exception ex) {
- }
- int dotInHostname = hostName.indexOf('.');
- if (dotInHostname > -1) hostName = hostName.substring(0, dotInHostname);
- }
-
- public static void main(String args[]) {
- System.out.println("getHostName() = '" + getHostName() + "'");
- System.out.println("getUname() = '" + getUname() + "'");
- System.out.println("getLocalIP() = '" + getLocalIP() + "'");
- System.out.println("getLocalIPinHex() = '" + getLocalIPinHex() + "'");
- System.out.println("getCanonicalHostName() = '" + getCanonicalHostName() + "'");
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pair.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pair.java
deleted file mode 100644
index 5a2a3f4..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pair.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-public final class Pair<L,R> {
- public final L left;
- public final R right;
- public Pair(L l, R r) { left = l; right = r; }
-
- @Override
- public boolean equals(Object obj) {
- Pair<L,R> o = (Pair<L,R>)obj;
- return left.equals(o.left) && right.equals(o.right);
- }
- @Override
- public String toString() {
- return "(" + left + "," + right + ")";
- }
- @Override
- public int hashCode() {
- return left.hashCode() + right.hashCode();
- }
-
- public static <L,R> Pair<L,R> of(L l, R r) {
- return new Pair<L,R>(l, r);
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pid.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pid.java
deleted file mode 100644
index c405c44..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Pid.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-import java.io.File;
-
-public class Pid {
- /**
- * Return the pid.
- */
- public static int getPid() { return pid; }
- public static String getPidStr() { return pidStr; }
-
- private static int pid;
- private static String pidStr;
- static {
- try {
- pid = Integer.parseInt( ( new File("/proc/self")).getCanonicalFile().getName() );
- pidStr = Integer.toString(pid);
- } catch (java.io.IOException e) {
- pid = -1;
- pidStr = "-1";
- }
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Popen.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Popen.java
deleted file mode 100644
index d7f5846..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Popen.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-
-public class Popen {
- public static class Results {
- public final String stdout, stderr;
- public final int exitValue;
- public Results(String so, String se, int e) {
- stdout = so; stderr = se; exitValue = e;
- }
- }
-
- public static Results popen(String cmd) throws java.io.IOException, java.lang.InterruptedException {
- return popen(cmd, null);
- }
-
- public static Results popen(String cmd, String stdin) throws java.io.IOException, java.lang.InterruptedException {
- Process process = Runtime.getRuntime().exec(cmd);
- return proc(process, stdin);
- }
-
- public static Results popen(String[] args) throws java.io.IOException, java.lang.InterruptedException {
- return popen(args, null);
- }
-
- public static Results popen(String[] args, String stdin) throws java.io.IOException, java.lang.InterruptedException {
- Process process = Runtime.getRuntime().exec(args);
- return proc(process, stdin);
- }
-
- private static Results proc(Process process, String stdin) throws java.io.IOException, java.lang.InterruptedException {
- OutputStream pinput = process.getOutputStream();
- InputStream poutput = process.getInputStream();
- InputStream perror = process.getErrorStream();
-
- if (stdin != null)
- pinput.write(stdin.getBytes());
- pinput.close();
-
- String stdout = captureStream(poutput);
- poutput.close();
- String stderr = captureStream(perror);
- perror.close();
- process.waitFor();
- // System.out.println("stdin=\nnvvvvvvvvvvvvvvvv\n");
- // System.out.println(stdin);
- // System.out.println("^^^^^^^^^^^^^^^^");
- // System.out.println("stdout=\nvvvvvvvvvvvvvvvv\n");
- // System.out.println(stdout);
- // System.out.println("^^^^^^^^^^^^^^^^");
- // System.out.println("stderr=\nvvvvvvvvvvvvvvvv\n");
- // System.out.println(stderr);
- // System.out.println("^^^^^^^^^^^^^^^^");
- return new Results(stdout, stderr, process.exitValue());
- }
-
- private static String captureStream(InputStream inp) throws java.io.IOException {
- byte[] buf = new byte[8192];
- StringBuffer out = new StringBuffer();
- int b;
- while ((b = inp.read(buf)) > 0) {
- out.append(new String(buf, 0, b));
- }
- return out.toString();
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple2.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple2.java
deleted file mode 100644
index f4fd441..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple2.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// -*- indent-tabs-mode: nil -*-
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-public class Tuple2<T1,T2> {
- public Tuple2(T1 n1, T2 n2) {
- t1 = n1; t2 = n2;
- }
- public final T1 t1;
- public final T2 t2;
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple3.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple3.java
deleted file mode 100644
index 566f910..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple3.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// -*- indent-tabs-mode: nil -*-
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-public class Tuple3<T1,T2,T3> extends Tuple2<T1,T2> {
- public Tuple3(T1 n1, T2 n2, T3 n3) {
- super(n1, n2);
- t3 = n3;
- }
- public Tuple3(Tuple3<T1,T2,T3> t) {
- super(t.t1, t.t2);
- t3 = t.t3;
- }
- public final T3 t3;
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple4.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple4.java
deleted file mode 100644
index c41d64c..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Tuple4.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// -*- indent-tabs-mode: nil -*-
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-
-public class Tuple4<T1,T2,T3,T4> extends Tuple3<T1,T2,T3> {
- public Tuple4(T1 n1, T2 n2, T3 n3, T4 n4) {
- super(n1, n2, n3);
- t4 = n4;
- }
- public Tuple4(Tuple4<T1,T2,T3,T4> t) {
- super(t.t1, t.t2, t.t3);
- t4 = t.t4;
- }
- public final T4 t4;
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Uid.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Uid.java
deleted file mode 100644
index 99feeb3..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/common/Uid.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.common;
-import java.io.File;
-import java.io.BufferedReader;
-import java.io.FileReader;
-import org.onap.dcae.cdf.util.common.Popen;
-
-public class Uid {
- /**
- * Return the uid.
- */
- public static int getUid() { return uid; }
- public static String getUidStr() { return uidStr; }
-
- private static int uid = -1;
- private static String uidStr = "";
- static {
- try {
- uid = getUidFromProcSelfStatus();
- if (uid == -1) uid = getUidFromIdU();
- uidStr = Integer.toString(uid);
- } catch (java.io.IOException e) {
- uid = -1;
- uidStr = "-1";
- System.err.println("Exception: " + e);
- } catch (Exception e) {
- System.err.println("Exception: " + e);
- }
-
- }
-
- private static int getUidFromProcSelfStatus() throws java.io.IOException {
- int uid = -1;
- if (true) return -1;
- BufferedReader br = new BufferedReader(new FileReader(new File("/proc/self/status")));
- String thisLine = null;
- while ((thisLine = br.readLine()) != null) {
- if (thisLine.startsWith("Uid:")) {
- String[] uids = thisLine.split("[: \t]+");
- if (uids.length > 1) {
- uid = Integer.parseInt(uids[1]);
- break;
- }
- }
- }
- br.close();
- return uid;
- }
-
- private static int getUidFromIdU() throws java.io.IOException, java.lang.InterruptedException {
- Popen.Results results = Popen.popen("/usr/bin/id -u");
- uid = Integer.parseInt(results.stdout.trim());
- return uid;
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/.gitignore b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/.gitignore
deleted file mode 100644
index 6b468b6..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configurable.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configurable.java
deleted file mode 100644
index 29f709d..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configurable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.config;
-
-/**
- * The interface for an object that wants to be notified when the
- * configuration files have changed (so it can re-configure itself)
- */
-
-public interface Configurable {
- /**
- * Configuration files have changed.
- */
- public void reConfigure();
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configuration.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configuration.java
deleted file mode 100644
index db54276..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/Configuration.java
+++ /dev/null
@@ -1,579 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.config;
-
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import java.util.logging.*;
-import org.onap.dcae.cdf.util.common.*;
-import org.onap.dcae.cdf.util.threads.*;
-
-/**
- * Class to monitor configuration parameters and notify
- * other objects when they change
- */
-
-public class Configuration extends Thread implements Configurable {
- /**
- * Time between checks of config file in milliseconds
- */
- private static int INTERVAL = 30000;
- private int interval = INTERVAL;
- /**
- * Minimum age of config file before loading it in milliseconds
- */
- private static final int MINAGE = 30000;
- private int minage = MINAGE;
- /**
- * Value returned by getInstance() method
- */
- private static Configuration defaultInstance = new Configuration();
- /**
- * Value returned by getLocalIP() method
- */
- private static String defaultLocalIP;
- private static String defaultLocalIPinHex;
- private static String defaultCanonicalHostName;
- static {
- try {
- InetAddress ia = InetAddress.getLocalHost();
- defaultLocalIP = ia.getHostAddress();
- byte b[] = ia.getAddress();
- defaultLocalIPinHex = Convert.toHexString(b);
- defaultCanonicalHostName = ia.getCanonicalHostName();
- } catch (Exception e) {
- defaultLocalIP = "127.0.0.1";
- defaultLocalIPinHex = "7F000001";
- defaultCanonicalHostName = "localhost";
- }
- }
- /**
- * Get an IP address for this machine
- */
- public static String getLocalIP() {
- return defaultLocalIP;
- }
- /**
- * Get an IP address for this machine
- */
- public static String getLocalIPinHex() {
- return defaultLocalIPinHex;
- }
- /**
- * Get a host name for this machine
- */
- public static String getCanonicalHostName() {
- return defaultCanonicalHostName;
- }
- /**
- * Get a default global instance
- */
- public static Configuration getInstance() {
- return defaultInstance;
- }
- /**
- * The current configuration
- */
- private ResourceBundle config;
- /**
- * Where to log when things go wrong
- */
- private static Logger logger = Logger.getLogger(Configuration.class.getName());
- /**
- * The config file to read
- */
- private File file;
- /**
- * The name of the config to read, when overriding the file.
- */
- private String filename;
- /**
- * The last modified date of the config file
- */
- private long curdate;
- /**
- * Should we stop scanning for config file updates?
- */
- private boolean closed;
- static boolean closeAll = false;
- /**
- * Have we started scanning for config file updates?
- */
- private boolean initialized;
- /**
- * The name of the background thread monitoring the file.
- */
- private static String monitorThreadName = "Configuration Monitor";
- /**
- * How we keep track of registered Configurables.
- */
- private ConfigurationRegistry configurationRegistry = new ConfigurationRegistry();
- /**
- * included file.
- */
- private Configuration subConfig = null;
- private String subFile = null;
-
- public void reConfigure() {
- configurationRegistry.reConfigureAll(logger);
- }
-
- /**
- * Create an instance using the default configuration file
- * "configfile.properties" from the class path
- */
- public Configuration() {
- // logger.fine("Configuration()");
- }
- /**
- * Create an instance using a configuration file
- * "FILENAME.properties" from the class path
- */
- public Configuration(String filename) {
- // logger.fine("Configuration(" + filename + ")");
- this.filename = filename;
- }
- /**
- * Create an instance using a specific configuration file
- */
- public Configuration(File file) {
- this.file = file;
- // logger.fine("Configuration(File)");
- }
-
- /**
- * Change the configuration file to use
- */
- public void setConfig(File file) {
- this.file = file;
- curdate = 0;
- interrupt();
- }
- /**
- * Reset the interval used for rechecking the file.
- * @param interval
- */
- public synchronized void setInterval(int interval) {
- this.interval = interval;
- }
- /**
- * Reset the default interval used for rechecking the file.
- * @param interval
- */
- public synchronized void setDefaultInterval(int interval) {
- this.INTERVAL = interval;
- }
- /**
- * Reset the minimum age the file must be before being reread.
- * This is used to prevent reading the file while it is being written, say by vi.
- * @param minage
- */
- public synchronized void setMinage(int minage) {
- this.minage = minage;
- }
- /**
- * Stop checking for config changes
- */
- public void close() {
- checkinit();
- closed = true;
- if (Thread.currentThread() == this) {
- return;
- }
- interrupt();
- try {
- join();
- } catch (Exception e) {
- }
- }
- /**
- * Check the config file to see if it has changed
- */
- private synchronized void check() {
- long now = System.currentTimeMillis();
- if (logger.isLoggable(Level.FINE)) logger.fine("check(): now=" + Long.toString(now));
- try {
- long ndate = file.lastModified();
- if (logger.isLoggable(Level.FINE)) logger.fine("file=" + file + ", ndate=" + Long.toString(ndate) + ", curdate=" + Long.toString(curdate,10));
- if (ndate == curdate || (now < ndate + minage && curdate != 0)) {
- return;
- }
- if (logger.isLoggable(Level.FINE)) logger.fine("reloading file=" + file);
- FileInputStream in = new FileInputStream(file);
- config = new PropertyResourceBundle(in);
- in.close();
- try {
- String inc = config.getString("include");
- if ((inc != null) && !inc.equals("")) {
- subFile = inc;
- subConfig = new Configuration(subFile);
- subConfig.registerConfigurable(this);
- }
- } catch (Exception e) {
- }
-
- curdate = ndate;
- configurationRegistry.reConfigureAll(logger);
- // logger.info("CNFG0006: Configuration '" + file + "' reloaded");
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0004: Configuration file '" + file + "' inaccessible", e);
- }
- }
- /**
- * Make sure we're initialized and read the config file
- * if necessary
- */
- public void checkinit() {
- // System.out.println("checkinit()");
- if (initialized) {
- return;
- }
- initialized = true;
- try {
- if (file == null) {
- if (filename == null)
- filename = System.getProperty("configfile", "configfile");
- // logger.info("DAIS0073 0.8.73 >>> filename=" + filename);
- if (filename.charAt(0) == '/') {
- // logger.info("DAIS0073 0.8.73 filename has leading slash: " + filename);
- file = new File(filename);
- } else {
- URI uri = getClass().getClassLoader().getResource(filename + ".properties").toURI();
- // logger.info("DAIS0073 0.8.73 uri=" + uri.toString());
- file = new File(uri);
- }
- }
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0003: Cannot find configuration file '" + filename + "'", e);
- }
- check();
- setDaemon(true);
- setName(monitorThreadName);
- start();
- }
- /**
- * Check the config file to see if it has changed
- */
- public void run() {
- if (logger.isLoggable(Level.FINE)) logger.fine("Configuration::run()");
- while (!closed && !closeAll) {
- try {
- if (logger.isLoggable(Level.FINE)) logger.fine("sleeping " + Integer.toString(interval) + ", id=" + Long.toString(Thread.currentThread().getId()) + ", file=" + filename);
- Thread.sleep(interval);
- } catch (Exception e) {
- }
- if (logger.isLoggable(Level.FINE)) {
- Thread currentThread = Thread.currentThread();
- logger.fine("checking id=" + Long.toString((currentThread != null) ? currentThread.getId() : -1) + ", file=" + filename);
- }
- check();
- }
- }
-
- public static void wakeAllThreads() {
- try {
- Thread[] threads = ThreadUtils.getNamedThreads( monitorThreadName );
- for ( Thread thread : threads )
- thread.interrupt();
- } catch (Exception e) {
- }
- }
-
- public static void closeAllThreads() {
- closeAll = true;
- wakeAllThreads();
- }
-
- /**
- * Forward this Configurable to the ConfigurationRegistry to be registered.
- */
- public void registerConfigurable(Configurable element) {
- configurationRegistry.registerConfigurable(element);
- }
- /**
- * Forward this Configurable to the ConfigurationRegistry to be deRegistered.
- */
- public void deRegisterConfigurable(Configurable element) {
- configurationRegistry.deRegisterConfigurable(element);
- }
-
- /**
- * Get a configuration parameter as a String.
- * If undefined, return null and log an error.
- * @return String
- */
- public String getString(String name) {
- return getString(name, null, true);
- }
- /**
- * Get a configuration parameter as a String.
- * If undefined, return the specified default value.
- * @return String
- */
- public String getString(String name, String deflt) {
- return getString(name, deflt, false);
- }
-
- public static String trimQuotes(String str) {
- if (str == null) return null;
- str = str.trim();
- int len = str.length();
- if (len < 2) return str;
- char startChar = str.charAt(0);
- char endChar = str.charAt(len-1);
- boolean startDoubleQuote = startChar == '"';
- boolean startSingleQuote = startChar == '\'';
- boolean endDoubleQuote = endChar == '"';
- boolean endSingleQuote = endChar == '\'';
- if ((startDoubleQuote && endDoubleQuote) ||
- (startSingleQuote && endSingleQuote)) {
- return str.substring(1, len-1);
- } else {
- return str;
- }
- }
-
- /**
- * Get a configuration parameter as a String.
- * If undefined, return the specified default value.
- * If complaining, log an error.
- * @return String
- */
- public String getString(String name, String deflt, boolean complain) {
- checkinit();
- try {
- return trimQuotes(config.getString(name));
- } catch (Exception e) {
- if (subConfig != null) {
- try {
- return subConfig.getString(name, deflt, complain);
- } catch (Exception e2) {
- }
- }
- if (complain)
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0001: '" + filename + "': Configuration property " + name + " must be defined", e);
- return deflt;
- }
- }
-
- /**
- * Get a configuration parameter as a String encoded using URL % escapes.
- * If undefined, return null and log an error.
- * @return String
- */
- public String getDecodedString(String name) {
- return getDecodedString(name, null, true);
- }
- /**
- * Get a configuration parameter as a String encoded using URL % escapes.
- * If undefined, return the specified default value.
- * @return String
- */
- public String getDecodedString(String name, String deflt) {
- return getDecodedString(name, deflt, false);
- }
- /**
- * Get a configuration parameter as a String encoded using URL % escapes.
- * If undefined, return the specified default value.
- * If complaining, log an error.
- * @return String
- */
- public String getDecodedString(String name, String deflt, boolean complain) {
- checkinit();
- try {
- return URLDecoder.decode(config.getString(name), "UTF-8");
- } catch (UnsupportedEncodingException e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0007: UTF-8 is not recognized as a character set encoding", e);
- return deflt;
- } catch (Exception e) {
- if (complain)
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0001: '" + filename + "': Configuration property " + name + " must be defined", e);
- return deflt;
- }
- }
-
- /**
- * Get a configuration parameter as a String[].
- * If undefined, return null and log an error.
- * @return String[]
- */
- public String[] getStrings(String name) {
- return getStrings(name, null, "[ \t,]+", true);
- }
- /**
- * Get a configuration parameter as a String[].
- * If undefined, return the specified default.
- * @return String[]
- */
- public String[] getStrings(String name, String[] deflt) {
- return getStrings(name, deflt, "[ \t,]+", false);
- }
- /**
- * Get a configuration parameter as a String[].
- * If undefined, return the specified default
- * @return String[]
- */
- public String[] getStrings(String name, String[] deflt, String pattern, boolean complain) {
- name = getString(name, null, complain);
- if (name == null) {
- return deflt;
- }
- return name.trim().split(pattern);
- }
-
- /**
- * Get a configuration parameter as a String[], each String encoded using URL % escapes.
- * If undefined, return null and log an error.
- * @return String[]
- */
- public String[] getDecodedStrings(String name) {
- return getDecodedStrings(name, null, "[ \t,]+", true);
- }
- /**
- * Get a configuration parameter as a String[], each String encoded using URL % escapes.
- * If undefined, return the specified default.
- * @return String[]
- */
- public String[] getDecodedStrings(String name, String[] deflt) {
- return getDecodedStrings(name, deflt, "[ \t,]+", false);
- }
- /**
- * Get a configuration parameter as a String[], each String encoded using URL % escapes.
- * If undefined, return the specified default.
- * @return String[]
- */
- public String[] getDecodedStrings(String name, String[] deflt, String pattern) {
- return getDecodedStrings(name, deflt, pattern, false);
- }
- /**
- * Get a configuration parameter as a String[], each String encoded using URL % escapes.
- * If undefined, return the specified default.
- * @return String[]
- */
- public String[] getDecodedStrings(String name, String[] deflt, String pattern, boolean complain) {
- name = getString(name, null, complain);
- if (name == null) {
- return deflt;
- }
- String[] strs = (name.trim().split(pattern));
- try {
- for (int i = 0; i < strs.length; i++) {
- strs[i] = URLDecoder.decode(strs[i], "UTF-8");
- }
- } catch (UnsupportedEncodingException e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0007: UTF-8 is not recognized as a character set encoding", e);
- }
- return strs;
- }
-
- /**
- * Get a configuration parameter as a long. If undefined or non-numeric, return -1 and log an error.
- */
- public long getLong(String name) {
- return getLong(name, -1L);
- }
- /**
- * Get a configuration parameter as a long. If undefined, return the specified default
- * If non-numeric, return the specified default and log an error.
- */
- public long getLong(String name, long deflt) {
- String value = getString(name, null);
- if (value == null) {
- return deflt;
- }
- try {
- return Long.parseLong(value.trim());
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0002: '" + filename + "': Configuration property " + name + " must be numeric", e);
- return deflt;
- }
- }
-
- /**
- * Get a configuration parameter as an int. If undefined or non-numeric, return -1 and log an error.
- */
- public int getInt(String name) {
- return getInt(name, -1);
- }
- /**
- * Get a configuration parameter as an int. If undefined, return the specified default
- * If non-numeric, return the specified default and log an error.
- */
- public int getInt(String name, int deflt) {
- String value = getString(name, null);
- if (value == null) {
- return deflt;
- }
- try {
- return Integer.parseInt(value.trim());
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0002: '" + filename + "': Configuration property " + name + " must be numeric", e);
- return deflt;
- }
- }
-
- /**
- * Get a configuration parameter as an boolean. If undefined or non-numeric, return false and log an error.
- */
- public boolean getBoolean(String name) {
- return getBoolean(name, false);
- }
- /**
- * Get a configuration parameter as an boolean. If undefined, return the specified default
- * If non-numeric, return the specified default and log an error.
- */
- public boolean getBoolean(String name, boolean deflt) {
- String value = getString(name, null);
- if (value == null) {
- return deflt;
- }
- try {
- return Boolean.parseBoolean(value.trim());
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0002: '" + filename + "': Configuration property " + name + " must be true/false", e);
- return deflt;
- }
- }
-
- /**
- * Get a configuration parameter as a double. If undefined or non-numeric, return -1 and log an error.
- */
- public double getDouble(String name) {
- return getDouble(name, -1);
- }
- /**
- * Get a configuration parameter as a double. If undefined, return the specified default
- * If non-numeric, return the specified default and log an error.
- */
- public double getDouble(String name, double deflt) {
- String value = getString(name, null);
- if (value == null) {
- return deflt;
- }
- try {
- return Double.parseDouble(value);
- } catch (Exception e) {
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0002: '" + filename + "': Configuration property " + name + " must be numeric", e);
- return deflt;
- }
- }
-
- public Enumeration getKeys() {
- checkinit();
- return (config != null) ? config.getKeys() : null;
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/ConfigurationRegistry.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/ConfigurationRegistry.java
deleted file mode 100644
index f108ced..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/ConfigurationRegistry.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.config;
-
-import java.util.logging.*;
-import java.lang.ref.*;
-
-/**
- * Class to register and notify other objects when needed.
- * Those other objects must implement Configurable.
- */
-
-public class ConfigurationRegistry {
- public ConfigurationRegistry() { }
-
- /**
- * The set of registered configurables
- */
- private WeakReference<Configurable>[] configurables = new WeakReference[0];
-
- /**
- * Request callback whenever the configuration data changes
- */
- public synchronized void registerConfigurable(Configurable element) {
- // System.out.println("adding " + element.getClass().getName() + ", length=" + Integer.toString(configurables.length));
- for (int i = 0; i < configurables.length; i++) {
- if (configurables[i].get() == element) {
- return;
- }
- }
- WeakReference<Configurable>[] nconfigurables = new WeakReference[configurables.length + 1];
- System.arraycopy(configurables, 0, nconfigurables, 0, configurables.length);
- nconfigurables[configurables.length] = new WeakReference<Configurable>(element);
- configurables = nconfigurables;
- element.reConfigure();
- }
-
- /**
- * Cancel request for callbacks when configuration changes
- */
- public synchronized void deRegisterConfigurable(Configurable element) {
- // System.out.println("removing " + element.getClass().getName() + ", length=" + Integer.toString(configurables.length));
- for (int i = 0; i < configurables.length; i++) {
- if (configurables[i].get() == element) {
- WeakReference<Configurable>[] nconfigurables = new WeakReference[configurables.length - 1];
- if (i > 0) {
- System.arraycopy(configurables, 0, nconfigurables, 0, i);
- }
- if (i < nconfigurables.length) {
- System.arraycopy(configurables, i + 1, nconfigurables, i, nconfigurables.length - i);
- }
- configurables = nconfigurables;
- return;
- }
- }
- }
-
- /**
- * Notify all of the Configurables that they need to reConfigure.
- */
- public void reConfigureAll() {
- reConfigureAll(Logger.getLogger(ConfigurationRegistry.class.getName()));
- }
-
- /**
- * Notify all of the Configurables that they need to reConfigure.
- */
- public void reConfigureAll(Logger logger) {
- // System.out.println("reConfigureAll(), length=" + Integer.toString(configurables.length));
- for (int i = 0; i < configurables.length; i++) {
- try {
- // System.out.println("reConfigureAll(), i=" + Integer.toString(i));
- WeakReference<Configurable> wc = configurables[i];
- Configurable c = (wc != null) ? wc.get() : null;
- if (c != null)
- c.reConfigure();
- } catch (Exception e) {
- WeakReference<Configurable> wc = configurables[i];
- Configurable c = (wc != null) ? wc.get() : null;
- logger.log(Level.SEVERE, "DAIS0048 Unrecoverable configuration error CNFG0005: Problem while invoking reConfigure for: " +
- ((wc == null) ? "null" : (c == null) ? "null/null" : c.getClass().getName()) + ": " +
- e.getMessage(), e);
- }
- }
- }
-
- /**
- * Return the number of configurables that are registered.
- */
- public int getCount() {
- return configurables.length;
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/EncryptedConfiguration.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/EncryptedConfiguration.java
deleted file mode 100644
index 3da0f42..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/EncryptedConfiguration.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.config;
-
-import java.util.logging.*;
-// import java.lang.ref.*;
-import org.onap.dcae.cdf.util.common.*;
-import gnu.getopt.Getopt;
-import java.security.*;
-import javax.crypto.*;
-import javax.crypto.spec.SecretKeySpec;
-
-/**
- * Class to manage encrypted configuration values.
- */
-
-public class EncryptedConfiguration {
- /**
- * Our secret key
- */
- private String encryptionKey;
-
- /**
- * Where to log when things go wrong
- */
- private Logger logger;
-
- public EncryptedConfiguration(String key, Logger logger) {
- encryptionKey = key.trim();
- this.logger = logger;
- }
-
- /**
- * Retrieve an encrypted string from the given configuration.
- * The name will have ".x" appended to it.
- * Decoded from hex, it will be "method:hexsalt:hexvalue".
- * The format of the value will be in hex.
- * Method will be "r" to begin with, for "rc4".
- */
- public String getString(Configuration config, String name, String deflt, boolean complain) throws Exception {
- return getString(config, name, deflt, complain, encryptionKey);
- }
-
- /**
- * Retrieve an encrypted string from the given configuration.
- * The name will have ".x" appended to it.
- * Decoded from hex, it will be "method:hexsalt:hexvalue".
- * The format of the value will be in hex.
- * Method will be "r" to begin with, for "rc4".
- */
- public String getString(Configuration config, String name, String deflt, boolean complain, String key) throws Exception {
- String str = config.getString(name + ".x", null, complain);
- if (str == null) {
- return deflt;
- }
- return decrypt(str, key);
- }
-
- /**
- * Decrypt a string in 'method:hexsalt:hexvalue' format.
- */
- public static String decrypt(String triple, String key) throws Exception {
- String[] strParts = triple.trim().split(":");
- if (strParts.length != 3) throw new Exception("Encrypted value must look like 'x:y:z'");
- return decrypt(strParts[0], Convert.stringFromHex(strParts[1]), key, Convert.bytesFromHex(strParts[2]));
- }
-
- /**
- * Decrypt a string 'method:hexsalt:hexvalue' format.
- */
- public static String decrypt(String method, String salt, String key, byte[] bvalue) throws Exception {
- /* if (false) {
- System.out.println("method length=" + method.length()); System.out.println(AsHex.asHex(method));
- System.out.println("salt length=" + salt.length()); System.out.println(AsHex.asHex(salt));
- System.out.println("key length=" + key.length()); System.out.println(AsHex.asHex(key));
- System.out.println("bvalue length=" + bvalue.length); System.out.println(AsHex.asHex(bvalue));
- } */
- byte[] secretKey = runDigest(salt + "." + key);
-
- SecretKeySpec skeySpec = new SecretKeySpec(secretKey, method);
-
- Cipher cipher = Cipher.getInstance(method); // "AES"
- cipher.init(Cipher.DECRYPT_MODE, skeySpec);
-
- byte[] decrypted = cipher.doFinal(bvalue);
- return new String(decrypted);
- }
-
- /**
- * Encrypt a string using the given method, salt and key.
- */
- public static byte[] encrypt(String method, String salt, String key, String value) throws Exception {
- byte[] bvalue = value.getBytes();
- byte[] secretKey = runDigest(salt + "." + key);
-
- SecretKeySpec skeySpec = new SecretKeySpec(secretKey, method);
-
- Cipher cipher = Cipher.getInstance(method); // "AES"
- cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
-
- byte[] encrypted = cipher.doFinal(bvalue);
- return encrypted;
- }
-
- /**
- * Prepare a secret key by running a digest on it.
- */
- private static byte[] runDigest(String text) throws Exception {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.reset();
- md.update(text.getBytes(), 0, text.length());
- return md.digest();
- }
-
- /**
- * Encrypt a string using the given method, salt and key, and return it as a hex-formated triple.
- */
- public static String encryptToTriple(String method, String salt, String key, String value) throws Exception {
- StringBuilder sb = new StringBuilder(method);
- sb.append(':').append(Convert.toHexString(salt))
- .append(':').append(Convert.toHexString(encrypt(method, salt, key, value)));
- return sb.toString();
- }
-
- /**
- * Create a value that can be used as a salt.
- */
- public static String generateSalt() {
- return Long.toString(System.currentTimeMillis() % 1000) + Pid.getPidStr();
- }
-
- public static void usage() {
- usage(null);
- }
-
- public static void usage(String msg) {
- if (msg != null) System.out.println(msg);
- System.out.println("Usage: java EncryptedConfiguration -D triple -k key\n" +
- "java EncryptedConfiguration -d string -m method [-s salt | -S] -k key\n" +
- "java EncryptedConfiguration -e string -m method [-s salt | -S] -k key\n" +
- "-D\tdecrypt x:y:z triple\n" +
- "-d\tdecrypt string (in hex)\n" +
- "-e\tencrypt string\n" +
- "-S\tgenerate a salt\n"
- );
- System.exit(1);
- }
-
- public static void main(String args[]) throws Exception {
- Getopt g = new Getopt( "EncryptedConfiguration", args, "s:Sk:m:e:d:D:?" );
-
- int c, verbosity = 0;
- String salt = null, key = null, method = null, encStr = null, decStr = null, triple = null;
- boolean genSalt = false;
-
- while ((c = g.getopt()) != -1) {
- switch (c) {
- case 's': salt = g.getOptarg(); break;
- case 'S': genSalt = true; break;
- case 'k': key = g.getOptarg(); break;
- case 'm': method = g.getOptarg(); break;
- case 'e': encStr = g.getOptarg(); break;
- case 'd': decStr = g.getOptarg(); break;
- case 'D': triple = g.getOptarg(); break;
- case '?': usage(); break;
- }
- }
-
- if (triple == null) {
- if ((salt == null) && !genSalt) usage("one of -s or -S must be specified");
- if ((salt != null) && genSalt) usage("only one of -s or -S must be specified");
- if (key == null) usage("-k must be specified");
- if (method == null) usage("-m must be specified");
- if ((encStr == null) && (decStr == null)) usage("one of -d or -e must be specified");
- if ((encStr != null) && (decStr != null)) usage("only one of -d or -e may be specified");
- if (genSalt) salt = generateSalt();
- if (encStr != null)
- System.out.println(encryptToTriple(method, salt, key, encStr));
- if (decStr != null)
- System.out.println(decrypt(method, salt, key, Convert.bytesFromHex(decStr)));
- } else {
- if (key == null) usage("-k not specified");
- System.out.println(decrypt(triple, key));
- }
-
- // http://forums.sun.com/thread.jspa?threadID=5290983
- // try {
- // String message = "Strong Versus Unlimited Strength Cryptography";
- // SecretKeySpec skeySpec = new SecretKeySpec("0123456789ABCDEF".getBytes(), "AES"); //AES-128
-
- // Cipher cipher = Cipher.getInstance("AES"); // "AES/ECB/NoPadding"
- // cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
-
- // byte[] encrypted = cipher.doFinal(message.getBytes());
- // System.out.println("encrypted string: " + encrypted); //storing into MySQL DB
- // System.out.println("in hex: '" + Convert.toHexString(encrypted) + "'");
-
- // cipher.init(Cipher.DECRYPT_MODE, skeySpec);
- // byte[] original = cipher.doFinal(encrypted);
- // String originalString = new String(original);
- // System.out.println("Original string: " + originalString);
- // } catch (Exception e) {
- // System.err.println("Exception caught: " + e.toString());
- // }
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/PropValue.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/PropValue.java
deleted file mode 100644
index efeabc5..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/config/PropValue.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.config;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.BufferedReader;
-import java.io.PrintStream;
-import java.io.IOException;
-import java.util.logging.Logger;
-import org.onap.dcae.cdf.util.config.Configuration;
-import org.onap.dcae.cdf.util.config.EncryptedConfiguration;
-import gnu.getopt.Getopt;
-
-public class PropValue {
- private EncryptedConfiguration encryptedConfiguration;
- private String encryptionKey;
-
- public PropValue(Configuration globalConfig, Logger logger) {
- encryptionKey = globalConfig.getString(getEncryptionKeyProperty());
- encryptedConfiguration = new EncryptedConfiguration(encryptionKey, logger);
- }
-
- public String getEncryptedString(Configuration config, String name, String deflt, boolean complain) throws Exception {
- return encryptedConfiguration.getString(config, name, deflt, complain);
- }
-
- public String generateEncryptedProperty(String method, String salt, String value) throws Exception {
- return generateEncryptedProperty(method, salt, value, this);
- }
-
- public String decryptTriple(String triple) {
- return decryptTriple(triple, this);
- }
-
- public static void printEncryptedProperty(String method, String name, String salt, String value, String globalPropFile) {
- try {
- if (name != null) System.out.print(name + ".x=");
- if (globalPropFile == null) globalPropFile = getGlobalPropFile();
- if (globalPropFile == null) throw new NullPointerException("globalPropFile not set");
- System.out.println(generateEncryptedProperty(method, salt, value, globalPropFile));
- } catch (Exception e) {
- System.err.println("Cannot encrypt '" + value + "', method '" + method + "' for property '" + name + "': "+ e.toString());
- }
- }
-
- public static String generateEncryptedProperty(String method, String salt, String value, String globalPropFile) throws Exception {
- Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
- if (globalPropFile == null) globalPropFile = getGlobalPropFile();
- if (globalPropFile == null) throw new NullPointerException("globalPropFile not set");
- PropValue propValue = new PropValue(new Configuration(globalPropFile), logger);
- return generateEncryptedProperty(method, salt, value, propValue);
- }
-
- public static String generateEncryptedProperty(String method, String salt, String value, PropValue propValue) throws Exception {
- if (salt == null) salt = EncryptedConfiguration.generateSalt();
- return EncryptedConfiguration.encryptToTriple(method, salt, propValue.encryptionKey, value);
- }
-
- public static void extractProperty(String f, String name, boolean encrypted) {
- extractProperty(f, name, encrypted, null);
- }
-
- public static void extractProperty(String f, String name, boolean encrypted, String globalPropFile) {
- Configuration config = new Configuration(f);
- Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
- if (globalPropFile == null) globalPropFile = getGlobalPropFile();
- if (globalPropFile == null) throw new NullPointerException("globalPropFile not set");
- PropValue propValue = new PropValue(new Configuration(globalPropFile), logger);
- String val = "";
- try {
- if (encrypted)
- val = propValue.getEncryptedString(config, name, "", true);
- else
- val = config.getString(name);
- System.out.println(val);
- } catch (Exception e) {
- System.err.println("Cannot extract '" + name + "' from '" + config + "': " + e.toString());
- }
- }
-
- public static void usage() {
- usage(null);
- }
-
- // public static String decryptTriple(String triple) {
- // return decryptTriple(triple, null);
- // }
-
- public static String decryptTriple(String triple, String globalPropFile) {
- Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
- if (globalPropFile == null) globalPropFile = getGlobalPropFile();
- if (globalPropFile == null) throw new NullPointerException("globalPropFile not set");
- PropValue propValue = new PropValue(new Configuration(globalPropFile), logger);
- return decryptTriple(triple, propValue);
- }
-
- public static String decryptTriple(String triple, PropValue propValue) {
- String ret = null;
- try {
- ret = EncryptedConfiguration.decrypt(triple, propValue.encryptionKey);
- } catch (Exception e) {
- System.err.println("Cannot decrypt '" + triple + "': " + e.toString());
- }
- return ret;
- }
-
- public static void encryptInput(InputStream in, PrintStream out) throws Exception {
- encryptInput(null, in, out);
- }
- public static void encryptInput() throws Exception {
- encryptInput(null, System.in, System.out);
- }
-
- private static void printEncryptedValue(Matcher m, PropValue propValue, PrintStream sysout) {
- String method = m.group(1);
- String name = m.group(2);
- String value = m.group(3);
- try {
- sysout.println(name + ".x=" +
- EncryptedConfiguration.encryptToTriple(method,
- EncryptedConfiguration.generateSalt(),
- propValue.encryptionKey, value));
- } catch (Exception e) {
- System.err.println("Error: Cannot encrypt '" + value + "', method '" + method + "' for property '" + name + "': " + e.toString());
- }
- }
-
- public static void encryptInput(String globalPropFile, InputStream sysin, PrintStream sysout) throws Exception {
- String s;
-
- Pattern pDquote = Pattern.compile("^ENCRYPTME[.]([A-Z]*)[.]([^= \t]*)[ \t]*=[ \t]*\"([^\"]*)\"[ \t]*$");
- Pattern pSquote = Pattern.compile("^ENCRYPTME[.]([A-Z]*)[.]([^= \t]*)[ \t]*=[ \t]*'([^']*)'[ \t]*$");
- Pattern pNoWhite = Pattern.compile("^ENCRYPTME[.]([A-Z]*)[.]([^= \t]*)[ \t]*=[ \t]*([^ \t'\"]+)[ \t]*$");
-// Pattern pEncryptMe = Pattern.compile("^ENCRYPTME[.]([A-Z]*)[.]([^= \t]*)[ \t]*=");
-
- Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
- if (globalPropFile == null) globalPropFile = getGlobalPropFile();
- if (globalPropFile == null) throw new NullPointerException("globalPropFile not set");
- PropValue propValue = new PropValue(new Configuration(globalPropFile), logger);
-
- BufferedReader in = new BufferedReader(new InputStreamReader(sysin));
-
- try {
- while ((s = in.readLine()) != null) {
- // System.out.println("looking at '" + s + "'");
- Matcher mDquote = pDquote.matcher(s);
- Matcher mSquote = pSquote.matcher(s);
- Matcher mNoWhite = pNoWhite.matcher(s);
-// Matcher mEncryptMe = pNoWhite.matcher(s);
- if (mDquote.matches()) {
- printEncryptedValue(mDquote, propValue, sysout);
- } else if (mSquote.matches()) {
- printEncryptedValue(mSquote, propValue, sysout);
- } else if (mNoWhite.matches()) {
- printEncryptedValue(mNoWhite, propValue, sysout);
- } else if (s.startsWith("ENCRYPTME")) {
- throw new Exception("Bad value to encrypt: '" + s + "'");
- } else {
- // System.out.println("printing the line: '" + s + "'");
- sysout.println(s);
- }
- }
- } catch (IOException e) {
- System.err.println("Error: Cannot read from stdin: " + e.toString());
- } catch (Exception e) {
- throw e;
- }
- }
-
- public static void usage(String msg) {
- if (msg != null) System.err.println(msg);
- System.err.println("Usage: java PropValue [-x] -n property -f property-file");
- System.err.println("\tExtract the named value from the given property-file (or full pathname)");
- System.err.println("Usage: java PropValue -e method [-n property] [-s salt] -v value");
- System.err.println("\tEncrypt the given property with the given name and value");
- System.err.println("Usage: java PropValue -E");
- System.err.println("\tEncrypt all lines that look like ENCRYPTME.METHOD.name=value");
- System.err.println("Usage: java PropValue -u value");
- System.err.println("\tDecrypt the given value, expressed as a triple METHOD:HEXSALT:HEXVAL");
- System.exit(1);
- }
-
- public static void setGlobalPropFile(String g) { sGlobalPropFile = g; }
- public static String getGlobalPropFile() { return sGlobalPropFile; }
- private static String sGlobalPropFile = null;
-
- public static void setEncryptionKeyProperty(String e) { encryptionKeyProperty = e; }
- public static String getEncryptionKeyProperty() { return encryptionKeyProperty; }
- private static String encryptionKeyProperty = "Global_Title";
-
- public static void main(String args[]) throws Exception {
- Getopt g = new Getopt( "PropValue", args, "e:Ef:G:n:s:u:v:x" );
- String propfile = null, name = null, method = null, value = null, unencrypt = null;
- String globalPropFile = getGlobalPropFile();
- boolean useDecryption = false, encryptStdin = false;
- String salt = null;
- int c;
-
- while ((c = g.getopt()) != -1) {
- switch (c) {
- case 'e': method = g.getOptarg(); break;
- case 'E': encryptStdin = true; break;
- case 'f': propfile = g.getOptarg(); break;
- case 'G': globalPropFile = g.getOptarg(); break;
- case 'n': name = g.getOptarg(); break;
- case 's': salt = g.getOptarg(); break;
- case 'u': unencrypt = g.getOptarg(); break;
- case 'v': value = g.getOptarg(); break;
- case 'x': useDecryption = true; break;
- case '?': usage(); break;
- }
- }
- if (encryptStdin) {
- if (name != null || propfile != null || method != null || value != null) usage("cannot use -E with other options");
- encryptInput(System.in, System.out);
- } else if (unencrypt == null) {
- if (method != null) {
- if (value == null) usage("-v required");
- printEncryptedProperty(method, name, salt, value, globalPropFile);
- } else {
- if (name == null) usage("-n is required");
- if (propfile == null) usage("-f is required");
- extractProperty(propfile, name, useDecryption, globalPropFile);
- }
- } else {
- System.out.println(decryptTriple(unencrypt, globalPropFile));
- }
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/.gitignore b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/.gitignore
deleted file mode 100644
index 6b468b6..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.class
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/TaskThread.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/TaskThread.java
deleted file mode 100644
index 97d1520..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/TaskThread.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.threads;
-
-/**
- * A thread with a queue of runnable tasks to execute in the
- * thread
- */
-public class TaskThread extends Thread {
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread() {
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(Runnable target) {
- super(target);
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(ThreadGroup group, Runnable target) {
- super(group, target);
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(String name) {
- super(name);
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(ThreadGroup group, String name) {
- super(group, name);
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(Runnable target, String name) {
- super(target, name);
- }
- /**
- * Allocates a new TaskThread object.
- */
- public TaskThread(ThreadGroup group, Runnable target, String name) {
- super(group, target, name);
- }
- /**
- * A queued request to be run in the TaskThread
- */
- private static class Task {
- public Task next;
- public Runnable target;
- public Task(Runnable target) {
- this.target = target;
- }
- }
- private Task head;
- private Task tail;
- protected boolean closed;
- /**
- * Queue up a task to be executed by this thread.
- */
- protected synchronized void queueRequest(Runnable r) {
- Task t = new Task(r);
- if (head == null) {
- head = t;
- wakeup();
- } else {
- tail.next = t;
- }
- tail = t;
- }
- /**
- * Mark as closed and wake up.
- */
- protected synchronized void markClosed() {
- if (!closed) {
- closed = true;
- wakeup();
- }
- }
- /**
- * Wait for the next queued request. If closed, return
- * null. Relies on the default implementation of wakeup.
- */
- protected synchronized Runnable waitNextRequest() {
- Task t;
- while ((t = head) == null && !closed) {
- try {
- wait();
- } catch (Exception e) {
- }
- }
- head = t.next;
- if (head == null) {
- tail = null;
- }
- return t.target;
- }
- /**
- * Get the next queued request or null if none
- */
- protected synchronized Runnable nextRequest() {
- Task t = head;
- if (t == null) {
- return null;
- }
- head = t.next;
- if (head == null) {
- tail = null;
- }
- return t.target;
- }
- /**
- * Wake up the thread to process tasks.
- * Implementation depends on what the thread
- * is waiting on. The default implementation
- * does a this.notify().
- */
- protected void wakeup() {
- notify();
- }
- /**
- * Process any pending requests then return
- */
- protected void processQueuedRequests() {
- Runnable r;
- while ((r = nextRequest()) != null) {
- r.run();
- }
- }
- /**
- * Check whether any tasks are pending
- */
- protected boolean areTasksPending() {
- return (head != null);
- }
- /**
- * Wait for and process pending requests until closed
- */
- protected void processRequestsForever() {
- Runnable r;
- while ((r = waitNextRequest()) != null) {
- r.run();
- }
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/ThreadUtils.java b/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/ThreadUtils.java
deleted file mode 100644
index 34afebe..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/main/java/org/onap/dcae/cdf/util/threads/ThreadUtils.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util.threads;
-
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Various utility functions dealing with threads
- */
-public class ThreadUtils {
- /**
- * Get a list of all threads.
- *
- * @return an array of threads
- */
- public static Thread[] getAllThreads() {
- ThreadGroup rootGroup = getRootGroup();
- int noThreads = rootGroup.activeCount(); // returns an estimated count of active threads
- Thread[] threads = new Thread[noThreads + 1];
- rootGroup.enumerate(threads);
-
- while ( rootGroup.enumerate( threads, true ) == threads.length ) { // iterate if we filled up the array
- threads = new Thread[ threads.length + noThreads ];
- }
- // remove null threads
- LinkedList<Thread> lthreads = new LinkedList<Thread>();
- for (Thread thread: threads)
- if (thread != null)
- lthreads.push(thread);
- return lthreads.toArray(new Thread[0]);
- }
-
- /**
- * Get a list of all threads with a given thread name.
- *
- * @param name the name to look for
- * @return an array of threads with that name
- */
- public static Thread[] getNamedThreads(final String name) {
- Thread[] allThreads = getAllThreads();
- LinkedList<Thread> lthreads = new LinkedList<Thread>();
- for (Thread thread: allThreads)
- if (thread.getName().equals(name))
- lthreads.push(thread);
-
- return lthreads.toArray(new Thread[0]);
- }
-
- /**
- * Get the ultimate root of the threads
- *
- * @return the root thread
- */
- public static ThreadGroup getRootGroup() {
- ThreadGroup rootGroup = Thread.currentThread( ).getThreadGroup( );
- ThreadGroup parentGroup;
- while ( ( parentGroup = rootGroup.getParent() ) != null ) {
- rootGroup = parentGroup;
- }
- return rootGroup;
- }
-
- public static void main(String args[]) throws Exception {
- System.out.println("==== get Root Threads ====");
- System.out.println("Root thread = " + getRootGroup().getName());
- System.out.println("==== get All Threads ====");
- Thread[] threads = getAllThreads();
- for (int i = 0; i < threads.length; i++)
- System.out.println("Thread No:" + i + " = " + threads[i].getName());
- System.out.println("==== getNamedThreads(main) ====");
- threads = getNamedThreads("main");
- for (int i = 0; i < threads.length; i++)
- System.out.println("Thread No:" + i + " = " + threads[i].getName());
- }
-}
diff --git a/cdf/src/cdf-prop-value/cdf-util/src/test/java/org/onap/dcae/cdf/util/AppTest.java b/cdf/src/cdf-prop-value/cdf-util/src/test/java/org/onap/dcae/cdf/util/AppTest.java
deleted file mode 100644
index 60467c9..0000000
--- a/cdf/src/cdf-prop-value/cdf-util/src/test/java/org/onap/dcae/cdf/util/AppTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-package org.onap.dcae.cdf.util;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Unit test for simple App.
- */
-public class AppTest
- extends TestCase
-{
- /**
- * Create the test case
- *
- * @param testName name of the test case
- */
- public AppTest( String testName )
- {
- super( testName );
- }
-
- /**
- * @return the suite of tests being tested
- */
- public static Test suite()
- {
- return new TestSuite( AppTest.class );
- }
-
- /**
- * Rigourous Test :-)
- */
- public void testApp()
- {
- assertTrue( true );
- }
-}
diff --git a/cdf/src/cdf-prop-value/makefile b/cdf/src/cdf-prop-value/makefile
deleted file mode 100644
index 194ad29..0000000
--- a/cdf/src/cdf-prop-value/makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-all:
-
-build:
- cd cdf-util/src/main/java && $(MAKE) build
- cd cdf-prop-value/src/main/java && $(MAKE) build
-
-javadocs:
- cd cdf-util/src/main/java && $(MAKE) javadocs
- cd cdf-prop-value/src/main/java && $(MAKE) javadocs
-
-clean:
- cd cdf-util/src/main/java && $(MAKE) clean
- cd cdf-prop-value/src/main/java && $(MAKE) clean
diff --git a/cdf/src/common/postinst b/cdf/src/common/postinst
deleted file mode 100755
index 875b535..0000000
--- a/cdf/src/common/postinst
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-exec 1> /tmp/cdf.out 2>&1
-set -x
-if [ -d /opt/app/postgresql-9.5.2 ]
-then export ONAP=false NOTONAP=true
-else export ONAP=true NOTONAP=false
-fi
-
-echo STARTING $0 $(date)
-umask 0
-echo STARTING $0 $(date) >> /tmp/pgaas.inst.report
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-id
-umask 022
-
-# randomize the the CDF package
-ranval=$(dd if=/dev/urandom count=1 ibs=8 2>/dev/null | od -x -w1000 | sed -e 's/^0000000 //' -e 's/ //g' -e 1q)
-CDFCFG=${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg
-rm -f ${CDFCFG}
-sed -e 's/${HOSTNAME}/'"$(hostname -f)"'/' -e 's/${RANDOM}/'"$ranval"'0/' < ${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg.tmpl > ${CDFCFG}
-chown postgres:postgres ${CDFCFG}
-
-echo ENDING $0 $(date)
-echo ENDING $0 $(date) >> /tmp/pgaas.inst.report
-if $NOTONAP
-then sed -n '/^STARTING/,/^ENDING/p' `dirname $0`/../../proc_out >> /tmp/pgaas.inst.report
-fi
diff --git a/cdf/src/makefile b/cdf/src/makefile
deleted file mode 100644
index faa08b9..0000000
--- a/cdf/src/makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-
-DEVBIN=../../bin
-PKG=cdf
-REPACKAGEDEBIANOPTS=
-
-INS= ../install
-INSSTG= $(INS)/stage
-INSCOM= $(INS)/common
-KEEP=
-
-all:
-
-clean-stage:
- rm -rf $(INSSTG)
-
-clean-common:
- rm -rf $(INSCOM)
-
-clean-ins: clean-stage clean-common
- rm -rf $(INS)
-
-clean: clean-ins
- rm -rf *~
- cd cdf-prop-value && $(MAKE) clean
-
-build: javadocs build-java
-
-build-java:
- cd cdf-prop-value && $(MAKE) build
-
-javadocs:
- cd cdf-prop-value && $(MAKE) javadocs
-
-stage: build clean-stage clean-common
- mkdir -p $(INS)
- find stage common ! -name makefile ! -name '*~' | cpio -pudmv $(INS)
- cp -p cdf-prop-value/cdf-prop-value/src/main/java/cdf-prop-value.jar $(INS)/stage/opt/app/cdf/lib/cdf-prop-value-1.1.0.jar
- cp -p cdf-prop-value/cdf-prop-value/src/main/java/cdf-prop-value.jar $(INS)/stage/opt/app/cdf/lib/cdf-prop-value.jar
- cp -p cdf-prop-value/cdf-util/src/main/java/cdf-util.jar $(INS)/stage/opt/app/cdf/lib/jars/cdf-util-1.1.0.jar
- cp -p cdf-prop-value/cdf-util/src/main/java/cdf-util.jar $(INS)/stage/opt/app/cdf/lib/jars/cdf-util.jar
- chmod a+x $(INSCOM)/*
-
-
-debian: stage
- sed 's/$${RELLONG}/'"$$MVN_VERSION_ONLY/" < repackage.json > $(INS)/repackage.json
- repackage -b debian $(REPACKAGEDEBIANOPTS) -d $(INS) -u -X "{appname}.{suffix},{appname}.{suffix}-{version}$$SNAPSHOT,{appname}.{suffix}-{version}$$SNAPSHOT-{datetime}" -y $(INS)/repackage.json
- @echo debian built
-
-upload-javadocs: javadocs
- cd cdf-prop-value && find cdf-*/src/main/java/javadoc -type f | while read f; do \
- curl -k --user "$${ONAP_NEXUS_USER}:$${ONAP_NEXUS_PASSWORD}" --upload-file "$$f" "$${ONAP_NEXUS_JAVADOC}/org.onap.dcae.storage.cdf/1.1.0/$$f"; \
- done
-
diff --git a/cdf/src/repackage.json b/cdf/src/repackage.json
deleted file mode 100644
index ce7a546..0000000
--- a/cdf/src/repackage.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "applicationName": "cdf",
- "debian": {
- "conflicts": [],
- "externalDependencies": [
- {
- "libgetopt-java": ">= 1.0.14"
- }
- ],
- "groupId": "org.onap.dcae.storage.pgaas",
- "replaces": []
- },
- "description": " PostgreSQL as a Service main scripts ",
- "directoryTreeTops": {
- "/opt": "/opt/app/cdf"
- },
- "docker": {
- "externalDependencies": [],
- "tag": "latest"
- },
- "executionGroup": "postgres",
- "executionUser": "postgres",
- "fileGroup": "postgres",
- "fileUser": "postgres",
- "groupId": "org.onap.dcae.storage.pgaas",
- "internalDependencies": [],
- "maintainer": "ONAP <dcae@lists.onap.org>",
- "version": "${RELLONG}"
-} \ No newline at end of file
diff --git a/cdf/src/stage/opt/app/cdf/bin/getpropvalue b/cdf/src/stage/opt/app/cdf/bin/getpropvalue
deleted file mode 100755
index 78a74b2..0000000
--- a/cdf/src/stage/opt/app/cdf/bin/getpropvalue
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-P=/opt/cdf
-CDF=/opt/app/cdf
-
-export PATH=/opt/java/jdk/jdk170/bin:$PATH
-export CLASSPATH=$CDF/lib/cdf-prop-value.jar:$CDF/lib/jars/cdf-util.jar
-if [ -f $CDF/lib/jars/gnu_getopt.jar ]
-then CLASSPATH=$CLASSPATH:$CDF/lib/jars/gnu_getopt.jar ]
-elif [ -f /usr/share/java/gnu-getopt.jar ]
-then CLASSPATH=$CLASSPATH:/usr/share/java/gnu-getopt.jar
-else echo "$0: Cannot find gnu-getopt.jar" 1>&2; exit 1
-fi
-
-PropValue=org.onap.dcae.cdf.CdfPropValue
-CfgFile=$CDF/lib/cdf.cfg
-
-java $PropValue -f $CfgFile "$@"
diff --git a/cdf/src/stage/opt/app/cdf/bin/setencryptedvalues b/cdf/src/stage/opt/app/cdf/bin/setencryptedvalues
deleted file mode 100755
index c60fbad..0000000
--- a/cdf/src/stage/opt/app/cdf/bin/setencryptedvalues
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-P=/opt/cdf
-CDF=/opt/app/cdf
-
-export PATH=/opt/java/jdk/jdk170/bin:$PATH
-export CLASSPATH=$CDF/lib/cdf-prop-value.jar:$CDF/lib/jars/cdf-util.jar
-if [ -f $CDF/lib/jars/gnu_getopt.jar ]
-then CLASSPATH=$CLASSPATH:$CDF/lib/jars/gnu_getopt.jar ]
-elif [ -f /usr/share/java/gnu-getopt.jar ]
-then CLASSPATH=$CLASSPATH:/usr/share/java/gnu-getopt.jar
-else echo "$0: Cannot find gnu-getopt.jar" 1>&2; exit 1
-fi
-
-PropValue=org.onap.dcae.cdf.CdfPropValue
-
-java $PropValue -E "$@"
diff --git a/cdf/src/stage/opt/app/cdf/lib/cdf.cfg.tmpl b/cdf/src/stage/opt/app/cdf/lib/cdf.cfg.tmpl
deleted file mode 100644
index 7292963..0000000
--- a/cdf/src/stage/opt/app/cdf/lib/cdf.cfg.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-####
-#### nothing should need to change below
-####
-Global_Title="This is the Common DCAE Framework 1.0 ${HOSTNAME} ${RANDOM}"
diff --git a/cdf/src/stage/opt/app/cdf/lib/jars/which_files b/cdf/src/stage/opt/app/cdf/lib/jars/which_files
deleted file mode 100644
index 47a7ba7..0000000
--- a/cdf/src/stage/opt/app/cdf/lib/jars/which_files
+++ /dev/null
@@ -1,3 +0,0 @@
-The following files were installed here:
-
-gnu_getopt.jar
diff --git a/makefile b/makefile
index f62ec41..ea85e1f 100644
--- a/makefile
+++ b/makefile
@@ -1,7 +1,7 @@
all:
-STAGEDIRS=cdf pgaas
+STAGEDIRS=
build:
@echo "================ make build ================"
@@ -46,6 +46,9 @@ install:
deploy:
@echo "================ make deploy ================"
+
+olddeploy:
+ @echo "================ make deploy ================"
rm -f $$HOME/.netrc ; \
REPO=$$MVN_NEXUSPROXY/content/sites/raw/$$MVN_PROJECT_GROUPID ; \
hostport=$$(echo $$REPO | cut -f3 -d /) ; \
diff --git a/pgaas/src/common/postinst b/pgaas/src/common/postinst
deleted file mode 100755
index f98f6f6..0000000
--- a/pgaas/src/common/postinst
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-exec 1> /tmp/pgaas.out 2>&1
-set -x
-if [ -d /opt/app/postgresql-9.5.2 ]
-then export ONAP=false NOTONAP=true
-else export ONAP=true NOTONAP=false
-fi
-id
-
-if $ONAP
-then INSTALL_ROOT=
-fi
-
-echo STARTING $0 $(date)
-umask 0
-echo STARTING $0 $(date) >> /tmp/pgaas.inst.report
-
-export CFGDIR=${INSTALL_ROOT}/opt/app/pgaas
-
-ret=0
-
-if $CFGDIR/etc/do-post-install-prep
-then
- if su postgres -c $CFGDIR/etc/do-post-install-config
- then
- if su postgres -c $CFGDIR/etc/do-post-install-tools
- then
- if $CFGDIR/etc/do-post-install-post
- then :
- else echo do-post-install-post failed; ret=1
- fi
- else echo do-post-install-tools failed; ret=1
- fi
- else echo do-post-install-config failed; ret=1
- fi
-else echo do-post-install-prep failed; ret=1
-fi
-
-echo ENDING $0 $(date)
-echo ENDING $0 $(date) >> /tmp/pgaas.inst.report
-if $NOTONAP
-then sed -n '/^STARTING/,/^ENDING/p' `dirname $0`/../../proc_out >> /tmp/pgaas.inst.report
-fi
-exit $ret
diff --git a/pgaas/src/makefile b/pgaas/src/makefile
deleted file mode 100644
index 56d7ed7..0000000
--- a/pgaas/src/makefile
+++ /dev/null
@@ -1,47 +0,0 @@
-
-DEVBIN=../../bin
-PKG=pgaas
-REPACKAGEDEBIANOPTS=
-
-INS= ../install
-INSSTG= $(INS)/stage
-INSCOM= $(INS)/common
-KEEP=
-
-all:
-
-clean-stage:
- rm -rf $(INSSTG)
-
-clean-common:
- rm -rf $(INSCOM)
-
-clean-ins: clean-stage clean-common
- rm -rf $(INS)
-
-clean-testlock:
- cd testlock && $(MAKE) clobber
-
-clean: clean-ins clean-testlock
- rm -rf *~ nohup.out
-
-testlock/testlock:
- cd testlock && $(MAKE) testlock
-
-build: testlock/testlock
-
-stage: build clean-stage clean-common
- mkdir -p $(INS)
- cd stage/opt/app/pgaas && $(MAKE) stage STAGEDIR=../../../../$(INSSTG)
- cd testlock && $(MAKE) stage STAGEDIR=../$(INSSTG) DISTPATH=opt/app/pgaas
- find common ! -name makefile ! -name '*~' | cpio -pudmv $(INS)
-
-
-debian: stage
- sed 's/$${RELLONG}/'"$$MVN_VERSION_ONLY/" < repackage.json > $(INS)/repackage.json
- repackage -b debian $(REPACKAGEDEBIANOPTS) -d $(INS) -u -X "{appname}.{suffix},{appname}.{suffix}-{version},{appname}.{suffix}-{version}-{datetime}" -y $(INS)/repackage.json
- @echo debian built
-
-upload-javadocs:
- @echo nothing to do here
-
diff --git a/pgaas/src/repackage.json b/pgaas/src/repackage.json
deleted file mode 100644
index 365769b..0000000
--- a/pgaas/src/repackage.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "applicationName": "pgaas",
- "debian": {
- "conflicts": [],
- "externalDependencies": [
- {
- "cdf": ">= ${RELLONG}"
- },
- {
- "postgresql": ">= 9.5"
- }
- ],
- "groupId": "org.onap.dcae.storage.pgaas",
- "replaces": []
- },
- "description": " PostgreSQL as a Service main scripts ",
- "directoryTreeTops": {
- "/opt": "/opt/app/pgaas"
- },
- "docker": {
- "externalDependencies": [],
- "tag": "latest"
- },
- "executionGroup": "root",
- "executionUser": "root",
- "fileGroup": "postgres",
- "fileUser": "postgres",
- "groupId": "org.onap.dcae.storage.pgaas",
- "internalDependencies": [],
- "maintainer": "ONAP <dcae@lists.onap.org>",
- "version": "${RELLONG}"
-} \ No newline at end of file
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/check_cluster b/pgaas/src/stage/opt/app/pgaas/bin/check_cluster
deleted file mode 100755
index ced7c0a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/check_cluster
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# NAME
-# check_cluster - check the state of the cluster
-#
-# USAGE
-# check_cluster [-v] [-l] [-t timeout]
-# -l do not check localhost first (and restarting the service if necessary)
-# -t timeout set how long to wait when accessing the servers
-# -v verbose
-#
-# DESCRIPTION
-# Loop through the nodes in the cluster, using pgwget to determine how many are masters, secondaries, down for maintenance, or not up.
-# Complain about certain situations.
-# If there are multiple masters, and this not the first master in the list, then:
-# run pg_ctl_restart
-# prevent /ro from returning true
-
-CDF=/opt/app/cdf
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-PATH=$PGDIR/bin:$CDF/bin:/opt/app/pgaas/bin:$PATH
-
-usage()
-{
- exec 1>&2
- [ $# -gt 0 ] && echo "$@"
- echo "Usage: $0 [-v] [-l] [-t timeout] [-d file]"
- echo -e " -l do not check localhost first (and restarting the service if necessary)"
- echo -e " -t timeout set how long to wait when accessing the servers"
- echo -e " -v verbose"
- echo -e " -d file duplicate the status output to the given file"
- exit 1
-}
-
-VERBOSE=false
-TIMEOUT=10
-TESTLOCAL=:
-DFILE=
-while getopts d:lt:v c
-do
- case "$c" in
- d ) DFILE=$OPTARG ;;
- l ) TESTLOCAL=false ;;
- t ) TIMEOUT=$OPTARG ;;
- v ) VERBOSE=: ;;
- \?) usage ;;
- esac
-done
-shift $(($OPTIND - 1))
-
-# loop through the nodes in the cluster, using pgwget to determine if any are a master. Save in $@
-master_count=0
-secondary_count=0
-total_count=0
-down_count=0
-maintenance_count=0
-
-MASTERS=
-SECONDARIES=
-MAINTENANCES=
-DOWNS=
-
-MSEP=
-SSEP=
-BSEP=
-DSEP=
-HOSTNAME=$(hostname -f)
-FOUNDPREVIOUSMASTER=
-DOPGCTLSTOP=
-
-if $TESTLOCAL
-then
- isrw=`pgwget --tries=1 --read-timeout=$TIMEOUT --quiet -O/dev/stdout http://localhost:8000/isrw`
- case "$isrw" in
- Master | Secondary | Maintenance ) ;;
- * )
- echo "$(date)|WARNING|RESTARTED|Local iDNS-responder not responding. Restarting."
- ps -fu postgres | grep "python3 /opt/app/pgaas/lib/iDNS-responder" | grep -v grep | awk '{print "kill " $2}' | sh
- sleep 10
- ;;
- esac
-fi
-
-for i in $(getpropvalue -n pgnodes | sed 's/|/ /g')
-do
- $VERBOSE && echo -n "Checking $i"
- isrw=`pgwget --tries=1 --read-timeout=10 --quiet -O/dev/stdout http://$i:8000/isrw`
- $VERBOSE && echo ": $isrw"
- case "$isrw" in
- Master )
- (( master_count = master_count + 1 ))
- (( total_count = total_count + 1 ))
- MASTERS="$MASTERS$MSEP$i"
- MSEP=" "
- if [ -z "$FOUNDPREVIOUSMASTER" ]
- then FOUNDPREVIOUSMASTER=yes
- elif [ -n "$FOUNDPREVIOUSMASTER" -a "$i" = $HOSTNAME ]
- then DOPGCTLSTOP=yes
- fi
- ;;
- Secondary )
- (( secondary_count = secondary_count + 1 ))
- (( total_count = total_count + 1 ))
- SECONDARIES="$SECONDARIES$SSEP$i"
- SSEP=" "
- ;;
- Maintenance )
- (( maintenance_count = maintenance_count + 1 ))
- (( total_count = total_count + 1 ))
- MAINTENANCES="$MAINTENANCES$BSEP$i"
- BSEP=" "
- ;;
- * )
- DOWNS="$DOWNS$DSEP$i"
- DSEP=" "
- (( down_count = down_count + 1 ))
- (( total_count = total_count + 1 ))
- ;;
- esac
-done
-
-(( up_count = master_count + secondary_count ))
-
-date=$(date)
-output="$date|INFO|masters=$master_count $MASTERS|secondaries=$secondary_count $SECONDARIES|maintenance=$maintenance_count $MAINTENANCES|down=$down_count $DOWNS|"
-echo "$output"
-if [ -n "$DFILE" ]
-then (umask 022; echo "$output" > $DFILE.tmp && mv $DFILE.tmp $DFILE)
-fi
-
-FORCEROOFF=/var/run/postgresql/force-ro-off
-if [ $master_count -lt 1 ]
-then echo "$date|FATAL|NOMASTER|NO MASTER FOUND|"
-elif [ $master_count -gt 1 ]
-then echo "$date|FATAL|MULTIPLEMASTERS|TOO MANY MASTERS FOUND|"
- if [ -n "$DOPGCTLSTOP" ]
- then
- touch "$FORCEROOFF"
- pg_ctl_stop
- fi
-fi
-if [ -z "$DOPGCTLSTOP" -a -f "$FORCEROOFF" ]
-then rm -f "$FORCEROOFF"
-fi
-if [ $up_count -eq 0 ]
-then echo "$date|FATAL|NOREADER|NO SECONDARY FOUND"
-fi
-if [ $down_count -ne 0 ]
-then echo "$date|ERROR|DOWN|One or more systems are down: $DOWNS"
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/dcae_admin_db.py b/pgaas/src/stage/opt/app/pgaas/bin/dcae_admin_db.py
deleted file mode 100755
index e1ac744..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/dcae_admin_db.py
+++ /dev/null
@@ -1,892 +0,0 @@
-#!/usr/bin/python3
-# -*- indent-tabs-mode: nil -*-
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-"""
-
-NAME
- dcae_admin_db.py - given a database description json file, update the current VM accordingly
-
-USAGE
- dcae_admin_db.py [options] configurationChanged json-file
- dcae_admin_db.py [options] suspend
- dcae_admin_db.py [options] resume
- dcae_admin_db.py [options] test
-
- options:
-
- -H / --dbhost= - host name, defaults to CFG['dcae_admin_db_hostname']
- -d / --dbdir= - database directory path, defaults to CFG['db_directory']
- -c / --dbconf= - database configuration path, defaults to CFG['db_configuration']
- -D / --dbname= - database name, defaults to CFG['dcae_admin_db_databasename']
- -U / --user= - user to login as, defaults to CFG['dcae_admin_db_username']
- -P / --password= - password for user, defaults to CFG['dcae_admin_db_password']
- -B / --bindir= - postgresql bin directory, defaults to CFG['pg_bin_directory']
- -i / --ignorefile= - skip configuration if this file is present, defaults to CFG['skip_configuration_file']
- -n / --nocreate - do not create the databases / users
- -I / --ignoredb - ignore current state of database
- -R / --remove - remove old databases / users
- -J / --jsontop= - top of json tree, as in \"['pgaas']\"
- -e / --errors= - where to redirect error output, defaults to CFG['dcae_admin_db_errors_file'] then stderr
- -t / --trace= - where to redirect trace output, defaults to CFG['dcae_admin_db_trace_file'] then stderr
- -v / --verbose - verbose, defaults to CFG['dcae_admin_db_verbosity']
-
-DESCRIPTION
- This program is intended to be executed by the DCAE controller manager.
-
-When creating a database and set of users, execute the equivalent of this:
-
- CREATE USER tstdb_admin WITH PASSWORD 'tst';
- CREATE USER tstdb_user WITH PASSWORD 'tst';
- CREATE USER tstdb_viewer WITH PASSWORD 'tst';
-
- CREATE ROLE testdb_common_user_role;
- CREATE ROLE testdb_common_viewer_role;
-
- CREATE DATABASE testdb with owner tstdb_admin;
-
- \connect testdb
-
- REVOKE ALL on DATABASE testdb FROM testdb_common_viewer_role;
- REVOKE ALL on DATABASE testdb FROM testdb_common_user_role;
- REVOKE ALL on DATABASE testdb FROM tstdb_user;
- REVOKE ALL on DATABASE testdb FROM tstdb_viewer;
-
- GRANT testdb_common_viewer_role TO testdb_common_user_role; /* user can do everything viewer can */
- GRANT testdb_common_user_role TO tstdb_admin; /* admin can do everything user and viewer can */
-
- GRANT CONNECT ON DATABASE testdb TO testdb_common_viewer_role; /* viewer, user, admin can connect */
-
- CREATE SCHEMA testdb_db_common AUTHORIZATION tstdb_admin; /* create a schema we can optionally use */
-
- ALTER ROLE tstdb_admin IN DATABASE testdb SET search_path = public, testdb_db_common; /* search_path is not inherited, so set it here */
- ALTER ROLE testdb_common_user_role IN DATABASE testdb SET search_path = public, testdb_db_common; /* search_path is not inherited, so set it here */
- ALTER ROLE testdb_common_viewer_role IN DATABASE testdb SET search_path = public, testdb_db_common; /* search_path is not inherited, so set it here */
-
- GRANT USAGE ON SCHEMA testdb_db_common TO testdb_common_viewer_role; /* viewer,user can select from schema */
- GRANT CREATE ON SCHEMA testdb_db_common TO tstdb_admin; /* admin can create on schema */
-
- ALTER DEFAULT PRIVILEGES FOR ROLE tstdb_admin GRANT SELECT ON TABLES TO testdb_common_viewer_role; /* viewer, user, admin can select on tables */
- ALTER DEFAULT PRIVILEGES FOR ROLE tstdb_admin GRANT INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO testdb_common_user_role; /* user, admin can ins/upd/del/tru on tables */
- ALTER DEFAULT PRIVILEGES FOR ROLE tstdb_admin GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO testdb_common_user_role; /* user, admin can update on sequences */
-
- GRANT TEMP ON DATABASE testdb TO testdb_common_user_role; /* user, admin can create temp tables */
-
- GRANT testdb_common_user_role TO tstdb_user;
- GRANT testdb_common_viewer_role TO tstdb_viewer;
- ALTER ROLE tstdb_user IN DATABASE testdb SET search_path = public, testdb_db_common; /* search_path is not inherited, so set it here */
- ALTER ROLE tstdb_viewer IN DATABASE testdb SET search_path = public, testdb_db_common; /* search_path is not inherited, so set it here */
-
-"""
-
-import getopt
-import psycopg2
-import sys
-import re
-import subprocess
-import json
-import os
-import time
-
-sys.path.append("/opt/app/pgaas/lib")
-sys.path.append("/opt/app/dcae-commonlogging/python")
-import CommonLogger
-
-verbose = 0
-quiet = False
-errorOutput = sys.stderr
-traceOutput = sys.stderr
-errorLogger = debugLogger = auditLogger = metricsLogger = None
-
-def usage(msg = None):
- """
- Print a usage message and exit
- """
- sys.stdout = sys.stderr
- if msg != None:
- print(msg)
- print("Usage:")
- print("dcae_admin_db.py [options] configurationChanged json-file")
- print("dcae_admin_db.py [options] suspend")
- print("dcae_admin_db.py [options] resume")
- print("dcae_admin_db.py [options] test")
- print("dcae_admin_db.py [options] newdb dbname admin-pswd user-pswd viewer-pswd")
- print("")
- print("options:")
- print("-H / --dbhost= - host name, defaults to CFG['dcae_admin_db_hostname']")
- print("-d / --dbdir= - database directory path, defaults to CFG['db_directory']")
- print("-c / --dbconf= - database directory path, defaults to CFG['db_configuration']")
- print("-D / --dbname= - database name, defaults to CFG['dcae_admin_db_databasename']")
- print("-n / --nocreate - do not create the databases / users")
- print("-I / --ignoredb - ignore current state of database")
- print("-U / --user= - user to login as, defaults to CFG['dcae_admin_db_username']")
- print("-P / --password= - password for user, defaults to CFG['dcae_admin_db_password']")
- print("-B / --bindir= - postgresql bin directory, defaults to CFG['pg_bin_directory']")
- print("-i / --ignorefile= - skip configuration if this file is present, defaults to CFG['skip_configuration_file']")
- print("-R / --remove - remove old databases / users")
- print("-J / --jsontop= - top of json tree, as in \"['pgaas']\"")
- print("-l / --logcfg= - ECOMP DCAE Common Logging configuration file")
- print("-e / --errors= - where to redirect error output, defaults to CFG['dcae_admin_db_errors_file'] then stderr")
- print("-t / --trace= - where to redirect trace output, defaults to CFG['dcae_admin_db_trace_file'] then stderr")
- print("-v - verbose")
- sys.exit(2)
-
-def checkOption(options, name, propname, optletter, encrypted=False, cdfPropname = None):
- """
- Check if the specified option exists. If not, grab it from the configuration file.
- Complain if it still does not exist.
- """
- if name not in options:
- ret = getPgaasPropValue(propname, encrypted=encrypted, dflt=None, skipComplaining=True)
- if ret is None and cdfPropname is not None:
- ret = getCdfPropValue(cdfPropname, encrypted=encrypted)
- options[name] = ret
- requireOption("either %s or config[%s]" % (optletter, propname), options[name])
-
-def reviewOpts():
- """
- Parse the options passed to the command, and return them in the dictionary
- """
- try:
- opts, args = getopt.getopt(sys.argv[1:], "B:c:D:d:e:H:IJ:l:nP:Rt:U:hv?",
- [ "dbhost=", "dbdir=", "dbconf=",
- "dbname=", "dbuser=", "dbpassword=",
- "bindir=", "errors=", "trace=", "logcfg=",
- "nocreate", "ignoredb", "remove", "ignorefile=",
- "jsontop=",
- "help", "verbose"])
- except getopt.GetoptError as err:
- usage(str(err))
-
- propVerbosity = getPgaasPropValue("dcae_admin_db_verbosity", dflt='0')
- if propVerbosity is not None:
- global verbose
- verbose = int(propVerbosity)
- retOptions = { }
- ignoreFile = getPgaasPropValue("skip_configuration_file", dflt=None)
- for o, a in opts:
- if o in ("-v", "--verbose"):
- # global verbose
- verbose += 1
- elif o in ("-c", "--dbconf"):
- retOptions["dbconf"] = a
- elif o in ("-H", "--dbhost"):
- retOptions["dbhost"] = a
- elif o in ("-d", "--dbdir"):
- retOptions["dbdir"] = a
- elif o in ("-D", "--dbname"):
- retOptions["dbname"] = a
- elif o in ("-U", "--dbuser"):
- retOptions["dbuser"] = a
- elif o in ("-P", "--dbpassword"):
- retOptions["dbpassword"] = a
- elif o in ("-B", "--bindir"):
- retOptions["bindir"] = a
- elif o in ("-n", "--nocreate"):
- retOptions["nocreate"] = True
- elif o in ("-I", "--ignoredb"):
- retOptions["ignoredb"] = True
- elif o in ("-R", "--remove"):
- retOptions["noremove"] = True
- elif o in ("-J", "--jsontop"):
- retOptions["jsontop"] = a
- elif o in ("-l", "--logcfg"):
- retOptions["logcfg"] = a
- elif o in ("-e", "--errors"):
- retOptions["errors"] = a
- elif o in ("-i", "--ignorefile"):
- ignoreFile = a
- elif o in ("-t", "--trace"):
- retOptions["trace"] = a
- elif o in ("-h", "--help"):
- usage()
- else:
- usage("unhandled option: %s" % o)
- if "errors" not in retOptions:
- retOptions["errors"] = getPgaasPropValue("dcae_admin_db_errors_file")
- if "errors" in retOptions and retOptions["errors"] is not None:
- try:
- errorOutput = open(retOptions["errors"], "a")
- except Exception as e:
- die("Cannot open errors file '%s': %s" % (retOptions["errors"], e))
- if ignoreFile is not None:
- trace("checking to see if skip_configuration_file(%s) exists" % ignoreFile)
- retOptions["ignorefile"] = "yes" if os.path.isfile(ignoreFile) else "no"
- trace("ignorefile=%s" % retOptions["ignorefile"])
- else:
- retOptions["ignorefile"] = None
- if "trace" not in retOptions:
- retOptions["trace"] = getPgaasPropValue("dcae_admin_db_trace_file")
- if "trace" in retOptions and retOptions["trace"] is not None:
- try:
- traceOutput = open(retOptions["trace"], "a")
- except Exception as e:
- die("Cannot open trace file '%s': %s" % (retOptions["trace"], e))
- if "logcfg" not in retOptions:
- retOptions["logcfg"] = getPgaasPropValue("dcae_admin_db_common_logger_config")
- if "logcfg" in retOptions and retOptions["logcfg"] is not None:
- logcfg = retOptions["logcfg"]
- import uuid
- instanceUUID = uuid.uuid1()
- serviceName = "DCAE/pgaas"
- # print(">>>>>>>>>>>>>>>> using common logger. UUID=%s, serviceName=%s, cfg=%s" % (instanceUUID, serviceName, logcfg))
- global errorLogger, debugLogger, auditLogger, metricsLogger
- errorLogger = CommonLogger.CommonLogger(logcfg, "error", instanceUUID=instanceUUID, serviceName=serviceName)
- debugLogger = CommonLogger.CommonLogger(logcfg, "debug", instanceUUID=instanceUUID, serviceName=serviceName)
- auditLogger = CommonLogger.CommonLogger(logcfg, "audit", instanceUUID=instanceUUID, serviceName=serviceName)
- metricsLogger = CommonLogger.CommonLogger(logcfg, "metrics", instanceUUID=instanceUUID, serviceName=serviceName)
- auditLogger.info("using common logger. UUID=%s, serviceName=%s, cfg=%s" % (instanceUUID, serviceName, logcfg))
-
- checkOption(retOptions, "dbname", "dcae_admin_db_databasename", "-D")
- checkOption(retOptions, "dbuser", "dcae_admin_db_username", "-U")
- checkOption(retOptions, "dbpassword", "dcae_admin_db_password", "-P", encrypted=True, cdfPropname="postgres")
- checkOption(retOptions, "dbhost", "dcae_admin_db_hostname", "-H")
- checkOption(retOptions, "dbdir", "db_directory", "-d")
- checkOption(retOptions, "bindir", "pg_bin_directory", "-B")
- if "jsontop" not in retOptions:
- retOptions["jsontop"] = getPgaasPropValue("dcae_admin_db_jsontop")
- trace("env=%s" % str(os.environ))
- trace("ignorefile=%s" % ignoreFile)
- return retOptions, args
-
-def main():
- keyedOptions, args = reviewOpts()
- trace("Invoked as: %s" % str(sys.argv))
- audit("Invoked as: %s" % str(sys.argv))
-
- if len(args) == 0:
- usage("no operation specified")
- elif args[0] == "configurationChanged":
- if len(args) != 2:
- usage("too many arguments")
- configurationChanged(keyedOptions, args[1])
- elif args[0] == "suspend":
- if len(args) != 1:
- usage("too many arguments")
- suspendOperations(keyedOptions)
- elif args[0] == "resume":
- if len(args) != 1:
- usage("too many arguments")
- resumeOperations(keyedOptions)
- elif args[0] == "test":
- if len(args) != 1:
- usage("too many arguments")
- testOperations(keyedOptions)
- elif args[0] == "newdb":
- if len(args) != 5:
- usage("wrong number of arguments")
- newDb(keyedOptions, args[1], args[2], args[3], args[4])
- else:
- usage("unrecognized operation '%s'" % args[0])
-
-def suspendOperations(options):
- """
- Execute the "suspend" sub-command.
- """
- runProgram(["pkill", "repmgrd"])
- program = options["bindir"] + "/pg_ctl"
- cmd = [program, "stop", "-D", options["dbdir"]]
- runProgram(cmd)
- audit("suspendOperations")
-
-def resumeOperations(options):
- """
- Execute the "resume" sub-command.
- """
- cmd = [options["bindir"] + "/pg_ctl", "start", "-D", options["dbdir"], "-o", "configfile=" + options["dbconf"]]
- runProgram(cmd)
- runProgram(["/opt/app/pgaas/bin/repmgrcd", "-d"])
- audit("resumeOperations")
-
-def testOperations(options):
- """
- Respond to the "test" sub-command.
- """
- program = options["bindir"] + "/pg_ctl"
- cmd = [program, "status", "-D", options["dbdir"]]
- ret = runProgram(cmd)
- # pg_ctl: no server running
- # pg_ctl: server is running (PID: 13988)
- # does /var/run/postgresql/inmaintenance exist? -> YELLOW
- cmdRepmgr = ["pgrep", "repmgrd"]
- retRepmgr = runProgram(cmdRepmgr)
-
- msg = "????"
- if os.path.isfile("/var/run/postgresql/inmaintenance"):
- msg = "YELLOW: in maintenance mode"
- elif re.search("no server running", ret):
- msg = "RED: no PG server running"
- elif re.search("server is running", ret) and re.search("[0-9]+", retRepmgr):
- msg = "GREEN"
- elif re.search("server is running", ret):
- msg = "YELLOW: no repmgrd running"
- elif re.search("[0-9]+", retRepmgr):
- msg = "YELLOW: no PG server running"
- else:
- msg = "YELLOW: neither PG server nor repmgrd are running"
- audit("test: " + msg)
- print(msg, end="")
-
-def runProgram(cmd):
- """
- Run the given command, returning the standard output as a string.
- If there is an error, return None.
- """
- try:
- p=subprocess.Popen(cmd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
- (stdout, stderr) = p.communicate()
- except Exception as e:
- print("Error running program because: {0}".format(e), file=errorOutput)
- return None
- else:
- if stderr:
- print("Error running program because: {0} ".format(stderr), file=errorOutput)
- return None
- else:
- trace("runProgram() => " + str(stdout), minLevel=2)
- return stdout.decode('utf-8').rstrip('\n')
-
-def configurationChanged(options, jsonFile):
- """
- We received a new JSON configuration file
- """
- audit("configurationChanged " + jsonFile)
- if options["ignorefile"] == "yes":
- trace("skipping database reconfiguration because skip_configuration_file exists")
- return
-
- if not os.path.isfile(jsonFile):
- die("json file %s does not exist" % jsonFile)
-
- try:
- inp = json.load(open(jsonFile,"r"))
- except Exception as e:
- die("Cannot open jsonFile '%s': %s" % (jsonFile, e))
-
- if verbose:
- dumpJSON(inp, "incoming JSON")
-
- jsonTop = options["jsontop"]
- if not jsonTop is None:
- e = "inp" + jsonTop
- trace("eval(%s)" % e)
- inp = eval(e,{"__builtins__":None},{"inp":inp})
- if verbose:
- dumpJSON(inp, "modified JSON")
-
- setupDictionaryDatabases(options, inp)
-
-def setupDictionaryDatabases(options, inp):
- """
- Set up the databases listed in the dictionary
- """
-
- # trace("version=%s" % requireJSON("version", inp, "version"))
- requireJSON("databases", inp, "databases")
- con = None
- try:
- con = dbConnect(database = options["dbname"], user = options["dbuser"], password = options["dbpassword"], host = options["dbhost"])
- setupDatabases(con, options, requireJSON("databases", inp, "databases"))
-
- except psycopg2.DatabaseError as e:
- die('Error %s' % e)
-
- finally:
- if con:
- con.commit()
- con.close()
-
-def newDb(options, dbName, adminPswd, userPswd, viewerPswd):
- """
- Given the database name and passwords, set up a database and corresponding users.
- For example, with dbname="foo", adminPswd="fooa", userPswd="foou" and viewerPswd="foov",
- act the same as if we had received the json configuration:
- {
- 'databases': {
- 'foo': {
- 'ownerRole': 'foo_admin',
- 'roles': {
- 'foo_admin': {
- 'password': 'fooa',
- 'role': 'admin'
- },
- 'foo_user': {
- 'password': 'foou',
- 'role': 'writer'
- },
- 'foo_viewer': {
- 'password': 'foov',
- 'role': 'reader'
- }
- }
- }
- }
- }
- """
- if not re.match("^[A-Za-z][A-Za-z0-9_]*$", dbName):
- errorPrint("'%s' is not a valid database name" % dbName)
- return
-
- adminName = dbName + "_admin"
- userName = dbName + "_user"
- viewerName = dbName + "_viewer"
-
- setupDictionaryDatabases(options, {
- 'databases': {
- dbName: {
- 'ownerRole': adminName,
- 'roles': {
- adminName: {
- 'password': adminPswd,
- 'role': 'admin'
- },
- userName: {
- 'password': userPswd,
- 'role': 'writer'
- },
- viewerName: {
- 'password': viewerPswd,
- 'role': 'reader'
- }
- }
- }
- }
- })
-
-def dumpJSON(js, msg):
- tracePrint("vvvvvvvvvvvvvvvv %s" % msg)
- tracePrint(json.dumps(js, indent=4))
- tracePrint("^^^^^^^^^^^^^^^^ %s" % msg)
-
-def setupDatabases(con, options, dbList):
- """
- Do what is needed to set up all of the databases
- """
- currentDatabases = dbGetFirstColumnAsMap(con, "select datname from pg_database where datistemplate = false")
- currentRolenames = dbGetFirstColumnAsMap(con, "select rolname from pg_roles")
- trace("currentDatabases = " + str(currentDatabases))
- for dbName in dbList:
- trace("dbName='%s'" % str(dbName))
- setupDatabase(con, options, currentDatabases, currentRolenames, dbName, dbList[dbName])
-
-def setupDatabase(con, options, currentDatabases, currentRolenames, dbName, dbInfo):
- """
- Do what is needed to set up a given databases and its users
- """
-
- dbOwnerRole = requireJSON("databases[].ownerRole", dbInfo, "ownerRole")
- trace("dbName='%s', dbOwnerRole='%s'" % (dbName, dbOwnerRole))
- doesDbExist = dbName in currentDatabases
- trace("does %s exist? %s" % (dbName, doesDbExist))
- foundOwnerRole = False
- dbRoles = dbInfo["roles"]
- for name in dbRoles:
- u = dbRoles[name]
- if name == dbOwnerRole and u["role"] == "admin":
- foundOwnerRole = True
- if u["role"] not in ("admin","writer","reader"):
- die("For database %s, the role '%s' is not one of admin/writer/reader" % (dbName, u.role))
- if not foundOwnerRole:
- die("For database %s, information on the ownerRole '%s' was not found" % (dbName, dbOwnerRole))
- for name in dbRoles:
- userInfo = dbRoles[name]
- if name in currentRolenames and ("ignoredb" not in options or not options["ignoredb"]):
- trace("The role %s already exists, skipping" % name)
- updatePassword(con, options, dbName, name, userInfo)
- else:
- setupUser(con, options, dbName, name, userInfo)
- if doesDbExist and ("ignoredb" not in options or not options["ignoredb"]):
- trace("The database %s already exists, skipping" % dbName)
- else:
- makeDatabase(con, options, dbName, dbOwnerRole, dbInfo, dbRoles)
- for name in dbRoles:
- userInfo = dbRoles[name]
- if name in currentRolenames and ("ignoredb" not in options or not options["ignoredb"]):
- trace("The role %s already exists, skipping grants" % name)
- else:
- modifyGrants(con, options, dbName, name, userInfo)
-
-def makeDatabase(con, options, dbName, dbOwnerRole, dbInfo, dbRoles):
- """
- Execute the SQL to create a database
-
- TODO: verify grants against what is actually there
- """
- ownerRole = dbInfo["ownerRole"]
- userRole = "{0}_common_user_role".format(dbName)
- viewerRole = "{0}_common_viewer_role".format(dbName)
-
- optionalDbExecute(con, options, "CREATE ROLE {0}".format(userRole))
- optionalDbExecute(con, options, "CREATE ROLE {0}".format(viewerRole))
-
- trace("Creating database %s with owner '%s'" % (dbName, ownerRole))
- optionalDbExecute(con, options, "CREATE DATABASE %s WITH OWNER %s" % (dbName, ownerRole))
- con2 = None
- try:
- con2 = dbConnect(database = dbName, user = options["dbuser"], password = options["dbpassword"], host = options["dbhost"])
-
- optionalDbExecute(con2, options, "REVOKE ALL on DATABASE {0} FROM {1}".format(dbName, viewerRole))
- optionalDbExecute(con2, options, "REVOKE ALL on DATABASE {0} FROM {1}".format(dbName, userRole))
- for name in dbRoles:
- userInfo = dbRoles[name]
- if userInfo["role"] == "writer" or userInfo["role"] == "reader":
- optionalDbExecute(con2, options, "REVOKE ALL on DATABASE {0} FROM {1}".format(dbName, name))
-
- # user can do everything viewer can
- optionalDbExecute(con2, options, "GRANT {0} TO {1}".format(viewerRole, userRole))
- # admin can do everything user and viewer can
- optionalDbExecute(con2, options, "GRANT {0} TO {1}".format(userRole, ownerRole))
-
- # viewer, user, admin can connect
- optionalDbExecute(con2, options, "GRANT CONNECT ON DATABASE {0} TO {1}".format(dbName, viewerRole))
-
- # create a schema we can optionally use *
- schemaName = "{0}_db_common".format(dbName)
- optionalDbExecute(con2, options, "CREATE SCHEMA if not exists {0} AUTHORIZATION {1}".format(schemaName, ownerRole))
-
- # search_path is not inherited, so set it here
- for role in [ ownerRole, userRole, viewerRole ]:
- optionalDbExecute(con2, options, "ALTER ROLE {1} IN DATABASE {0} SET search_path = public, {2}".format(dbName, role, schemaName))
-
- # viewer,user can select from schema
- optionalDbExecute(con2, options, "GRANT USAGE ON SCHEMA {0} TO {1}".format(schemaName, viewerRole))
- # admin can create on schema
- optionalDbExecute(con2, options, "GRANT CREATE ON SCHEMA {0} TO {1}".format(schemaName, ownerRole))
-
- # viewer, user, admin can select on tables
- optionalDbExecute(con2, options, "ALTER DEFAULT PRIVILEGES FOR ROLE {1} GRANT SELECT ON TABLES TO {0}".format(viewerRole, ownerRole))
- # user, admin can ins/upd/del/tru on tables
- optionalDbExecute(con2, options, "ALTER DEFAULT PRIVILEGES FOR ROLE {1} GRANT INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO {0}".format(userRole, ownerRole))
- # user, admin can update on sequences
- optionalDbExecute(con2, options, "ALTER DEFAULT PRIVILEGES FOR ROLE {1} GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO {0}".format(userRole, ownerRole))
-
- # user, admin can create temp tables
- optionalDbExecute(con2, options, "GRANT TEMP ON DATABASE {0} TO {1}".format(dbName, userRole))
-
- for name in dbRoles:
- userInfo = dbRoles[name]
- if userInfo["role"] == "writer":
- optionalDbExecute(con2, options, "GRANT {0} TO {1}".format(userRole, name))
- elif userInfo["role"] == "reader":
- optionalDbExecute(con2, options, "GRANT {0} TO {1}".format(viewerRole, name))
-
- # search_path is not inherited, so set it here
- optionalDbExecute(con2, options, "ALTER ROLE {1} IN DATABASE {0} SET search_path = public, {2}".format(dbName, name, schemaName))
-
- except psycopg2.DatabaseError as e:
- die('Error %s' % e)
-
- finally:
- if con2:
- con2.commit()
- con2.close()
-
-def checkUsername(userName):
- """
- A value of type name is a string of 63 or fewer characters1. A name must start
- with a letter or an underscore; the rest of the string can contain letters,
- digits, and underscores.
- """
- trace("checkUsername(%s)" % userName)
- if re.match("[A-Za-z_][A-Za-z0-9_]*$", userName):
- return True
- else:
- errorPrint("%s is not a valid userName" % userName)
- return False
-
-def setupUser(con, options, dbName, userName, userInfo):
- """
- Do what is needed to to set up a user for a database
- """
- if checkUsername(userName):
- trace("For dbName='%s', create user '%s'" % (dbName, userName))
- userPassword = userInfo["password"]
- optionalDbExecute(con, options, "create user %s with password '%s'" % (userName, userPassword))
-
-def updatePassword(con, options, dbName, userName, userInfo):
- """
- Do what is needed to update a user's password
- """
- if checkUsername(userName):
- trace("For dbName='%s', alter user '%s' password" % (dbName, userName))
- userPassword = userInfo["password"]
- optionalDbExecute(con, options, "alter user %s with password '%s'" % (userName, userPassword))
-
-def modifyGrants(con, options, dbName, userName, userInfo):
- """
- Do what is needed to to set up a user for a database with the proper grants
-
- TODO: if user exist, verify current grants
- """
- if checkUsername(userName):
- userRole = userInfo["role"]
- trace("For dbName='%s', set up user '%s' as a '%s'" % (dbName, userName, userRole))
- if userRole == "writer":
- optionalDbExecute(con, options, "grant %s_common_user_role to %s" % (dbName, userName))
- elif userRole == "reader":
- optionalDbExecute(con, options, "grant %s_common_viewer_role to %s" % (dbName, userName))
- # elif userRole == "admin":
- # optionalDbExecute(con, options, "grant %s_common_admin_role to %s" % (dbName, userName))
- else:
- trace("nothing to grant %s" % userName)
-
-def optionalDbExecute(con, options, cmd):
- if "nocreate" in options and options["nocreate"]:
- print(cmd)
- else:
- audit("Running: " + cmd)
- dbExecute(con, cmd)
-
-"""
-database utility functions
-"""
-
-# def dbGetMap(con, cmd, args=[], skipTrace=False):
-# def dbGetOneRowMap(con, cmd, args=[], skipTrace=False):
-
-def dbGetFirstRowOneValue(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return a single value from the first row
- """
- row = dbGetFirstRow(con, cmd, args, skipTrace)
- trace("row=" + str(row))
- if row is not None and len(row) > 0:
- return row[0]
- return None
-
-def dbGetFirstRow(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return the values from the first row
- """
- cursor = dbExecute(con, cmd, args, skipTrace)
- return cursor.fetchone()
-
-def dbGetFirstColumn(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return the first column's value from each row
- """
- ret = []
- cursor = dbExecute(con, cmd, args, skipTrace)
- for row in cursor:
- for col in row:
- ret.append(col)
- break
- return ret
-
-def dbGetFirstColumnAsMap(con, cmd, args=[], skipTrace=False, val=1):
- """
- Do a select and return the first column's value from each row
- """
- ret = {}
- cursor = dbExecute(con, cmd, args, skipTrace)
- for row in cursor:
- for col in row:
- ret[col] = val
- break
- return ret
-
-def dumpTable(con, tableName, max=-1):
- """
- If being extra verbose, print out the entire table
- """
- if verbose < 2:
- return
- print("================ " + tableName + " ================", file=traceOutput)
-
- cols = dbGetFirstColumn(con, "select column_name from information_schema.columns where table_name='" + tableName + "'", skipTrace=True)
- print("num", end="|", file=traceOutput)
- for col in cols:
- print(col, end="|", file=traceOutput)
- print("", file=traceOutput)
-
- if max > -1:
- cursor = dbExecute(con, "select * from " + tableName + " limit " + str(max), skipTrace=True)
- else:
- cursor = dbExecute(con, "select * from " + tableName, skipTrace=True)
- i = 0
- for row in cursor:
- print("%d" % i, end="|", file=traceOutput)
- i += 1
- for col in row:
- print("%s" % (col), end="|", file=traceOutput)
- print("", file=traceOutput)
- print("================================================", file=traceOutput)
-
-def dbExecute(con, statement, args=[], skipTrace=False):
- """
- Create a cursor, instantiate the arguments into a statement, trace print the statement, and execute the statement.
- Return the cursor
- """
- cursor = con.cursor()
- stmt = cursor.mogrify(statement, args);
- if not skipTrace:
- trace("executing:" + str(stmt))
- cursor.execute(stmt)
- global quiet
- if not skipTrace:
- trace("statusmessage=" + cursor.statusmessage + ", rowcount=" + str(cursor.rowcount))
- return cursor
-
-def dbConnect(database, user, password, host, autocommit = True):
- """
- Create a connection, logging it in the process
- Return the connection
- """
- trace("connecting to database %s as %s on host %s" % (database, user, host))
- con =psycopg2.connect(database = database, user = user, password = password, host = host)
- con.autocommit = autocommit
- return con
-
-"""
-Utility functions
-"""
-
-def die(msg):
- """
- Print a message to the error file and exit.
- """
- errorPrint(msg)
- sys.exit(1)
-
-def errorPrint(msg, file=errorOutput):
- """
- Print a message to the error file.
- """
- global errorLogger
- # print("----------------> errorLogger=%s" % str(errorLogger))
- if errorLogger is not None:
- errorLogger.error(msg)
- else:
- taggedPrint("ERROR", msg, file=file)
-
-
-def tracePrint(msg, file=traceOutput):
- """
- Print a message to the trace file.
- """
- global debugLogger
- # print("----------------> debugLogger=%s" % str(debugLogger))
- if debugLogger is not None:
- debugLogger.debug(msg)
- else:
- taggedPrint("DEBUG", msg, file=file)
-
-def taggedPrint(tag, msg, file):
- """
- Print a message to the trace file.
- """
- dt = time.strftime('%Y-%m-%d %T', time.localtime())
- print("%s %s: %s" % (dt, tag, msg), file=file)
-
-def requireOption(nm, val):
- """
- Die if a program parameter is not set
- """
- return require("option", nm, val)
-
-def requireJSON(prnm, dict, nm):
- """
- Die if a JSON value is not set
- """
- if nm not in dict:
- die("The JSON value '%s' is missing" % prnm)
- return dict[nm]
-
-def require(type, nm, val):
- """
- Die if a value is not set
- """
- if val is None:
- die("The %s '%s' is missing" % (type, nm))
- return val
-
-def trace(msg, minLevel=1):
- """
- Print a message to trace output if verbose is turned on.
- """
- global verbose
- if verbose >= minLevel:
- tracePrint(msg)
-
-def audit(msg):
- """
- Print a message to audit log if one is being used
- """
- global auditLogger
- if auditLogger is not None:
- auditLogger.info(msg)
-
-def getCdfPropValue(nm, encrypted=False, cfg="/opt/app/cdf/lib/cdf.cfg", dflt=None, skipComplaining=False):
- """
- Return a value from the configuration file /opt/app/cdf/lib/cdf.cfg
- """
- return getPropValue(nm=nm, encrypted=encrypted, cfg=cfg, dflt=dflt, skipComplaining=skipComplaining)
-
-def getPgaasPropValue(nm, encrypted=False, cfg="/opt/app/pgaas/lib/pgaas.cfg", dflt=None, skipComplaining=False):
- """
- Return a value from the configuration file /opt/app/pgaas/lib/pgaas.cfg
- """
- return getPropValue(nm=nm, encrypted=encrypted, cfg=cfg, dflt=dflt, skipComplaining=skipComplaining)
-
-getPropDict = { }
-
-def getPropValue(nm, encrypted=False, cfg=None, dflt=None, skipComplaining=False):
- """
- Return a value from the specified configuration file
- """
- if cfg is None:
- return None
- global getPropDict
- if getPropDict.get(cfg):
- savedDate = getPropDict[cfg]
- # trace("getPropValue: savedDate[" + cfg + "]=" + str(savedDate))
- cfgDate = os.path.getmtime(cfg)
- # trace("getPropValue: cfgDate=" + str(cfgDate))
- if float(savedDate) >= float(cfgDate): # cfg has not changed
- val = getPropDict.get(cfg + ":" + nm)
- # trace("getPropValue: val=" + val)
- if val is not None:
- # trace("getPropValue: getPropValue(saved) => '%s'" % str(val))
- return val
- else: # clear out any previously saved keys
- cfgcolon = cfg + ":"
- for k in list(getPropDict.keys()):
- if re.match(cfgcolon, k):
- del getPropDict[k]
- getPropValueProgram = '/opt/app/cdf/bin/getpropvalue'
- if encrypted:
- cmd = [getPropValueProgram, "-f", cfg, "-x", "-n", nm]
- else:
- cmd = [getPropValueProgram, "-f", cfg, "-n", nm]
- # trace("getPgaasPropValue: cmd=" + str(cmd))
-
- try:
- with subprocess.Popen(cmd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) as p:
- (origString, stderrString) = p.communicate()
- except Exception as e:
- traceback.print_exc()
- print("Error decoding string because {0}".format(e), file=errorOutput)
- return None
- else:
- if stderrString:
- if not re.search("Configuration property .* must be defined", stderrString.decode('utf-8')) and not skipComplaining:
- print("Error decoding string because: {0} ".format(stderr), file=errorOutput)
- return dflt
- else:
- trace("getPgaasPropValue() => " + str(origString), minLevel=2)
- return origString.decode('utf-8').rstrip('\n')
-
-if __name__ == "__main__":
- main()
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/dump-designate-zone b/pgaas/src/stage/opt/app/pgaas/bin/dump-designate-zone
deleted file mode 100755
index 5e9ff44..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/dump-designate-zone
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/env python3
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-import requests, sys, os, subprocess, argparse
-
-def checkstatus(resp, msg):
- if resp.status_code >= 300:
- print(resp)
- print(resp.content)
- raise Exception(msg)
-
-def reportrs():
- resp = requests.get('{0}/v2/zones/{1}/recordsets?limit=1000'.format(dns, zid), headers=osauth)
- checkstatus(resp, 'Failed to list recordsets')
- for rs in resp.json()['recordsets']:
- tl = ''
- if 'ttl' in rs and rs['ttl'] is not None:
- tl = ' {0}'.format(rs['ttl'])
- print('# {0}'.format(rs['id']))
- for r in rs['records']:
- print('{0}{1} IN {2} {3}'.format(rs['name'], tl, rs['type'], r))
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser(description="Dump a Designate zone registration")
- parser.add_argument("-a", "--authurl", type=str, help="Authentication URL), defaults to $DESIGNATEAUTHURL")
- parser.add_argument("-t", "--tenantname", type=str, help="Tenant name")
- parser.add_argument("-u", "--user", type=str, help="Username, defaults to $DESIGNATEUSER") # , default=os.environ.get('DESIGNATEUSER'))
- parser.add_argument("-p", "--password", type=str, help="Password, defaults to $DESIGNATEPASSWORD") # , default=os.environ.get('DESIGNATEPASSWORD'))
- parser.add_argument("-d", "--domain", type=str, help="Domain to search, defaults to $DESIGNATEDOMAIN") # , default=os.environ.get('DESIGNATEDOMAIN'))
- parser.add_argument("-T", "--timeout", type=int, help="Timeout on requests, defaults to 120", default=120) # , default=os.environ.get('DESIGNATEDOMAIN'))
- parser.add_argument("-v", "--verbose", help="turn on debugging", action="store_true") # , default=os.environ.get('DESIGNATEURL'))
- args = parser.parse_args()
-
- def checkarg(arg, var, parms, dflt = None):
- if not arg: arg = os.environ.get(var)
- if not arg: arg = dflt
- if not arg: exit(parms + "/$" + var + " not set")
- return arg
-
- args.authurl = checkarg(args.authurl, "DESIGNATEAUTHURL", "-a/--authurl")
- args.tenantname = checkarg(args.tenantname, "DESIGNATETENANTNAME", "-t/--tenantname")
- args.user = checkarg(args.user, "DESIGNATEUSER", "-u/--user")
- args.password = checkarg(args.password, "DESIGNATEPASSWORD", "-p/--password")
- args.domain = checkarg(args.domain, "DESIGNATEDOMAIN", "-d/--domain", subprocess.run(['dnsdomainname'], stdout=subprocess.PIPE).stdout.decode('utf-8').rstrip())
- if not args.domain.endswith("."): args.domain = args.domain + "."
-
- print("Domain = {0}".format(args.domain))
-
- resp = requests.post(args.authurl + '/tokens', json={'auth':{'tenantName': args.tenantname, 'passwordCredentials': {'username': args.user, 'password': args.password }}}, timeout=args.timeout)
- checkstatus(resp, 'Failed to get identity token')
- respj = resp.json()['access']
- osauth = {'X-Auth-Token': respj['token']['id'] }
- dns = None
- for se in respj['serviceCatalog']:
- if se['type'] == 'dns':
- dns = se['endpoints'][0]['publicURL']
- break
- if not dns:
- printf("No dns record found")
- else:
- print('DNS is {0}'.format(dns))
-
- resp = requests.get('{0}/v2/zones'.format(dns), headers=osauth, timeout=args.timeout)
- checkstatus(resp, 'Failed to list zones')
- respj = resp.json()['zones']
- zid = None
- for z in respj:
- if args.verbose: print("Looking at %s" % z, file=sys.stderr)
- if z['name'] == args.domain:
- zid = z['id']
- break
-
- if not zid:
- print("Domain {0} not found".format(args.domain))
- else:
- print('Zone is {0}'.format(zid))
- reportrs()
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/gen-repmgr-info b/pgaas/src/stage/opt/app/pgaas/bin/gen-repmgr-info
deleted file mode 100755
index b210e58..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/gen-repmgr-info
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/usr/bin/perl
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# NAME
-# gen-repmgr-info - extract information about the system appropriate for use with repmgr
-#
-# DESCRIPTION
-# gen-repmgr-info -n hosts options...
-#
-# for a list of hosts such as "uiopzxc5pepstg00.grant.example.com|uiopzxc5pepstg01.grant.example.com|uiopmtc6njpstg00.grant.example.com|uiopmtc6njpstg01.grant.example.com"
-# extract various pieces of information about the list. For example, generate a list of repmgr node numbers like this:
-# uiopzxc5pepstg00.grant.example.com 100
-# uiopzxc5pepstg01.grant.example.com 101
-# uiopmtc6njpstg00.grant.example.com 200
-# uiopmtc6njpstg01.grant.example.com 201
-
-use strict vars;
-
-use Getopt::Std;
-use Digest::SHA qw(sha256_hex);
-
-sub usage {
- my $msg = shift;
- print "$msg\n" if $msg;
- print "Usage: $0 -n 'node|node|node|...' [-S] [-s site] [-L] [-l node] [-c node] [-C node] [-m] [-M node] [-e] [-v] [-p]\n";
- print "-n list of nodes (FQDNs), |-separated\n";
- print "-S show list of all sites and their node # values\n";
- print "-s site\tshow the node # value for a given site\n";
- print "-L show list of all nodes and their node # values\n";
- print "-l node\tshow the node # value for a given node\n";
- print "-C node\tshow the machine name that a given node should cascade from, or DEFAULT\n";
- print "-c node\tshow the machine node # that a given node should cascade from, or DEFAULT\n";
- print "-e node\tshow the list of nodes on the same site as the given node, |-separated\n";
- print "-m\twhich system is the 'master'\n";
- print "-M node\twhich system matches the given node, taking FQDN into consideration\n";
- print "-v\tverbose\n";
- print "-p\tprint the node names in sorted order\n";
- exit 1;
-}
-
-
-my %optargs;
-getopts('C:c:e:E:Ll:M:mn:pPSs:v', \%optargs) or usage();
-my $verbose = $optargs{v};
-
-my $pgnodes = $optargs{n} or usage("-n is required");
-
-# generate the data about the nodes
-my @pgnodes = sort split(/[|]/, $pgnodes);
-
-# @sites contains the list of all site names.
-# For uiopzxc5pepstg01.grant.example.com, the sitename will be uiopzxc5pepstg.
-my @sites = genSites();
-my %pgnodesToSite = genPgnodeToSites();
-
-# The %siteValues contains 100, 200, etc for each site name
-# print "\nsites=" . join("\n", @sites);
-my %siteValues = genSiteValues();
-
-# The %pgnodeValues contains 100, 101, 200, 201, etc for each node name
-my %pgnodeValues = genPgnodeValues();
-# The %valuesToPgnode contains node names for each value
-my %valuesToPgnode = genValuesToPgnodes();
-
-if ($optargs{L}) {
- for my $pgnode (@pgnodes) {
- print "$pgnode $pgnodeValues{$pgnode}\n";
- }
-}
-
-if ($optargs{S}) {
- for my $site (@sites) {
- print "$site $siteValues{$site}\n";
- }
-}
-
-if ($optargs{s}) {
- for my $site (@sites) {
- print "$siteValues{$site}\n" if $site eq $optargs{s};
- }
-}
-
-if ($optargs{l}) {
- for my $pgnode (@pgnodes) {
- print "$pgnodeValues{$pgnode}\n" if $pgnode eq $optargs{l};
- }
-}
-
-if ($optargs{c}) {
- my $pgnode = $optargs{c};
- my $pgnodeValue = $pgnodeValues{$pgnode};
- my $masterValue = int($pgnodeValue / 100) * 100;
- if (($masterValue > 100) && (($masterValue % 100) > 0)) {
- print "$masterValue\n";
- } else {
- print "DEFAULT\n";
- }
-}
-
-if ($optargs{C}) {
- my $pgnode = $optargs{C};
- my $pgnodeValue = $pgnodeValues{$pgnode};
- my $masterValue = int($pgnodeValue / 100) * 100;
- # print "pgnode=$pgnode, pgnodeValue=$pgnodeValue, masterValue=$masterValue\n";
- if (($pgnodeValue % 100) > 0) {
- print "$valuesToPgnode{$masterValue}\n";
- } else {
- print "DEFAULT\n";
- }
-}
-
-sub enodes {
- my $pgnodeSearch = $optargs{e};
- my $siteSearch = $pgnodesToSite{$pgnodeSearch};
- my $ret = "";
- # print "looking for $pgnodeSearch in $siteSearch\n";
- my $sep = "";
- for my $pgnode (@pgnodes) {
- my $site = $pgnodesToSite{$pgnode};
- # print "looking at $pgnode in $site\n";
- if ($site eq $siteSearch) {
- $ret .= "$sep$pgnode";
- $sep = "|";
- }
- }
- return $ret;
-}
-
-if ($optargs{e}) {
- my $ret = enodes();
- print "$ret\n";
-}
-
-if ($optargs{E}) {
- print sha256_hex(enodes()) . "\n";
-}
-
-if ($optargs{m}) {
- print "$pgnodes[0]\n";
-}
-
-if ($optargs{M}) {
- my $node = $optargs{M};
- if ($node =~ /[.]/) {
- print "$node\n";
- } else {
- my $found;
- for my $pgnode (@pgnodes) {
- if ($pgnode =~ /^$node[.]/) {
- print $node;
- $found = 1;
- last;
- }
- }
- }
-}
-
-sub pnodes {
- return join("|", @pgnodes);
-}
-
-if ($optargs{p}) {
- print pnodes() . "\n";
-}
-
-if ($optargs{P}) {
- print sha256_hex(pnodes()) . "\n";
-}
-
-# for a given node name uiopzxc5pepstg01.grant.example.com, the return uiopzxc5pepstg.
-sub nodeToSite {
- my $site = shift;
- $site =~ s/[.].*//;
- $site =~ s/\d*$//;
- return $site;
-}
-
-# from a list of nodes, generate the sorted list of sites
-sub genSites {
- my %sites = ();
- # print "pgnodes=" . join("\n", @pgnodes);
- for my $pgnode (@pgnodes) {
- my $site = nodeToSite($pgnode);
- $sites{$site} = $site;
- }
- my @sites = sort keys %sites;
- return @sites;
-}
-
-# from a list of nodes, generate a mapping from them to their sites
-sub genPgnodeToSites {
- my %sites = ();
- for my $pgnode (@pgnodes) {
- $sites{$pgnode} = nodeToSite($pgnode);
- }
- return %sites;
-}
-
-# generate the 100, 200, etc for each site name
-sub genSiteValues {
- my %siteValues;
- for (my $i = 0; $i <= $#sites; $i++) {
- $siteValues{$sites[$i]} = ($i+1) * 100;
- }
- # print "\nsiteValues=\n"; for my $site (@sites) { print "$site $siteValues{$site}\n"; }
- return %siteValues;
-}
-
-sub genPgnodeValues {
- my %pgnodeValues;
- my $i = 0;
- my $lastSite = '';
- for my $pgnode (@pgnodes) {
- my $thisSite = nodeToSite($pgnode);
- if ($thisSite eq $lastSite) {
- $i++;
- } else {
- $i = 0;
- }
- $lastSite = $thisSite;
- $pgnodeValues{$pgnode} = $siteValues{$thisSite} + $i;
- }
- # print "\nnodeValues=\n"; for my $pgnode (@pgnodes) { print "$pgnode $pgnodeValues{$pgnode}\n"; }
- return %pgnodeValues;
-}
-
-sub genValuesToPgnodes {
- my %valuesToPgnode;
- for my $pgnode (keys %pgnodeValues) {
- my $value = $pgnodeValues{$pgnode};
- $valuesToPgnode{$value} = $pgnode;
- }
- return %valuesToPgnode;
-}
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/healthcheck_status b/pgaas/src/stage/opt/app/pgaas/bin/healthcheck_status
deleted file mode 100644
index 4e99de0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/healthcheck_status
+++ /dev/null
@@ -1,3 +0,0 @@
-curl http://localhost:8000/healthcheck/status
-curl http://localhost:8000/healthcheck/writablestatus
-curl http://localhost:8000/healthcheck/readonlystatus
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/in.json b/pgaas/src/stage/opt/app/pgaas/bin/in.json
deleted file mode 100755
index 697a51f..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/in.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- # sample configuration file for dcae_admin_db
- "vmConfiguration": {
- "$class": "org.onap.dcae.controller.service.storage.postgres.service.PostgresServiceConfiguration",
- "state": "master",
- "databases": {
- "odcit": {
- "created": "2016-05-10T01:52:39.431+0000",
- "description": "A&AI DCAE Central Inventory",
- "ownerRole": "odcit_admin",
- "contacts": {"ws4361": {
- "created": "2016-05-10T01:52:39.431+0000",
- "fullName": "Wen Shang"
- }},
- "roles": {
- "odcit_admin": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "odcit123",
- "role": "admin",
- "roleComments": []
- },
- "odcit_user": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "odcit123",
- "role": "writer",
- "roleComments": []
- },
- "odcit_viewer": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "odcit123",
- "role": "reader",
- "roleComments": []
- }
- }
- },
- "dmaap": {
- "created": "2016-05-10T01:52:39.431+0000",
- "description": "DMAAP Databus Configuration",
- "ownerRole": "dmaap_admin",
- "contacts": {"dl715d": {
- "created": "2016-05-10T01:52:39.431+0000",
- "fullName": "Dominic Lunanuova"
- }},
- "roles": {
- "dmaap_admin": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dmaap123",
- "role": "admin",
- "roleComments": []
- },
- "dmaap_user": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dmaap123",
- "role": "writer",
- "roleComments": []
- },
- "dmaap_viewer": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dmaap123",
- "role": "reader",
- "roleComments": []
- }
- }
- },
- "dcae_inv": {
- "created": "2016-05-10T01:52:39.431+0000",
- "description": "Running DCAE Services",
- "ownerRole": "dcae_inv_admin",
- "contacts": {
- "mh677g": {
- "created": "2016-05-10T01:52:39.431+0000",
- "fullName": "Michael Hwang"
- }},
- "roles": {
- "dcae_inv_admin": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dcae_inv123",
- "role": "admin",
- "roleComments": []
- },
- "dcae_inv_user": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dcae_inv123",
- "role": "writer",
- "roleComments": []
- },
- "dcae_inv_viewer": {
- "created": "2016-05-10T01:52:39.431+0000",
- "password": "dcae_inv123",
- "role": "reader",
- "roleComments": []
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/isrw b/pgaas/src/stage/opt/app/pgaas/bin/isrw
deleted file mode 100755
index d9e925e..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/isrw
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin:/opt/java/jdk/jdk170/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin:$PATH
-
-if [ -f /var/run/postgresql/inmaintenance ]
-then
- echo "Maintenance"
-else
- case `show_pg_is_in_recovery` in
- *f* ) echo "Master" ;;
- *t* ) echo "Secondary" ;;
- esac
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/list_masters b/pgaas/src/stage/opt/app/pgaas/bin/list_masters
deleted file mode 100755
index a5e4506..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/list_masters
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# NAME
-# list_masters - loop through the nodes in the cluster, using pgwget to determine if any are a master.
-
-CDF=/opt/app/cdf
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-PATH=$PGDIR/bin:$CDF/bin:/opt/app/pgaas/bin:$PATH
-
-usage()
-{
- exec 1>&2
- [ $# -gt 0 ] && echo "$@"
- echo "Usage: $0 [-r] [-v]"
- echo -e " -r check /ro instead of /rw"
- echo -e " -v verbose"
- exit 1
-}
-
-VERBOSE=false
-CMD=rw
-QUIET=--quiet
-OUTPUT=-O/dev/null
-while getopts rvQ c
-do
- case "$c" in
- r ) CMD=ro ;;
- Q ) QUIET= OUTPUT= ;;
- v ) VERBOSE=: ;;
- \?) usage ;;
- esac
-done
-shift $(($OPTIND - 1))
-
-# loop through the nodes in the cluster, using pgwget to determine if any are a master. Save in $@
-for i in $(getpropvalue -n pgnodes | sed 's/|/ /g')
-do
- $VERBOSE && echo "Checking $i"
- if pgwget $QUIET $OUTPUT http://$i:8000/$CMD
- then set -- "$@" $i
- fi
-done
-
-echo "$@"
-case "$CMD" in
- rw )
- case $# in
- 1 ) exit 0 ;; # one master exists and is running
- 0 ) exit 1 ;; # no masters exist
- * ) exit 2 ;; # more than one master exist
- esac
- ;;
- ro )
- case $# in
- 0 ) exit 1 ;; # no masters exist
- * ) exit 0 ;; # one or more masters+secondaries exist
- esac
- ;;
-esac
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/makefile b/pgaas/src/stage/opt/app/pgaas/bin/makefile
deleted file mode 100644
index 3e08be0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-PYFILES= dcae_admin_db.py
-SHFILES= check_cluster isrw list_masters pg_copy \
- pg_ctl_promote pg_ctl_restart pg_ctl_start pg_ctl_status pg_ctl_stop repmgrc repmgrdc \
- runpsql runpsqll startpsql setpropvalue show_pg_is_in_recovery show_pg_stat_activity show_pg_stat_archiver show_pg_stat_bgwriter \
- show_pg_stat_database show_pg_stat_database_conflicts show_pg_statio_user_functions show_pg_statio_user_indexes \
- show_pg_statio_user_sequences show_pg_statio_user_tables show_pg_stat_user_indexes show_pg_stat_user_tables \
- update_var_run_isrw startbackup stopbackup
-
-stage:
- rm -rf $(STAGEDIR)/$(DISTPATH)/bin
- mkdir -p $(STAGEDIR)/$(DISTPATH)/bin
- for i in *; do \
- case $$i in \
- *.py ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/bin/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/bin/$$j; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- if [ -f $$i ]; then \
- cp $$i $(STAGEDIR)/$(DISTPATH)/bin/$$i; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/bin/$$i; \
- fi; \
- ;; \
- esac; \
- done
-
-NODES="uiopmno5qwpstg01.grant.example.com|uiopmno5qwpstg00.grant.example.com|uiopmno6qwpstg00.grant.example.com|uiopmno6qwpstg01.grant.example.com"
-
-test-admin:
- sudo -u postgres ./dcae_admin_db.py configurationChanged in.json
-
-test-gen:
- ./gen-repmgr-info -n $(NODES)
- ./gen-repmgr-info -S -L -n $(NODES)
- ./gen-repmgr-info -s uiopmno6qwpstg -n $(NODES)
- ./gen-repmgr-info -l uiopmno6qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -c uiopmno5qwpstg00.grant.example.com -n $(NODES)
- ./gen-repmgr-info -c uiopmno5qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -c uiopmno6qwpstg00.grant.example.com -n $(NODES)
- ./gen-repmgr-info -c uiopmno6qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -e uiopmno5qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -e uiopmno6qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -m -n $(NODES)
- ./gen-repmgr-info -C uiopmno5qwpstg00.grant.example.com -n $(NODES)
- ./gen-repmgr-info -C uiopmno5qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -C uiopmno6qwpstg00.grant.example.com -n $(NODES)
- ./gen-repmgr-info -C uiopmno6qwpstg01.grant.example.com -n $(NODES)
- ./gen-repmgr-info -p -n $(NODES)
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_copy b/pgaas/src/stage/opt/app/pgaas/bin/pg_copy
deleted file mode 100755
index ee2272b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_copy
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-# pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
-# pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
-
-usage()
-{
- exec 1>&2
- [ $# -gt 0 ] && echo "$@"
- b=$(basename $0)
- echo "Usage: $b [-v] -H fromhost [-P fromport] -U fromuser -D fromdb [-A | -S] -h tohost [-p toport] -h touser -d todb"
- echo "Copy a database from a one host to a another"
- echo -e "-H\tFQDN of host to copy from"
- echo -e "-P\tport of database being copied from"
- echo -e "-U\tUSER to login as on remote host being copied from"
- echo -e "-W\tPASSWORD to use to login as on remote host being copied from"
- echo -e "-D\tDB database on host to be copied from"
- echo -e "-A\tcopy data only"
- echo -e "-S\tcopy schema only"
- echo -e "-h\tFQDN of host to copy to"
- echo -e "-p\tport of database being copied to"
- echo -e "-u\tUSER to login as on host being copied to"
- echo -e "-w\tPASSWORD to use to login as on host being copied to"
- echo -e "-d\tDB database on host to be copied to"
- exit 1
-}
-
-REMOTEDATAONLY=
-REMOTESCHEMAONLY=
-REMOTEHOST=
-REMOTEPORT=
-REMOTEUSER=
-REMOTEPASSWORD=
-REMOTEDB=
-LOCALHOST=
-LOCALPORT=
-LOCALUSER=
-LOCALDB=
-LOCALPASSWORD
-
-while getopts ASH:P:U:W:D:h:p::u:w:d: c
-do
- case $c in
- A ) REMOTEDATAONLY=-a ;;
- S ) REMOTESCHEMAONLY=-s ;;
- H ) REMOTEHOST=$OPTARG ;;
- P ) REMOTEPORT=$OPTARG ;;
- U ) REMOTEUSER=$OPTARG ;;
- W ) REMOTEPASSWORD=$OPTARG ;;
- D ) REMOTEDB=$OPTARG;;
- h ) LOCALHOST=$OPTARG ;;
- p ) LOCALPORT=$OPTARG ;;
- u ) LOCALUSER=$OPTARG ;;
- w ) LOCALPASSWORD=$OPTARG ;;
- d ) LOCALDB=$OPTARG;;
- esac
-done
-
-
-[ -z "$REMOTEHOST" ] && usage "Missing -H option"
-[ -z "$REMOTEPORT" ] && usage "Missing -P option"
-[ -z "$REMOTEUSER" ] && usage "Missing -U option"
-[ -z "$REMOTEDB" ] && usage "Missing -D option"
-[ -z "$REMOTEPASSWORD" ] && usage "Missing -W option"
-[ -z "$LOCALHOST" ] && usage "Missing -h option"
-[ -z "$LOCALPORT" ] && usage "Missing -p option"
-[ -z "$LOCALUSER" ] && usage "Missing -u option"
-[ -z "$LOCALPASSWORD" ] && usage "Missing -w option"
-[ -z "$LOCALDB" ] && usage "Missing -d option"
-[ -n "$REMOTEDATAONLY" -a -n "$REMOTESCHEMAONLY" ] && usage "Either -A or -S may be specified, but not both"
-
-PGPASSWORD="$REMOTEPASSWORD" pg_dump -C $REMOTEDATAONLY $REMOTESCHEMAONLY -h $REMOTEHOST -U $REMOTEUSER $REMOTEDB |
-PGPASSWORD="$LOCALPASSWORD" psql -h $LOCALHOST -U $LOCALUSER $LOCALDB
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_promote b/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_promote
deleted file mode 100755
index c976afa..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_promote
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-pg_ctl promote -D /dbroot/pgdata/main/
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_restart b/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_restart
deleted file mode 100755
index 6929d60..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_restart
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-CONF=/opt/app/pgaas/main/postgresql.conf
-if [ ! -f $CONF ]
-then echo "$0: Cannot find PostgreSQL configuration" 1>&2; exit 1
-fi
-
-pg_ctl stop -D /dbroot/pgdata/main/
-echo Restarting in 5
-sleep 1
-echo Restarting in 4
-sleep 1
-echo Restarting in 3
-sleep 1
-echo Restarting in 2
-sleep 1
-echo Restarting in 1
-sleep 1
-pg_ctl start -D /dbroot/pgdata/main/ -o "-c config_file=$CONF"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_start b/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_start
deleted file mode 100755
index 42117df..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_start
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-CONF=/opt/app/pgaas/main/postgresql.conf
-if [ ! -f $CONF ]
-then echo "$0: Cannot find PostgreSQL configuration" 1>&2; exit 1
-fi
-
-pg_ctl start -D /dbroot/pgdata/main/ -o "-c config_file=$CONF"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_status b/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_status
deleted file mode 100755
index 3383835..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_status
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-pg_ctl status -D /dbroot/pgdata/main/
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_stop b/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_stop
deleted file mode 100755
index b6c3563..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pg_ctl_stop
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-pg_ctl stop -D /dbroot/pgdata/main/
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pgaas-verify-install b/pgaas/src/stage/opt/app/pgaas/bin/pgaas-verify-install
deleted file mode 100644
index 607c8a7..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pgaas-verify-install
+++ /dev/null
@@ -1,240 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-die()
-{
- exec 1>&2
- echo "$@"
- logger --stderr --priority local1.error --tag "DCAE" "$@"
- exit 1
-}
-
-usage()
-{
- exec 1>&2
- [ $# -gt 0 ] && echo "$@"
- b=$(basename $0)
- echo "Usage: $b [-v]"
- echo "$b runs a variety of tests on the PG VM and database"
- echo "It should be run as root or postgres."
- echo "If run as root, it will do additional tests that are"
- echo "not possible as a normal user. If not run as root or"
- echo "postgres, other tests may fail."
- echo " -v verbose"
- echo " -P do not print VERIFIED"
- exit 1
-}
-
-PRINTVERIFIED=:
-while getopts Pv c
-do
- case $c in
- P ) PRINTVERIFIED=false ;;
- v ) set -x ;;
- '?' ) usage ;;
- esac
-done
-shift `expr $OPTIND - 1`
-
-# this can be run as root
-ROOT=false
-case `id` in
- *"(root)"* ) ROOT=true ;;
- *"(postgres)"* ) ;;
- * ) echo "$0 should be run as either root or postgres" ;;
-esac
-
-VERIFIEDCOUNT=0
-FAILEDCOUNT=0
-TOTALCOUNT=0
-
-verified()
-{
- (( VERIFIEDCOUNT = VERIFIEDCOUNT + 1 ))
- (( TOTALCOUNT = TOTALCOUNT + 1 ))
- $PRINTVERIFIED && echo "VERIFIED: $@"
-}
-
-failed()
-{
- (( FAILEDCOUNT = FAILEDCOUNT + 1 ))
- (( TOTALCOUNT = TOTALCOUNT + 1 ))
- echo "FAILED: $@"
-}
-
-tabtext()
-{
- echo "$@" | sed 's/^/ /'
-}
-
-HOSTNAME=$(hostname -f)
-
-################################################################
-################ things set up by ################
-################ openstack ################
-################################################################
-
-case $HOSTNAME in
- *.*.* ) verified "hostname has a FQDN" ;;
- * ) failed "hostname does not have a FQDN" ;;
-esac
-
-################################################################
-################ things set up by ################
-################ controller dcae_install ################
-################################################################
-
-#### user dcae is no longer used
-#### if grep '^dcae:' /etc/passwd > /dev/null
-#### then verified "dcae user exists"
-#### else failed "dcae user does not exist"
-#### fi
-#### if $ROOT
-#### then
-#### if [ -s /etc/sudoers.d/dcae-postgres ]
-#### then verified "dcae can sudo to postgres"
-#### else failed "dcae cannot sudo to postgres"
-#### fi
-#### fi
-
-SHOWDF=false
-SHOWMOUNT=false
-for i in /opt/tools /opt/logs /dbroot/pgdata /dbroot/pglogs /dbroot/pgbackup
-do
- if df -h 2>&1 | grep " $i"'$' > /dev/null
- then verified "$i has its own filesystem"
- else failed "$i does not have its own filesystem"; SHOWDF=true
- fi
-
- if mount | grep "^$i " | grep rw > /dev/null
- then verified "$i is on a read-write filesystem"
- else failed "$i is not on a read-write filesystem"; SHOWMOUNT=true
- fi
-done
-$SHOWDF && tabtext "$(df -h 2>&1)"
-$SHOWMOUNT && tabtext "$(mount 2>&1)"
-
-if grep '^postgres:' /etc/passwd > /dev/null
-then verified "postgres user exists"
-else failed "postgres user does not exist"
-fi
-
-################################################################
-################ things set up by ################
-################ cdf package ################
-################################################################
-
-if [ -d /opt/app/cdf ]
-then verified "/opt/app/cdf is present"
-else failed "/opt/app/cdf is present"
-fi
-
-cdfcall=$(/opt/app/cdf/bin/getpropvalue -n foo 2>&1)
-case "$cdfcall" in
- *Configuration?property*must?be?defined* ) verified "CDF is installed and working" ;;
- * ) failed "CDF is not installed and working"; tabtext "$cdfcall" ;;
-esac
-
-################################################################
-################ things set up by ################
-################ pgaas-prep step ################
-################################################################
-
-if grep "^pgnodes=.*$HOSTNAME" /opt/app/cdf/lib/cdf.cfg > /dev/null
-then verified "HOSTNAME is part of cluster (cdf.cfg pgnodes)"
-else failed "HOSTNAME is not part of cluster (cdf.cfg pgnodes)"
-fi
-
-# check for certificate presence goes here
-
-if [ -s /lib/systemd/system/pgaas-idns.service ]
-then verified "found pgaas-idns service properly installed for Ubuntu 16"
-elif [ -s /etc/init/pgaas-idns.conf ]
-then verified "found pgaas-idns service properly installed for Ubuntu 14"
-else failed "pgaas-idns service has not been installed properly"
-fi
-
-if ps -ef | grep '[i]DNS-responder' > /dev/null
-then verified "iDNS-responder is running"
- if ps -fu postgres | grep '[i]DNS-responder' > /dev/null
- then verified "iDNS-responder is running as postgres"
- else failed "iDNS-responder is running, but not as postgres"
- fi
-else failed "postgres does not have a logger process running"
-fi
-
-if [ -d /var/run/postgresql ]
-then verified "/var/run/postgresql exists"
-else failed "/var/run/postgresql does not exist"
-fi
-
-if [ -s /etc/logrotate.d/pgaas ]
-then verified "/etc/logrotate.d/pgaas has been installed"
-else failed "/etc/logrotate.d/pgaas has not been installed"
-fi
-
-
-################################################################
-################ things set up by ################
-################ pgaas-config step ################
-################################################################
-
-if ps -fu postgres | grep "[p]ostgres: logger process" > /dev/null
-then verified "postgres is running"
-else failed "postgres does not have a logger process running"
-fi
-
-if pgrep repmgrd > /dev/null
-then verified "repmgrd is running"
-else failed "repmgrd is not running"
-fi
-
-if [ -f /opt/app/pgaas/bin/runpsqll ]
-then
- verified "/opt/app/pgaas/bin/runpsqll is installed"
- roles=$( /opt/app/pgaas/bin/runpsqll "select rolname from pg_roles" )
- case "$roles" in
- *repmgr* ) verified "postgres repmgr role name is present" ;;
- * ) failed "postgres repmgr role name was not added"; tabtext "$roles" ;;
- esac
- rolcount=$( /opt/app/pgaas/bin/runpsqll "select count(rolname) from pg_roles" | awk 'NF > 0 {print $1}' )
- case $rolcount in
- 1 | 2 ) failed "no additional postgresql role names have been added"; tabtext "$roles" ;;
- * ) verified "additional postgresql role names have been added" ;;
- esac
- dxpgtemporal=$( /opt/app/pgaas/bin/runpsqll "select count(extname) from pg_extension where extname = 'temporal_tables'" | awk 'NF > 0 {print $1}' )
- case $dxpgtemporal in
- 1 ) verified "temporal_tables extension has been added" ;;
- * ) failed "temporal_tables extension has not been added" ;;
- esac
-else
- failed "/opt/app/pgaas/bin/runpsqll is not installed"
-fi
-
-if [ -f /opt/app/pgaas/bin/check_cluster ]
-then
- verified "/opt/app/pgaas/bin/check_cluster is installed"
- ckcl=$( /opt/app/pgaas/bin/check_cluster 2>&1 )
- case $ckcl in
- *No?such?file?or?directory* ) failed "check_cluster not found"; tabtext "$ckcl" ;;
- *ERROR* ) failed "check_cluster returned error:"; tabtext "$ckcl" ;;
- *WARNING* ) failed "check_cluster returned a warning:"; tabtext "$ckcl" ;;
- * ) verified "check_cluster succeeded" ;;
- esac
-else
- failed "/opt/app/pgaas/bin/check_cluster is not installed"
-fi
-
-echo "$VERIFIEDCOUNT tests passed, $FAILEDCOUNT tests failed, $TOTALCOUNT total tests run"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/pgwget b/pgaas/src/stage/opt/app/pgaas/bin/pgwget
deleted file mode 100644
index d1d5f98..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/pgwget
+++ /dev/null
@@ -1,4 +0,0 @@
-# this command is used to access the iDNS status server running on a PGaaS instance
-
-wgetpswd=`/opt/app/cdf/bin/getpropvalue -x -n wgetpswd`
-wget --http-user=pgaas --http-password=$wgetpswd "$@"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/repmgrc b/pgaas/src/stage/opt/app/pgaas/bin/repmgrc
deleted file mode 100644
index 8ce6ebf..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/repmgrc
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-CONF=/opt/app/pgaas/main/repmgr.conf
-if [ ! -f $CONF ]
-then echo "$0: Cannot find repmgr configuration" 1>&2; exit 1
-fi
-
-repmgr -f $CONF "$@"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/repmgrd-status-changes b/pgaas/src/stage/opt/app/pgaas/bin/repmgrd-status-changes
deleted file mode 100644
index a735db5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/repmgrd-status-changes
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# %n - node ID
-# %e - event type
-# %s - success (1 or 0)
-# %t - timestamp
-# %d - details
-
-nodeID="$1"
-eventType="$2"
-success="$3"
-timestamp="$4"
-details="$5"
-
-LOG=/opt/logs/dcae/postgresql/server/repmgrstatus.log
-PROMOTIONLOG=/var/run/postgresql/repmgr-promotion
-echo `date` "$@" >> $LOG
-
-# The following event types are available:
-# master_register
-# standby_register
-# standby_unregister
-# standby_clone
-# standby_promote
-# standby_follow
-# standby_switchover
-# standby_disconnect_manual
-# witness_create
-# witness_register
-# witness_unregister
-# repmgrd_start
-# repmgrd_shutdown
-# repmgrd_failover_promote
-# repmgrd_failover_follow
-
-case "$eventType" in
- standby_promote )
- if [ "$success" -eq 1 ]
- then echo $(date +%Y%m%d%H%M%S) "$@" >> $PROMOTIONLOG
- fi
-esac
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/repmgrdc b/pgaas/src/stage/opt/app/pgaas/bin/repmgrdc
deleted file mode 100644
index 2831ed0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/repmgrdc
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin
-
-CONF=/opt/app/pgaas/main/repmgr.conf
-if [ ! -f $CONF ]
-then echo "$0: Cannot find repmgr configuration" 1>&2; exit 1
-fi
-
-repmgrd -f $CONF "$@"
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/runpsql b/pgaas/src/stage/opt/app/pgaas/bin/runpsql
deleted file mode 100755
index fcb1196..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/runpsql
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin:/opt/java/jdk/jdk170/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin
-
-[ -z "$PGUSER" ] && PGUSER=postgres
-[ -z "$PGHOST" ] && PGHOST=`hostname -f`
-[ -z "$PGDBNM" ] && PGDBNM=postgres
-echo "$@;" |
-psql --host=$PGHOST --username=$PGUSER --dbname=$PGDBNM
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/runpsqll b/pgaas/src/stage/opt/app/pgaas/bin/runpsqll
deleted file mode 100755
index 864fbf8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/runpsqll
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin:/opt/java/jdk/jdk170/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin
-
-[ -z "$PGUSER" ] && PGUSER=postgres
-[ -z "$PGHOST" ] && PGHOST=`hostname -f`
-[ -z "$PGDBNM" ] && PGDBNM=postgres
-echo "$@;" |
-psql --tuples-only --host=$PGHOST --username=$PGUSER --dbname=$PGDBNM
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/setpropvalue b/pgaas/src/stage/opt/app/pgaas/bin/setpropvalue
deleted file mode 100755
index 2b45fa8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/setpropvalue
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-die()
-{
- exec 1>&2
- echo "$@"
- exit 1
-}
-
-usage()
-{
- exec 1>&2
- [ $# -gt 0 ] && echo "$@"
- echo "Usage: $0 -n name -v value [-x]"
- echo " -n\tname to configure"
- echo " -v\tvalue to set"
- echo " -x\tencrypt the value"
- exit 1
-}
-
-NAME=
-VAL=
-ENCRYPT=false
-FILE=/opt/app/pgaas/lib/pgaas.cfg
-
-while getopts f:n:v:x c
-do
- case "$c" in
- f ) FILE=$OPTARG ;;
- n ) NAME=$OPTARG ;;
- v ) VAL=$OPTARG ;;
- x ) ENCRYPT=true ;;
- \?) usage ;;
- esac
-done
-shift $(($OPTIND - 1))
-
-[ -n "$NAME" ] || die "-n name is required"
-[ -n "$VAL" ] || die "-v value is required"
-[ -f "$FILE" -a -w "$FILE" ] || die "-f file must exist and be writable"
-
-ed $FILE <<-!
- H
- g/^$NAME[=]/d
- g/^$NAME[.]x=/d
- w
- q
-!
-
-if $ENCRYPT
-then /opt/app/cdf/bin/getpropvalue -e AES -n $NAME -v $VAL >> $FILE
-else echo "$NAME='$VAL'" >> $FILE
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_is_in_recovery b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_is_in_recovery
deleted file mode 100755
index b26904d..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_is_in_recovery
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsqll "select * from pg_is_in_recovery()"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_activity b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_activity
deleted file mode 100755
index d9f43c8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_activity
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_activity"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_archiver b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_archiver
deleted file mode 100755
index fac0bdb..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_archiver
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_archiver"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_bgwriter b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_bgwriter
deleted file mode 100755
index cf6d01a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_bgwriter
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_bgwriter"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database
deleted file mode 100755
index c74316e..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_database"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database_conflicts b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database_conflicts
deleted file mode 100755
index 73d47bd..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_database_conflicts
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_database_conflicts"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_indexes b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_indexes
deleted file mode 100755
index 9ff29d9..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_indexes
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_user_indexes"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_tables b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_tables
deleted file mode 100755
index 5eb1393..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_stat_user_tables
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_stat_user_tables"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_functions b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_functions
deleted file mode 100755
index dfaf570..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_functions
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_statio_user_functions"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_indexes b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_indexes
deleted file mode 100755
index 6ec3043..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_indexes
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_statio_user_indexes"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_sequences b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_sequences
deleted file mode 100755
index 9d658e4..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_sequences
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_statio_user_sequences"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_tables b/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_tables
deleted file mode 100755
index 4017988..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/show_pg_statio_user_tables
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-export PATH=/opt/app/pgaas/bin:$PATH
-
-runpsql "select * from pg_statio_user_tables"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/start_maintenance_mode b/pgaas/src/stage/opt/app/pgaas/bin/start_maintenance_mode
deleted file mode 100644
index 47bb37e..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/start_maintenance_mode
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-PATH=/opt/app/pgaas/bin:$PATH
-
-INMAINTENANCE=/var/run/postgresql/inmaintenance
-ISRW=/var/run/postgresql/isrw
-
-if [ -f $INMAINTENANCE ]
-then
- echo "Already in maintenance mode" 1>&2
- exit 1
-fi
-
-case `< $ISRW` in
- Master ) echo "This is a Master system. It cannot be set to maintenance mode" 1>&2
- exit 2
- ;;
-esac
-
-echo "Setting maintenance mode"
-echo inmaintenance > $INMAINTENANCE
-
-echo "Shutting down the PostgreSQL server"
-pg_ctl_stop
-
-# the following loop is to allow iDNS to get a chance to mark this system as being down
-echo "Sleeping for 20 seconds"
-for i in `seq 20`
-do
- echo -n " $i"
-done
-echo " Done"
-
-
-
-
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/startpsql b/pgaas/src/stage/opt/app/pgaas/bin/startpsql
deleted file mode 100644
index 9e5c5b4..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/startpsql
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin:/opt/java/jdk/jdk170/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin
-
-[ -z "$PGUSER" ] && PGUSER=postgres
-[ -z "$PGHOST" ] && PGHOST=`hostname -f`
-[ -z "$PGDBNM" ] && PGDBNM=postgres
-
-psql --host=$PGHOST --username=$PGUSER --dbname=$PGDBNM
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/stop_maintenance_mode b/pgaas/src/stage/opt/app/pgaas/bin/stop_maintenance_mode
deleted file mode 100644
index 5d0b8d1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/stop_maintenance_mode
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-PATH=/opt/app/pgaas/bin:$PATH
-
-INMAINTENANCE=/var/run/postgresql/inmaintenance
-
-if [ ! -f $INMAINTENANCE ]
-then
- echo "Not in maintenance mode" 1>&2
- exit 1
-fi
-
-echo "Restarting PostgreSQL server"
-pg_ctl_start
-echo "Returning server to normal rotation"
-rm -f $INMAINTENANCE
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/update_var_run_isrw b/pgaas/src/stage/opt/app/pgaas/bin/update_var_run_isrw
deleted file mode 100755
index 7b51b30..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/update_var_run_isrw
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-
-export PATH=$PATH:$PGDIR/bin:/opt/java/jdk/jdk170/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin
-
-for i in 1 2 3 4 5 6
-do
- isrw > /var/run/postgresql/isrw.tmp 2>&1 &&
- mv /var/run/postgresql/isrw.tmp /var/run/postgresql/isrw
- sleep 10
-done
diff --git a/pgaas/src/stage/opt/app/pgaas/bin/verify_pg_privileges b/pgaas/src/stage/opt/app/pgaas/bin/verify_pg_privileges
deleted file mode 100755
index 628b63d..0000000
--- a/pgaas/src/stage/opt/app/pgaas/bin/verify_pg_privileges
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-defdbname="test"
-defprefix="tst"
-dbname="$defdbname"
-prefix="$defprefix"
-
-usage()
-{
- exec 1>&2
- [ -n $# ] && echo " $@"
- echo "Usage: $0 -A pswd -U pswd -V pswd [-d dbname] [-p prefix] [-P] [-v]"
- echo " -d dbname - database name, defaults to '$defdbname'"
- echo " -p prefix - prefix of usernames, defaults to '$defprefix'"
- echo " -A pswd - password for admin role"
- echo " -U pswd - password for user role"
- echo " -V pswd - password for viewer role"
- echo " -v verbose"
- echo " -P do not print VERIFIED"
- exit 1
-}
-
-PRINTVERIFIED=:
-VERBOSE=false
-PSWDA=
-PSWDU=
-PSWDV=
-while getopts A:d:p:PU:vV: c
-do
- case $c in
- A ) PSWDA="$OPTARG" ;;
- d ) dbname="$OPTARG" ;;
- p ) prefix="$OPTARG" ;;
- P ) PRINTVERIFIED=false ;;
- U ) PSWDU="$OPTARG" ;;
- v ) VERBOSE=: ;;
- V ) PSWDV="$OPTARG" ;;
- '?' ) usage ;;
- esac
-done
-shift `expr $OPTIND - 1`
-
-[ -n "$PSWDA" ] || usage "-A is missing"
-[ -n "$PSWDU" ] || usage "-U is missing"
-[ -n "$PSWDV" ] || usage "-V is missing"
-
-admin="${prefix}_admin"
-user="${prefix}_user"
-viewer="${prefix}_viewer"
-
-TMP1=$(mktemp /tmp/vpp1.$$.XXXXXXXXXX)
-TMP2=$(mktemp /tmp/vpp2.$$.XXXXXXXXXX)
-trap 'rm -f $TMP1 $TMP2' 0 1 2 3 15
-
-VERIFIEDCOUNT=0
-FAILEDCOUNT=0
-TOTALCOUNT=0
-
-verified()
-{
- (( VERIFIEDCOUNT = VERIFIEDCOUNT + 1 ))
- (( TOTALCOUNT = TOTALCOUNT + 1 ))
- $PRINTVERIFIED && echo "VERIFIED: $@"
-}
-
-failed()
-{
- (( FAILEDCOUNT = FAILEDCOUNT + 1 ))
- (( TOTALCOUNT = TOTALCOUNT + 1 ))
- echo "FAILED: $@"
-}
-
-tabtext()
-{
- echo "$@" | sed 's/^/ /'
-}
-
-tabfile()
-{
- sed 's/^/ /' "$@"
-}
-
-runtests()
-{
- name="$1"
- pswd="$2"
- while read cmd; read expected
- do
- echo "$cmd" | psql --host=localhost --dbname="$dbname" --username="$name" > $TMP1 2>&1
- if fgrep "$expected" $TMP1 > /dev/null
- then verified "user $name executed $cmd, expected $expected"
- $VERBOSE && echo -e "\tGot:" && tabfile "$TMP1"
- else failed "user $name executed $cmd, expected $expected, got:"; tabfile $TMP1
- fi
- done
-}
-
-psql --host=localhost --dbname="$dbname" --username="$admin" <<EOF > /dev/null
- drop table if exists foo;
- drop table if exists foou;
- drop table if exists fooud;
- drop table if exists foouc;
- drop table if exists foov;
- drop table if exists foovd;
- drop table if exists foovc;
-EOF
-
-# tests to be run as admin user
-cat <<-EOF > $TMP2
- create table foo ( fooint int ); /* table for admin to add and drop */
- CREATE TABLE
- insert into foo (fooint) values (1); /* admin can add values */
- INSERT 0 1
- select count(*) from foo; /* admin can select */
- (1 row)
- delete from foo where fooint = '1'; /* admin can delete */
- DELETE 1
- select * from foo; /* admin can select */
- (0 rows)
- drop table foo; /* admin can drop */
- DROP TABLE
- create table foou (fooint int ); /* table for user to add/delete to */
- CREATE TABLE
- create table fooud (fooint int ); /* table for user to try dropping */
- CREATE TABLE
- create table foov (fooint int ); /* table for viewer to try adding/deleting from */
- CREATE TABLE
- create table foovd (fooint int ); /* table for viewer to try dropping */
- CREATE TABLE
-EOF
-runtests "$admin" "$PWDA" < $TMP2
-
-# tests to be run as writer
-cat <<-EOF > $TMP2
- create table foouc ( fooint int ); /* user cannot create a table */
- ERROR:
- drop table fooud; /* user cannot drop a table */
- ERROR:
- insert into foou (fooint) values (1); /* user can add values */
- INSERT 0 1
- select count(*) from foou; /* user can select values */
- (1 row)
- insert into foou (fooint) values (2); /* user can add values */
- INSERT 0 1
- select * from foou; /* user can select values */
- (2 rows)
- delete from foou where fooint = '2'; /* user can delete values */
- DELETE 1
- select * from foou; /* user can select values */
- (1 row)
-EOF
-runtests "$user" "$PWDU" < $TMP2
-
-# tests to be run as read-only
-cat <<-EOF > $TMP2
- create table foovc ( fooint int ); /* user cannot create a table */
- ERROR:
- drop table foovd; /* user cannot drop a table */
- ERROR:
- insert into foov (fooint) values (1); /* user can add values */
- ERROR:
- select count(*) from foov; /* user can select values */
- (1 row)
- insert into foov (fooint) values (2); /* user can add values */
- ERROR:
- select * from foov; /* user can select values */
- (0 rows)
- delete from foov where fooint = '2'; /* user can delete values */
- ERROR:
- select * from foov; /* user can select values */
- (0 rows)
-EOF
-runtests "$viewer" "$PWDV" < $TMP2
-
-echo "$VERIFIEDCOUNT tests passed, $FAILEDCOUNT tests failed, $TOTALCOUNT total tests run"
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/common-db-tasks b/pgaas/src/stage/opt/app/pgaas/etc/common-db-tasks
deleted file mode 100644
index 517fabd..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/common-db-tasks
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-# set up ~/.pgpass
-$CFGDIR/etc/gen-pgpass
-# set up repmgr.conf
-$CFGDIR/etc/gen-repmgr.conf
-
-# We don't really need to save pwd.cfg anymore since we are now forcing the password.
-# PWDCFG=$DBROOT/../pgaas/pwd.cfg
-# egrep '^Global_Title|^postgres|^repmgr' ${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg > $PWDCFG
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-
-sed -e "s!%CFGDIR%!$CFGDIR!" < postgresql.conf.orig > postgresql.conf || die "Cannot cp postgresql.conf"
-sed -e "s!%CFGDIR%!$CFGDIR!" < pg_hba.conf.orig > pg_hba.conf || die "Cannot cp pg_hba.conf"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-master b/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-master
deleted file mode 100644
index dcbbf46..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-master
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-DBROOT=/dbroot/pgdata/main
-CDFCFG=${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg
-
-# We don't really need to save pwd.cfg anymore since we are now forcing the password.
-# PWDCFG=$DBROOT/../pgaas/pwd.cfg
-# if the DB already exists in Cinder storage, grab the password from there for use elsewhere
-# if [ -s $PWDCFG -a $( egrep '^Global_Title' < $PWDCFG ) -eq 1 ]
-# then
-# TMP=$(mktemp /tmp/tmp.ccm.XXXXXXXXXX)
-# trap 'rm -f $TMP' 0 1 2 3 15
-# egrep -v '^Global_Title|^postgres|^repmgr' $CDFCFG > $TMP
-# egrep '^Global_Title|^postgres|^repmgr' $PWDCFG | cat $TMP - > $CDFCFG
-# fi
-
-# generate a 64 hex random value (256 bits of randomness) for the passwords
-if grep '^postgres' $CDFCFG > /dev/null
-then :
-else
- val2=
- # if .pgpass has a password for postgres, keep it
- # *:*:*:postgres:4069b81b26cb01e064e242611c36e67a50f11a3d0dbe1f05d9b9aaedf2cadab1
- PGPASS=~postgres/.pgpass
- if [ -f $PGPASS ]
- then val2=$( grep :postgres: $PGPASS | sed 's/^.*://' )
- fi
- if [ -z "$val2" ]
- then
- val2=$(dd if=/dev/urandom count=1 ibs=32 2>/dev/null | od -x -w1000 | sed -e 's/^0000000 //' -e 's/ //g' -e 1q)
- fi
- echo "ENCRYPTME.AES.postgres=$val2" | ${INSTALL_ROOT}/opt/app/cdf/bin/setencryptedvalues >> $CDFCFG
-fi
-if grep '^repmgr' $CDFCFG > /dev/null
-then :
-else
- val2=$(dd if=/dev/urandom count=1 ibs=32 2>/dev/null | od -x -w1000 | sed -e 's/^0000000 //' -e 's/ //g' -e 1q)
- echo "ENCRYPTME.AES.repmgr=$val2" | ${INSTALL_ROOT}/opt/app/cdf/bin/setencryptedvalues >> $CDFCFG
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-secondary b/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-secondary
deleted file mode 100644
index 78c35f9..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-cdf-secondary
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$MASTER" ] || die "MASTER is not set"
-
-umask 077
-TMP=$( mktemp /tmp/tmp.ccs1.XXXXXXXXXX )
-trap 'rm -f $TMP' 0 1 2 3 15
-
-bwget()
-{
- ${INSTALL_ROOT}/opt/app/pgaas/bin/pgwget --progress=dot:giga "$@"
-}
-
-done=
-max=40
-for s in `seq $max`
-do
- echo "$s of $max: Waiting for master $MASTER to send cdf.cfg"
- bwget -O$TMP http://$MASTER:8000/getcdf/`hostname -f`
- ls -l $TMP
- if [ -s $TMP ]
- then
- msg=$(cat $TMP)
- case "$msg" in
- OK* )
- echo "Received cdf.cfg"
- done=yes
- break
- ;;
- * ) echo "Received invalid cdf: $msg"
- ;;
- esac
- fi
- rm -f $TMP
- sleep 15
-done
-[ "$done" = "yes" ] || die "Master did not send cdf.cfg"
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-db-backup b/pgaas/src/stage/opt/app/pgaas/etc/create-db-backup
deleted file mode 100644
index d6e856b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-db-backup
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found
-fi
-
-$PGDIR/bin/psql <<-EOF
- SELECT pg_start_backup('backup');
-EOF
-
-cd /dbroot/pgdata &&
-{
- find main | grep -v main/pg_xlog/
- find main/pg_xlog -type d
-} | cpio -oc | gzip > main.cpio.gz.$$ && mv main.cpio.gz.$$ main.cpio.gz
-
-$PGDIR/bin/psql <<-EOF
- SELECT pg_stop_backup();
-EOF
-echo /dbroot/pgdata/main.cpio.gz created
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-db-master b/pgaas/src/stage/opt/app/pgaas/etc/create-db-master
deleted file mode 100644
index eb8fca3..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-db-master
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# create a master database
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$CFGDIR/etc:$PGDIR/bin:$PATH
-
-umask 077
-TMP=$(mktemp /tmp/tmp.cdm.XXXXXXXXXX)
-trap 'rm -f $TMP' 0 1 2 3 15
-
-rm -rf $DBROOT/* # initdb fails if the directory is not totally empty
-pswd=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -x -n postgres )
-echo "$pswd" > $TMP
-$PGDIR/bin/initdb -D $DBROOT --pwfile=$TMP
-rm -f $TMP
-
-$CFGDIR/etc/start-db
-sleep 30
-
-# create temporal tables and other extensions, if needed
-$CFGDIR/etc/create-extensions
-
-# create repmgr user/db, if needed
-$CFGDIR/etc/create-repmgr-user
-
-sleep 10
-
-# register as master
-repmgr -f $CFGDIR/main/repmgr.conf master register
-echo repmgr ret=$?
-
-sleep 10
-
-# start repmgrd
-# start repmgrd (verbose logging for testing)
-umask 07
-repmgrd -f $CFGDIR/main/repmgr.conf -d --verbose
-echo repmgrd ret=$?
-# start repmgrd (normal logging)
-# repmgrd -f $CFGDIR/main/repmgr.conf -d
-
-
-# NO LONGER NEEDED $CFGDIR/etc/create-db-backup
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-db-secondary b/pgaas/src/stage/opt/app/pgaas/etc/create-db-secondary
deleted file mode 100644
index a0cc8e3..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-db-secondary
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# create a secondary database
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$MASTER" ] || die "MASTER is not set"
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$CFGDIR/etc:$PGDIR/bin:$PATH
-
-bwget()
-{
- ${INSTALL_ROOT}/opt/app/pgaas/bin/pgwget --progress=dot:giga "$@"
-}
-
-umask 077
-TMP=$(mktemp /tmp/tmp.cds1.XXXXXXXXXX)
-TMP2=$(mktemp /tmp/tmp.cds2.XXXXXXXXXX)
-trap 'rm -f $TMP $TMP2' 0 1 2 3 15
-
-# wait until master DB is active and has repmgr available
-max=40
-for s in `seq $max`
-do
- echo "$s of $max: Asking master $MASTER if repmgr is ready"
- bwget -O$TMP http://$MASTER:8000/hasrepmgr
- ls -l $TMP
- if [ -s $TMP ]
- then
- msg=$(cat $TMP)
- case $msg in
- OK* )
- echo "Master has repmgr ready"
- done=yes
- break
- ;;
- * )
- echo "Master does not have repmgr ready, msg=$msg"
- ;;
- esac
- fi
- rm -f $TMP
- sleep 15
-done
-[ "$done" = "yes" ] || die "Master never had repmgr available"
-
-
-# clone database from master
-
-# make sure /dbroot/pgdata/main is empty
-mv $DBROOT $DBROOT-$(date +%Y%m%d%H%M%S)
-mkdir -p $DBROOT
-# rm -rf $DBROOT/*
-
-repmgr -v -h $MASTER -U repmgr -d repmgr -D $DBROOT -f $CFGDIR/main/repmgr.conf --ignore-external-config-files standby clone
-
-if [ ! -f $DBROOT/PG_VERSION ]
-then
- umask 022
- cat /opt/logs/dcae/postgresql/server/repmgr.log >> /tmp/pgaas-failures
- die repmgr clone failed
-fi
-
-$CFGDIR/etc/start-db
-
-sleep 10
-
-# register as standby
-repmgr -f $CFGDIR/main/repmgr.conf standby register
-echo repmgr ret=$?
-sleep 10
-
-# start repmgrd
-# start repmgrd (verbose logging for testing)
-umask 07
-
-# wait until repmgrd starts up
-max=20
-REPLOG=/opt/logs/dcae/postgresql/server/repmgr.log
-done=no
-for s in `seq $max`
-do
- cat $REPLOG > $TMP
- repmgrd -f $CFGDIR/main/repmgr.conf -d --verbose
- # start repmgrd (normal logging)
- # repmgrd -f $CFGDIR/main/repmgr.conf -d
- echo repmgrd ret=$?
- sleep 5
- diff $TMP $REPLOG | grep "ERROR.*terminating" > $TMP2
- if [ -s "$TMP2" ]
- then cat "$TMP2"
- else done=yes; break
- fi
- sleep 10
-done
-[ "$done" = "yes" ] || die "Secondary never started repmgrd"
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-extensions b/pgaas/src/stage/opt/app/pgaas/etc/create-extensions
deleted file mode 100644
index 70306a6..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-extensions
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$PGDIR/bin:$PATH
-
-TMP=$(mktemp /tmp/tmp.ce.XXXXXXXXXX)
-trap 'rm -f $TMP' 0 1 2 3 15
-
-echo "select datname from pg_database;" | psql --tuples-only | sed -e 's/^ *//' -e '/^$/d' -e '/^template0$/d' -e '/^repmgr$/d' > $TMP
-
-for db in $(< $TMP)
-do
- # enable temporal tables for use
- if [ -f /opt/app/postgresql-9.5.2/lib/temporal_tables.so ]
- then
- psql --dbname=$db <<-EOF
- CREATE EXTENSION temporal_tables;
- EOF
- else
- echo "$0: temporal_tables extension is not installed"
- fi
-
- # and other extensions
- psql --dbname=$db <<-EOF
- CREATE EXTENSION hstore;
- CREATE EXTENSION pgcrypto;
- EOF
-done
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-repmgr-user b/pgaas/src/stage/opt/app/pgaas/etc/create-repmgr-user
deleted file mode 100644
index 35ca401..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-repmgr-user
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$PGDIR/bin:${INSTALL_ROOT}/opt/app/cdf/bin:$PATH
-pswd=$( getpropvalue -x -n repmgr )
-
-# note: The "pgaas" in "repmgr_pgaas" must match the cluster name used in repmgr.conf
-
-psql <<-EOF
- CREATE ROLE repmgr SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
- DROP DATABASE repmgr;
- CREATE DATABASE repmgr OWNER repmgr;
- ALTER USER repmgr PASSWORD '$pswd';
- ALTER USER repmgr SET search_path TO repmgr_pgaas, "\$user", public;
-EOF
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-master b/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-master
deleted file mode 100644
index 5565041..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-master
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-umask 077
-mkdir -p ~postgres/.ssh
-chmod 700 ~postgres/.ssh
-
-PGAASDIR=/dbroot/pgdata/pgaas
-if [ -f $PGAASDIR/id_rsa.pub -a -f $PGAASDIR/id_rsa -a $PGAASDIR/authorized_keys ]
-then
- cp -p $PGAASDIR/id_rsa.pub $PGAASDIR/id_rsa $PGAASDIR/authorized_keys ~postgres/.ssh
-else
- ssh-keygen -t rsa -N '' -f ~postgres/.ssh/id_rsa
- cp -p ~postgres/.ssh/id_rsa.pub ~postgres/.ssh/authorized_keys
- cp -p ~postgres/.ssh/id_rsa ~postgres/.ssh/id_rsa.pub ~postgres/.ssh/authorized_keys $PGAASDIR
-fi
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-secondary b/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-secondary
deleted file mode 100644
index 2121eb3..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create-ssh-secondary
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-bwget()
-{
- ${INSTALL_ROOT}/opt/app/pgaas/bin/pgwget --progress=dot:giga "$@"
-}
-
-[ -n "$MASTER" ] || die "MASTER is not set"
-
-
-
-umask 077
-TMP=$(mktemp /tmp/tmp.css1.XXXXXXXXXX)
-TMP2=$(mktemp /tmp/tmp.css2.XXXXXXXXXX)
-trap 'rm -f $TMP $TMP2' 0 1 2 3 15
-
-# do we have the keys already?
-if [ -f $PGAASDIR/id_rsa.pub -a -f $PGAASDIR/id_rsa -a $PGAASDIR/authorized_keys ]
-then
- mkdir -p ~postgres/.ssh
- chmod 700 ~postgres/.ssh
- cp -p $PGAASDIR/id_rsa.pub $PGAASDIR/id_rsa $PGAASDIR/authorized_keys ~postgres/.ssh
-else
- # no? copy them from the master
- done=
- max=40
- for s in `seq $max`
- do
- echo "$s of $max: Waiting for master $MASTER to come online and send its public key"
- bwget -O$TMP http://$MASTER:8000/getpubkey
- ls -l $TMP
- if [ -s $TMP ]
- then
- msg=$(cat $TMP)
- case "$msg" in
- ssh-rsa* )
- echo "Received public key"
- mkdir -p ~postgres/.ssh
- chmod 700 ~postgres/.ssh
- cp -p $TMP ~postgres/.ssh/authorized_keys
- done=yes
- break
- ;;
- * ) echo "Received invalid public key: $msg"
- ;;
- esac
- else
- echo "No key available yet"
- fi
- rm -f $TMP
- sleep 15
- done
- [ "$done" = "yes" ] || die "Unable to get key from $MASTER"
-
- done=
- max=40
- for s in `seq $max`
- do
- echo "$s of $max: Asking for master $MASTER to send remaining ssh files"
- bwget -O$TMP2 http://$MASTER:8000/getssh/`hostname -f`
- ls -l $TMP2
- if [ -s $TMP2 ]
- then
- msg=$(cat $TMP2)
- case "$msg" in
- OK* ) echo "Master has sent the remaining ssh keys"
- done=yes
- break
- ;;
- * ) echo "No ssh keys yet: $msg"
- ;;
- esac
- fi
- rm -f $TMP2
- sleep 15
- done
- [ "$done" = "yes" ] || die "Master did not send ssh keys"
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/create_dcae_rotate.sql b/pgaas/src/stage/opt/app/pgaas/etc/create_dcae_rotate.sql
deleted file mode 100644
index 2200362..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/create_dcae_rotate.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-create table dcae_rotate (
- basetablename varchar(129) not null, /* the base table name to derive other tables from */
- columnname varchar(64) not null, /* which column name to use as the datestamp */
- count int, /* how many periods to keep around */
- period varchar(20) /* one of 'week', 'month' or 'day' */
-);
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/dcae_admin_db.cfg b/pgaas/src/stage/opt/app/pgaas/etc/dcae_admin_db.cfg
deleted file mode 100644
index 139597f..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/dcae_admin_db.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-config b/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-config
deleted file mode 100644
index 87689ef..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-config
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-echo "================ $0 ================"
-id
-set -x
-
-die()
-{
- echo "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-[ -n "$ONAP" ] || die "ONAP is not set"
-[ -n "$NOTONAP" ] || die "NOTONAP is not set"
-
-if [ -d ${INSTALL_ROOT}/opt/app/postgresql-9.5.2 ]
-then PGDIR=${INSTALL_ROOT}/opt/app/postgresql-9.5.2
-elif [ -d ${INSTALL_ROOT}/usr/lib/postgresql/9.6 ]
-then PGDIR=${INSTALL_ROOT}/usr/lib/postgresql/9.6
-elif [ -d ${INSTALL_ROOT}/usr/lib/postgresql/9.5 ]
-then PGDIR=${INSTALL_ROOT}/usr/lib/postgresql/9.5
-else die PostgreSQL bin directory not found
-fi
-export PGDIR
-export DBROOT=/dbroot/pgdata/main
-export PATH=$PATH:${INSTALL_ROOT}/opt/app/pgaas/bin
-
-$CFGDIR/etc/makecerts
-
-cat $CFGDIR/lib/profile.additions >> ~postgres/.profile
-
-# Determine which system is the master.
-# For central, we look first in /var/config/DCAE/chef/*-postgres.conf.
-# If we don't find that, we look at the pgnodes list and pick the first one.
-# For edge, we ignore /var/config/DCAE/chef/*-postgres.conf and go directly to the pgnodes list.
-# Each edge site has its own master.
-clustertype=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -n cluster )
-ismaster=no
-
-case $clustertype in
- central )
- CONFDIR1=/var/config/DCAE/chef
- CONFDIR2=/tmp
- CONFCOUNT1=$(ls $CONFDIR1/*-postgres.conf 2>/dev/null | wc -l)
- CONFCOUNT2=$(ls $CONFDIR2/*-postgres.conf 2>/dev/null | wc -l)
- CONFCOUNTBOTH=$(ls $CONFDIR1/*-postgres.conf $CONFDIR2/*-postgres.conf 2>/dev/null | wc -l)
-
- if [ $CONFCOUNTBOTH -eq 0 ]
- then
- # not OpenDCAE/ONAP, but it's better if we STILL require a pgaas-postgres.conf file.
- die "No xyz-postgres.conf files were found in $CONFDIR1 or $CONFDIR2"
- # Alternatively, the following code MIGHT work:
- # ismaster=yes
- # PGNODES=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -n pgnodes )
- # export MASTER=$( gen-repmgr-info -n "$PGNODES" -m )
- else
- if [ $CONFCOUNT1 -eq 1 ]
- then CONFDIR=$CONFDIR1
- elif [ $CONFCOUNT2 -eq 1 ]
- then CONFDIR=$CONFDIR2
- else CONFDIR=
- fi
- if [ -n "$CONFDIR" ]
- then # OpenDCAE/ONAP
- # We need the value of master from xyz-postgres.conf
- umask 077
- TMP=$(mktemp /tmp/tmp.pi1.XXXXXXXXXX)
- trap 'rm -f $TMP' 0 1 2 3 15
- cat $CONFDIR/*-postgres.conf |
- sed -e 's/ *: */="/' -e 's/[ ]*$/"/' -e 's/=""/="/' -e 's/""$/"/' > $TMP
- . $TMP
- case "$master" in
- `hostname` | `hostname -f` ) ismaster=yes ;;
- *?* ) ismaster=no ;;
- '' ) die "master is not set in $CONF" ;;
- esac
- PGNODES=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -n pgnodes )
- export MASTER=$( gen-repmgr-info -n "$PGNODES" -M "$master" )
- [ -n "$MASTER" ] || die "Cannot determine master system. $CONF has '$master' (from env.yaml), which cannot be found in pgnodes."
- else
- if [ $CONFCOUNT1 -gt 1 ]
- then die "More than one postgres.conf was found in $CONFDIR1: $(ls $CONFDIR1/*-postgres.conf 2>&1)"
- elif [ $CONFCOUNT2 -gt 1 ]
- then die "More than one postgres.conf was found in $CONFDIR2: $(ls $CONFDIR2/*-postgres.conf 2>&1)"
- fi
- fi
- fi
- ;;
- edge )
- host=$( hostname -f )
- PGNODES=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -n pgnodes )
- export MASTER=$( gen-repmgr-info -n "$PGNODES" -C $host )
- case $MASTER in
- '' ) die "Cannot determine master system. Does cdf.cfg have pgnodes= in it? Is $host listed as a site?" ;;
- DEFAULT ) ismaster=yes MASTER=$host ;;
- esac
- ;;
-esac
-
-ssh_and_cdf_okay=no
-
-if pgrep postgres
-then pkill postgres
-fi
-
-case $ismaster in
- yes ) # master
- $CFGDIR/etc/create-ssh-master &&
- $CFGDIR/etc/create-cdf-master &&
- ssh_and_cdf_okay=yes
- ;;
-
- no ) # secondary
- $CFGDIR/etc/create-ssh-secondary &&
- $CFGDIR/etc/create-cdf-secondary &&
- touch $CFGDIR/lib/ignore-database-reconfiguration # prevent dcae_admin_db.py from looking at json DB reconfigurations &&
- ssh_and_cdf_okay=yes
- ;;
-esac
-
-[ "$ssh_and_cdf_okay" = yes ] || die "Could not set up ssh or cdf"
-
-$CFGDIR/etc/common-db-tasks
-# check if we have a database already
-if [ ! -s $DBROOT/PG_VERSION ]
-then
- # need to create it
- case $ismaster in
- yes ) $CFGDIR/etc/create-db-master ;;
- no ) $CFGDIR/etc/create-db-secondary ;;
- esac
-else
- # need to update it
- case $ismaster in
- yes ) $CFGDIR/etc/update-db-master ;;
- no )
- $CFGDIR/etc/create-db-secondary # use repmgr clone even if secondary previously existed
- # $CFGDIR/etc/update-db-secondary
- ;;
- esac
-fi
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-post b/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-post
deleted file mode 100644
index 66eea14..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-post
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-echo "================ $0 ================"
-id
-set -x
-
-die()
-{
- echo "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-################ nothing needs to be done
-BIN=/opt/app/pgaas/bin
-
-[ -d $BIN ] || die "Cannot find $BIN"
-
-PATH=$PATH:$BIN
-
-pgaas-verify-install
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-prep b/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-prep
deleted file mode 100644
index 02eabef..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-prep
+++ /dev/null
@@ -1,259 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-echo "================ $0 ================"
-id
-set -x
-
-die()
-{
- echo "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-umask 022
-
-TMP=$( mktemp /tmp/pgprep.$$.XXXXXXXXXX )
-trap 'rm -f $TMP' 0 1 2 3 15
-
-if $ONAP
-then INSTALL_ROOT=
-fi
-
-
-# There needs to be a configuration file passed in, named something like pgaas-postgres.conf
-# and stored either in /var/config/DCAE/chef or /tmp. We need at least one, and there cannot
-# be more than one within the directory. (If one exists in both /var/config and /tmp, we trust
-# the one in /var/config.)
-#
-# The variable "master" needs to be in xyz-postgres.conf. It should be the hostname or
-# hostname -f value of the VM that is the initial PG master.
-# In addition, the following values could be in postgres.conf or
-# already in the environment:
-# DRTR_NODE_KSTOREFILE: /opt/app/dcae-certificate/keystore.jks
-# DRTR_NODE_KSTOREPASS: "No Certificate"
-# DRTR_NODE_PVTKEYPASS: "No Certificate"
-# PG_NODES : uiopmno1qwpstg00.research.example.com|asbczw1vepstg00.dcae.simpledemo.onap.org
-# PG_JAVA_HOME : /opt/app/java/jdk/jdk170
-# PG_CLUSTER : global/central | site/edge (pick one)
-
-CONFDIR1=/var/config/DCAE/chef
-CONFDIR2=/tmp
-CONFCOUNT1=$(ls $CONFDIR1/*-postgres.conf 2>/dev/null | wc -l)
-CONFCOUNT2=$(ls $CONFDIR2/*-postgres.conf 2>/dev/null | wc -l)
-CONFCOUNTBOTH=$(ls $CONFDIR1/*-postgres.conf $CONFDIR2/*-postgres.conf 2>/dev/null | wc -l)
-
-if [ $CONFCOUNTBOTH -eq 0 ]
-then
- die "No xyz-postgres.conf files were found in $CONFDIR1 or $CONFDIR2"
-else
- if [ $CONFCOUNT1 -eq 1 ]
- then CONFDIR=$CONFDIR1
- elif [ $CONFCOUNT2 -eq 1 ]
- then CONFDIR=$CONFDIR2
- else CONFDIR=
- fi
- if [ -n "$CONFDIR" ]
- then # OpenDCAE/ONAP
- cat $CONFDIR/*-postgres.conf |
- sed -e 's/ *: */="/' -e 's/[ ]*$/"/' -e 's/=""/="/' -e 's/""$/"/' > $TMP
- . $TMP
- else
- if [ $CONFCOUNT1 -gt 1 ]
- then die "More than one postgres.conf was found in $CONFDIR1: $(ls $CONFDIR1/*-postgres.conf 2>&1)"
- elif [ $CONFCOUNT2 -gt 1 ]
- then die "More than one postgres.conf was found in $CONFDIR2: $(ls $CONFDIR2/*-postgres.conf 2>&1)"
- fi
- fi
-fi
-
-[ -n "$PG_NODES" ] || die "PG_NODES is not set"
-[ -n "$PG_CLUSTER" ] || die "PG_CLUSTER is not set"
-[ -n "$DRTR_NODE_KSTOREFILE" ] || die "DRTR_NODE_KSTOREFILE is not set"
-[ -n "$DRTR_NODE_KSTOREPASS" ] || die "DRTR_NODE_KSTOREPASS is not set"
-[ -n "$DRTR_NODE_PVTKEYPASS" ] || die "DRTR_NODE_PVTKEYPASS is not set"
-
-# create various directories with proper permissions
-mkdir -p ${INSTALL_ROOT}/dbroot/pgdata/main \
- ${INSTALL_ROOT}/dbroot/pgdata/pgaas \
- ${INSTALL_ROOT}/dbroot/pglogs/main \
- ${INSTALL_ROOT}/var/run/postgresql \
- ${INSTALL_ROOT}/opt/logs/dcae/postgresql/init \
- ${INSTALL_ROOT}/opt/logs/dcae/postgresql/server \
- ${INSTALL_ROOT}/opt/logs/dcae/postgresql/idns
-chmod 700 ${INSTALL_ROOT}/dbroot/pgdata/pgaas
-chmod 700 ${INSTALL_ROOT}/dbroot/pglogs
-chmod 700 ${INSTALL_ROOT}/dbroot/pgdata/main
-
-if $ONAP
-then
- if [ -d /var/lib/postgresql/9.5 ]
- then VER=9.5
- elif [ -d /var/lib/postgresql/9.6 ]
- then VER=9.6
- else die "Cannot determine version of PostgreSQL. Looking for /var/lib/postgresql/9.[56]."
- fi
- mv /var/lib/postgresql/$VER/main /var/lib/postgresql/$VER/main.sv
- ln -s /dbroot/dbdata/main /var/lib/postgresql/$VER/main
-
- mv /etc/postgresql/$VER/main /etc/postgresql/$VER/main.sv
- ln -s /opt/app/pgaas/main /etc/postgresql/$VER/main
-
-fi
-
-chown -R postgres:postgres ${INSTALL_ROOT}/dbroot ${INSTALL_ROOT}/var/run/postgresql ${INSTALL_ROOT}/opt/logs/dcae/postgresql
-
-chmod 711 ~postgres
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found 1>&2; exit 1
-fi
-chmod 751 $PGDIR/bin
-
-# fix up the CDF package so that it works
-if [ ! -L /opt/cdf ]
-then rm -f /opt/cdf; ln -sf /opt/app/cdf /opt/cdf
-fi
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$PATH
-
-# and save some values within
-(
- echo "allpgnodes=\"$PG_NODES\""
- case "$PG_CLUSTER" in
- global | central )
- cnodes=$( gen-repmgr-info -n "$PG_NODES" -p )
- echo "pgnodes=\"$cnodes\""
- echo "cluster=central"
- shanodes=$( gen-repmgr-info -n "$PG_NODES" -P )
- ;;
- site | edge )
- HOSTNAME=$( hostname -f )
- lnodes=$( gen-repmgr-info -n "$PG_NODES" -e $HOSTNAME )
- echo "pgnodes=\"$lnodes\""
- if [ -z "$lnodes" ]
- then die "Cannot determine the name of the system. hostname -f ($HOSTNAME) is not found in PG_NODES ($PG_NODES)"
- fi
- shanodes=$( gen-repmgr-info -n "$PG_NODES" -E $HOSTNAME )
- echo "cluster=edge"
- ;;
- * ) die "Cannot determine what type of cluster this is. PG_CLUSTER should be either 'global/central' or 'site/edge'" ;;
- esac
-
- echo "drtr_node_kstorefile=$DRTR_NODE_KSTOREFILE"
- echo "ENCRYPTME.AES.drtr_node_kstorepass='$DRTR_NODE_KSTOREPASS'" | ${INSTALL_ROOT}/opt/app/cdf/bin/setencryptedvalues
- echo "ENCRYPTME.AES.drtr_node_pvtkeypass='$DRTR_NODE_PVTKEYPASS'" | ${INSTALL_ROOT}/opt/app/cdf/bin/setencryptedvalues
- echo "ENCRYPTME.AES.wgetpswd=$shanodes" | ${INSTALL_ROOT}/opt/app/cdf/bin/setencryptedvalues
-) >> ${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg
-
-# install the init scripts for postgresql
-# init.d-pgaas init-pgaas-idns.conf init-pgaas-init.conf logrotate
-
-INIT=${INSTALL_ROOT}/opt/app/pgaas/init
-
-# take care of cron jobs
-if [ -d ${INSTALL_ROOT}/opt/app/platform/cron ]
-then
- CRONDIR=${INSTALL_ROOT}/opt/app/platform/cron/postgres
- mkdir -p $CRONDIR
- chown postgres:postgres $CRONDIR
- chmod 755 $CRONDIR
- cp $INIT/pglogs.cron $CRONDIR/pglogs.cron
- su postgres -c "sh -x ${INSTALL_ROOT}/opt/app/platform/bin/mergeCron"
-else
- su postgres -c "crontab $INIT/pglogs.cron"
-fi
-
-# take care of PGaaS init job
-if [ -d ${INSTALL_ROOT}/opt/app/platform/init.d ]
-then
- INITDEST=${INSTALL_ROOT}/opt/app/platform/init.d/pgaas
- cp $INIT/init.d-pgaas $INITDEST
- chown postgres:postgres $INITDEST
- chmod 755 $INITDEST
-else
- cd ${INSTALL_ROOT}/opt/app/platform/rc.d
- ln -sf ../init.d/pgaas K20pgaas
- ln -sf ../init.d/pgaas S20pgaas
-fi
-
-# take care of /var/run/postgresql directory
-if [ -f /usr/lib/tmpfiles.d/postgresql.conf ]
-then
- : # no need to create the /var/run/postgresql directory (probably because postgresql package already did it)
-elif [ -d /usr/lib/tmpfiles.d ]
-then
- (
- echo "# Directory for PostgreSQL sockets, lockfiles and stats tempfiles"
- echo "d /var/run/postgresql 2775 postgres postgres - -"
- ) > /usr/lib/tmpfiles.d/postgresql.conf
-else
- # install an init script to create it
- cp $INIT/init-pgaas-init.conf ${INSTALL_ROOT}/etc/init/pgaas-init.conf
- service pgaas-init stop
- sleep 1
- service pgaas-init start
- sleep 1
-fi
-# double check to make sure it's been created
-if [ ! -d /var/run/postgresql ]
-then
- mkdir -p /var/run/postgresql
- chown postgres:postgres /var/run/postgresql
-fi
-
-# take care of iDNS-responder
-if [ -d /lib/systemd/system -a -f /bin/systemctl ]
-then
- # install the init script for iDNS in systemd
- cp $INIT/systemd-pgaas-idns.service /lib/systemd/system/pgaas-idns.service
-# if [ -f /usr/sbin/service ]
-# then
-# service pgaas-idns stop
-# sleep 1
-# service pgaas-idns start
-# else
-# systemctl stop pgaas-idns
- sleep 1
- systemctl daemon-reload
- sleep 1
- systemctl enable pgaas-idns
- sleep 1
- systemctl start pgaas-idns
-# fi
-
-else
- # install the init script for iDNS in upstart
- cp $INIT/init-pgaas-idns.conf ${INSTALL_ROOT}/etc/init/pgaas-idns.conf
- service pgaas-idns stop
- sleep 1
- service pgaas-idns start
-fi
-
-# take care of log rotation
-cp $INIT/logrotate ${INSTALL_ROOT}/etc/logrotate.d/pgaas
-chown root:root ${INSTALL_ROOT}/etc/logrotate.d/pgaas
-chmod 644 ${INSTALL_ROOT}/etc/logrotate.d/pgaas
-
-chown -R postgres:postgres ${INSTALL_ROOT}/opt/app/pgaas
-
-echo ENDING $0 $(date)
-echo ENDING $0 $(date) >> /tmp/pgaas.inst.report
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-tools b/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-tools
deleted file mode 100644
index 16cb5e5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/do-post-install-tools
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-echo "================ $0 ================"
-id
-set -x
-
-die()
-{
- echo "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-export CDFCFG=${INSTALL_ROOT}/opt/app/cdf/lib/cdf.cfg
-export PGAASCFG=${INSTALL_ROOT}/opt/app/pgaas/lib/pgaas.cfg
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else die PostgreSQL bin directory not found
-fi
-CFGDIR=/opt/app/pgaas
-CONF=$CFGDIR/main/postgresql.conf
-if [ ! -f $CONF ]
-then echo "$0: Cannot find PostgreSQL configuration" 1>&2; exit 1
-fi
-
-
-(
- grep '^postgres.x' < $CDFCFG | sed -e 's/^postgres/dcae_admin_db_password/'
- echo "db_configuration=$CONF"
- echo "pg_bin_directory=$PGDIR/bin"
- echo "skip_configuration_file=$CFGDIR/lib/ignore-database-reconfiguration"
-) >> $PGAASCFG
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/do-pre-rm.prep b/pgaas/src/stage/opt/app/pgaas/etc/do-pre-rm.prep
deleted file mode 100755
index a03a13b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/do-pre-rm.prep
+++ /dev/null
@@ -1,17 +0,0 @@
-echo STARTING $0 $(date)
-
-set -x
-id
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then
- rm -f $INSTALL_ROOT/opt/app/platform/postgres/pglogs.cron
- su postgres -c "$INSTALL_ROOT/opt/app/platform/bin/mergeCron"
- rmdir $INSTALL_ROOT/opt/app/platform/postgres
- rm -f $INSTALL_ROOT/opt/app/platform/init.d/pgaas
- rm -f $INSTALL_ROOT/opt/app/platform/rc.d/K20pgaas
- rm -f $INSTALL_ROOT/opt/app/platform/rc.d/S20pgaas
-fi
-
-rm -f $INSTALL_ROOT/etc/init/pgaas-idns.conf $INSTALL_ROOT/etc/init/pgaas-init.conf
-rm -f $INSTALL_ROOT/etc/logrotate.d/pgaas
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/gen-pgpass b/pgaas/src/stage/opt/app/pgaas/etc/gen-pgpass
deleted file mode 100644
index f97d573..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/gen-pgpass
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# create ~postgres/.pgpass
-postgrespswd=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -x -n postgres )
-repmgrpswd=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -x -n repmgr )
-umask 077
-pswdfile=~postgres/.pgpass
-if [ -f $pswdfile ]
-then
- sed -i -e '/:postgres:/d' -e '/:repmgr:/d' $pswdfile
-fi
-
-echo "*:*:*:postgres:$postgrespswd" >> $pswdfile
-echo "*:*:*:repmgr:$repmgrpswd" >> $pswdfile
-chmod 600 $pswdfile
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/gen-recovery.conf b/pgaas/src/stage/opt/app/pgaas/etc/gen-recovery.conf
deleted file mode 100644
index 1ad41c2..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/gen-recovery.conf
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-
-cd $DBROOT || die "Cannot cd $DBROOT"
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:${INSTALL_ROOT}/opt/app/cdf/bin:$PATH
-
-PGNODES=$( getpropvalue -n pgnodes )
-HOSTNAME=`hostname -f`
-PGNODEVALUE=$( gen-repmgr-info -n "$PGNODES" -l "$HOSTNAME" )
-
-# node_name from repmgr.conf => application_name in recovery.conf conninfo line
-# "node" value from repmgr.conf => primary_slot_name in recovery.conf with the string "repmgr_slot_" prefixed
-# node_name in repmgr.conf can be the $HOSTNAME value ?
-
-pswd=$( ${INSTALL_ROOT}/opt/app/cdf/bin/getpropvalue -x -n repmgr )
-
-appname=$HOSTNAME
-PGNODEVALUE=$( gen-repmgr-info -n "$PGNODES" -l "$HOSTNAME" )
-umask 07
-cat <<-EOF > $DBROOT/recovery.conf
- standby_mode = 'on'
- primary_conninfo = 'user=repmgr password=$pswd host=$HOSTNAME port=5432 application_name=$HOSTNAME sslmode=prefer sslcompression=1'
- recovery_target_timeline = 'latest'
- primary_slot_name = repmgr_slot_$PGNODEVALUE
-EOF
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/gen-repmgr.conf b/pgaas/src/stage/opt/app/pgaas/etc/gen-repmgr.conf
deleted file mode 100755
index 924a097..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/gen-repmgr.conf
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:${INSTALL_ROOT}/opt/app/cdf/bin:$PATH
-LOGDIR=/opt/logs/dcae/postgresql/server
-
-PGNODES=$( getpropvalue -n pgnodes )
-
-CLUSTER=pgaas
-HOSTNAME=`hostname -f`
-PGNODEVALUE=$( gen-repmgr-info -n "$PGNODES" -l "$HOSTNAME" )
-UPSTREAMPGNODE=$( gen-repmgr-info -n "$PGNODES" -c "$HOSTNAME" )
-
-UPSTREAMTEXT="#upstream_node="
-case $UPSTREAMPGNODE in
- DEFAULT ) ;;
- * ) UPSTREAMTEXT="upstream_node=$UPSTREAMPGNODE" ;;
-esac
-
-cat <<-EOF > repmgr.conf
- cluster=$CLUSTER
- node=$PGNODEVALUE
- node_name=$HOSTNAME
- conninfo='host=$HOSTNAME user=repmgr dbname=repmgr'
- use_replication_slots=1
- $UPSTREAMTEXT
-
- failover=automatic
- promote_command='repmgr standby promote -f $CFGDIR/main/repmgr.conf'
- follow_command='repmgr standby follow -f $CFGDIR/main/repmgr.conf'
- event_notification_command='/opt/app/pgaas/bin/repmgrd-status-changes %n %e %s "%t" "%d"'
-
- #Log level: possible values are DEBUG, INFO, NOTICE, WARNING, ERR, ALERT, CRIT or EMERG
- loglevel=INFO
- logfile='$LOGDIR/repmgr.log'
-EOF
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/lock-and-create-db-backup b/pgaas/src/stage/opt/app/pgaas/etc/lock-and-create-db-backup
deleted file mode 100644
index cb8586d..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/lock-and-create-db-backup
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=${INSTALL_ROOT}/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found
-fi
-
-export PATH=$PGDIR/bin:${INSTALL_ROOT}/opt/java/jdk/jdk170/bin:${INSTALL_ROOT}/opt/app/cdf/bin:${INSTALL_ROOT}/opt/app/pgaas/bin:$PATH
-
-LOCKFILE=/var/lock/create-db-backup
-
-testlock -s -t 0 -r 99 ${LOCKFILE} create-db-backup
-retc=$?
-
-if [ $retc -eq 99 ]
-then
- echo Backup is already being created
-fi
-exit $retc
-
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/makecerts b/pgaas/src/stage/opt/app/pgaas/etc/makecerts
deleted file mode 100755
index 494c78b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/makecerts
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# NAME
-# makecerts - Create elf-signed certificates for PostgreSQL
-#
-# USAGE
-# makecerts [--force-overwrite]
-#
-# FILES
-# /opt/app/pgaas/etc
-# ssleay.cnf - template
-# /opt/app/pgaas/lib
-# ssl-cert-snakeoil.pem - public key
-# ssl-cert-snakeoil.key - private key
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-dir=${INSTALL_ROOT}/opt/app/pgaas
-etcdir=$dir/etc
-libdir=$dir/lib
-template="$etcdir/ssleay.cnf"
-
-usage()
-{
- exec 1>&2
- echo "Usage: $0 [--force-overwrite]"
- echo "Create self-signed certificates for $dir"
- exit 1
-}
-
-set -x
-
-if [ -f "$libdir/ssl-cert-snakeoil.pem" ] && [ -f "$libdir/ssl-cert-snakeoil.key" ]; then
- if [ "$1" != "--force-overwrite" ]; then
- exit 0
- fi
-fi
-
-# make_snakeoil
-
-if ! HostName="$(hostname -f)" ; then
- HostName="$(hostname)"
- echo "$0: Could not get FQDN, using \"$HostName\"."
- echo "$0: You may want to fix your /etc/hosts and/or DNS setup and run"
- echo "$0: '$0 --force-overwrite'"
- echo "$0: again."
-fi
-if [ ${#HostName} -gt 64 ] ; then
- AltName="DNS:$HostName"
- HostName="$(hostname)"
-fi
-
-
-TMPFILE="$(mktemp /tmp/tmp.mc1.XXXXXXXXXX)" || die mktemp failed
-TMPOUT="$(mktemp /tmp/tmp.mc2.XXXXXXXXXX)" || die mktemp failed
-
-trap "rm -f $TMPFILE $TMPOUT" EXIT 1 2 3 15
-
-# create_temporary_cnf
- sed -e s#@HostName@#"$HostName"# $template > $TMPFILE
- [ -z "$AltName" ] || echo "subjectAltName=$AltName" >> $TMPFILE
-
-# create the certificate.
-
-umask 077
-
-if ! openssl req -config $TMPFILE -new -x509 -days 3650 -nodes \
- -out $libdir/ssl-cert-snakeoil.pem \
- -keyout $libdir/ssl-cert-snakeoil.key > $TMPOUT 2>&1
-then
- echo Could not create certificate. Openssl output was: >&2
- cat $TMPOUT >&2
- die openssl failed
-fi
-chmod 644 $libdir/ssl-cert-snakeoil.pem
-chmod 600 $libdir/ssl-cert-snakeoil.key
-# hash symlink
-ln -sf ssl-cert-snakeoil.pem $libdir/$(openssl x509 -hash -noout -in $libdir/ssl-cert-snakeoil.pem)
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/makefile b/pgaas/src/stage/opt/app/pgaas/etc/makefile
deleted file mode 100644
index b5a5484..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-CFGFILES= create_dcae_rotate.sql
-
-stage:
- rm -rf $(STAGEDIR)/$(DISTPATH)/etc
- mkdir -p $(STAGEDIR)/$(DISTPATH)/etc
- for i in *; do \
- case $$i in \
- *.py | gen*.conf ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/etc/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/etc/$$j; \
- ;; \
- *.conf | *.cfg | *.cnf | *.sql ) \
- cp $$i $(STAGEDIR)/$(DISTPATH)/etc/$$i; \
- chmod a+r $(STAGEDIR)/$(DISTPATH)/etc/$$i; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- if [ -f $$i ]; then \
- cp $$i $(STAGEDIR)/$(DISTPATH)/etc/$$i; \
- chmod a+rx $(STAGEDIR)/$(DISTPATH)/etc/$$i; \
- fi; \
- ;; \
- esac; \
- done
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/reset-db-secondary b/pgaas/src/stage/opt/app/pgaas/etc/reset-db-secondary
deleted file mode 100644
index 5be1c60..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/reset-db-secondary
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-die()
-{
- echo "$@" 1>&2
- exit 1
-}
-
-export CFGDIR=/opt/app/pgaas
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else die PostgreSQL bin directory not found
-fi
-export PGDIR
-
-export DBROOT=/dbroot/pgdata/main
-export PATH=$PATH:/opt/app/pgaas/bin:/opt/app/pgaas/etc:/opt/app/cdf/bin:/opt/app/postgresql-config/etc
-
-clustertype=$( getpropvalue -n cluster )
-PGNODES=$( getpropvalue -n pgnodes )
-case $clustertype in
- central )
- export MASTER=$( gen-repmgr-info -n "$PGNODES" -M "$master" )
- ;;
- edge )
- host=$( hostname -f )
- export MASTER=$( gen-repmgr-info -n "$PGNODES" -C $host )
- ;;
-esac
-
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-[ -n "$MASTER" ] || die "MASTER is not set"
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-
-# make certain that everything is down
-pkill repmgrd
-pkill repmgr
-pg_ctl_stop
-
-# reset the database to a fresh copy of what is on the master
-create-db-secondary
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/ssleay.cnf b/pgaas/src/stage/opt/app/pgaas/etc/ssleay.cnf
deleted file mode 100644
index 2b665cc..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/ssleay.cnf
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-#
-# SSLeay example configuration file.
-#
-
-RANDFILE = /dev/urandom
-
-[ req ]
-default_bits = 2048
-default_keyfile = privkey.pem
-distinguished_name = req_distinguished_name
-prompt = no
-policy = policy_anything
-req_extensions = v3_req
-x509_extensions = v3_req
-
-[ req_distinguished_name ]
-commonName = @HostName@
-
-[ v3_req ]
-basicConstraints = CA:FALSE
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/start-db b/pgaas/src/stage/opt/app/pgaas/etc/start-db
deleted file mode 100644
index a91d16a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/start-db
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-rm -f $DBROOT/postmaster.pid
-chmod 600 $CFGDIR/lib/*.key
-$PGDIR/bin/pg_ctl start -D $DBROOT -o "-c config_file=$CFGDIR/main/postgresql.conf"
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/update-db-master b/pgaas/src/stage/opt/app/pgaas/etc/update-db-master
deleted file mode 100644
index db0d5ba..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/update-db-master
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# update a master database
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$CFGDIR/etc:$PGDIR/bin:$PATH
-
-# update postgresql.conf - got new ones
-# update pg_hba.conf - got new ones
-# set up repmgr.conf - in common
-
-# start the DB
-start-db
-sleep 10
-
-# make sure the postgres password is right
-$CFGDIR/etc/update-postgres-user
-
-# create temporal tables and other extensions, if needed
-$CFGDIR/etc/create-extensions
-
-# create repmgr user/db, if needed
-$CFGDIR/etc/create-repmgr-user
-
-# register as master
-repmgr -f $CFGDIR/main/repmgr.conf master register
-echo repmgr ret=$?
-
-# start repmgrd
-# start repmgrd (verbose logging for testing)
-umask 07
-repmgrd -f $CFGDIR/main/repmgr.conf -d --verbose
-echo repmgrd ret=$?
-# start repmgrd (normal logging)
-# repmgrd -f $CFGDIR/main/repmgr.conf -d
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary b/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary
deleted file mode 100644
index e06c810..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/update-db-secondary
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# update a secondary database
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$MASTER" ] || die "MASTER is not set"
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-[ -n "$DBROOT" ] || die "DBROOT is not set"
-[ -n "$CFGDIR" ] || die "CFGDIR is not set"
-
-cd $CFGDIR/main || die "Cannot cd $CFGDIR/main"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$CFGDIR/etc:$PGDIR/bin:$PATH
-
-umask 077
-TMP=$(mktemp /tmp/tmp.uds1.XXXXXXXXXX)
-trap 'rm -f $TMP' 0 1 2 3 15
-
-# update postgresql.conf - got new ones
-# update pg_hba.conf - got new ones
-# set up repmgr.conf - in common
-
-# replace/update recovery.conf
-if [ -f $DBROOT/recovery.conf ];then mv $DBROOT/recovery.conf $DBROOT/recovery.conf.upgraded;fi
-$CFGDIR/etc/gen-recovery.conf
-
-# wait until master DB is active and has repmgr available
-max=40
-for s in `seq $max`
-do
- echo "$s of $max: Asking master $MASTER if repmgr is ready"
- pgwget --progress=dot:giga -O$TMP http://$MASTER:8000/hasrepmgr
- if [ -s $TMP ]
- then
- msg=$(cat $TMP)
- case $msg in
- OK* )
- echo "Master has repmgr ready"
- done=yes
- break
- ;;
- * )
- echo "Master does not have repmgr ready, msg=$msg"
- ;;
- esac
- fi
- rm -f $TMP
- sleep 15
-done
-[ "$done" = "yes" ] || die "Master never had repmgr available"
-
-
-$CFGDIR/etc/start-db
-
-sleep 10
-
-# make sure the postgres password is right
-$CFGDIR/etc/update-postgres-user
-
-# register as standby
-repmgr -f $CFGDIR/main/repmgr.conf standby register
-echo repmgr ret=$?
-sleep 10
-
-# start repmgrd
-# start repmgrd (verbose logging for testing)
-umask 07
-repmgrd -f $CFGDIR/main/repmgr.conf -d --verbose
-echo repmgrd ret=$?
-# start repmgrd (normal logging)
-# repmgrd -f $CFGDIR/main/repmgr.conf -d
-
-chmod 600 recovery.conf
diff --git a/pgaas/src/stage/opt/app/pgaas/etc/update-postgres-user b/pgaas/src/stage/opt/app/pgaas/etc/update-postgres-user
deleted file mode 100644
index 0466ad8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/etc/update-postgres-user
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-set -x
-
-die()
-{
- echo $0: "$@" 1>&2
- echo $0: "$@"
- umask 022
- echo $0: "$@" >> /tmp/pgaas-failures
- exit 1
-}
-
-[ -n "$PGDIR" ] || die "PGDIR is not set"
-
-PATH=${INSTALL_ROOT}/opt/app/pgaas/bin:$PGDIR/bin:${INSTALL_ROOT}/opt/app/cdf/bin:$PATH
-pswd=$( getpropvalue -x -n postgres )
-
-psql <<-EOF
- ALTER USER postgres PASSWORD '$pswd';
- EOF
diff --git a/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-idns.conf b/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-idns.conf
deleted file mode 100644
index 62714f1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-idns.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-# PGaaS - PostgreSQL as a Service
-#
-# The PGaaS iDNS server provides information on the system, primarily for the iDNS system
-
-description "PGaaS iDNS server"
-
-start on runlevel [2345]
-stop on runlevel [!2345]
-
-respawn
-respawn limit 10 5
-umask 022
-setuid postgres
-
-pre-start script
- test -x /opt/app/pgaas/lib/iDNS-responder || { stop; exit 0; }
-end script
-
-script
- /opt/app/pgaas/lib/iDNS-responder
-end script
diff --git a/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-init.conf b/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-init.conf
deleted file mode 100644
index 6f03c1f..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/init-pgaas-init.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-# PGaaS - PostgreSQL as a Service
-#
-# The PGaaS init process needs a directory to be created on reboot
-#
-# The best way to do this is to have a file in /usr/lib/tmpfiles.d/pgaas:
-# d /var/run/postgresql 2755 postgres postgres -
-#
-# This is a workaround because systemd-tmpfiles is not present.
-
-description "PGaaS /var/run/postgresql setup"
-
-start on runlevel [2345]
-stop on runlevel [!2345]
-
-umask 022
-
-pre-start script
- mkdir -p /var/run/postgresql
- chown postgres:postgres /var/run/postgresql
-end script
-
-script
- :
-end script
diff --git a/pgaas/src/stage/opt/app/pgaas/init/logrotate b/pgaas/src/stage/opt/app/pgaas/init/logrotate
deleted file mode 100644
index 8531ed6..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/logrotate
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-# rotate PGaaS log files
-
-/opt/logs/dcae/postgresql/init/*.log /opt/logs/dcae/postgresql/idns/*.log /opt/logs/dcae/postgresql/server/*.log {
- missingok
- compress
- daily
- rotate 60
- create
- dateext
-}
diff --git a/pgaas/src/stage/opt/app/pgaas/init/makefile b/pgaas/src/stage/opt/app/pgaas/init/makefile
deleted file mode 100644
index d2d8285..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-stage:
- rm -rf $(STAGEDIR)/$(DISTPATH)/init
- mkdir -p $(STAGEDIR)/$(DISTPATH)/init
- for i in *; do \
- case $$i in \
- *.py ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/init/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/init/$$j; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- if [ -f $$i ]; then \
- cp $$i $(STAGEDIR)/$(DISTPATH)/init/$$i; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/init/$$i; \
- fi; \
- ;; \
- esac; \
- done
diff --git a/pgaas/src/stage/opt/app/pgaas/init/pglogs.cron b/pgaas/src/stage/opt/app/pgaas/init/pglogs.cron
deleted file mode 100644
index ff621ba..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/pglogs.cron
+++ /dev/null
@@ -1,4 +0,0 @@
-30 * * * * ( date ; find /dbroot/pglogs -type f -mtime +3 -exec rm {} + ) >> /tmp/cleanpglogs.log 2>&1
-50 1 * * * ( mv -f /tmp/cleanpglogs.log /tmp/cleanpglogs.log.old ) > /dev/null 2>&1
-* * * * * [ -x /opt/app/pgaas/bin/update_var_run_isrw ] && /opt/app/pgaas/bin/update_var_run_isrw
-* * * * * [ -x /opt/app/pgaas/bin/check_cluster ] && /opt/app/pgaas/bin/check_cluster -d /var/run/postgresql/check_cluster >> /opt/logs/dcae/postgresql/idns/cluster.log
diff --git a/pgaas/src/stage/opt/app/pgaas/init/systemd-pgaas-idns.service b/pgaas/src/stage/opt/app/pgaas/init/systemd-pgaas-idns.service
deleted file mode 100644
index 007ca36..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/systemd-pgaas-idns.service
+++ /dev/null
@@ -1,16 +0,0 @@
-# PGaaS - PostgreSQL as a Service
-#
-# The PGaaS iDNS server provides information on the system, primarily for the iDNS system
-
-[Unit]
-Description=PGaaS iDNS server
-
-[Service]
-User=postgres
-Group=postgres
-ExecStart= /opt/app/pgaas/lib/iDNS-responder
-Restart=always
-RestartSec=10
-
-[Install]
-WantedBy=multi-user.target
diff --git a/pgaas/src/stage/opt/app/pgaas/init/tmpfiles-pgaas-init.conf b/pgaas/src/stage/opt/app/pgaas/init/tmpfiles-pgaas-init.conf
deleted file mode 100644
index 9341a95..0000000
--- a/pgaas/src/stage/opt/app/pgaas/init/tmpfiles-pgaas-init.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-# PGaaS - PostgreSQL as a Service
-#
-# The PGaaS init process needs a directory to be created on reboot
-#
-
-d /var/run/postgresql 0755 postgres postgres -
-
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/CommonLogger.py b/pgaas/src/stage/opt/app/pgaas/lib/CommonLogger.py
deleted file mode 100755
index a50303f..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/CommonLogger.py
+++ /dev/null
@@ -1,941 +0,0 @@
-#!/usr/bin/python
-# -*- indent-tabs-mode: nil -*- vi: set expandtab:
-"""ECOMP Common Logging library in Python.
-
-CommonLogger.py
-
-# Copyright (C) 2016 AT&T Intellectual Property. All rights reserved.
-#
-# This code is licensed under the Apache License, Version 2.0;
-# you may not use this code for any purpose except in compliance
-# with the Apache License. You may obtain a copy of the License
-# at http://www.att.com/openecomp.html.
-
-Original Written by: Terry Schmalzried
-Date written: October 1, 2015
-Last updated: December 1, 2016
-
-version 0.8
-"""
-
-from __future__ import print_function
-import os, sys, getopt, logging, logging.handlers, time, re, uuid, socket, threading, collections
-
-class CommonLogger:
- """ECOMP Common Logging object.
-
- Public methods:
- __init__
- setFields
- debug
- info
- warn
- error
- fatal
- """
-
- UnknownFile = -1
- ErrorFile = 0
- DebugFile = 1
- AuditFile = 2
- MetricsFile = 3
- DateFmt = '%Y-%m-%dT%H:%M:%S'
- verbose = False
-
- def __init__(self, configFile, logKey, **kwargs):
- """Construct a Common Logger for one Log File.
-
- Arguments:
- configFile -- configuration filename.
- logKey -- the keyword in configFile that identifies the log filename.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages,
- one of CommonLogger.ErrorFile, CommonLogger.DebugFile,
- CommonLogger.AuditFile and CommonLogger.MetricsFile, or
- one of the strings "error", "debug", "audit" or "metrics".
- May also be set in the config file using a field named
- <logKey>Style (where <logKey> is the value of the logKey
- parameter). The keyword value overrides the value in the
- config file.
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._monitorFlag = False
-
- # Get configuration parameters
- self._logKey = str(logKey)
- self._configFile = str(configFile)
- self._rotateMethod = 'time'
- self._timeRotateIntervalType = 'midnight'
- self._timeRotateInterval = 1
- self._sizeMaxBytes = 0
- self._sizeRotateMode = 'a'
- self._socketHost = None
- self._socketPort = 0
- self._typeLogger = 'filelogger'
- self._backupCount = 6
- self._logLevelThreshold = self._intLogLevel('')
- self._logFile = None
- self._begTime = None
- self._begMsec = 0
- self._fields = {}
- self._fields["style"] = CommonLogger.UnknownFile
- try:
- self._configFileModified = os.path.getmtime(self._configFile)
- for line in open(self._configFile):
- line = line.split('#',1)[0] # remove comments
- if '=' in line:
- key, value = [x.strip() for x in line.split('=',1)]
- if key == 'rotateMethod' and value.lower() in ['time', 'size', 'none']:
- self._rotateMethod = value.lower()
- elif key == 'timeRotateIntervalType' and value in ['S', 'M', 'H', 'D', 'W0', 'W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'midnight']:
- self._timeRotateIntervalType = value
- elif key == 'timeRotateInterval' and int( value ) > 0:
- self._timeRotateInterval = int( value )
- elif key == 'sizeMaxBytes' and int( value ) >= 0:
- self._sizeMaxBytes = int( value )
- elif key == 'sizeRotateMode' and value in ['a']:
- self._sizeRotateMode = value
- elif key == 'backupCount' and int( value ) >= 0:
- self._backupCount = int( value )
- elif key == self._logKey + 'SocketHost':
- self._socketHost = value
- elif key == self._logKey + 'SocketPort' and int( value ) == 0:
- self._socketPort = int( value )
- elif key == self._logKey + 'LogType' and value.lower() in ['filelogger', 'stdoutlogger', 'stderrlogger', 'socketlogger', 'nulllogger']:
- self._typeLogger = value.lower()
- elif key == self._logKey + 'LogLevel':
- self._logLevelThreshold = self._intLogLevel(value.upper())
- elif key == self._logKey + 'Style':
- self._fields["style"] = value
- elif key == self._logKey:
- self._logFile = value
- except Exception as x:
- print("exception reading '%s' configuration file: %s" %(self._configFile, str(x)), file=sys.stderr)
- sys.exit(2)
- except:
- print("exception reading '%s' configuration file" %(self._configFile), file=sys.stderr)
- sys.exit(2)
-
- if self._logFile is None:
- print('configuration file %s is missing definition %s for log file' %(self._configFile, self._logKey), file=sys.stderr)
- sys.exit(2)
-
-
- # initialize default log fields
- # timestamp will automatically be generated
- for key in ['style', 'requestID', 'serviceInstanceID', 'threadID', 'serverName', 'serviceName', 'instanceUUID', \
- 'severity', 'serverIPAddress', 'server', 'IPAddress', 'className', 'timer', \
- 'partnerName', 'targetEntity', 'targetServiceName', 'statusCode', 'responseCode', \
- 'responseDescription', 'processKey', 'targetVirtualEntity', 'customField1', \
- 'customField2', 'customField3', 'customField4', 'errorCategory', 'errorCode', \
- 'errorDescription' ]:
- if key in kwargs and kwargs[key] != None:
- self._fields[key] = kwargs[key]
-
- self._resetStyleField()
-
- # Set up logger
- self._logLock = threading.Lock()
- with self._logLock:
- self._logger = logging.getLogger(self._logKey)
- self._logger.propagate = False
- self._createLogger()
-
- self._defaultServerInfo()
-
- # spawn a thread to monitor configFile for logLevel and logFile changes
- self._monitorFlag = True
- self._monitorThread = threading.Thread(target=self._monitorConfigFile, args=())
- self._monitorThread.daemon = True
- self._monitorThread.start()
-
-
- def _createLogger(self):
- if self._typeLogger == 'filelogger':
- self._mkdir_p(self._logFile)
- if self._rotateMethod == 'time':
- self._logHandler = logging.handlers.TimedRotatingFileHandler(self._logFile, \
- when=self._timeRotateIntervalType, interval=self._timeRotateInterval, \
- backupCount=self._backupCount, encoding=None, delay=False, utc=True)
- elif self._rotateMethod == 'size':
- self._logHandler = logging.handlers.RotatingFileHandler(self._logFile, \
- mode=self._sizeRotateMode, maxBytes=self._sizeMaxBytes, \
- backupCount=self._backupCount, encoding=None, delay=False)
-
- else:
- self._logHandler = logging.handlers.WatchedFileHandler(self._logFile, \
- mode=self._sizeRotateMode, \
- encoding=None, delay=False)
- elif self._typeLogger == 'stderrlogger':
- self._logHandler = logging.handlers.StreamHandler(sys.stderr)
- elif self._typeLogger == 'stdoutlogger':
- self._logHandler = logging.handlers.StreamHandler(sys.stdout)
- elif self._typeLogger == 'socketlogger':
- self._logHandler = logging.handlers.SocketHandler(self._socketHost, self._socketPort)
- elif self._typeLogger == 'nulllogger':
- self._logHandler = logging.handlers.NullHandler()
-
- if self._fields["style"] == CommonLogger.AuditFile or self._fields["style"] == CommonLogger.MetricsFile:
- self._logFormatter = logging.Formatter(fmt='%(begtime)s,%(begmsecs)03d+00:00|%(endtime)s,%(endmsecs)03d+00:00|%(message)s', datefmt=CommonLogger.DateFmt)
- else:
- self._logFormatter = logging.Formatter(fmt='%(asctime)s,%(msecs)03d+00:00|%(message)s', datefmt='%Y-%m-%dT%H:%M:%S')
- self._logFormatter.converter = time.gmtime
- self._logHandler.setFormatter(self._logFormatter)
- self._logger.addHandler(self._logHandler)
-
- def _resetStyleField(self):
- styleFields = ["error", "debug", "audit", "metrics"]
- if self._fields['style'] in styleFields:
- self._fields['style'] = styleFields.index(self._fields['style'])
-
- def __del__(self):
- if self._monitorFlag == False:
- return
-
- self._monitorFlag = False
-
- if self._monitorThread is not None and self._monitorThread.is_alive():
- self._monitorThread.join()
-
- self._monitorThread = None
-
-
- def _defaultServerInfo(self):
-
- # If not set or purposely set = None, then set default
- if self._fields.get('server') is None:
- try:
- self._fields['server'] = socket.getfqdn()
- except Exception as err:
- try:
- self._fields['server'] = socket.gethostname()
- except Exception as err:
- self._fields['server'] = ""
-
- # If not set or purposely set = None, then set default
- if self._fields.get('serverIPAddress') is None:
- try:
- self._fields['serverIPAddress'] = socket.gethostbyname(self._fields['server'])
- except Exception as err:
- self._fields['serverIPAddress'] = ""
-
-
- def _monitorConfigFile(self):
- while self._monitorFlag:
- try:
- fileTime = os.path.getmtime(self._configFile)
- if fileTime > self._configFileModified:
- self._configFileModified = fileTime
- ReopenLogFile = False
- logFile = self._logFile
- with open(self._configFile) as fp:
- for line in fp:
- line = line.split('#',1)[0] # remove comments
- if '=' in line:
- key, value = [x.strip() for x in line.split('=',1)]
- if key == 'rotateMethod' and value.lower() in ['time', 'size', 'none'] and self._rotateMethod != value:
- self._rotateMethod = value.lower()
- ReopenLogFile = True
- elif key == 'timeRotateIntervalType' and value in ['S', 'M', 'H', 'D', 'W0', 'W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'midnight']:
- self._timeRotateIntervalType = value
- ReopenLogFile = True
- elif key == 'timeRotateInterval' and int( value ) > 0:
- self._timeRotateInterval = int( value )
- ReopenLogFile = True
- elif key == 'sizeMaxBytes' and int( value ) >= 0:
- self._sizeMaxBytes = int( value )
- ReopenLogFile = True
- elif key == 'sizeRotateMode' and value in ['a']:
- self._sizeRotateMode = value
- ReopenLogFile = True
- elif key == 'backupCount' and int( value ) >= 0:
- self._backupCount = int( value )
- ReopenLogFile = True
- elif key == self._logKey + 'SocketHost' and self._socketHost != value:
- self._socketHost = value
- ReopenLogFile = True
- elif key == self._logKey + 'SocketPort' and self._socketPort > 0 and self._socketPort != int( value ):
- self._socketPort = int( value )
- ReopenLogFile = True
- elif key == self._logKey + 'LogLevel' and self._logLevelThreshold != self._intLogLevel( value.upper() ):
- self._logLevelThreshold = self._intLogLevel(value.upper())
- elif key == self._logKey + 'LogType' and self._typeLogger != value and value.lower() in ['filelogger', 'stdoutlogger', 'stderrlogger', 'socketlogger', 'nulllogger']:
- self._typeLogger = value.lower()
- ReopenLogFile = True
- elif key == self._logKey + 'Style':
- self._fields["style"] = value
- self._resetStyleField()
- elif key == self._logKey and self._logFile != value:
- logFile = value
- ReopenLogFile = True
- if ReopenLogFile:
- with self._logLock:
- self._logger.removeHandler(self._logHandler)
- self._logFile = logFile
- self._createLogger()
- except Exception as err:
- pass
-
- time.sleep(5)
-
-
- def setFields(self, **kwargs):
- """Set default values for log fields.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- for key in ['style', 'requestID', 'serviceInstanceID', 'threadID', 'serverName', 'serviceName', 'instanceUUID', \
- 'severity', 'serverIPAddress', 'server', 'IPAddress', 'className', 'timer', \
- 'partnerName', 'targetEntity', 'targetServiceName', 'statusCode', 'responseCode', \
- 'responseDescription', 'processKey', 'targetVirtualEntity', 'customField1', \
- 'customField2', 'customField3', 'customField4', 'errorCategory', 'errorCode', \
- 'errorDescription' ]:
- if key in kwargs:
- if kwargs[key] != None:
- self._fields[key] = kwargs[key]
- elif key in self._fields:
- del self._fields[key]
-
- self._defaultServerInfo()
-
-
- def debug(self, message, **kwargs):
- """Write a DEBUG level message to the log file.
-
- Arguments:
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._log('DEBUG', message, errorCategory = 'DEBUG', **kwargs)
-
- def info(self, message, **kwargs):
- """Write an INFO level message to the log file.
-
- Arguments:
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._log('INFO', message, errorCategory = 'INFO', **kwargs)
-
- def warn(self, message, **kwargs):
- """Write a WARN level message to the log file.
-
- Arguments:
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._log('WARN', message, errorCategory = 'WARN', **kwargs)
-
- def error(self, message, **kwargs):
- """Write an ERROR level message to the log file.
-
- Arguments:
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._log('ERROR', message, errorCategory = 'ERROR', **kwargs)
-
- def fatal(self, message, **kwargs):
- """Write a FATAL level message to the log file.
-
- Arguments:
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- self._log('FATAL', message, errorCategory = 'FATAL', **kwargs)
-
- def _log(self, logLevel, message, **kwargs):
- """Write a message to the log file.
-
- Arguments:
- logLevel -- value ('DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL', ...) for the log record.
- message -- value for the last log record field.
-
- Keyword arguments: Annotations are d:debug, a=audit, m=metrics, e=error
- style -- the log file format (style) to use when writing log messages
- requestID (dame) -- optional default value for this log record field.
- serviceInstanceID (am) -- optional default value for this log record field.
- threadID (am) -- optional default value for this log record field.
- serverName (am) -- optional default value for this log record field.
- serviceName (am) -- optional default value for this log record field.
- instanceUUID (am) -- optional default value for this log record field.
- severity (am) -- optional default value for this log record field.
- serverIPAddress (am) -- optional default value for this log record field.
- server (am) -- optional default value for this log record field.
- IPAddress (am) -- optional default value for this log record field.
- className (am) -- optional default value for this log record field.
- timer (am) -- (ElapsedTime) optional default value for this log record field.
- partnerName (ame) -- optional default value for this log record field.
- targetEntity (me) -- optional default value for this log record field.
- targetServiceName (me) -- optional default value for this log record field.
- statusCode (am) -- optional default value for this log record field.
- responseCode (am) -- optional default value for this log record field.
- responseDescription (am) -- optional default value for this log record field.
- processKey (am) -- optional default value for this log record field.
- targetVirtualEntity (m) -- optional default value for this log record field.
- customField1 (am) -- optional default value for this log record field.
- customField2 (am) -- optional default value for this log record field.
- customField3 (am) -- optional default value for this log record field.
- customField4 (am) -- optional default value for this log record field.
- errorCategory (e) -- optional default value for this log record field.
- errorCode (e) -- optional default value for this log record field.
- errorDescription (e) -- optional default value for this log record field.
- begTime (am) -- optional starting time for this audit/metrics log record.
-
- Note: the pipe '|' character is not allowed in any log record field.
- """
-
- # timestamp will automatically be inserted
- style = int(self._getVal('style', '', **kwargs))
- requestID = self._getVal('requestID', '', **kwargs)
- serviceInstanceID = self._getVal('serviceInstanceID', '', **kwargs)
- threadID = self._getVal('threadID', threading.currentThread().getName(), **kwargs)
- serverName = self._getVal('serverName', '', **kwargs)
- serviceName = self._getVal('serviceName', '', **kwargs)
- instanceUUID = self._getVal('instanceUUID', '', **kwargs)
- upperLogLevel = self._noSep(logLevel.upper())
- severity = self._getVal('severity', '', **kwargs)
- serverIPAddress = self._getVal('serverIPAddress', '', **kwargs)
- server = self._getVal('server', '', **kwargs)
- IPAddress = self._getVal('IPAddress', '', **kwargs)
- className = self._getVal('className', '', **kwargs)
- timer = self._getVal('timer', '', **kwargs)
- partnerName = self._getVal('partnerName', '', **kwargs)
- targetEntity = self._getVal('targetEntity', '', **kwargs)
- targetServiceName = self._getVal('targetServiceName', '', **kwargs)
- statusCode = self._getVal('statusCode', '', **kwargs)
- responseCode = self._getVal('responseCode', '', **kwargs)
- responseDescription = self._noSep(self._getVal('responseDescription', '', **kwargs))
- processKey = self._getVal('processKey', '', **kwargs)
- targetVirtualEntity = self._getVal('targetVirtualEntity', '', **kwargs)
- customField1 = self._getVal('customField1', '', **kwargs)
- customField2 = self._getVal('customField2', '', **kwargs)
- customField3 = self._getVal('customField3', '', **kwargs)
- customField4 = self._getVal('customField4', '', **kwargs)
- errorCategory = self._getVal('errorCategory', '', **kwargs)
- errorCode = self._getVal('errorCode', '', **kwargs)
- errorDescription = self._noSep(self._getVal('errorDescription', '', **kwargs))
- nbegTime = self._getArg('begTime', {}, **kwargs)
-
- detailMessage = self._noSep(message)
- if bool(re.match(r" *$", detailMessage)):
- return # don't log empty messages
-
- useLevel = self._intLogLevel(upperLogLevel)
- if CommonLogger.verbose: print("logger STYLE=%s" % style)
- if useLevel < self._logLevelThreshold:
- if CommonLogger.verbose: print("skipping because of level")
- pass
- else:
- with self._logLock:
- if style == CommonLogger.ErrorFile:
- if CommonLogger.verbose: print("using CommonLogger.ErrorFile")
- self._logger.log(50, '%s|%s|%s|%s|%s|%s|%s|%s|%s|%s' \
- %(requestID, threadID, serviceName, partnerName, targetEntity, targetServiceName,
- errorCategory, errorCode, errorDescription, detailMessage))
- elif style == CommonLogger.DebugFile:
- if CommonLogger.verbose: print("using CommonLogger.DebugFile")
- self._logger.log(50, '%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s' \
- %(requestID, threadID, serverName, serviceName, instanceUUID, upperLogLevel,
- severity, serverIPAddress, server, IPAddress, className, timer, detailMessage))
- elif style == CommonLogger.AuditFile:
- if CommonLogger.verbose: print("using CommonLogger.AuditFile")
- endAuditTime, endAuditMsec = self._getTime()
- if type(nbegTime) is dict and 'begTime' in nbegTime and 'begMsec' in nbegTime:
- d = { 'begtime': self._noSep(nbegTime['begTime']), 'begmsecs': float(self._noSep(nbegTime['begMsec'])), 'endtime': endAuditTime, 'endmsecs': endAuditMsec }
- elif self._begTime is not None:
- d = { 'begtime': self._begTime, 'begmsecs': self._begMsec, 'endtime': endAuditTime, 'endmsecs': endAuditMsec }
- else:
- d = { 'begtime': endAuditTime, 'begmsecs': endAuditMsec, 'endtime': endAuditTime, 'endmsecs': endAuditMsec }
- self._begTime = None
- unused = ""
- self._logger.log(50, '%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s' \
- %(requestID, serviceInstanceID, threadID, serverName, serviceName, partnerName,
- statusCode, responseCode, responseDescription, instanceUUID, upperLogLevel,
- severity, serverIPAddress, timer, server, IPAddress, className, unused,
- processKey, customField1, customField2, customField3, customField4, detailMessage), extra=d)
- elif style == CommonLogger.MetricsFile:
- if CommonLogger.verbose: print("using CommonLogger.MetricsFile")
- endMetricsTime, endMetricsMsec = self._getTime()
- if type(nbegTime) is dict and 'begTime' in nbegTime and 'begMsec' in nbegTime:
- d = { 'begtime': self._noSep(nbegTime['begTime']), 'begmsecs': float(self._noSep(nbegTime['begMsec'])), 'endtime': endMetricsTime, 'endmsecs': endMetricsMsec }
- elif self._begTime is not None:
- d = { 'begtime': self._begTime, 'begmsecs': self._begMsec, 'endtime': endMetricsTime, 'endmsecs': endMetricsMsec }
- else:
- d = { 'begtime': endMetricsTime, 'begmsecs': endMetricsMsec, 'endtime': endMetricsTime, 'endmsecs': endMetricsMsec }
- self._begTime = None
- unused = ""
- self._logger.log(50, '%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s' \
- %(requestID, serviceInstanceID, threadID, serverName, serviceName, partnerName,
- targetEntity, targetServiceName, statusCode, responseCode, responseDescription,
- instanceUUID, upperLogLevel, severity, serverIPAddress, timer, server, IPAddress,
- className, unused, processKey, targetVirtualEntity, customField1, customField2,
- customField3, customField4, detailMessage), extra=d)
- else:
- print("!!!!!!!!!!!!!!!! style not set: %s" % self._fields["style"])
-
- def _getTime(self):
- ct = time.time()
- lt = time.localtime(ct)
- return (time.strftime(CommonLogger.DateFmt, lt), (ct - int(ct)) * 1000)
-
- def setStartRecordEvent(self):
- """
- Set the start time to be saved for both audit and metrics records
- """
- self._begTime, self._begMsec = self._getTime()
-
- def getStartRecordEvent(self):
- """
- Retrieve the start time to be used for either audit and metrics records
- """
- begTime, begMsec = self._getTime()
- return {'begTime':begTime, 'begMsec':begMsec}
-
- def _getVal(self, key, default, **kwargs):
- val = self._fields.get(key)
- if key in kwargs: val = kwargs[key]
- if val is None: val = default
- return self._noSep(val)
-
- def _getArg(self, key, default, **kwargs):
- val = None
- if key in kwargs: val = kwargs[key]
- if val is None: val = default
- return val
-
- def _noSep(self, message):
- if message is None: return ''
- return re.sub(r'[\|\n]', ' ', str(message))
-
- def _intLogLevel(self, logLevel):
- if logLevel == 'FATAL': useLevel = 50
- elif logLevel == 'ERROR': useLevel = 40
- elif logLevel == 'WARN': useLevel = 30
- elif logLevel == 'INFO': useLevel = 20
- elif logLevel == 'DEBUG': useLevel = 10
- else: useLevel = 0
- return useLevel
-
- def _mkdir_p(self, filename):
- """Create missing directories from a full filename path like mkdir -p"""
-
- if filename is None:
- return
-
- folder=os.path.dirname(filename)
-
- if folder == "":
- return
-
- if not os.path.exists(folder):
- try:
- os.makedirs(folder)
- except OSError as err:
- print("error number %d creating %s directory to hold %s logfile: %s" %(err.errno, err.filename, filename, err.strerror), file=sys.stderr)
- sys.exit(2)
- except Exception as err:
- print("error creating %s directory to hold %s logfile: %s" %(folder, filename, str(err)), file=sys.stderr)
- sys.exit(2)
-
-if __name__ == "__main__":
-
- def __checkOneTime(line):
- format = r'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}[+]00:00[|]'
- m = re.match(format, line)
- if not m:
- print("ERROR: time string did not match proper time format, %s" %line)
- print("\t: format=%s" % format)
- return 1
- return 0
-
- def __checkTwoTimes(line, different):
- format = r'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:([0-9]{2}),([0-9]{3})[+]00:00[|][0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:([0-9]{2}),([0-9]{3})[+]00:00[|]'
- m = re.match(format, line)
- if not m:
- print("ERROR: time strings did not match proper time format, %s" %line)
- print("\t: format=%s" % format)
- return 1
- second1 = int(m.group(1))
- msec1 = int(m.group(2))
- second2 = int(m.group(3))
- msec2 = int(m.group(4))
- if second1 > second2: second2 += 60
- t1 = second1 * 1000 + msec1
- t2 = second2 * 1000 + msec2
- diff = t2 - t1
- # print("t1=%d (%d,%d) t2=%d (%d,%d), diff = %d" % (t1, second1, msec1, t2, second2, msec2, diff))
- if different:
- if diff < 500:
- print("ERROR: times did not differ enough: %s" % line)
- return 1
- else:
- if diff > 10:
- print("ERROR: times were too far apart: %s" % line)
- return 1
- return 0
-
- def __checkBegTime(line):
- format = "begTime should be ([-0-9T:]+)"
- # print("checkBegTime(%s)" % line)
- strt = 'begTime should be '
- i = line.index(strt)
- rest = line[i+len(strt):].rstrip()
- if not line.startswith(rest + ","):
- print("ERROR: line %s should start with %s" % (line,rest))
- return 1
- return 0
-
- def __checkLog(logfile, numLines, numFields):
- lineCount = 0
- errorCount = 0
- with open(logfile, "r") as fp:
- for line in fp:
- # print("saw line %s" % line)
- lineCount += 1
- c = line.count('|')
- if c != numFields:
- print("ERROR: wrong number of fields. Expected %d, got %d: %s" % (numFields, c, line))
- errorCount += 1
- if re.search("should not appear", line):
- print("ERROR: a line appeared that should not have appeared, %s" % line)
- errorCount += 1
- elif re.search("single time", line):
- errorCount += __checkOneTime(line)
- elif re.search("time should be the same", line):
- errorCount += __checkTwoTimes(line, different=False)
- elif re.search("time should be ", line):
- errorCount += __checkTwoTimes(line, different=True)
- elif re.search("begTime should be ", line):
- errorCount += __checkBegTime(line)
- else:
- print("ERROR: an unknown message appeared, %s" % line)
- errorCount += 1
-
- if lineCount != numLines:
- print("ERROR: expected %d lines, but got %d lines" % (numLines, lineCount))
- errorCount += 1
- return errorCount
-
- import os, argparse
- parser = argparse.ArgumentParser(description="test the CommonLogger functions")
- parser.add_argument("-k", "--keeplogs", help="Keep the log files after finishing the tests", action="store_true")
- parser.add_argument("-v", "--verbose", help="Print debugging messages", action="store_true")
- args = parser.parse_args()
-
- spid = str(os.getpid())
- if args.keeplogs:
- spid = ""
- logcfg = "/tmp/cl.log" + spid + ".cfg"
- errorLog = "/tmp/cl.error" + spid + ".log"
- metricsLog = "/tmp/cl.metrics" + spid + ".log"
- auditLog = "/tmp/cl.audit" + spid + ".log"
- debugLog = "/tmp/cl.debug" + spid + ".log"
- if args.verbose: CommonLogger.verbose = True
-
- import atexit
- def cleanupTmps():
- for f in [ logcfg, errorLog, metricsLog, auditLog, debugLog ]:
- try:
- os.remove(f)
- except:
- pass
- if not args.keeplogs:
- atexit.register(cleanupTmps)
-
- with open(logcfg, "w") as o:
- o.write("error = " + errorLog + "\n" +
- "errorLogLevel = WARN\n" +
- "metrics = " + metricsLog + "\n" +
- "metricsLogLevel = INFO\n" +
- "audit = " + auditLog + "\n" +
- "auditLogLevel = INFO\n" +
- "debug = " + debugLog + "\n" +
- "debugLogLevel = DEBUG\n")
-
- import uuid
- instanceUUID = uuid.uuid1()
- serviceName = "testharness"
- errorLogger = CommonLogger(logcfg, "error", style=CommonLogger.ErrorFile, instanceUUID=instanceUUID, serviceName=serviceName)
- debugLogger = CommonLogger(logcfg, "debug", style=CommonLogger.DebugFile, instanceUUID=instanceUUID, serviceName=serviceName)
- auditLogger = CommonLogger(logcfg, "audit", style=CommonLogger.AuditFile, instanceUUID=instanceUUID, serviceName=serviceName)
- metricsLogger = CommonLogger(logcfg, "metrics", style=CommonLogger.MetricsFile, instanceUUID=instanceUUID, serviceName=serviceName)
-
- testsRun = 0
- errorCount = 0
- errorLogger.debug("error calling debug (should not appear)")
- errorLogger.info("error calling info (should not appear)")
- errorLogger.warn("error calling warn (single time)")
- errorLogger.error("error calling error (single time)")
- errorLogger.setStartRecordEvent()
- time.sleep(1)
- errorLogger.fatal("error calling fatal, after setStartRecordEvent and sleep (start should be ignored, single time)")
- testsRun += 6
- errorCount += __checkLog(errorLog, 3, 10)
-
- auditLogger.debug("audit calling debug (should not appear)")
- auditLogger.info("audit calling info (time should be the same)")
- auditLogger.warn("audit calling warn (time should be the same)")
- auditLogger.error("audit calling error (time should be the same)")
- bt = auditLogger.getStartRecordEvent()
- # print("bt=%s" % bt)
- time.sleep(1)
- auditLogger.setStartRecordEvent()
- time.sleep(1)
- auditLogger.fatal("audit calling fatal, after setStartRecordEvent and sleep, time should be different)")
- time.sleep(1)
- auditLogger.fatal("audit calling fatal, begTime should be %s" % bt['begTime'], begTime=bt)
- testsRun += 7
- errorCount += __checkLog(auditLog, 5, 25)
-
- debugLogger.debug("debug calling debug (single time)")
- debugLogger.info("debug calling info (single time)")
- debugLogger.warn("debug calling warn (single time)")
- debugLogger.setStartRecordEvent()
- time.sleep(1)
- debugLogger.error("debug calling error, after SetStartRecordEvent and sleep (start should be ignored, single time)")
- debugLogger.fatal("debug calling fatal (single time)")
- errorCount += __checkLog(debugLog, 5, 13)
- testsRun += 6
-
- metricsLogger.debug("metrics calling debug (should not appear)")
- metricsLogger.info("metrics calling info (time should be the same)")
- metricsLogger.warn("metrics calling warn (time should be the same)")
- bt = metricsLogger.getStartRecordEvent()
- time.sleep(1)
- metricsLogger.setStartRecordEvent()
- time.sleep(1)
- metricsLogger.error("metrics calling error, after SetStartRecordEvent and sleep, time should be different")
- metricsLogger.fatal("metrics calling fatal (time should be the same)")
- time.sleep(1)
- metricsLogger.fatal("metrics calling fatal, begTime should be %s" % bt['begTime'], begTime=bt)
- testsRun += 6
- errorCount += __checkLog(metricsLog, 5, 28)
-
- print("%d tests run, %d errors found" % (testsRun, errorCount))
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/green-flasher-12x10.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/green-flasher-12x10.gif
deleted file mode 100644
index c6d33b5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/green-flasher-12x10.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/grey-flasher-12x10.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/grey-flasher-12x10.gif
deleted file mode 100644
index dfa81a2..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/grey-flasher-12x10.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/makefile b/pgaas/src/stage/opt/app/pgaas/lib/gif/makefile
deleted file mode 100644
index 105033d..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-test:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-stage:
- mkdir -p $(STAGEDIR)/$(DISTPATH)/lib/gif
- for i in *; do \
- case $$i in \
- *.py ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/lib/gif/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/lib/gif/$$j; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- cp $$i $(STAGEDIR)/$(DISTPATH)/lib/gif/$$i; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/lib/gif/$$i; \
- ;; \
- esac; \
- done
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/red-flasher-12x10.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/red-flasher-12x10.gif
deleted file mode 100644
index ab16a81..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/red-flasher-12x10.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-G-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-G-12x25.gif
deleted file mode 100644
index 0ce2785..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-G-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-R-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-R-12x25.gif
deleted file mode 100644
index 0750594..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-R-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-Y-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-Y-12x25.gif
deleted file mode 100644
index 4f95bf0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-Y-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g-12x25.gif
deleted file mode 100644
index 0ce2785..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g2-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g2-12x25.gif
deleted file mode 100644
index 1be7fa1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-g2-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-green.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-green.gif
deleted file mode 100644
index 1be7fa1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-green.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-red.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-red.gif
deleted file mode 100644
index daa6960..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-red.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-yellow.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-yellow.gif
deleted file mode 100644
index 1bd8731..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-master-yellow.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r-12x25.gif
deleted file mode 100644
index 0750594..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r2-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r2-12x25.gif
deleted file mode 100644
index ff26986..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r2-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r3-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r3-12x25.gif
deleted file mode 100644
index daa6960..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-r3-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-green.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-green.gif
deleted file mode 100644
index c6d33b5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-green.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-red.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-red.gif
deleted file mode 100644
index ab16a81..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-red.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-yellow.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-yellow.gif
deleted file mode 100644
index 5e16750..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-secondary-yellow.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y-12x25.gif
deleted file mode 100644
index 4f95bf0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y2-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y2-12x25.gif
deleted file mode 100644
index 886e548..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y2-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y3-12x25.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y3-12x25.gif
deleted file mode 100644
index 1bd8731..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/stoplight-y3-12x25.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/gif/yellow-flasher-12x10.gif b/pgaas/src/stage/opt/app/pgaas/lib/gif/yellow-flasher-12x10.gif
deleted file mode 100644
index 5e16750..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/gif/yellow-flasher-12x10.gif
+++ /dev/null
Binary files differ
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/iDNS-responder.py b/pgaas/src/stage/opt/app/pgaas/lib/iDNS-responder.py
deleted file mode 100755
index f295040..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/iDNS-responder.py
+++ /dev/null
@@ -1,1105 +0,0 @@
-#!/usr/bin/env python3
-# -*- indent-tabs-mode: nil -*-
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-import http.server, socket
-import time, os, sys, re, subprocess, traceback, html, base64, argparse
-import psycopg2
-# TODO - move lots of code to a common library to share with other python modules
-# sys.path.append("/opt/app/pgaas/lib")
-# import dbtools
-
-DEF_HOST_NAME = os.popen("hostname -f").readlines()[0].strip()
-DEF_PORT_NUMBER = 8000
-
-validPerDbTables = [ "pg_tables", "pg_indexes", "pg_views" ]
-topButton = "&nbsp;<font size='1'><a href='#'>^</a></font>"
-
-getLogDict = { }
-def openLogFile(fname):
- """
- Open a log file for append and remember the file descriptor.
- Remember its inode/dev pair.
- If either changes, reopen it.
- """
- reopen = False
- try:
- curstat = os.stat(fname)
- except:
- reopen = True
- global getLogDict
- # print("top: reopen(%s)=%s" % (fname, reopen))
- if not reopen and getLogDict.get(fname):
- # print("found getLogDict.get(" + fname + ")")
- d = getLogDict[fname]
- fd = d["fd"] if "fd" in d else None
- oldstat = d["stat"] if "stat" in d else None
- if fd is None:
- reopen = True
- elif oldstat is None:
- reopen = True
- elif oldstat.st_ino != curstat.st_ino or oldstat.st_dev != curstat.st_dev:
- reopen = True
- if reopen or not getLogDict.get(fname):
- # print("closing old fd")
- oldd = getLogDict.get(fname)
- if oldd is not None:
- oldfd = oldd.get("fd")
- if oldfd is not None:
- oldfd.close()
- # print("reopening " + fname)
- fd = open(fname, "a")
- st = os.stat(fname)
- getLogDict[fname] = { "fd": fd, "stat": st }
- return getLogDict[fname]["fd"]
-
-def traceMsg(msg):
- """ print a trace message. By default, this goes to trace.out """
- file = sys.stderr if testOn else openLogFile("/opt/logs/dcae/postgresql/idns/trace.log")
- print(time.asctime(), msg, file=file)
- file.flush()
-
-def errTrace(msg):
- """ print an error message. By default, sys.stderr is rerouted to error.log """
- file = sys.stderr if testOn else openLogFile("/opt/logs/dcae/postgresql/idns/error.log")
- sys.stderr = file
- print(time.asctime(), msg, file=file)
- file.flush()
-
-def debugTrace(msg):
- """ print a debug message. By default, this goes to debug.log """
- if debugOn:
- file = sys.stderr if testOn else openLogFile("/opt/logs/dcae/postgresql/idns/debug.log")
- print(time.asctime(), msg, file=file)
- file.flush()
-
-def readFile(file, defStr = None, mode = "r"):
- """ read a file and return its contents """
- ret = defStr
- try:
- with open(file, mode) as f:
- ret = f.read()
- except Exception as e:
- if defStr is not None:
- ret = defStr
- pass
- else:
- raise e
- return ret
-
-def readFileBinary(file, defStr = None):
- return readFile(file, defStr = defStr, mode = "rb")
-
-def readFileHtml(file, defStr = None):
- """ read a file and return its contents, escaping anything important to HTML """
- return html.escape(readFile(file, defStr))
-
-def readPipe(cmd, ignoreError = False):
- """ read a pipe and return its contents """
- ret = ""
- try:
- with os.popen(cmd) as p:
- ret = p.read()
- except Exception as e:
- if ignoreError:
- pass
- else:
- raise e
- return ret
-
-def readPipeHtml(file, defStr = None):
- """ read a pipe and return its contents, escaping anything important to HTML """
- return html.escape(readPipe(file, defStr))
-
-def readFileOrGz(file, defStr = None):
- """ read a file and return its contents. If the file ends in .gz, use gunzip on it """
- if file.endswith(".gz"):
- return readPipe("gunzip < '" + file + "'", defStr)
- else:
- return readFile(file, defStr)
-
-def readFileOrGzHtml(file, defStr = None):
- """ read a file and return its contents, escaping anything important to HTML. If the file ends in .gz, use gunzip on it """
- return html.escape(readFileOrGz(file, defStr))
-
-def getCdfPropValue(nm, encrypted=False, cfg="/opt/app/cdf/lib/cdf.cfg", dflt=None):
- """
- Return a value from the configuration file /opt/app/cdf/lib/cdf.cfg
- """
- return getPropValue(nm=nm, encrypted=encrypted, cfg=cfg, dflt=dflt)
-
-def getPgaasPropValue(nm, encrypted=False, cfg="/opt/app/pgaas/lib/pgaas.cfg", dflt=None):
- """
- Return a value from the configuration file /opt/app/pgaas/lib/pgaas.cfg
- """
- return getPropValue(nm=nm, encrypted=encrypted, cfg=cfg, dflt=dflt)
-
-getPropDict = { }
-
-def getPropValue(nm, encrypted=False, cfg=None, dflt=None):
- """
- Return a value from the specified configuration file
- """
- if cfg is None:
- return None
- global getPropDict
- if getPropDict.get(cfg):
- savedDate = getPropDict[cfg]
- debugTrace("getPropValue: savedDate[" + cfg + "]=" + str(savedDate))
- cfgDate = os.path.getmtime(cfg)
- debugTrace("getPropValue: cfgDate=" + str(cfgDate))
- if float(savedDate) >= float(cfgDate): # cfg has not changed
- val = getPropDict.get(cfg + ":" + nm)
- debugTrace("getPropValue: val=" + str(val))
- if val is not None:
- debugTrace("getPropValue: getPropValue(saved) => '%s'" % str(val))
- return val
- else: # clear out any previously saved keys
- cfgcolon = cfg + ":"
- for k in list(getPropDict.keys()):
- if re.match(cfgcolon, k):
- del getPropDict[k]
- getPropValueProgram = '/opt/app/cdf/bin/getpropvalue'
- if encrypted:
- cmd = [getPropValueProgram, "-f", cfg, "-x", "-n", nm]
- else:
- cmd = [getPropValueProgram, "-f", cfg, "-n", nm]
- debugTrace("getPropValue: cmd=%s" % str(cmd))
-
- try:
- with subprocess.Popen(cmd,shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE) as p:
- (origString, stderrString) = p.communicate()
- except Exception as e:
- traceback.print_exc()
- errTrace("Error decoding string because {0}".format(e))
- return None
- else:
- if stderrString:
- if not re.search("Configuration property .* must be defined", stderrString.decode('utf-8')): # and dflt is not None:
- errTrace("Error decoding string because: {0} ".format(stderrString))
- return dflt
- else:
- debugTrace("getPropValue() => '%s'" % str(origString))
- getPropDict[cfg] = os.path.getmtime(cfg)
- val = origString.decode('utf-8').rstrip('\n')
- debugTrace("getPropValue() => '%s'" % val)
- getPropDict[cfg + ":" + nm] = val
- return val
-
-def checkFileAge(full_path,number_of_days):
- """
- return True if the file is >= number_of_days old from right now
- """
- time_n_days_ago = time.time() - (number_of_days * 24 * 60 * 60)
- stat = os.stat(full_path)
- return time_n_days_ago >= stat.st_mtime
-
-def jumpTable(prefix, *args):
- """
- Return a string consisting of a series of <a href='#prefix-xxx'>xxx</a>.
- Include <font size='1'></font> around all of it.
- """
- header = "<font size='1'>"
- sep = ""
- for table in args:
- header = header + sep + "<a href='#" + prefix + "-" + table + "'>" + table + "</a> "
- sep = " | "
- header = header + "</font>"
- return header
-
-def addFilenameHrefs(prefix, str):
- """
- for each line in a list of filenames, change the last two elements of the path to an anchor.
- """
- ret = ""
- for line in str.splitlines():
- line = re.sub("/([^/]+)/([^/]+)$", '/\g<1>' + "/<a href='" + prefix + '\g<1>/\g<2>' + "'>" + '\g<2>' + "</a>", line)
- ret = ret + line + "\n"
- return ret
-
-def ifEmpty(str, defStr):
- """ if a string is empty, return the defStr in its place """
- if str is None or str == "":
- str = defStr
- return str
-
-def isExe(fname):
- """ check if a path exists and is executable """
- return os.path.exists(fname) and os.access(fname, os.X_OK)
-
-def replaceQuoteNewline(str):
- return re.sub('"', "'", re.sub("\n", " ", str))
-
-class MyHandler(http.server.BaseHTTPRequestHandler):
-
- def isServerUp(self):
- """
- Check if the postgres server is up and running by calling pg_ctl and
- looking for "server is running" (or "no server running").
- Then call ps -fu postgres and make sure we're not waiting on a master:
- postgres 20815 20812 0 15:52 ? 00:00:00 postgres: startup process waiting for 000000010000000000000001
- """
- PGCTLPATH1 = "/usr/lib/postgresql/9.6/bin/pg_ctl"
- PGCTLPATH2 = "/usr/lib/postgresql/9.5/bin/pg_ctl"
- PGCTLPATH3 = "/opt/app/postgresql-9.5.2/bin/pg_ctl"
- if isExe(PGCTLPATH1):
- statusLines = readPipe(PGCTLPATH1 + " status -D /dbroot/pgdata/main/")
- elif isExe(PGCTLPATH2):
- statusLines = readPipe(PGCTLPATH2 + " status -D /dbroot/pgdata/main/")
- else:
- statusLines = readPipe(PGCTLPATH3 + " status -D /dbroot/pgdata/main/")
- debugTrace("isServerUp(): statusLines = %s" % statusLines)
- psLines = readPipe("ps -fu postgres")
- debugTrace("isServerUp(): ps -fu postgres = %s" % psLines)
- ret = len(statusLines) > 0 and re.search("server is running", statusLines, re.MULTILINE) and not re.search("startup process\\s+waiting", psLines, re.MULTILINE)
- debugTrace("isServerUp(): returning = %s" % ret)
- return ret
-
- def isRepmgrdUp(self):
- """
- Check if the repmgrd server is up and running by calling "pgrep repmgrd" and
- looking for a process id.
- """
- statusLines = readPipe("pgrep repmgrd")
- debugTrace("isServerUp(): statusLines = %s" % statusLines)
- ret = len(statusLines) > 0 and re.search("[0-9]+", statusLines, re.MULTILINE) != None
- debugTrace("isServerUp(): returning = %s" % ret)
- return ret
-
- def isMaster(self):
- """
- Check if the postgresql server is a master by asking the server if it is in recovery (meaning not a master)
- """
- ret = None
- con = None
- try:
- pwd = getCdfPropValue("postgres", True)
- # debugTrace("using pwd=%s" % pwd)
- con = psycopg2.connect(database = "postgres", user="postgres", password=pwd, host= HOST_NAME)
- str = dbGetFirstRowOneValue(con, "select pg_is_in_recovery()")
- debugTrace("pg_is_in_recovery() <= %s" % str)
- ret = not str
-
- except psycopg2.DatabaseError as e:
- errTrace('Database Error %s' % e)
-
- except Exception as e:
- traceback.print_exc()
- errTrace(str(e))
-
- finally:
- if con is not None:
- con.close()
-
- debugTrace("isMaster(): returning = %s" % ret)
- return ret
-
- def hasRepmgr(self):
- """
- Check if the postgresql server is a master by asking the server if it is in recovery (meaning not a master)
- """
- ret = None
- con = None
- try:
- pwd = getCdfPropValue("postgres", True)
- # debugTrace("using pwd=%s" % pwd)
- con = psycopg2.connect(database = "postgres", user="postgres", password=pwd, host= HOST_NAME)
- str = dbGetFirstRowOneValue(con, "select * from pg_database where datname = 'repmgr'")
- debugTrace("repmgr database check() <= %s" % str)
- ret = str
-
- except psycopg2.DatabaseError as e:
- errTrace('Database Error %s' % e)
-
- except Exception as e:
- traceback.print_exc()
- errTrace(str(e))
-
- finally:
- if con is not None:
- con.close()
-
- debugTrace("isMaster(): returning = %s" % ret)
- return ret
-
- def isValidPgHost(self, host):
- """
- Check a hostname against the list of nodes stored in the pgnodes CDF configuration file.
- """
- pgnodes = getCdfPropValue("pgnodes", "").split('|')
- ret = host in pgnodes
- debugTrace("isValidPgHost(): looking for host='%s' in pgnodes='%s' => %s" % (host, str(pgnodes), ret))
- return ret
-
- def checkAuth(self):
- """
- HTTP/1.1 401 Unauthorized
- Date: Mon, 04 Feb 2014 16:50:53 GMT
- WWW-Authenticate: Basic realm="WallyWorld"
-
- Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
- """
- pswd = getCdfPropValue("wgetpswd", True)
- b64pswd = base64.b64encode(("pgaas:" + pswd).encode("ascii"))
- basicPlusPswd = "Basic %s" % b64pswd.decode("ascii")
-
- if self.headers['Authorization'] == None:
- return False
- elif self.headers['Authorization'] == basicPlusPswd:
- return True
- else:
- return False
-
- def pgStatus(self, *pgargs):
- """ return a table(s), using the system database of postgres """
- return self.pgStatusDBx("postgres", *pgargs)
-
- def pgStatusDB(self, DB, *pgargs):
- """ return a table(s), using the given database """
- return self.pgStatusDBx(DB, *pgargs)
-
- def pgStatusDBx(self, DB, *pgargs):
- """ return a table(s), using the given database """
- debugTrace("pgStatusDBx(DB=" + DB + ")")
- con = None
- ret = None
- try:
- con = psycopg2.connect(database = DB, user="postgres", password=getCdfPropValue("postgres", True), host= HOST_NAME)
- ret = getTableHtmls(con, DB, pgargs)
-
- except psycopg2.DatabaseError as e:
- errTrace('Database Error %s' % e)
-
- except Exception as e:
- traceback.print_exc()
- errTrace(str(e))
-
- finally:
- if con is not None:
- con.close()
-
- return ret
-
- def do_HEAD(self):
- """Respond to a HEAD request."""
- self.doHEADandGET(False)
-
- def do_GET(self):
- """Respond to a GET request."""
- self.doHEADandGET(True)
-
- def doHEADandGET(self, sendMsg):
- resp = 400
- msg = ""
- sendBinary = False
- contentType = "text/plain"
- global debugOn
-
- if self.path == "/statusall":
- self.path = "/all/status/pgstatus"
- elif self.path == "/pgstatusall":
- self.path = "/pgstatus"
-
- if self.path == '/ro':
- if os.path.isfile("/var/run/postgresql/force-ro-off"):
- isrw = "FORCE-RO-OFF"
- elif os.path.isfile("/var/run/postgresql/force-ro-on"):
- isrw = "Secondary"
- else:
- isrw = readFile("/var/run/postgresql/isrw", "n/a")
- debugTrace("/ro: isrw returns %s" % isrw)
- if re.match("Secondary", isrw) or re.match("Master", isrw):
- resp = 200
- msg = "server is up"
- else:
- msg = "server is not up " + isrw
- errTrace("/ro: isrw returns %s" % isrw)
-
- elif self.path == '/rw':
- isrw = readFile("/var/run/postgresql/isrw", "n/a")
- debugTrace("/rw: isrw returns %s" % isrw)
- if re.match("Master", isrw):
- resp = 200
- msg = "master server is up"
- elif re.match("Secondary", isrw):
- msg = "non-master server is up"
- else:
- msg = "server is not up " + isrw
- errTrace("/ro: isrw returns %s" % isrw)
-
- elif self.path == '/isrw':
- isrw = readFile("/var/run/postgresql/isrw", "n/a")
- debugTrace("/isrw: returns %s" % isrw)
- resp = 200
- msg = isrw
-
- elif self.path == '/healthcheck/status':
- hs = readFile("/var/run/postgresql/check_cluster", "n/a")
- debugTrace("/healthcheck/status: returns %s" % hs)
- resp = 429 if hs == "n/a" else 200
- msg = '{ "output": "%s" }' % replaceQuoteNewline(hs)
-
- elif self.path == '/healthcheck/writablestatus':
- isrw = readFile("/var/run/postgresql/isrw", "n/a")
- debugTrace("/rw: isrw returns %s" % isrw)
- resp = 429
- if re.match("Master", isrw):
- resp = 200
- msg = '{ "output": "master server is up" }'
- elif re.match("Secondary", isrw):
- msg = '{ "output": "non-master server is up" }'
- else:
- msg = '{ "output": "server is not up %s" }' % replaceQuoteNewline(isrw)
- errTrace("/ro: isrw returns %s" % isrw)
-
- elif self.path == '/healthcheck/readonlystatus':
- if os.path.isfile("/var/run/postgresql/force-ro-off"):
- isrw = "FORCE-RO-OFF"
- elif os.path.isfile("/var/run/postgresql/force-ro-on"):
- isrw = "Secondary"
- else:
- isrw = readFile("/var/run/postgresql/isrw", "n/a")
- debugTrace("/ro: isrw returns %s" % isrw)
- resp = 429
- if re.match("Secondary", isrw) or re.match("Master", isrw):
- resp = 200
- msg = '{ "output": "server is up" }'
- else:
- msg = '{ "output": "server is not up %s" }' % replaceQuoteNewline(isrw)
- errTrace("/ro: isrw returns %s" % isrw)
-
- elif self.path == '/':
- ui = readFile("/opt/app/pgaas/man/iDNS-responder.swagger.json", "n/a")
- debugTrace("/: returns %s" % ui)
- msg = ui
- if ui != "n/a":
- resp = 200
- contentType = "application/json"
-
- elif not self.checkAuth():
- resp = 401
- msg = "not authenticated"
-
- elif self.path == '/ismaster':
- masterYes = self.isMaster()
- msg = ""
- if masterYes:
- resp = 200
- msg = "master server"
- else:
- msg = "non-master server"
-
- elif self.path == '/issecondary':
- masterYes = self.isMaster()
- msg = ""
- if not masterYes:
- resp = 200
- msg = "secondary server"
- else:
- msg = "non-secondary server"
-
- elif self.path == '/ismaintenance':
- msg = ""
- if os.path.exists("/var/run/postgresql/inmaintenance"):
- resp = 200
- msg = "in maintenance mode"
- else:
- msg = "not in maintenance mode"
-
- elif self.path == '/getpubkey':
- try:
- resp = 200
- msg = readFile(os.path.expanduser("~postgres/.ssh/id_rsa.pub"))
- except:
- traceback.print_exc()
- resp = 404
- msg = "key does not exist"
-
- elif re.match("/getssh/", self.path):
- # getssh/hostname - push ssh pub/private keys across
- host = re.sub("^/getssh/", "", self.path)
- debugTrace("#1: /getssh/ host='%s'" % host)
- host = re.sub("[^a-zA-Z0-9_.-]", "", host)
- debugTrace("#2: /getssh/ host='%s'" % host)
- if self.isValidPgHost(host):
- p = readPipe("scp -o StrictHostKeyChecking=no -i ~postgres/.ssh/id_rsa ~postgres/.ssh/id_rsa* postgres@" + host + ":.ssh/ 2>&1")
- debugTrace("#3: /getssh/ to '%s' returns '%s'" % (host, p))
- msg = "OK " + p
- resp = 200
- else:
- msg = "NOT OK INVALID HOST"
- resp = 404
-
- elif re.match("/getcdf/", self.path):
- # getcdf/hostname - push cdf.cfg file across
- fi = "/opt/app/cdf/lib/cdf.cfg"
- # make sure that the file exists and contains the encrypted postgres password
- if re.search("postgres.x", readFile(fi, "n/a")) and re.search("repmgr.x", readFile(fi, "n/a")):
- host = re.sub("^/getcdf/", "", self.path)
- debugTrace("#1: /getcdf/ host='%s'" % host)
- host = re.sub("[^a-zA-Z0-9_.-]", "", host)
- debugTrace("#2: /getcdf/ host='%s'" % host)
- if self.isValidPgHost(host):
- p = readPipe("scp -o StrictHostKeyChecking=no -i ~postgres/.ssh/id_rsa " + fi + " postgres@" + host + ":/opt/app/cdf/lib/cdf.cfg 2>&1")
- debugTrace("#3: /getcdf/ to '%s' returns '%s'" % (host, p))
- msg = "OK " + p
- resp = 200
- else:
- msg = "NOT OK INVALID HOST"
- resp = 404
- else:
- msg = "NOT OK YET"
- resp = 404
-
- elif self.path == '/hasrepmgr':
- repmgrYes = self.hasRepmgr()
- msg = ""
- if repmgrYes:
- resp = 200
- msg = "OK"
- else:
- msg = "NOT OK YET"
-
- elif self.path == '/status':
- resp = 200
- contentType = "text/html"
- isServerUp = self.isServerUp()
- isRepmgrdUp = self.isRepmgrdUp()
- isMaster = self.isMaster()
- color = "green" if (isServerUp and isRepmgrdUp) else "yellow" if (isServerUp or isRepmgrdUp) else "red"
- dashed = "solid" if isMaster else "dashed"
- jump = jumpTable("status", "ps", "repmgr", "df", "uptime", "loadavg", "cpuinfo", "meminfo", "pgaas-failures", "pgaas-inst-report", "nslookup", "ip-addr-show", "who-br")
-
- msg = """<table style='border: 10px %s %s' width='100%%'><tr><td>
- <b>isServerUp</b> %s
- <b>isRepmgrdUp</b> %s
- <b>isMaster</b> %s
- <b>isrw</b> %s %s\n<br/>
- %s
- <h2><a name='status-ps'>ps</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-repmgr'>repmgr cluster show</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-df'>df</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-uptime'>uptime</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2>/proc/uptime%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-loadavg'>loadavg</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-cpuinfo'>cpuinfo</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-meminfo'>meminfo</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-pgaas-failures'>pgaas-failures</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-pgaas-inst-report'>pgaas.inst.report</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-nslookup'>nslookup</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-ip-addr-show'>ip addr</a>%s</h2>\n<pre>\n%s\n</pre>\n
- <h2><a name='status-who-br'>who -br</a>%s</h2>\n<pre>\n%s\n</pre>\n
- </td></tr></table>""" % (color, dashed, isServerUp, isRepmgrdUp, isMaster,
- readFileHtml("/var/run/postgresql/isrw", "n/a"),
- readPipeHtml("hostname -f"), jump,
- topButton, readPipeHtml("ps -fu postgres"),
- topButton, readPipeHtml("/opt/app/pgaas/bin/repmgrc cluster show"),
- topButton, readPipeHtml("df -h"),
- topButton, readPipeHtml("uptime", defStr="n/a"),
- topButton, readFileHtml("/proc/uptime", defStr="n/a"),
- topButton, readFileHtml("/proc/loadavg", defStr="n/a"),
- topButton, readFileHtml("/proc/cpuinfo", defStr="n/a"),
- topButton, readFileHtml("/proc/meminfo", defStr="n/a"),
- topButton, readFileHtml("/tmp/pgaas-failures", defStr="n/a"),
- topButton, readFileHtml("/tmp/pgaas.inst.report", defStr="n/a"),
- topButton, readPipeHtml("nslookup $(hostname -f)", defStr="n/a"),
- topButton, readPipeHtml("ip addr show", defStr="n/a"),
- topButton, readPipeHtml("who -br", defStr="n/a"))
-
- elif self.path == '/stoplight':
- isServerUp = self.isServerUp()
- isRepmgrdUp = self.isRepmgrdUp()
- isMaster = self.isMaster()
- color = "green" if (isServerUp and isRepmgrdUp) else "yellow" if (isServerUp or isRepmgrdUp) else "red"
- masterSecondary = "master" if isMaster else "secondary"
- sendBinary = True
- contentType = "image/gif"
- msg = readFileBinary("/opt/app/postgresql/lib/gif/stoplight-" + masterSecondary + "-" + color + ".gif", "")
-
- elif re.match("/perdb-", self.path):
- # /perdb-
- rest = re.sub("^/perdb-", "", self.path)
- debugTrace("#1: /perdb- others='%s'" % rest)
- rest = re.sub("[^a-zA-Z0-9_./-]", "", rest)
- debugTrace("#2: /perdb- rest='%s'" % rest)
- pgothers = [ x for x in rest.split('-') if x in validPerDbTables ]
- resp = 200
- contentType = "text/html"
- con = None
- try:
- pwd = getCdfPropValue("postgres", True)
- con = psycopg2.connect(database = "postgres", user="postgres", password=pwd, host= HOST_NAME)
- databases = dbGetFirstColumn(con, "select datname from pg_database")
- debugTrace("after select datname from pg_database")
- databases[:] = [DB for DB in databases if not re.match("template[0-9]", DB)]
- msg = msg + jumpTable("db", *databases) + "<br/>"
- for DB in databases:
- debugTrace("looking at DB=" + DB)
- msg = msg + "<h1><a name='db-" + DB + "'>" + DB + "</a>" + topButton + "</h1>\n"
- msg = msg + jumpTable(DB + "-table", *pgothers)
- msg = msg + self.pgStatusDB(DB, *pgothers)
-
- except psycopg2.DatabaseError as e:
- errTrace('Database Error %s' % e)
- msg = "DB is down"
-
- except Exception as e:
- traceback.print_exc()
- errTrace(str(e))
-
- finally:
- if con is not None:
- con.close()
-
- elif self.path == '/pgstatus':
- tables = [ "pg_stat_activity", "pg_stat_archiver", "pg_stat_bgwriter", "pg_stat_database", "pg_stat_database_conflicts", "pg_stat_user_tables", "pg_stat_user_indexes", "pg_statio_user_tables", "pg_statio_user_indexes", "pg_statio_user_sequences", "pg_roles", "pg_database", "pg_tables", "pg_namespace", "pg_roles", "pg_group" ]
- header = jumpTable("postgres-table", *tables)
- msg = self.pgStatus(*tables)
- if msg is not None:
- contentType = "text/html"
- resp = 200
- msg = header + msg
-
- elif self.path == '/pg_stat_activity':
- msg = self.pgStatus("pg_stat_activity")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_archiver':
- msg = self.pgStatus("pg_stat_archiver")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_bgwriter':
- msg = self.pgStatus("pg_stat_bgwriter")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_database':
- msg = self.pgStatus("pg_stat_database")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_database_conflicts':
- msg = self.pgStatus("pg_stat_database_conflicts")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_user_tables':
- msg = self.pgStatus("pg_stat_user_tables")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_stat_user_indexes':
- msg = self.pgStatus("pg_stat_user_indexes")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_statio_user_tables':
- msg = self.pgStatus("pg_statio_user_tables")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_statio_user_indexes':
- msg = self.pgStatus("pg_statio_user_indexes")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_statio_user_sequences':
- msg = self.pgStatus("pg_statio_user_sequences")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_roles':
- msg = self.pgStatus("pg_roles")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_database':
- msg = self.pgStatus("pg_database")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_tables':
- msg = self.pgStatus("pg_tables")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_namespace':
- msg = self.pgStatus("pg_namespace")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif self.path == '/pg_group':
- msg = self.pgStatus("pg_group")
- if msg is not None:
- contentType = "text/html"
- resp = 200
-
- elif re.match("/all/", self.path) or re.match("/small/", self.path):
- if re.match("/small/", self.path):
- height = 40
- else:
- height = 400
- # /all/others
- rest = re.sub("^/all/", "", self.path)
- rest = re.sub("^/small/", "", self.path)
- rest = re.sub("[^a-zA-Z0-9_./-]", "", rest)
- debugTrace("/all/ rest='%s'" % rest)
- others = rest.split('/')
- try:
- resp = 200
- contentType = "text/html"
- pgnodes = getCdfPropValue("pgnodes", "").split('|')
- msg = msg + jumpTable("node", *pgnodes)
- for node in pgnodes:
- hnode = html.escape(node)
- msg = msg + "<h2><a name='node-" + hnode + "'>" + hnode + "</a>" + topButton + "</h2>\n"
- msg = msg + jumpTable(hnode + "-other", *others)
- for other in others:
- msg = msg + "<h3><a name='" + hnode + "-other-" + other + "'>" + other + "</a>" + topButton + "</h3>\n"
- msg = msg + "<iframe src='http://" + hnode + ":" + str(PORT_NUMBER) + "/" + other + "' frameborder='1' scrolling='yes' height='" + str(height) + "' width='1200'></iframe>\n"
- except Exception as e:
- traceback.print_exc()
- errTrace(str(e))
-
- # ATT-ONLY CODE BEGIN
- elif self.path == '/swmstatus':
- resp = 200
- contentType = "text/html"
- msg = "<pre>\n%s\n</pre>" % readPipeHtml("set -x;sed -n '/^STARTING/,/^ENDING/p' /opt/app/aft/aftswmnode/stage/*/com/att/ecomp/dcae/storage/pgaas/*/*/proc_out")
- # ATT-ONLY CODE END
-
- elif self.path == '/debugon':
- msg = "ON"
- resp = 200
- debugOn = True
-
- elif self.path == '/debugoff':
- msg = "OFF"
- resp = 200
- debugOn = False
-
- elif self.path == '/log' or self.path == '/log/':
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (self.path, addFilenameHrefs("/log/", readPipeHtml("ls -l /opt/logs/dcae/postgresql/*/*")))
- resp = 200
- contentType = "text/html"
-
- elif self.path == '/mlog' or self.path == '/mlog/':
- # /opt/app/dcae-controller-service-common-vm-manager/logs
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (self.path, addFilenameHrefs("/mlog/", readPipeHtml("ls -l /opt/app/dcae-controller-service-common-vm-manager/logs/*")))
- resp = 200
- contentType = "text/html"
-
- elif self.path == '/tmp' or self.path == '/tmp/':
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (self.path, addFilenameHrefs("/tmp/", readPipeHtml("ls -l /tmp/*")))
- resp = 200
- contentType = "text/html"
-
- elif re.match("/log/", self.path):
- # /log/dir/path
- rest = re.sub("^/log/", "", self.path)
- debugTrace("#1: /log/ others='%s'" % rest)
- rest = re.sub("[^a-zA-Z0-9_./-]", "", rest)
- rest = re.sub("/[.][.]/", "", rest)
- debugTrace("#2: /log/ rest='%s'" % rest)
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (rest, ifEmpty(readFileOrGzHtml("/opt/logs/dcae/postgresql/" + rest, "n/a"), "<i>empty</i>"))
- resp = 200
- contentType = "text/html"
-
- elif re.match("/mlog/", self.path):
- # /log/dir/path
- rest = re.sub("^/mlog/", "", self.path)
- debugTrace("#1: /mlog/ others='%s'" % rest)
- rest = re.sub("[^a-zA-Z0-9_./-]", "", rest)
- rest = re.sub("/[.][.]/", "", rest)
- rest = re.sub("^logs/", "", rest)
- debugTrace("#2: /mlog/ rest='%s'" % rest)
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (rest, ifEmpty(readFileOrGzHtml("/opt/app/dcae-controller-service-common-vm-manager/logs/" + rest, "n/a"), "<i>empty</i>"))
- resp = 200
- contentType = "text/html"
-
- elif re.match("/tmp/", self.path):
- # /log/dir/path
- rest = re.sub("^/tmp/", "", self.path)
- debugTrace("#1: /tmp/ others='%s'" % rest)
- rest = re.sub("[^a-zA-Z0-9_./-]", "", rest)
- rest = re.sub("/[.][.]/", "", rest)
- rest = re.sub("^tmp/", "", rest)
- debugTrace("#2: /tmp/ rest='%s'" % rest)
- msg = "<h2>%s</h2><pre>\n%s\n</pre>" % (rest, ifEmpty(readFileOrGzHtml("/tmp/" + rest, "n/a"), "<i>empty</i>"))
- resp = 200
- contentType = "text/html"
-
- elif self.path == '/oldro':
- serverYes = self.isServerUp()
- if serverYes:
- resp = 200
- msg = "server is up"
- else:
- msg = "server is not up"
-
- elif self.path == '/oldrw':
- serverYes = self.isServerUp()
- masterYes = self.isMaster()
- msg = ""
- if serverYes:
- if masterYes:
- resp = 200
- msg = "master server is up"
- elif masterYes is not None:
- msg = "non-master server is up"
- else:
- msg = "master status is up, but not answering"
- else:
- if masterYes:
- msg = "status is down, but responded as master server"
- elif masterYes is not None:
- msg = "status is down, but responded as non-master"
- else:
- msg = "status is down, server is not up"
-
- elif self.path == "/help":
- resp = 200
- contentType = "text/html"
- msg = """<pre>
- <a href='/statusall'>statusall</a> == all/status/pgstatus
- <a href='/ro'>ro</a> == iDNS readonly
- <a href='/rw'>rw</a> == iDNS readwrite
- <a href='/isrw'>isrw</a> == /var/run/postgresql/isrw
- <a href='/ismaster'>ismaster</a> == is master
- <a href='/issecondary'>issecondary</a> == is secondary
- <a href='/ismaintenance'>ismaintenance</a> == is in maintenance mode
- <a href='/healthcheck/status'>healthcheck/status</a> == Consul healthcheck
- <a href='/healthcheck/writablestatus'>healthcheck/writablestatus</a> == Consul writable healthcheck
- <a href='/healthcheck/readonlystatus'>healthcheck/readonlystatus</a> == Consul readonly healthcheck
- <a href='/getpubkey'>getpubkey</a> == retrieve public key
- <a href='/hasrepmgr'>hasrepmgr</a> == repmgr id and database are set up
- <a href='/status'>status</a> == lots of info
- <a href='/perdb-pg_tables-pg_indexes-pg_views'>perdb</a>-{<a href='/perdb-pg_tables'>pg_tables</a>-<a href='/perdb-pg_indexes'>pg_indexes</a>-<a href='/perdb-pg_views'>pg_views</a>} == info per DB
- <a href='/pgstatus'>pgstatus</a> == lots of database info
- <a href='/pg_stat_activity'>pg_stat_activity</a>, <a href='/pg_stat_archiver'>pg_stat_archiver</a>, <a href='/pg_stat_bgwriter'>pg_stat_bgwriter</a>,
- <a href='/pg_stat_database'>pg_stat_database</a>, <a href='/pg_stat_database_conflicts'>pg_stat_database_conflicts</a>, <a href='/pg_stat_user_tables'>pg_stat_user_tables</a>,
- <a href='/pg_stat_user_indexes'>pg_stat_user_indexes</a>, <a href='/pg_statio_user_tables'>pg_statio_user_tables</a>, <a href='/pg_statio_user_indexes'>pg_statio_user_indexes</a>,
- <a href='/pg_statio_user_sequences'>pg_statio_user_sequences</a>,
- <a href='/pg_roles'>pg_roles</a>, <a href='/pg_database'>pg_database</a>,
- <a href='/pg_tables'>pg_tables</a>, <a href='/pg_namespace'>pg_namespace</a>,
- <a href='/pg_group'>pg_group</a>,
- <a href='/swmstatus'>swm proc_out files</a>
- <a href='/log'>log</a> == ls -l logs
- log/foo == log foo
- <a href='/mlog'>mlog</a> == ls -l manager logs
- mlog/foo == mlog foo
- <a href='/tmp'>tmp</a> == ls -l /tmp
- </pre>"""
- else:
- resp = 404
- msg = "path does not exist"
-
- # TODO == encode msg when binary
- if sendBinary:
- debugTrace("%s: Returning %d/%d/%s" % (self.path, resp, len(msg), "--binary--"))
- else:
- debugTrace("%s: Returning %d/%d/%s" % (self.path, resp, len(msg), msg))
- traceMsg("- %s - \"%s %s %s\" %d %d" % (self.client_address[0], self.command, self.path, self.request_version, resp, len(msg)))
- self.send_response(resp)
- if resp == 401:
- self.send_header('WWW-Authenticate', 'Basic realm="PGaaS"')
- self.send_header("Content-type", contentType)
- self.end_headers()
- if sendMsg:
- if msg is None:
- msg = ""
- if sendBinary:
- self.wfile.write(msg)
- else:
- self.wfile.write((msg + "\n").encode("utf-8"))
- sys.stderr.flush()
-
-"""
-database utility functions
-"""
-
-# def dbGetMap(con, cmd, args=[], skipTrace=False):
-# def dbGetOneRowMap(con, cmd, args=[], skipTrace=False):
-
-def dbGetFirstRowOneValue(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return a single value from the first row
- """
- row = dbGetFirstRow(con, cmd, args, skipTrace)
- debugTrace("row=" + str(row))
- if row is not None and len(row) > 0:
- return row[0]
- return None
-
-def dbGetFirstRow(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return the values from the first row
- """
- cursor = dbExecute(con, cmd, args, skipTrace)
- return cursor.fetchone()
-
-def dbGetFirstColumn(con, cmd, args=[], skipTrace=False):
- """
- Do a select and return the first column's value from each row
- """
- ret = []
- cursor = dbExecute(con, cmd, args, skipTrace)
- for row in cursor:
- for col in row:
- ret.append(col)
- break
- return ret
-
-def dbGetFirstColumnAsMap(con, cmd, args=[], skipTrace=False, val=1):
- """
- Do a select and return the first column's value from each row
- """
- ret = {}
- cursor = dbExecute(con, cmd, args, skipTrace)
- for row in cursor:
- for col in row:
- ret[col] = val
- break
- return ret
-
-def dumpTable(con, tableName, max=-1):
- """
- If being extra verbose, print out the entire table
- """
- if verbose < 2:
- return
- traceOutput = sys.stderr if testOn else openLogFile("/opt/logs/dcae/postgresql/idns/debug.log")
- print("================ " + tableName + " ================", file=traceOutput)
-
- cols = dbGetFirstColumn(con, "select column_name from information_schema.columns where table_name='" + tableName + "'", skipTrace=True)
- print("num", end="|", file=traceOutput)
- for col in cols:
- print(col, end="|", file=traceOutput)
- print("", file=traceOutput)
-
- if max > -1:
- cursor = dbExecute(con, "select * from " + tableName + " limit " + str(max), skipTrace=True)
- else:
- cursor = dbExecute(con, "select * from " + tableName, skipTrace=True)
- i = 0
- for row in cursor:
- print("%d" % i, end="|", file=traceOutput)
- i += 1
- for col in row:
- print("%s" % (col), end="|", file=traceOutput)
- print("", file=traceOutput)
- print("================================================", file=traceOutput)
-
-def getTableHtmls(con, DB, tableNames):
- """
- Retrieve a dump of all specified tables, in HTML format
- """
- ret = ""
- for tn in tableNames:
- ret = ret + getTableHtml(con, DB, tn)
- return ret
-
-def getTableHtml(con, DB, tableName, max=-1):
- """
- Retrieve a dump of a given table, in HTML format
- """
- # errTrace("getting %s" % str(tableName))
- ret = "<h2><a name='" + DB + "-table-" + tableName + "'>" + DB + "&nbsp;" + tableName + "</a>" + topButton + "</h2>\n"
- ret = ret + "<table border='1'>\n"
- # ret = ret + "<tr><th colspan='" + str(len(cols)+1) + "'>" + tableName + "</th></tr>\n"
- cols = dbGetFirstColumn(con, "select column_name from information_schema.columns where table_name='" + tableName + "'", skipTrace=True)
-
- ret = ret + "<tr><th>num</th>"
- for col in cols:
- ret = ret + "<th>" + str(col) + "</th>"
- ret = ret + "</tr>\n"
-
- if max > -1:
- cursor = dbExecute(con, "select * from " + tableName + " limit " + str(max), skipTrace=True)
- else:
- cursor = dbExecute(con, "select * from " + tableName, skipTrace=True)
- i = 0
- for row in cursor:
- ret = ret + "<tr><th>" + str(i) + "</th>"
- i = i + 1
- for col in row:
- ret = ret + "<td>" + str(col) + "</td>"
- ret = ret + "</tr>\n"
- ret = ret + "</table>\n"
- return ret
-
-def dbExecute(con, statement, args=[], skipTrace=False):
- """
- Create a cursor, instantiate the arguments into a statement, trace print the statement, and execute the statement.
- Return the cursor
- """
- cursor = con.cursor()
- stmt = cursor.mogrify(statement, args);
- if not skipTrace:
- debugTrace("executing:" + str(stmt))
- cursor.execute(stmt)
- if not skipTrace:
- debugTrace("statusmessage=" + cursor.statusmessage + ", rowcount=" + str(cursor.rowcount))
- return cursor
-
-class HTTPServerIPv6(http.server.HTTPServer):
- address_family = socket.AF_INET6
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser(description="Respond to HTTP requests")
- parser.add_argument("-d","--debug",help="turn on debugging",action="store_true")
- parser.add_argument("-t","--test",help="turn on test mode",action="store_true")
- parser.add_argument("-H", "--host", type=str, help="Hostname, defaults to '%s'" % DEF_HOST_NAME,
- default=DEF_HOST_NAME)
- parser.add_argument("-P", "--port", type=int, help="Port to listen on, defaults to '%d'" % DEF_PORT_NUMBER,
- default=DEF_PORT_NUMBER)
- args = parser.parse_args()
-
- global debugOn, testOn, HOST_NAME, PORT_NUMBER
- debugOn = args.debug
- testOn = args.test
- HOST_NAME = args.host
- PORT_NUMBER = args.port
-
- if not debugOn:
- sys.stderr = openLogFile("/opt/logs/dcae/postgresql/idns/error.log")
-
- # server_class = http.server.HTTPServer
- # httpd = server_class(("0.0.0.0", PORT_NUMBER), MyHandler)
- server_class = HTTPServerIPv6
- httpd = server_class(("", PORT_NUMBER), MyHandler)
- errTrace("Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER))
- try:
- httpd.serve_forever()
- except KeyboardInterrupt:
- pass
- httpd.server_close()
- errTrace("Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER))
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/init-logger.cfg b/pgaas/src/stage/opt/app/pgaas/lib/init-logger.cfg
deleted file mode 100644
index e48183c..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/init-logger.cfg
+++ /dev/null
@@ -1,40 +0,0 @@
-# You may change this file while your program is running and CommonLogger will automatically reconfigure accordingly.
-# Changing these parameters may leave old log files lying around.
-
-
-#--- Parameters that apply to all logs
-#
-# rotateMethod: time or size
-#... Note: the following two parameters apply only when rotateMethod=time
-# timeRotateIntervalType: S, M, H, D, W0 - W6, or midnight (seconds, minutes, hours, days, weekday (0=Monday), or midnight UTC)
-# timeRotateInterval: >= 1 (1 means every timeRotateIntervalType, 2 every other, 3 every third, etc.)
-#... Note: the following parameter applies only when rotateMethod=size
-# sizeMaxBytes: >= 0 (0 means no limit, else maximum filesize in Bytes)
-# backupCount: >= 0 (Number of rotated backup files to retain. If rotateMethod=time, 0 retains *all* backups. If rotateMethod=size, 0 retains *no* backups.)
-#
-rotateMethod = none
-# timeRotateIntervalType = midnight
-# timeRotateInterval = 1
-# sizeMaxBytes = 0
-# backupCount = 6
-
-
-#--- Parameters that define log filenames and their initial LogLevel threshold
-#... Note: CommonLogger will exit if your process does not have permission to write to the file.
-#
-
-error = /opt/logs/dcae/postgresql/init/error.log
-errorLogLevel = WARN
-errorStyle = error
-
-metrics = /opt/logs/dcae/postgresql/init/metrics.log
-metricsLogLevel = INFO
-metricsStyle = metrics
-
-audit = /opt/logs/dcae/postgresql/init/audit.log
-auditLogLevel = INFO
-auditStyle = audit
-
-debug = /opt/logs/dcae/postgresql/init/debug.log
-debugLogLevel = DEBUG
-debugStyle = debug
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/makefile b/pgaas/src/stage/opt/app/pgaas/lib/makefile
deleted file mode 100644
index ea58dba..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-stage:
- rm -rf $(STAGEDIR)/$(DISTPATH)/lib
- mkdir -p $(STAGEDIR)/$(DISTPATH)/lib
- for i in *; do \
- case $$i in \
- [!C]*.py ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/lib/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/lib/$$j; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- if [ -f $$i ]; then \
- cp $$i $(STAGEDIR)/$(DISTPATH)/lib/$$i; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/lib/$$i; \
- fi; \
- ;; \
- esac; \
- done
-
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/pgaas.cfg b/pgaas/src/stage/opt/app/pgaas/lib/pgaas.cfg
deleted file mode 100644
index e28d5e6..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/pgaas.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-####
-#### PostgreSQL as a Service Configuration Parameters
-####
-
-db_directory=/dbroot/pgdata/main
-# db_configuration=
-# pg_bin_directory=
-
-dcae_admin_db_hostname=localhost
-dcae_admin_db_databasename=postgres
-dcae_admin_db_username=postgres
-dcae_admin_db_verbosity=1
-dcae_admin_db_jsontop="['vmConfiguration']"
-dcae_admin_db_errors_file=/opt/logs/dcae/postgresql/init/error.log
-dcae_admin_db_trace_file=/opt/logs/dcae/postgresql/init/trace.log
-dcae_admin_db_common_logger_config=/opt/app/pgaas/lib/init-logger.cfg
-# skip_configuration_file=
diff --git a/pgaas/src/stage/opt/app/pgaas/lib/profile.additions b/pgaas/src/stage/opt/app/pgaas/lib/profile.additions
deleted file mode 100644
index ad9decf..0000000
--- a/pgaas/src/stage/opt/app/pgaas/lib/profile.additions
+++ /dev/null
@@ -1,10 +0,0 @@
-
-if [ -d /opt/app/postgresql-9.5.2 ]
-then PGDIR=/opt/app/postgresql-9.5.2
-elif [ -d /usr/lib/postgresql/9.6 ]
-then PGDIR=/usr/lib/postgresql/9.6
-elif [ -d /usr/lib/postgresql/9.5 ]
-then PGDIR=/usr/lib/postgresql/9.5
-else echo PostgreSQL bin directory not found
-fi
-export PATH="$PGDIR/bin:/opt/app/cdf/bin:/opt/app/pgaas/bin:$PATH"
diff --git a/pgaas/src/stage/opt/app/pgaas/main/makefile b/pgaas/src/stage/opt/app/pgaas/main/makefile
deleted file mode 100644
index ca8af9a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/main/makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-all:
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-stage:
- rm -rf $(STAGEDIR)/$(DISTPATH)/main
- mkdir -p $(STAGEDIR)/$(DISTPATH)/main
- for i in *; do \
- case $$i in \
- *.py ) \
- j=`basename $$i .py`; \
- cp $$i $(STAGEDIR)/$(DISTPATH)/main/$$j; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/main/$$j; \
- ;; \
- makefile | *~ ) ;; \
- * ) \
- if [ -f $$i ]; then \
- cp $$i $(STAGEDIR)/$(DISTPATH)/main/$$i; \
- chmod a+x $(STAGEDIR)/$(DISTPATH)/main/$$i; \
- fi; \
- ;; \
- esac; \
- done
diff --git a/pgaas/src/stage/opt/app/pgaas/main/pg_hba.conf.orig b/pgaas/src/stage/opt/app/pgaas/main/pg_hba.conf.orig
deleted file mode 100644
index 7bf51c1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/main/pg_hba.conf.orig
+++ /dev/null
@@ -1,127 +0,0 @@
-# PostgreSQL Client Authentication Configuration File
-# ===================================================
-#
-# Refer to the "Client Authentication" section in the PostgreSQL
-# documentation for a complete description of this file. A short
-# synopsis follows.
-#
-# This file controls: which hosts are allowed to connect, how clients
-# are authenticated, which PostgreSQL user names they can use, which
-# databases they can access. Records take one of these forms:
-#
-# local DATABASE USER METHOD [OPTIONS]
-# host DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
-# hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
-#
-# (The uppercase items must be replaced by actual values.)
-#
-# The first field is the connection type: "local" is a Unix-domain
-# socket, "host" is either a plain or SSL-encrypted TCP/IP socket,
-# "hostssl" is an SSL-encrypted TCP/IP socket, and "hostnossl" is a
-# plain TCP/IP socket.
-#
-# DATABASE can be "all", "sameuser", "samerole", "replication", a
-# database name, or a comma-separated list thereof. The "all"
-# keyword does not match "replication". Access to replication
-# must be enabled in a separate record (see example below).
-#
-# USER can be "all", a user name, a group name prefixed with "+", or a
-# comma-separated list thereof. In both the DATABASE and USER fields
-# you can also write a file name prefixed with "@" to include names
-# from a separate file.
-#
-# ADDRESS specifies the set of hosts the record matches. It can be a
-# host name, or it is made up of an IP address and a CIDR mask that is
-# an integer (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that
-# specifies the number of significant bits in the mask. A host name
-# that starts with a dot (.) matches a suffix of the actual host name.
-# Alternatively, you can write an IP address and netmask in separate
-# columns to specify the set of hosts. Instead of a CIDR-address, you
-# can write "samehost" to match any of the server's own IP addresses,
-# or "samenet" to match any address in any subnet that the server is
-# directly connected to.
-#
-# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
-# "ident", "peer", "pam", "ldap", "radius" or "cert". Note that
-# "password" sends passwords in clear text; "md5" is preferred since
-# it sends encrypted passwords.
-#
-# OPTIONS are a set of options for the authentication in the format
-# NAME=VALUE. The available options depend on the different
-# authentication methods -- refer to the "Client Authentication"
-# section in the documentation for a list of which options are
-# available for which authentication methods.
-#
-# Database and user names containing spaces, commas, quotes and other
-# special characters must be quoted. Quoting one of the keywords
-# "all", "sameuser", "samerole" or "replication" makes the name lose
-# its special character, and just match a database or username with
-# that name.
-#
-# This file is read on server startup and when the postmaster receives
-# a SIGHUP signal. If you edit the file on a running system, you have
-# to SIGHUP the postmaster for the changes to take effect. You can
-# use "pg_ctl reload" to do that.
-
-# Put your actual configuration here
-# ----------------------------------
-#
-# If you want to allow non-local connections, you need to add more
-# "host" records. In that case you will also need to make PostgreSQL
-# listen on a non-local interface via the listen_addresses
-# configuration parameter, or via the -i or -h command line switches.
-
-### @authcomment@
-###
-### # TYPE DATABASE USER ADDRESS METHOD
-###
-### @remove-line-for-nolocal@# "local" is for Unix domain socket connections only
-### @remove-line-for-nolocal@local all all @authmethodlocal@
-### # IPv4 local connections:
-### host all all 127.0.0.1/32 @authmethodhost@
-### # IPv6 local connections:
-### host all all ::1/128 @authmethodhost@
-### # Allow replication connections from localhost, by a user with the
-### # replication privilege.
-### @remove-line-for-nolocal@#local replication @default_username@ @authmethodlocal@
-### #host replication @default_username@ 127.0.0.1/32 @authmethodhost@
-### #host replication @default_username@ ::1/128 @authmethodhost@
-
-# DO NOT DISABLE!
-# If you change this first entry you will need to make sure that the
-# database superuser can access the database using some other method.
-# Noninteractive access to all databases is required during automatic
-# maintenance (custom daily cronjobs, replication, and similar tasks).
-#
-# Database administrative login by Unix domain socket
-local all postgres peer
-
-# TYPE DATABASE USER ADDRESS METHOD
-
-# DCAE IPv4/IPv6 remote connections:
-host all all 0.0.0.0/0 md5
-host all all ::/0 md5
-
-# "local" is for Unix domain socket connections only
-local all all peer
-# IPv4 local connections:
-host all all 127.0.0.1/32 md5
-# IPv6 local connections:
-host all all ::1/128 md5
-# Allow replication connections from localhost, by a user with the
-# replication privilege.
-# local replication postgres peer
-# host replication postgres 127.0.0.1/32 md5
-# host replication postgres 0.0.0.0/0 md5
-# host replication postgres ::1/128 md5
-
-local replication repmgr md5
-host replication repmgr 127.0.0.1/32 md5
-host replication repmgr 0.0.0.0/0 md5
-host replication repmgr ::1/128 md5
-
-local repmgr repmgr md5
-host repmgr repmgr 127.0.0.1/32 md5
-host repmgr repmgr 0.0.0.0/0 md5
-host repmgr repmgr ::1/128 md5
diff --git a/pgaas/src/stage/opt/app/pgaas/main/pg_ident.conf b/pgaas/src/stage/opt/app/pgaas/main/pg_ident.conf
deleted file mode 100644
index a5870e6..0000000
--- a/pgaas/src/stage/opt/app/pgaas/main/pg_ident.conf
+++ /dev/null
@@ -1,42 +0,0 @@
-# PostgreSQL User Name Maps
-# =========================
-#
-# Refer to the PostgreSQL documentation, chapter "Client
-# Authentication" for a complete description. A short synopsis
-# follows.
-#
-# This file controls PostgreSQL user name mapping. It maps external
-# user names to their corresponding PostgreSQL user names. Records
-# are of the form:
-#
-# MAPNAME SYSTEM-USERNAME PG-USERNAME
-#
-# (The uppercase quantities must be replaced by actual values.)
-#
-# MAPNAME is the (otherwise freely chosen) map name that was used in
-# pg_hba.conf. SYSTEM-USERNAME is the detected user name of the
-# client. PG-USERNAME is the requested PostgreSQL user name. The
-# existence of a record specifies that SYSTEM-USERNAME may connect as
-# PG-USERNAME.
-#
-# If SYSTEM-USERNAME starts with a slash (/), it will be treated as a
-# regular expression. Optionally this can contain a capture (a
-# parenthesized subexpression). The substring matching the capture
-# will be substituted for \1 (backslash-one) if present in
-# PG-USERNAME.
-#
-# Multiple maps may be specified in this file and used by pg_hba.conf.
-#
-# No map names are defined in the default configuration. If all
-# system user names and PostgreSQL user names are the same, you don't
-# need anything in this file.
-#
-# This file is read on server startup and when the postmaster receives
-# a SIGHUP signal. If you edit the file on a running system, you have
-# to SIGHUP the postmaster for the changes to take effect. You can
-# use "pg_ctl reload" to do that.
-
-# Put your actual configuration here
-# ----------------------------------
-
-# MAPNAME SYSTEM-USERNAME PG-USERNAME
diff --git a/pgaas/src/stage/opt/app/pgaas/main/postgresql.conf.orig b/pgaas/src/stage/opt/app/pgaas/main/postgresql.conf.orig
deleted file mode 100644
index cb4d13a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/main/postgresql.conf.orig
+++ /dev/null
@@ -1,655 +0,0 @@
-# -----------------------------
-# PostgreSQL configuration file
-# -----------------------------
-#
-# This file consists of lines of the form:
-#
-# name = value
-#
-# (The "=" is optional.) Whitespace may be used. Comments are introduced with
-# "#" anywhere on a line. The complete list of parameter names and allowed
-# values can be found in the PostgreSQL documentation.
-#
-# The commented-out settings shown in this file represent the default values.
-# Re-commenting a setting is NOT sufficient to revert it to the default value;
-# you need to reload the server.
-#
-# This file is read on server startup and when the server receives a SIGHUP
-# signal. If you edit the file on a running system, you have to SIGHUP the
-# server for the changes to take effect, or use "pg_ctl reload". Some
-# parameters, which are marked below, require a server shutdown and restart to
-# take effect.
-#
-# Any parameter can also be given as a command-line option to the server, e.g.,
-# "postgres -c log_connections=on". Some parameters can be changed at run time
-# with the "SET" SQL command.
-#
-# Memory units: kB = kilobytes Time units: ms = milliseconds
-# MB = megabytes s = seconds
-# GB = gigabytes min = minutes
-# TB = terabytes h = hours
-# d = days
-
-
-#------------------------------------------------------------------------------
-# FILE LOCATIONS
-#------------------------------------------------------------------------------
-
-# The default values of these variables are driven from the -D command-line
-# option or PGDATA environment variable, represented here as ConfigDir.
-
-data_directory = '/dbroot/pgdata/main' # for DCAE
-#data_directory = 'ConfigDir' # use data in another directory
- # (change requires restart)
-hba_file = '%CFGDIR%/main/pg_hba.conf' # for DCAE
-#hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file
- # (change requires restart)
-ident_file = '%CFGDIR%/main/pg_ident.conf' # for DCAE
-#ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file
- # (change requires restart)
-
-# If external_pid_file is not explicitly set, no extra PID file is written.
-external_pid_file = '/var/run/postgresql/main.pid' # for DCAE
-#external_pid_file = '' # write an extra PID file
- # (change requires restart)
-
-
-#------------------------------------------------------------------------------
-# CONNECTIONS AND AUTHENTICATION
-#------------------------------------------------------------------------------
-
-# - Connection Settings -
-
-# DCAE -- for 1607 IST30, set to '*' to allow remote connections
-listen_addresses = '*' # for DCAE
-
-#listen_addresses = 'localhost' # what IP address(es) to listen on;
- # comma-separated list of addresses;
- # defaults to 'localhost'; use '*' for all
- # (change requires restart)
-#port = 5432 # (change requires restart)
-#max_connections = 100 # (change requires restart)
-# Note: Increasing max_connections costs ~400 bytes of shared memory per
-# connection slot, plus lock space (see max_locks_per_transaction).
-#superuser_reserved_connections = 3 # (change requires restart)
-unix_socket_directories = '/var/run/postgresql,/tmp' # for DCAE
-#unix_socket_directories = '/tmp' # comma-separated list of directories
- # (change requires restart)
-#unix_socket_group = '' # (change requires restart)
-#unix_socket_permissions = 0777 # begin with 0 to use octal notation
- # (change requires restart)
-#bonjour = off # advertise server via Bonjour
- # (change requires restart)
-#bonjour_name = '' # defaults to the computer name
- # (change requires restart)
-
-# - Security and Authentication -
-
-#authentication_timeout = 1min # 1s-600s
-ssl = true # for DCAE
-#ssl = off # (change requires restart)
-#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
- # (change requires restart)
-#ssl_prefer_server_ciphers = on # (change requires restart)
-#ssl_ecdh_curve = 'prime256v1' # (change requires restart)
-ssl_cert_file = '%CFGDIR%/lib/ssl-cert-snakeoil.pem' # for DCAE
-#ssl_cert_file = 'server.crt' # (change requires restart)
-ssl_key_file = '%CFGDIR%/lib/ssl-cert-snakeoil.key' # for DCAE
-#ssl_key_file = 'server.key' # (change requires restart)
-#ssl_ca_file = '' # (change requires restart)
-#ssl_crl_file = '' # (change requires restart)
-#password_encryption = on
-#db_user_namespace = off
-#row_security = on
-
-# GSSAPI using Kerberos
-#krb_server_keyfile = ''
-#krb_caseins_users = off
-
-# - TCP Keepalives -
-# see "man 7 tcp" for details
-
-#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds;
- # 0 selects the system default
-#tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds;
- # 0 selects the system default
-#tcp_keepalives_count = 0 # TCP_KEEPCNT;
- # 0 selects the system default
-
-
-#------------------------------------------------------------------------------
-# RESOURCE USAGE (except WAL)
-#------------------------------------------------------------------------------
-
-# - Memory -
-
-#shared_buffers = 32MB # min 128kB
- # (change requires restart)
-#huge_pages = try # on, off, or try
- # (change requires restart)
-#temp_buffers = 8MB # min 800kB
-#max_prepared_transactions = 0 # zero disables the feature
- # (change requires restart)
-# Note: Increasing max_prepared_transactions costs ~600 bytes of shared memory
-# per transaction slot, plus lock space (see max_locks_per_transaction).
-# It is not advisable to set max_prepared_transactions nonzero unless you
-# actively intend to use prepared transactions.
-#work_mem = 4MB # min 64kB
-#maintenance_work_mem = 64MB # min 1MB
-#autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem
-#max_stack_depth = 2MB # min 100kB
-#dynamic_shared_memory_type = posix # the default is the first option
- # supported by the operating system:
- # posix
- # sysv
- # windows
- # mmap
- # use none to disable dynamic shared memory
-
-# - Disk -
-
-#temp_file_limit = -1 # limits per-session temp file space
- # in kB, or -1 for no limit
-
-# - Kernel Resource Usage -
-
-#max_files_per_process = 1000 # min 25
- # (change requires restart)
-#shared_preload_libraries = '' # (change requires restart)
-
-# - Cost-Based Vacuum Delay -
-
-#vacuum_cost_delay = 0 # 0-100 milliseconds
-#vacuum_cost_page_hit = 1 # 0-10000 credits
-#vacuum_cost_page_miss = 10 # 0-10000 credits
-#vacuum_cost_page_dirty = 20 # 0-10000 credits
-#vacuum_cost_limit = 200 # 1-10000 credits
-
-# - Background Writer -
-
-#bgwriter_delay = 200ms # 10-10000ms between rounds
-#bgwriter_lru_maxpages = 100 # 0-1000 max buffers written/round
-#bgwriter_lru_multiplier = 2.0 # 0-10.0 multipler on buffers scanned/round
-
-# - Asynchronous Behavior -
-
-#effective_io_concurrency = 1 # 1-1000; 0 disables prefetching
-#max_worker_processes = 8
-
-
-#------------------------------------------------------------------------------
-# WRITE AHEAD LOG
-#------------------------------------------------------------------------------
-
-# - Settings -
-
-# TLH - this is where we do WAL settings
-wal_level = hot_standby # minimal, archive, hot_standby, or logical
- # (change requires restart)
-#fsync = on # turns forced synchronization on or off
-#synchronous_commit = on # synchronization level;
- # off, local, remote_write, or on
-#wal_sync_method = fsync # the default is the first option
- # supported by the operating system:
- # open_datasync
- # fdatasync (default on Linux)
- # fsync
- # fsync_writethrough
- # open_sync
-#full_page_writes = on # recover from partial page writes
-#wal_compression = off # enable compression of full-page writes
-wal_log_hints = on # also do full page writes of non-critical updates
- # (change requires restart)
-#wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers
- # (change requires restart)
-#wal_writer_delay = 200ms # 1-10000 milliseconds
-
-#commit_delay = 0 # range 0-100000, in microseconds
-#commit_siblings = 5 # range 1-1000
-
-# - Checkpoints -
-
-#checkpoint_timeout = 5min # range 30s-1h
-#max_wal_size = 1GB
-#min_wal_size = 80MB
-#checkpoint_completion_target = 0.5 # checkpoint target duration, 0.0 - 1.0
-#checkpoint_warning = 30s # 0 disables
-
-# - Archiving -
-
-archive_mode = on # enables archiving; off, on, or always
- # (change requires restart)
-archive_command = 'test ! -f /dbroot/pglogs/main/%f && cp %p /dbroot/pglogs/main/%f'
- # command to use to archive a logfile segment
- # placeholders: %p = path of file to archive
- # %f = file name only
- # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
-archive_timeout = 0 # force a logfile segment switch after this
- # number of seconds; 0 disables
-
-
-#------------------------------------------------------------------------------
-# REPLICATION
-#------------------------------------------------------------------------------
-
-# - Sending Server(s) -
-
-# Set these on the master and on any standby that will send replication data.
-
-max_wal_senders = 4 # max number of walsender processes
- # (change requires restart)
-#wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables
-#wal_sender_timeout = 60s # in milliseconds; 0 disables
-
-max_replication_slots = 5 # max number of replication slots
- # (change requires restart)
- # DCAE NOTE: if we ever grow our cluster, change this value to
- # the number of nodes + 1
-#track_commit_timestamp = off # collect timestamp of transaction commit
- # (change requires restart)
-
-# - Master Server -
-
-# These settings are ignored on a standby server.
-
-#synchronous_standby_names = '' # standby servers that provide sync rep
- # comma-separated list of application_name
- # from standby(s); '*' = all
-#vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed
-
-# - Standby Servers -
-
-# These settings are ignored on a master server.
-
-hot_standby = on # "on" allows queries during recovery
- # (change requires restart)
-#max_standby_archive_delay = 30s # max delay before canceling queries
- # when reading WAL from archive;
- # -1 allows indefinite delay
-#max_standby_streaming_delay = 30s # max delay before canceling queries
- # when reading streaming WAL;
- # -1 allows indefinite delay
-#wal_receiver_status_interval = 10s # send replies at least this often
- # 0 disables
-#hot_standby_feedback = off # send info from standby to prevent
- # query conflicts
-#wal_receiver_timeout = 60s # time that receiver waits for
- # communication from master
- # in milliseconds; 0 disables
-#wal_retrieve_retry_interval = 5s # time to wait before retrying to
- # retrieve WAL after a failed attempt
-
-
-#------------------------------------------------------------------------------
-# QUERY TUNING
-#------------------------------------------------------------------------------
-
-# - Planner Method Configuration -
-
-#enable_bitmapscan = on
-#enable_hashagg = on
-#enable_hashjoin = on
-#enable_indexscan = on
-#enable_indexonlyscan = on
-#enable_material = on
-#enable_mergejoin = on
-#enable_nestloop = on
-#enable_seqscan = on
-#enable_sort = on
-#enable_tidscan = on
-
-# - Planner Cost Constants -
-
-#seq_page_cost = 1.0 # measured on an arbitrary scale
-#random_page_cost = 4.0 # same scale as above
-#cpu_tuple_cost = 0.01 # same scale as above
-#cpu_index_tuple_cost = 0.005 # same scale as above
-#cpu_operator_cost = 0.0025 # same scale as above
-#effective_cache_size = 4GB
-
-# - Genetic Query Optimizer -
-
-#geqo = on
-#geqo_threshold = 12
-#geqo_effort = 5 # range 1-10
-#geqo_pool_size = 0 # selects default based on effort
-#geqo_generations = 0 # selects default based on effort
-#geqo_selection_bias = 2.0 # range 1.5-2.0
-#geqo_seed = 0.0 # range 0.0-1.0
-
-# - Other Planner Options -
-
-#default_statistics_target = 100 # range 1-10000
-#constraint_exclusion = partition # on, off, or partition
-#cursor_tuple_fraction = 0.1 # range 0.0-1.0
-#from_collapse_limit = 8
-#join_collapse_limit = 8 # 1 disables collapsing of explicit
- # JOIN clauses
-
-
-#------------------------------------------------------------------------------
-# ERROR REPORTING AND LOGGING
-#------------------------------------------------------------------------------
-
-# - Where to Log -
-
-#log_destination = 'stderr' # Valid values are combinations of
- # stderr, csvlog, syslog, and eventlog,
- # depending on platform. csvlog
- # requires logging_collector to be on.
-
-# This is used when logging to stderr:
-logging_collector = on # for DCAE
-#logging_collector = off # Enable capturing of stderr and csvlog
- # into log files. Required to be on for
- # csvlogs.
- # (change requires restart)
-
-# These are only used if logging_collector is on:
-log_directory = '/opt/logs/dcae/postgresql/server' # for DCAE
-#log_directory = 'pg_log' # directory where log files are written,
- # can be absolute or relative to PGDATA
-log_filename = 'error.log' # for DCAE
-#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
- # can include strftime() escapes
-log_file_mode = 0666 # for DCAE
-#log_file_mode = 0600 # creation mode for log files,
- # begin with 0 to use octal notation
-#log_truncate_on_rotation = off # If on, an existing log file with the
- # same name as the new log file will be
- # truncated rather than appended to.
- # But such truncation only occurs on
- # time-driven rotation, not on restarts
- # or size-driven rotation. Default is
- # off, meaning append to existing files
- # in all cases.
-log_rotation_age = 1d # for DCAE
-#log_rotation_age = 1d # Automatic rotation of logfiles will
- # happen after that time. 0 disables.
-log_rotation_size = 0 # for DCAE
-#log_rotation_size = 10MB # Automatic rotation of logfiles will
- # happen after that much log output.
- # 0 disables.
-
-# These are relevant when logging to syslog:
-#syslog_facility = 'LOCAL0'
-#syslog_ident = 'postgres'
-
-# This is only relevant when logging to eventlog (win32):
-#event_source = 'PostgreSQL'
-
-# - When to Log -
-
-#client_min_messages = notice # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # log
- # notice
- # warning
- # error
-
-#log_min_messages = warning # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # info
- # notice
- # warning
- # error
- # log
- # fatal
- # panic
-
-#log_min_error_statement = error # values in order of decreasing detail:
- # debug5
- # debug4
- # debug3
- # debug2
- # debug1
- # info
- # notice
- # warning
- # error
- # log
- # fatal
- # panic (effectively off)
-
-#log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements
- # and their durations, > 0 logs only
- # statements running at least this number
- # of milliseconds
-
-
-# - What to Log -
-
-#debug_print_parse = off
-#debug_print_rewritten = off
-#debug_print_plan = off
-#debug_pretty_print = on
-#log_checkpoints = off
-#log_connections = off
-#log_disconnections = off
-#log_duration = off
-#log_error_verbosity = default # terse, default, or verbose messages
-#log_hostname = off
-log_line_prefix = '%t|%a|%u|%d|%i|%e|%r|%c|' # for DCAE
-#log_line_prefix = '' # special values:
- # %a = application name
- # %u = user name
- # %d = database name
- # %r = remote host and port
- # %h = remote host
- # %p = process ID
- # %t = timestamp without milliseconds
- # %m = timestamp with milliseconds
- # %i = command tag
- # %e = SQL state
- # %c = session ID
- # %l = session line number
- # %s = session start timestamp
- # %v = virtual transaction ID
- # %x = transaction ID (0 if none)
- # %q = stop here in non-session
- # processes
- # %% = '%'
- # e.g. '<%u%%%d> '
-#log_lock_waits = off # log lock waits >= deadlock_timeout
-#log_statement = 'none' # none, ddl, mod, all
-#log_replication_commands = off
-#log_temp_files = -1 # log temporary files equal or larger
- # than the specified size in kilobytes;
- # -1 disables, 0 logs all temp files
-#log_timezone = 'GMT'
-
-
-# - Process Title -
-
-#cluster_name = '' # added to process titles if nonempty
- # (change requires restart)
-#update_process_title = on
-
-
-#------------------------------------------------------------------------------
-# RUNTIME STATISTICS
-#------------------------------------------------------------------------------
-
-# - Query/Index Statistics Collector -
-
-#track_activities = on
-#track_counts = on
-#track_io_timing = off
-#track_functions = none # none, pl, all
-#track_activity_query_size = 1024 # (change requires restart)
-#stats_temp_directory = 'pg_stat_tmp'
-
-
-# - Statistics Monitoring -
-
-#log_parser_stats = off
-#log_planner_stats = off
-#log_executor_stats = off
-#log_statement_stats = off
-
-
-#------------------------------------------------------------------------------
-# AUTOVACUUM PARAMETERS
-#------------------------------------------------------------------------------
-
-#autovacuum = on # Enable autovacuum subprocess? 'on'
- # requires track_counts to also be on.
-#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
- # their durations, > 0 logs only
- # actions running at least this number
- # of milliseconds.
-#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
- # (change requires restart)
-#autovacuum_naptime = 1min # time between autovacuum runs
-#autovacuum_vacuum_threshold = 50 # min number of row updates before
- # vacuum
-#autovacuum_analyze_threshold = 50 # min number of row updates before
- # analyze
-#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
-#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
-#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
- # (change requires restart)
-#autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age
- # before forced vacuum
- # (change requires restart)
-#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
- # autovacuum, in milliseconds;
- # -1 means use vacuum_cost_delay
-#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
- # autovacuum, -1 means use
- # vacuum_cost_limit
-
-
-#------------------------------------------------------------------------------
-# CLIENT CONNECTION DEFAULTS
-#------------------------------------------------------------------------------
-
-# - Statement Behavior -
-
-#search_path = '"$user", public' # schema names
-#default_tablespace = '' # a tablespace name, '' uses the default
-#temp_tablespaces = '' # a list of tablespace names, '' uses
- # only default tablespace
-#check_function_bodies = on
-#default_transaction_isolation = 'read committed'
-#default_transaction_read_only = off
-#default_transaction_deferrable = off
-#session_replication_role = 'origin'
-#statement_timeout = 0 # in milliseconds, 0 is disabled
-#lock_timeout = 0 # in milliseconds, 0 is disabled
-#vacuum_freeze_min_age = 50000000
-#vacuum_freeze_table_age = 150000000
-#vacuum_multixact_freeze_min_age = 5000000
-#vacuum_multixact_freeze_table_age = 150000000
-#bytea_output = 'hex' # hex, escape
-#xmlbinary = 'base64'
-#xmloption = 'content'
-#gin_fuzzy_search_limit = 0
-#gin_pending_list_limit = 4MB
-
-# - Locale and Formatting -
-
-#datestyle = 'iso, mdy'
-#intervalstyle = 'postgres'
-#timezone = 'GMT'
-#timezone_abbreviations = 'Default' # Select the set of available time zone
- # abbreviations. Currently, there are
- # Default
- # Australia (historical usage)
- # India
- # You can create your own file in
- # share/timezonesets/.
-#extra_float_digits = 0 # min -15, max 3
-#client_encoding = sql_ascii # actually, defaults to database
- # encoding
-
-# These settings are initialized by initdb, but they can be changed.
-#lc_messages = 'C' # locale for system error message
- # strings
-#lc_monetary = 'C' # locale for monetary formatting
-#lc_numeric = 'C' # locale for number formatting
-#lc_time = 'C' # locale for time formatting
-
-# default configuration for text search
-#default_text_search_config = 'pg_catalog.simple'
-
-# - Other Defaults -
-
-#dynamic_library_path = '$libdir'
-#local_preload_libraries = ''
-#session_preload_libraries = ''
-
-
-#------------------------------------------------------------------------------
-# LOCK MANAGEMENT
-#------------------------------------------------------------------------------
-
-#deadlock_timeout = 1s
-#max_locks_per_transaction = 64 # min 10
- # (change requires restart)
-# Note: Each lock table slot uses ~270 bytes of shared memory, and there are
-# max_locks_per_transaction * (max_connections + max_prepared_transactions)
-# lock table slots.
-#max_pred_locks_per_transaction = 64 # min 10
- # (change requires restart)
-
-
-#------------------------------------------------------------------------------
-# VERSION/PLATFORM COMPATIBILITY
-#------------------------------------------------------------------------------
-
-# - Previous PostgreSQL Versions -
-
-#array_nulls = on
-#backslash_quote = safe_encoding # on, off, or safe_encoding
-#default_with_oids = off
-#escape_string_warning = on
-#lo_compat_privileges = off
-#operator_precedence_warning = off
-#quote_all_identifiers = off
-#sql_inheritance = on
-#standard_conforming_strings = on
-#synchronize_seqscans = on
-
-# - Other Platforms and Clients -
-
-#transform_null_equals = off
-
-
-#------------------------------------------------------------------------------
-# ERROR HANDLING
-#------------------------------------------------------------------------------
-
-#exit_on_error = off # terminate session on any error?
-#restart_after_crash = on # reinitialize after backend crash?
-
-
-#------------------------------------------------------------------------------
-# CONFIG FILE INCLUDES
-#------------------------------------------------------------------------------
-
-# These options allow settings to be loaded from files other than the
-# default postgresql.conf.
-
-#include_dir = 'conf.d' # include files ending in '.conf' from
- # directory 'conf.d'
-#include_if_exists = 'exists.conf' # include file only if it exists
-#include = 'special.conf' # include file
-
-
-#------------------------------------------------------------------------------
-# CUSTOMIZED OPTIONS
-#------------------------------------------------------------------------------
-
-# Add settings for extensions here
-
-# repmgr / repmgrd
-shared_preload_libraries = 'repmgr_funcs'
diff --git a/pgaas/src/stage/opt/app/pgaas/makefile b/pgaas/src/stage/opt/app/pgaas/makefile
deleted file mode 100644
index 75ad62b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-STAGEDIR=/dev/null
-all:
-
-stage:
- for i in bin lib etc man init main; do \
- ( cd $$i && $(MAKE) stage STAGEDIR=../$(STAGEDIR) ) \
- done
- for i in lib/gif; do \
- ( cd $$i && $(MAKE) stage STAGEDIR=../../$(STAGEDIR) ) \
- done
-
-clean:
- for i in bin lib etc man init main; do \
- ( cd $$i && $(MAKE) clean ) \
- done
- for i in lib/gif; do \
- ( cd $$i && $(MAKE) stage STAGEDIR=../../$(STAGEDIR) clean ) \
- done
-
-clobber:
- for i in bin lib etc man init main; do \
- ( cd $$i && $(MAKE) clobber ) \
- done
- for i in lib/gif; do \
- ( cd $$i && $(MAKE) stage STAGEDIR=../../$(STAGEDIR) clobber ) \
- done
diff --git a/pgaas/src/stage/opt/app/pgaas/man/.gitignore b/pgaas/src/stage/opt/app/pgaas/man/.gitignore
deleted file mode 100644
index 87ed949..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.1
-todo
diff --git a/pgaas/src/stage/opt/app/pgaas/man/check_cluster.man b/pgaas/src/stage/opt/app/pgaas/man/check_cluster.man
deleted file mode 100644
index 071e9d0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/check_cluster.man
+++ /dev/null
@@ -1,40 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH check_cluster 1PG {{DATE}} ONAP ONAP
-.SH NAME
-check_cluster - check the state of the cluster
-.SH SYNOPSIS
-check_cluster [-d file] [-v] [-l] [-t timeout]
-.HP 20
--d file
-duplicate the status output to the given file
-.HP 20
--l
-do not check localhost first (and restarting the service if necessary)
-.HP 20
--t timeout
-set how long to wait when accessing the servers
-.HP 20
--v
-verbose
-.SH DESCRIPTION
-Loop through the nodes in the cluster, using pgwget to determine how many are
-masters, secondaries, in maintenance, or not up.
-Complain about certain situations.
-If there are multiple masters, and this not the first master in the list, then:
-
-run pg_ctl_restart
-
-to prevent /ro from returning true
-.PP
-When \-d is used, the filename will have ".tmp" appended, writing the output to that temp filename, and then renaming the ".tmp" file to the given filename.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/dcae_admin_db.man b/pgaas/src/stage/opt/app/pgaas/man/dcae_admin_db.man
deleted file mode 100644
index 5b13a7b..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/dcae_admin_db.man
+++ /dev/null
@@ -1,72 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH dcae_admin_db.py 1PG {{DATE}} ONAP ONAP
-.SH NAME
-dcae_admin_db.py - interface with DCAE controller
-.SH SYNOPSIS
-dcae_admin_db.py [options] configurationChanged json-file
-.br
-dcae_admin_db.py [options] suspend
-.br
-dcae_admin_db.py [options] resume
-.br
-dcae_admin_db.py [options] test
-.SS OPTIONS
-.HP 20
--H / --dbhost=
-host name, defaults to CFG['dcae_admin_db_hostname']
-.HP 20
--d / --dbdir=
-database directory path, defaults to CFG['db_directory']
-.HP 20
--c / --dbconf=
-database configuration path, defaults to CFG['db_configuration']
-.HP 20
--D / --dbname=
-database name, defaults to CFG['dcae_admin_db_databasename']
-.HP 20
--U / --user=
-user to login as, defaults to CFG['dcae_admin_db_username']
-.HP 20
--P / --password=
-password for user, defaults to CFG['dcae_admin_db_password']
-.HP 20
--B / --bindir=
-postgresql bin directory, defaults to CFG['pg_bin_directory']
-.HP 20
--i / --ignorefile=
-skip configuration if this file is present, defaults to CFG['skip_configuration_file']
-.HP 20
--n / --nocreate
-do not create the databases / users
-.HP 20
--I / --ignoredb
-ignore current state of database
-.HP 20
--R / --remove
-remove old databases / users
-.HP 20
--J / --jsontop=
-top of json tree, as in \"['pgaas']\"
-.HP 20
--e / --errors=
-where to redirect error output, defaults to CFG['dcae_admin_db_errors_file'] then stderr
-.HP 20
--t / --trace=
-where to redirect trace output, defaults to CFG['dcae_admin_db_trace_file'] then stderr
-.HP 20
--v / --verbose
-verbose, defaults to CFG['dcae_admin_db_verbosity']
-.SH DESCRIPTION
-This program is intended to be executed by the DCAE controller manager.
-Given a database description json file, update the current VM accordingly
diff --git a/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.json b/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.json
deleted file mode 100644
index 2b59cda..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "swagger": "2.0",
- "info": {
- "version": "1.1.0",
- "title": "PostgreSQL as a Service REST API"
- },
- "paths": {
- "/rw": {
- "get": {
- "description": "Gets a string indicating if this is a PostgreSQL Master server\n",
- "responses": {
- "200": {
- "description": "Successful response",
- "schema": {
- "title": "status",
- "type": "string"
- }
- }
- }
- }
- },
- "/ro": {
- "get": {
- "description": "Gets a string indicating if this is either a PostgreSQL Master or Secondary server\n",
- "responses": {
- "200": {
- "description": "Successful response",
- "schema": {
- "title": "status",
- "type": "string"
- }
- }
- }
- }
- },
- "/healthcheck/status": {
- "get": {
- "description": "Gets a string indicating the status of this server\n",
- "responses": {
- "200": {
- "description": "Successful response",
- "schema": {
- "title": "output",
- "type": "string"
- }
- },
- "429": {
- "description": "Error response",
- "schema": {
- "title": "output",
- "type": "string"
- }
- }
- }
- }
- }
- }
-}
diff --git a/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.yaml b/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.yaml
deleted file mode 100644
index 5f3ffee..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/iDNS-responder.swagger.yaml
+++ /dev/null
@@ -1,68 +0,0 @@
-# Example YAML to get you started quickly.
-# Be aware that YAML has indentation based scoping.
-# Code completion support is available so start typing for available options.
-swagger: '2.0'
-
-# This is your document metadata
-info:
- version: "1.1.0"
- title: PostgreSQL as a Service REST API
-
-# Describe your paths here
-paths:
- # This is a path endpoint. Change it.
- /rw:
- # This is a HTTP operation
- get:
- # Describe this verb here. Note: you can use markdown
- description: |
- Gets a string indicating if this is a PostgreSQL Master server
- # Expected responses for this operation:
- responses:
- # Response code
- 200:
- description: Successful response
- # A schema describing your response object.
- # Use JSON Schema format
- schema:
- title: status
- type: string
- /ro:
- # This is a HTTP operation
- get:
- # Describe this verb here. Note: you can use markdown
- description: |
- Gets a string indicating if this is either a PostgreSQL Master or Secondary server
- # Expected responses for this operation:
- responses:
- # Response code
- 200:
- description: Successful response
- # A schema describing your response object.
- # Use JSON Schema format
- schema:
- title: status
- type: string
- /healthcheck/status:
- # This is a HTTP operation
- get:
- # Describe this verb here. Note: you can use markdown
- description: |
- Gets a string indicating the status of this server
- # Expected responses for this operation:
- responses:
- # Response code
- 200:
- description: Successful response
- # A schema describing your response object.
- # Use JSON Schema format
- schema:
- title: output
- type: string
- 429:
- description: Error response
- # A schema describing your response object.
- # Use JSON Schema format
- schema:
- title: output
- type: string
diff --git a/pgaas/src/stage/opt/app/pgaas/man/isrw.man b/pgaas/src/stage/opt/app/pgaas/man/isrw.man
deleted file mode 100644
index 5aed4b1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/isrw.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH isrw 1PG {{DATE}} ONAP ONAP
-.SH NAME
-isrw - check if a running PostgreSQL is a master or secondary
-.SH SYNOPSIS
-isrw
-.SH DESCRIPTION
-Either prints Master or Secondary depending on the state of the running PostgreSQL server.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/list_masters.man b/pgaas/src/stage/opt/app/pgaas/man/list_masters.man
deleted file mode 100644
index d254fef..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/list_masters.man
+++ /dev/null
@@ -1,30 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH list_masters 1PG {{DATE}} ONAP ONAP
-.SH NAME
-list_masters - loop through the nodes in the cluster, using a remote call to determine if any are a master.
-.SH SYNOPSIS
-list_masters
-.SH DESCRIPTION
-List_masters loops through the nodes in the cluster, using a remote call to the iDNS-responder running on each server to determine if any are a master.
-The names of the masters are printed (there should only be one).
-.SS Exit Codes
-.HP 20
-0
-one master exists and is running
-.HP 20
-1
-no masters exist
-.HP 20
-2
-more than one master exist
diff --git a/pgaas/src/stage/opt/app/pgaas/man/makefile b/pgaas/src/stage/opt/app/pgaas/man/makefile
deleted file mode 100644
index 4ce3f6c..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/makefile
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-
-.SUFFIXES: .man .1
-
-TR2MAN =
-%.1 : %.man
- $(TR2MAN)
-
-STAGEDIR=/dev/null
-DISTPATH=/opt/app/pgaas
-
-TRFILES := $(wildcard *.man)
-MANFILES := $(patsubst %.man,%.1,$(wildcard *.man))
-
-all: $(MANFILES)
-
-stage: $(MANFILES)
- rm -rf $(STAGEDIR)/$(DISTPATH)/man
- mkdir -p $(STAGEDIR)/$(DISTPATH)/man
- cp -p $(MANFILES) *.yaml *.json $(STAGEDIR)/$(DISTPATH)/man
-
-clean:
- rm -f *~
-
-clobber: clean
- rm -f *.1
-
-# really should not need to list each of the files individually here with how to make them
-
-check_cluster.1: check_cluster.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-dcae_admin_db.1: dcae_admin_db.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-isrw.1: isrw.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-list_masters.1: list_masters.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-pg_ctl_promote.1: pg_ctl_promote.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-pg_ctl_restart.1: pg_ctl_restart.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-pg_ctl_start.1: pg_ctl_start.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-pg_ctl_status.1: pg_ctl_status.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-pg_ctl_stop.1: pg_ctl_stop.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-repmgrc.1: repmgrc.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-repmgrdc.1: repmgrdc.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-runpsqll.1: runpsqll.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-runpsql.1: runpsql.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-setpropvalue.1: setpropvalue.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_is_in_recovery.1: show_pg_is_in_recovery.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_activity.1: show_pg_stat_activity.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_archiver.1: show_pg_stat_archiver.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_bgwriter.1: show_pg_stat_bgwriter.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_database_conflicts.1: show_pg_stat_database_conflicts.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_database.1: show_pg_stat_database.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_statio_user_functions.1: show_pg_statio_user_functions.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_statio_user_indexes.1: show_pg_statio_user_indexes.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_statio_user_sequences.1: show_pg_statio_user_sequences.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_statio_user_tables.1: show_pg_statio_user_tables.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_user_indexes.1: show_pg_stat_user_indexes.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-show_pg_stat_user_tables.1: show_pg_stat_user_tables.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-startpsql.1: startpsql.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-start_maintenance_mode.1: start_maintenance_mode.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-stop_maintenance_mode.1: stop_maintenance_mode.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
-update_var_run_isrw.1: update_var_run_isrw.man
- DATE=$$(date +%Y-%m-%d); sed "1s/ {{DATE}} / $$DATE /" < $< | nroff -Tlp -man > $@
diff --git a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_promote.man b/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_promote.man
deleted file mode 100644
index 9e12376..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_promote.man
+++ /dev/null
@@ -1,20 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH pg_ctl_promote 1PG {{DATE}} ONAP ONAP
-.SH NAME
-pg_ctl_promote - helper function to run pg_ctl promote
-.SH SYNOPSIS
-pg_ctl_promote
-.SH DESCRIPTION
-Finds the pg_ctl command, the location of the database and its configurations and runs "pg_ctl promote".
-
diff --git a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_restart.man b/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_restart.man
deleted file mode 100644
index 6fb7519..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_restart.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH pg_ctl_restart 1PG {{DATE}} ONAP ONAP
-.SH NAME
-pg_ctl_restart - helper function to run pg_ctl restart
-.SH SYNOPSIS
-pg_ctl_restart
-.SH DESCRIPTION
-Finds the pg_ctl command, the location of the database and its configurations and runs "pg_ctl stop" and "pg_ctl start".
diff --git a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_start.man b/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_start.man
deleted file mode 100644
index cb6a3e5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_start.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH pg_ctl_start 1PG {{DATE}} ONAP ONAP
-.SH NAME
-pg_ctl_start - helper function to run pg_ctl start
-.SH SYNOPSIS
-pg_ctl_start
-.SH DESCRIPTION
-Finds the pg_ctl command, the location of the database and its configurations and runs "pg_ctl start".
diff --git a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_status.man b/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_status.man
deleted file mode 100644
index 3051fdc..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_status.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH pg_ctl_status 1PG {{DATE}} ONAP ONAP
-.SH NAME
-pg_ctl_status - helper function to run pg_ctl status
-.SH SYNOPSIS
-pg_ctl_status
-.SH DESCRIPTION
-Finds the pg_ctl command, the location of the database and its configurations and runs "pg_ctl status".
diff --git a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_stop.man b/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_stop.man
deleted file mode 100644
index e437a6a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/pg_ctl_stop.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH pg_ctl_stop 1PG {{DATE}} ONAP ONAP
-.SH NAME
-pg_ctl_stop - helper function to run pg_ctl stop
-.SH SYNOPSIS
-pg_ctl_stop
-.SH DESCRIPTION
-Finds the pg_ctl command, the location of the database and its configurations and runs "pg_ctl stop".
diff --git a/pgaas/src/stage/opt/app/pgaas/man/repmgrc.man b/pgaas/src/stage/opt/app/pgaas/man/repmgrc.man
deleted file mode 100644
index f327913..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/repmgrc.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH repmgr 1PG {{DATE}} ONAP ONAP
-.SH NAME
-repmgrc - helper function to run repmgr command
-.SH SYNOPSIS
-repmgrc
-.SH DESCRIPTION
-Finds the repmgr command and its configurations and runs "repmgr" appropriately.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/repmgrdc.man b/pgaas/src/stage/opt/app/pgaas/man/repmgrdc.man
deleted file mode 100644
index 5e8e0ad..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/repmgrdc.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH repmgrd 1PG {{DATE}} ONAP ONAP
-.SH NAME
-repmgrdc - helper function to run repmgrd command
-.SH SYNOPSIS
-repmgrdc
-.SH DESCRIPTION
-Finds the repmgrd command and its configurations and runs "repmgrd" appropriately.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/runpsql.man b/pgaas/src/stage/opt/app/pgaas/man/runpsql.man
deleted file mode 100644
index 393f437..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/runpsql.man
+++ /dev/null
@@ -1,21 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH runpsql 1PG {{DATE}} ONAP ONAP
-.SH NAME
-runpsql - run the psql command that is given on the command line
-.SH SYNOPSIS
-runpsql sql command ...
-.SH DESCRIPTION
-Locate the psql command and run the command specified as the arguments on the command line.
-.SH "SEE ALSO"
-runpsqll, startpsql
diff --git a/pgaas/src/stage/opt/app/pgaas/man/runpsqll.man b/pgaas/src/stage/opt/app/pgaas/man/runpsqll.man
deleted file mode 100644
index 556aea0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/runpsqll.man
+++ /dev/null
@@ -1,22 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH runpsqll 1PG {{DATE}} ONAP ONAP
-.SH NAME
-runpsqll - run the psql command that is given on the command line, no labels
-.SH SYNOPSIS
-runpsqll sql command ...
-.SH DESCRIPTION
-Locate the psql command and run the command specified as the arguments on the command line.
-Only output the tuples.
-.SH "SEE ALSO"
-runpsql, startpsql
diff --git a/pgaas/src/stage/opt/app/pgaas/man/setpropvalue.man b/pgaas/src/stage/opt/app/pgaas/man/setpropvalue.man
deleted file mode 100644
index 78b7fb5..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/setpropvalue.man
+++ /dev/null
@@ -1,26 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH setpropvalue 1PG {{DATE}} ONAP ONAP
-.SH NAME
-setpropvalue - set a property in the CDF property file
-.SH SYNOPSIS
-setpropvalue -n name -v value [-x]
-.HP 20
--n
-name to configure
-.HP 20
--v
-value to set
-.HP 20
--x
-encrypt the value
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_is_in_recovery.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_is_in_recovery.man
deleted file mode 100644
index d9391d4..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_is_in_recovery.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_is_in_recovery 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_is_in_recovery - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_is_in_recovery
-.SH DESCRIPTION
-show_pg_is_in_recovery is a convenience program to extract the pg_is_in_recovery information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_activity.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_activity.man
deleted file mode 100644
index 3c8e829..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_activity.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_activity 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_activity - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_activity
-.SH DESCRIPTION
-show_pg_stat_activity is a convenience program to extract the pg_stat_activity information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_archiver.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_archiver.man
deleted file mode 100644
index 8fc85e1..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_archiver.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_archiver 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_archiver - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_archiver
-.SH DESCRIPTION
-show_pg_stat_archiver is a convenience program to extract the pg_stat_archiver information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_bgwriter.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_bgwriter.man
deleted file mode 100644
index 3b960d8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_bgwriter.man
+++ /dev/null
@@ -1,20 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_bgwriter 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_bgwriter - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_bgwriter
-.SH DESCRIPTION
-show_pg_stat_bgwriter is a convenience program to extract the pg_stat_bgwriter information from the database.
-
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database.man
deleted file mode 100644
index b6e0e7a..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_database 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_database - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_database
-.SH DESCRIPTION
-show_pg_stat_database is a convenience program to extract the pg_stat_database information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database_conflicts.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database_conflicts.man
deleted file mode 100644
index 78e29c3..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_database_conflicts.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_database_conflicts 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_database_conflicts - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_database_conflicts
-.SH DESCRIPTION
-show_pg_stat_database_conflicts is a convenience program to extract the pg_stat_database_conflicts information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_indexes.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_indexes.man
deleted file mode 100644
index 3b76d21..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_indexes.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_user_indexes 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_user_indexes - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_user_indexes
-.SH DESCRIPTION
-show_pg_stat_user_indexes is a convenience program to extract the pg_stat_user_indexes information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_tables.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_tables.man
deleted file mode 100644
index 2356ebd..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_stat_user_tables.man
+++ /dev/null
@@ -1,20 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_stat_user_indexes 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_stat_user_tables - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_stat_user_tables
-.SH DESCRIPTION
-show_pg_stat_user_tables is a convenience program to extract the pg_stat_user_tables information from the database.
-
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_functions.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_functions.man
deleted file mode 100644
index cd51933..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_functions.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_statio_user_functions 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_statio_user_functions - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_statio_user_functions
-.SH DESCRIPTION
-show_pg_statio_user_functions is a convenience program to extract the pg_statio_user_functions information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_indexes.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_indexes.man
deleted file mode 100644
index 713e144..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_indexes.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_statio_user_indexes 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_statio_user_indexes - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_statio_user_indexes
-.SH DESCRIPTION
-show_pg_statio_user_indexes is a convenience program to extract the pg_statio_user_indexes information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_sequences.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_sequences.man
deleted file mode 100644
index fce6db4..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_sequences.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_statio_user_sequences 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_statio_user_sequences - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_statio_user_sequences
-.SH DESCRIPTION
-show_pg_statio_user_sequences is a convenience program to extract the pg_statio_user_sequences information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_tables.man b/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_tables.man
deleted file mode 100644
index ec2cc5c..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/show_pg_statio_user_tables.man
+++ /dev/null
@@ -1,19 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH show_pg_statio_user_tables 1PG {{DATE}} ONAP ONAP
-.SH NAME
-show_pg_statio_user_tables - convenience program to extract info from the database
-.SH SYNOPSIS
-show_pg_statio_user_tables
-.SH DESCRIPTION
-show_pg_statio_user_tables is a convenience program to extract the pg_statio_user_tables information from the database.
diff --git a/pgaas/src/stage/opt/app/pgaas/man/start_maintenance_mode.man b/pgaas/src/stage/opt/app/pgaas/man/start_maintenance_mode.man
deleted file mode 100644
index 8e098a4..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/start_maintenance_mode.man
+++ /dev/null
@@ -1,28 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH start_maintenance_mode 1PG {{DATE}} ONAP ONAP
-.SH NAME
-start_maintenance_mode - convert this system to maintenance mode
-.SH SYNOPSIS
-start_maintenance_mode
-.SH DESCRIPTION
-Take this system out of the normal rotation and mark it as being in maintenance mode.
-This command may only be used on a secondary system and not on a master system.
-After this command is run, the PostgreSQL server will be brought down, but may be
-restarted manually using the pg_ctl_start.
-Note that the health checks will not regard this system as being in the normal
-rotation until the command stop_maintenance_mode is executed, allowing the DBA to perform
-whatever is needed to perform a backup or other maintenance routines,
-such as copying the database files.
-.SH FILES
-/var/run/postgresql/inmaintenance
diff --git a/pgaas/src/stage/opt/app/pgaas/man/startpsql.man b/pgaas/src/stage/opt/app/pgaas/man/startpsql.man
deleted file mode 100644
index 5bba06e..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/startpsql.man
+++ /dev/null
@@ -1,21 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH startpsq 1PG {{DATE}} ONAP ONAP
-.SH NAME
-startpsql - run the psql command
-.SH SYNOPSIS
-startpsql
-.SH DESCRIPTION
-Locate the psql command and run it.
-.SH "SEE ALSO"
-runpsql, runpsqll
diff --git a/pgaas/src/stage/opt/app/pgaas/man/stop_maintenance_mode.man b/pgaas/src/stage/opt/app/pgaas/man/stop_maintenance_mode.man
deleted file mode 100644
index 9ed24bc..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/stop_maintenance_mode.man
+++ /dev/null
@@ -1,24 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH stop_maintenance_mode 1PG {{DATE}} ONAP ONAP
-.SH NAME
-stop_maintenance_mode - convert this system to maintenance mode
-.SH SYNOPSIS
-stop_maintenance_mode
-.SH DESCRIPTION
-Mark this system as no longer being in maintenance mode, and
-return this system back to the normal rotation.
-This command may only be used on a secondary system and not on a master system.
-This command will also restart the PostgreSQL server.
-.SH FILES
-/var/run/postgresql/inmaintenance
diff --git a/pgaas/src/stage/opt/app/pgaas/man/todo b/pgaas/src/stage/opt/app/pgaas/man/todo
deleted file mode 100644
index c2b57f8..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/todo
+++ /dev/null
@@ -1,5 +0,0 @@
-ls: cannot access ../man/gen-repmgr-info.man: No such file or directory
-ls: cannot access ../man/pgaas-verify-install.man: No such file or directory
-ls: cannot access ../man/pgwget.man: No such file or directory
-ls: cannot access ../man/repmgrd-status-changes.man: No such file or directory
-ls: cannot access ../man/verify_pg_privileges.man: No such file or directory
diff --git a/pgaas/src/stage/opt/app/pgaas/man/update_var_run_isrw.man b/pgaas/src/stage/opt/app/pgaas/man/update_var_run_isrw.man
deleted file mode 100644
index 98470f0..0000000
--- a/pgaas/src/stage/opt/app/pgaas/man/update_var_run_isrw.man
+++ /dev/null
@@ -1,23 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH startpsq 1PG {{DATE}} ONAP ONAP
-.SH NAME
-update_var_run_isrw - update the /var/run/postgresql/isrw file
-.SH SYNOPSIS
-update_var_run_isrw
-.SH DESCRIPTION
-This program updates the /var/run/postgresql/isrw file using the output of the isrw(1PG) command.
-The file is updated 6 times separated by 10 seconds.
-It is meant to be run from the postgres cron.
-.SH "SEE ALSO"
-isrw
diff --git a/pgaas/src/testlock/.gitignore b/pgaas/src/testlock/.gitignore
deleted file mode 100644
index 0618485..0000000
--- a/pgaas/src/testlock/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-testlock
diff --git a/pgaas/src/testlock/makefile b/pgaas/src/testlock/makefile
deleted file mode 100644
index 8e23640..0000000
--- a/pgaas/src/testlock/makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this code except in compliance
-# with the License. You may obtain a copy of the License
-# at http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-
-STAGEDIR=/dev/null
-DISTPATH=/dev/null
-
-all: testlock
-
-TESTLOCK=./testlock
-
-ttestlock: testlock
- @echo;echo should print usage list
- -$(TESTLOCK)
- @echo;echo should print usage list
- -$(TESTLOCK) -?
- @echo;echo should print missing lock filename
- -$(TESTLOCK) -t 0
- @echo;echo should print missing command
- -$(TESTLOCK) -t 0 /var/tmp/tl
- @echo;echo should run immediately
- $(TESTLOCK) -t 0 /var/tmp/tl /bin/echo hello
- @echo;echo grab lock, done SHOULD run after lock becomes available
- date;$(TESTLOCK) /var/tmp/tl sleep 5 & sleep 1; $(TESTLOCK) /var/tmp/tl /bin/echo done;date
- $(TESTLOCK) /var/tmp/tl true # cleanup
- @echo;echo grab lock, not waiting should NOT run
- date;$(TESTLOCK) /var/tmp/tl sleep 5 & sleep 1; $(TESTLOCK) -t 0 /var/tmp/tl /bin/echo not waiting;date
- $(TESTLOCK) /var/tmp/tl true # cleanup
- @echo;echo grab lock, echo should NOT run because lock does not become available in 4 seconds
- date;$(TESTLOCK) /var/tmp/tl sleep 5 & sleep 1; $(TESTLOCK) -t 3 /var/tmp/tl /bin/echo waiting up to 3 seconds;date
- $(TESTLOCK) /var/tmp/tl true # cleanup
- @echo;echo grab lock, echo should SILENTLY NOT run because lock does not become available in 4 seconds
- date;$(TESTLOCK) /var/tmp/tl sleep 5 & sleep 1; $(TESTLOCK) -t 3 -s /var/tmp/tl /bin/echo waiting up to 3 seconds;date
- $(TESTLOCK) /var/tmp/tl true # cleanup
- @echo;echo grab lock, echo SHOULD run after lock becomes available in 5 seconds
- date;$(TESTLOCK) /var/tmp/tl sleep 5 & sleep 1; $(TESTLOCK) -t 10 /var/tmp/tl /bin/echo waiting up to 10 seconds;date
- $(TESTLOCK) /var/tmp/tl true # cleanup
-
-testlock: testlock.c
- gcc -o testlock testlock.c
-
-clean:
- rm -f *~
-
-clobber: clean
- rm -f testlock
-
-stage: testlock
- cp -p testlock $(STAGEDIR)/$(DISTPATH)/bin/testlock
- chmod a+x $(STAGEDIR)/$(DISTPATH)/bin/testlock
diff --git a/pgaas/src/testlock/testlock.1 b/pgaas/src/testlock/testlock.1
deleted file mode 100644
index 12dbb9d..0000000
--- a/pgaas/src/testlock/testlock.1
+++ /dev/null
@@ -1,38 +0,0 @@
-'\" Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-'\"
-'\" Licensed under the Apache License, Version 2.0 (the "License");
-'\" you may not use this code except in compliance
-'\" with the License. You may obtain a copy of the License
-'\" at http://www.apache.org/licenses/LICENSE-2.0
-'\"
-'\" Unless required by applicable law or agreed to in writing, software
-'\" distributed under the License is distributed on an "AS IS" BASIS,
-'\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-'\" implied. See the License for the specific language governing
-'\" permissions and limitations under the License.
-.TH testlock 1 "April 26 2006" "" ""
-.SH NAME
-testlock \- lock a file and run a command with the lock held
-.SH SYNOPSIS
-testlock [-v] [-t timeout] [-s] [-r exittcode] filename command args ...
-.SH DESCRIPTION
-.PP
-Testlock will acquire a file lock and then execute a command while the lock is held.
-If no timeout is provided, testlock will wait indefinitely until the file can be locked,
-and then execute the command.
-If a timeout is given, it will stop waiting after that many seconds have passed.
-.SS Options
-.IP -t
-Abort if the lock cannot be acquired after
-.I timeout
-seconds.
-If
-.I timeout
-is 0, the lock will be totally non-blocking.
-.IP -s
-Silently ignore errors with locking.
-(Other errors will still be reported.)
-.IP -r exitcode
-If the lock cannot be acquired, use this exit code instead of the default exit code of 99.
-.SH AUTHOR
-Tony Hansen.
diff --git a/pgaas/src/testlock/testlock.c b/pgaas/src/testlock/testlock.c
deleted file mode 100644
index 41bea59..0000000
--- a/pgaas/src/testlock/testlock.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Usage: testlock [-t timeout] [-s] filename command args ...
-
- Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this code except in compliance
- with the License. You may obtain a copy of the License
- at http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied. See the License for the specific language governing
- permissions and limitations under the License.
-
-*/
-
-#include <sys/file.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <getopt.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <errno.h>
-#include <string.h>
-
-void usage(const char *prog0, const char *msg)
-{
- if (msg) fprintf(stderr, "%s\n", msg);
- fprintf(stderr, "Usage: %s [-v] [-t timeout] [-s] [-r retcode] lock-filename command args ...\n", prog0);
- fprintf(stderr, "-t ##\thow long to wait for a lock to be freed. 0 means exit immediately\n");
- fprintf(stderr, "-s\tsilently ignore errors with locking\n");
- fprintf(stderr, "-r ##\texit with this code when the lock fails\n");
- fprintf(stderr, "-v\tbe verbose\n");
- fprintf(stderr, "Note:\tlock-filename is created (if it does not exist) and truncated before locking.\n");
- fprintf(stderr, "\tlock-filename is not removed after the command finishes\n");
- exit(1);
-}
-
-int main(int argc, char **argv)
-{
- const char *prog0 = argv[0];
-
- int c;
- int timeout = -1;
- bool silent = false;
- bool verbose = false;
- int nolockret = 99;
-
- while ((c = getopt(argc, argv, "t:r:sv?")) != -1) {
- switch (c) {
- case 's': silent = true; break;
- case 't': timeout = atoi(optarg); break;
- case 'r': nolockret = atoi(optarg); break;
- case 'v': verbose = true; break;
- default: usage(prog0, NULL);
- }
- }
-
- argc -= optind;
- argv += optind;
-
- if (argc < 1) {
- usage(prog0, "Missing lock filename");
- } else if (argc < 2) {
- usage(prog0, "Missing command to run");
- }
-
- const char *lockFilename = *argv++;
- if (verbose) printf("lockfilename=%s\n", lockFilename);
-
- int lockfd = creat(lockFilename, 0666);
- if (lockfd < 0) {
- fprintf(stderr, "Cannot open %s: %s\n", lockFilename, strerror(errno));
- exit(2);
- }
-
- if (timeout < 0) {
- /* wait forever */
- lockf(lockfd, F_LOCK, 0);
- } else {
- /* try each second (for up to timeout seconds) to get the lock */
- int lockret = lockf(lockfd, F_TLOCK, 0);
- int count = 0;
- while ((lockret < 0) && (count++ < timeout)) {
- sleep(1);
- lockret = lockf(lockfd, F_TLOCK, 0);
- }
- if (lockret < 0) {
- if (!silent) {
- fprintf(stderr, "Cannot lock %s: %s\n", lockFilename, strerror(errno));
- }
- exit(nolockret);
- }
- }
-
- /* now execute the given command */
- if (verbose) {
- char **a = argv;
- printf("calling program '%s'\n", *a);
- while (*++a) {
- printf("with argument '%s'\n", *a);
- }
- }
- execvp(argv[0], argv);
-}
diff --git a/pgaas/src/testlock/testlock.md b/pgaas/src/testlock/testlock.md
deleted file mode 100644
index 8ec2a48..0000000
--- a/pgaas/src/testlock/testlock.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# testlock 1 "April 26 2006" "" ""
-## NAME
-testlock \- lock a file and run a command with the lock held
-## SYNOPSIS
-testlock [-v] [-t timeout] [-s] [-r exittcode] filename command args ...
-## DESCRIPTION
-
-Testlock will acquire a file lock and then execute a command while the lock is held.
-If no timeout is provided, testlock will wait indefinitely until the file can be locked,
-and then execute the command.
-If a timeout is given, it will stop waiting after that many seconds have passed.
-
-### Options
-
--t
-Abort if the lock cannot be acquired after _timeout_ seconds.
-If _timeout_ is 0, the lock will be totally non-blocking.
-
--s
-Silently ignore errors with locking.
-(Other errors will still be reported.)
-
--r exitcode
-If the lock cannot be acquired, use this exit code instead of the default exit code of 99.
-
-## AUTHOR
-Tony Hansen.