Fix guard table creation during startup issue 97/91897/10
authorMichael Mokry <michael.mokry@att.com>
Tue, 23 Jul 2019 18:54:30 +0000 (13:54 -0500)
committerMichael Mokry <michael.mokry@att.com>
Tue, 30 Jul 2019 18:09:05 +0000 (13:09 -0500)
- Added -hpolicydb to the mysql command in the script
- Made this configurable by utilizing the existing parameters in
xacml.properties for db connections.  No OOM or CSIT changes should be
needed now.

PATCH UPDATE:
- used Awk to extract property values
- removed echo except one needed for the base64 command, as far
as I can tell it is needed when assigning output to a variable,
I tried to get it to work unsuccessfully.
- added exit code 2 for missing properties as suggested by Jorge
and Jim

PATCH UPDATE:
- remove echo from base64 using Jim's suggestion
- Added code to remove escape backslashes from properties file,
I didn't see these locally but when testing in windriver they
show up in the xacml.properties file on OOM installs
- More changes per Jorge's latest review

Change-Id: I79c0502d8a4fadd2160785014fcb9db3c0faab5e
Issue-ID: POLICY-1934
Signed-off-by: Michael Mokry <michael.mokry@att.com>
packages/policy-xacmlpdp-tarball/src/main/resources/mysql/bin/create-guard-table.sh

index 1c60cb0..e722607 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/bash -xv
+#!/bin/bash
 #
 # ============LICENSE_START=======================================================
 #  Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
 #
 SQL_FILE="${POLICY_HOME}/mysql/sql/createguardtable.sql"
 
-mysql -upolicy_user -ppolicy_user < "${SQL_FILE}"
+# Remove escape backslashes if present and save output in temp file
+sed 's/\\//g' "${POLICY_HOME}"/apps/guard/xacml.properties > /tmp/temp.xacml.properties
+
+# Remove temp file
+if [ ! -f /tmp/temp.xacml.properties ]
+  then
+    echo "Temporary guard xacml properties file not found!"
+    exit 1
+fi
+
+# Extract Maria DB Credential properties from xacml.properties file
+DB_HOSTNAME=$(awk -F[/:] '$1 == "javax.persistence.jdbc.url=jdbc" { print $3 $5 }' /tmp/temp.xacml.properties)
+DB_USERNAME=$(awk -F= '$1 == "javax.persistence.jdbc.user" { print $2 }' /tmp/temp.xacml.properties)
+DB_PASSWORD=$(awk -F= '$1 == "javax.persistence.jdbc.password" { print $2 }' /tmp/temp.xacml.properties | base64 -d)
+
+# Remove temp file
+rm /tmp/temp.xacml.properties
+
+if [ -z "$DB_HOSTNAME" ]
+  then
+    echo "No Mariadb host provided in guard xacml.properties."
+    exit 2
+fi
+
+if [ -z "$DB_USERNAME" ]
+  then
+    echo "No Mariadb username provided in guard xacml.properties."
+    exit 2
+fi
+
+if [ -z "$DB_PASSWORD" ]
+  then
+    echo "No Mariadb password provided in guard xacml.properties."
+    exit 2
+fi
+
+# Execute mysql command using sql file to create table
+mysql -u${DB_USERNAME} -p${DB_PASSWORD} -h${DB_HOSTNAME} < "${SQL_FILE}"
+