diff options
author | adheli.tavares <adheli.tavares@est.tech> | 2024-08-15 11:13:27 +0100 |
---|---|---|
committer | adheli.tavares <adheli.tavares@est.tech> | 2024-08-19 09:26:54 +0100 |
commit | 51a289c505be84d6e61c6f65aeba4cea2c3597d8 (patch) | |
tree | 0697569532a0e465c9974e3449c15f730bdd042b | |
parent | a481cea2601e8aacf202b785eb743c243ea22fc3 (diff) |
Move database management to db-migrator
- as part of adding postgresql support for drools, database
management had to be moved due drools and xacml sharing
operationshistory table.
Issue-ID: POLICY-5107
Change-Id: Idd8f7ca38c8a13602c3bf85b7d600cd1c817f342
Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
9 files changed, 5 insertions, 389 deletions
diff --git a/packages/policy-xacmlpdp-docker/src/main/docker/Dockerfile b/packages/policy-xacmlpdp-docker/src/main/docker/Dockerfile index 02f6418f..9e73faa9 100644 --- a/packages/policy-xacmlpdp-docker/src/main/docker/Dockerfile +++ b/packages/policy-xacmlpdp-docker/src/main/docker/Dockerfile @@ -2,7 +2,7 @@ # Dockerfile # ============LICENSE_START======================================================= # Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved. -# Modifications Copyright (C) 2022-2023 Nordix Foundation. +# Modifications Copyright (C) 2022-2024 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -44,8 +44,6 @@ ENV POLICY_LOGS=$POLICY_LOGS ENV POLICY_HOME=$POLICY_HOME/pdpx USER root RUN apk update && \ - apk add mariadb-client && \ - apk add postgresql-client && \ mkdir -p $POLICY_HOME $POLICY_LOGS && \ chown -R policy:policy $POLICY_HOME $POLICY_LOGS @@ -53,7 +51,6 @@ COPY --chown=policy:policy --from=tarball /extracted $POLICY_HOME WORKDIR $POLICY_HOME COPY --chown=policy:policy policy-pdpx.sh bin/ -COPY --chown=policy:policy policy-pdpx-pg.sh bin/ RUN chmod 755 bin/*.sh USER policy diff --git a/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx-pg.sh b/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx-pg.sh deleted file mode 100644 index 2e7d47c4..00000000 --- a/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx-pg.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env sh -# -# ============LICENSE_START======================================================= -# Copyright (C) 2022, 2024 Nordix Foundation. -# Modifications Copyright (C) 2022 AT&T Intellectual Property. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -# - -set -x - -KEYSTORE="${KEYSTORE:-$POLICY_HOME/etc/ssl/policy-keystore}" -TRUSTSTORE="${TRUSTSTORE:-$POLICY_HOME/etc/ssl/policy-truststore}" -KEYSTORE_PASSWD="${KEYSTORE_PASSWD:-Pol1cy_0nap}" -TRUSTSTORE_PASSWD="${TRUSTSTORE_PASSWD:-Pol1cy_0nap}" - -if [ "$#" -ge 1 ]; then - CONFIG_FILE=$1 -else - CONFIG_FILE=${CONFIG_FILE} -fi - -if [ -z "$CONFIG_FILE" ]; then - CONFIG_FILE="${POLICY_HOME}/etc/defaultConfig.json" -fi - -if [ -f "${POLICY_HOME}/etc/mounted/policy-truststore" ]; then - echo "overriding policy-truststore" - cp -f "${POLICY_HOME}"/etc/mounted/policy-truststore "${TRUSTSTORE}" -fi - -if [ -f "${POLICY_HOME}/etc/mounted/policy-keystore" ]; then - echo "overriding policy-keystore" - cp -f "${POLICY_HOME}"/etc/mounted/policy-keystore "${KEYSTORE}" -fi - -if [ -f "${POLICY_HOME}/etc/mounted/xacml.properties" ]; then - echo "overriding xacml.properties in guards application" - cp -f "${POLICY_HOME}"/etc/mounted/xacml-pg.properties "${POLICY_HOME}"/apps/guard/ -fi - -if [ -f "${POLICY_HOME}/etc/mounted/logback.xml" ]; then - echo "overriding logback.xml" - cp -f "${POLICY_HOME}"/etc/mounted/logback.xml "${POLICY_HOME}"/etc/ -fi - -if [ -f "${POLICY_HOME}/etc/mounted/createguardtable-pg.sql" ]; then - echo "overriding createguardtable.sql" - cp -f "${POLICY_HOME}"/etc/mounted/createguardtable-pg.sql "${POLICY_HOME}"/postgres/sql/ -fi - -if [ -f "${POLICY_HOME}/etc/mounted/db-pg.sql" ]; then - echo "adding additional db-pg.sql" - cp -f "${POLICY_HOME}"/etc/mounted/db-pg.sql "${POLICY_HOME}"/postgres/sql/ -fi - -if [ -f "${POLICY_HOME}/etc/mounted/guard.xacml.properties" ]; then - echo "overriding guard application xacml.properties" - cp -f "${POLICY_HOME}"/etc/mounted/guard.xacml.properties "${POLICY_HOME}"/apps/guard/xacml.properties -fi - -# Create operationshistory table -"${POLICY_HOME}"/postgres/bin/create-guard-table-pg.sh - -echo "Policy Xacml PDP config file: $CONFIG_FILE" - -$JAVA_HOME/bin/java -cp "${POLICY_HOME}/etc:${POLICY_HOME}/lib/*" -Dlogback.configurationFile="${POLICY_HOME}/etc/logback.xml" -Djavax.net.ssl.keyStore="${KEYSTORE}" -Djavax.net.ssl.keyStorePassword="${KEYSTORE_PASSWD}" -Djavax.net.ssl.trustStore="${TRUSTSTORE}" -Djavax.net.ssl.trustStorePassword="${TRUSTSTORE_PASSWD}" org.onap.policy.pdpx.main.startstop.Main -c "${CONFIG_FILE}" diff --git a/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx.sh b/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx.sh index 0c7b98b4..8f020412 100644 --- a/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx.sh +++ b/packages/policy-xacmlpdp-docker/src/main/docker/policy-pdpx.sh @@ -2,7 +2,7 @@ # # ============LICENSE_START======================================================= # Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved. -# Modifications Copyright (C) 2019-2022 Nordix Foundation. +# Modifications Copyright (C) 2019-2022, 2024 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -57,19 +57,6 @@ if [ -f "${POLICY_HOME}/etc/mounted/logback.xml" ]; then cp -f "${POLICY_HOME}"/etc/mounted/logback.xml "${POLICY_HOME}"/etc/ fi -if [ -f "${POLICY_HOME}/etc/mounted/createguardtable.sql" ]; then - echo "overriding createguardtable.sql" - cp -f "${POLICY_HOME}"/etc/mounted/createguardtable.sql "${POLICY_HOME}"/mysql/sql/ -fi - -if [ -f "${POLICY_HOME}/etc/mounted/db.sql" ]; then - echo "adding additional db.sql" - cp -f "${POLICY_HOME}"/etc/mounted/db.sql "${POLICY_HOME}"/mysql/sql/ -fi - -# Create operationshistory table -"${POLICY_HOME}"/mysql/bin/create-guard-table.sh - echo "Policy Xacml PDP config file: $CONFIG_FILE" $JAVA_HOME/bin/java -cp "${POLICY_HOME}/etc:${POLICY_HOME}/lib/*" -Dlogback.configurationFile="${POLICY_HOME}/etc/logback.xml" -Djavax.net.ssl.keyStore="${KEYSTORE}" -Djavax.net.ssl.keyStorePassword="${KEYSTORE_PASSWD}" -Djavax.net.ssl.trustStore="${TRUSTSTORE}" -Djavax.net.ssl.trustStorePassword="${TRUSTSTORE_PASSWD}" org.onap.policy.pdpx.main.startstop.Main -c "${CONFIG_FILE}" diff --git a/packages/policy-xacmlpdp-docker/src/main/docker/suse.Dockerfile b/packages/policy-xacmlpdp-docker/src/main/docker/suse.Dockerfile index c8732ca8..22539a36 100644 --- a/packages/policy-xacmlpdp-docker/src/main/docker/suse.Dockerfile +++ b/packages/policy-xacmlpdp-docker/src/main/docker/suse.Dockerfile @@ -1,7 +1,7 @@ #------------------------------------------------------------------------------- # Dockerfile # ============LICENSE_START======================================================= -# Copyright (C) 2022 Nordix Foundation. +# Copyright (C) 2022, 2024 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ ENV POLICY_HOME=/opt/app/policy/pdpx ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 ENV JAVA_HOME=/usr/lib64/jvm/java-11-openjdk-11 -RUN zypper -n -q install --no-recommends java-11-openjdk-headless mariadb-client netcat-openbsd postgresql && \ +RUN zypper -n -q install --no-recommends java-11-openjdk-headless netcat-openbsd && \ zypper -n -q update && zypper -n -q clean --all && \ groupadd --system policy && \ useradd --system --shell /bin/sh -G policy policy && \ @@ -54,7 +54,6 @@ COPY --chown=policy:policy --from=tarball /extracted $POLICY_HOME WORKDIR $POLICY_HOME COPY --chown=policy:policy policy-pdpx.sh bin/ -COPY --chown=policy:policy policy-pdpx-pg.sh bin/ RUN chmod 755 bin/*.sh USER policy diff --git a/packages/policy-xacmlpdp-tarball/src/main/package/tarball/assembly.xml b/packages/policy-xacmlpdp-tarball/src/main/package/tarball/assembly.xml index 8a8c1544..59b12c7f 100644 --- a/packages/policy-xacmlpdp-tarball/src/main/package/tarball/assembly.xml +++ b/packages/policy-xacmlpdp-tarball/src/main/package/tarball/assembly.xml @@ -1,7 +1,7 @@ <!-- ============LICENSE_START======================================================= Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. - Modifications Copyright (C) 2022 Nordix Foundation. + Modifications Copyright (C) 2022, 2024 Nordix Foundation. ================================================================================ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -61,44 +61,6 @@ <lineEnding>keep</lineEnding> </fileSet> <fileSet> - <directory>${project.basedir}/src/main/resources/mysql/bin - </directory> - <includes> - <include>*.sh</include> - </includes> - <outputDirectory>${file.separator}mysql${file.separator}bin</outputDirectory> - <lineEnding>unix</lineEnding> - <fileMode>0755</fileMode> - </fileSet> - <fileSet> - <directory>${project.basedir}/src/main/resources/mysql/sql - </directory> - <includes> - <include>*.sql</include> - </includes> - <outputDirectory>${file.separator}mysql${file.separator}sql</outputDirectory> - <lineEnding>unix</lineEnding> - </fileSet> - <fileSet> - <directory>${project.basedir}/src/main/resources/postgres/bin - </directory> - <includes> - <include>*.sh</include> - </includes> - <outputDirectory>${file.separator}postgres${file.separator}bin</outputDirectory> - <lineEnding>unix</lineEnding> - <fileMode>0755</fileMode> - </fileSet> - <fileSet> - <directory>${project.basedir}/src/main/resources/postgres/sql - </directory> - <includes> - <include>*.sql</include> - </includes> - <outputDirectory>${file.separator}postgres${file.separator}sql</outputDirectory> - <lineEnding>unix</lineEnding> - </fileSet> - <fileSet> <directory>${project.basedir}/src/main/resources/apps/guard </directory> <includes> diff --git a/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/bin/create-guard-table.sh b/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/bin/create-guard-table.sh deleted file mode 100644 index 2871e150..00000000 --- a/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/bin/create-guard-table.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env sh -# -# ============LICENSE_START======================================================= -# Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. -# Modifications Copyright (C) 2020 Bell Canada. All rights reserved. -# Modifications Copyright (C) 2022-2024 Nordix Foundation. All rights reserved. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -# - -set -x - -SQL_FILE="${POLICY_HOME}/mysql/sql/createguardtable.sql" -SQL_ADDON_FILE="${POLICY_HOME}/mysql/sql/db.sql" - -# 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 == "jakarta.persistence.jdbc.url=jdbc" { print $3 $5 }' /tmp/temp.xacml.properties) -DB_USERNAME=$(awk -F= '$1 == "jakarta.persistence.jdbc.user" { print $2 }' /tmp/temp.xacml.properties) -DB_PASSWORD=$(awk -F= '$1 == "jakarta.persistence.jdbc.password" { st = index($0,"="); print substr($0,st+1) }' /tmp/temp.xacml.properties) - -# Remove temp file -rm /tmp/temp.xacml.properties - -if [ -z "$DB_HOSTNAME" ]; then - echo "No db host provided in guard xacml.properties." - exit 2 -fi - -if [ -z "$DB_USERNAME" ]; then - echo "No db username provided in guard xacml.properties." - exit 2 -fi - -if [ -z "$DB_PASSWORD" ]; then - echo "No db password provided in guard xacml.properties." - exit 2 -fi - -if [ -z "$MYSQL_CMD" ]; then - MYSQL_CMD="mysql" -fi - -# Execute sql command using sql file to create table -${MYSQL_CMD} -u${DB_USERNAME} -p${DB_PASSWORD} -h${DB_HOSTNAME} < "${SQL_FILE}" - -# Execute additional SQL configuration if provided -if [ -f "${POLICY_HOME}/mysql/sql/db.sql" ]; then - echo "additional SQL to be loaded found" - ${MYSQL_CMD} -u${DB_USERNAME} -p${DB_PASSWORD} -h${DB_HOSTNAME} < "${SQL_ADDON_FILE}" -fi diff --git a/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/sql/createguardtable.sql b/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/sql/createguardtable.sql deleted file mode 100644 index 34851a6f..00000000 --- a/packages/policy-xacmlpdp-tarball/src/main/resources/mysql/sql/createguardtable.sql +++ /dev/null @@ -1,71 +0,0 @@ --- ============LICENSE_START======================================================= --- Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved. --- ================================================================================ --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- ============LICENSE_END========================================================= - -USE operationshistory; - -CREATE TABLE IF NOT EXISTS operationshistory ( - id INT(11) NOT NULL AUTO_INCREMENT, - closedLoopName VARCHAR(255) NOT NULL, - requestId VARCHAR(50), - actor VARCHAR(50) NOT NULL, - operation VARCHAR(50) NOT NULL, - target VARCHAR(50) NOT NULL, - starttime timestamp NOT NULL, - outcome VARCHAR(50) NOT NULL, - message VARCHAR(255), - subrequestId VARCHAR(50), - endtime timestamp NULL DEFAULT current_timestamp, - PRIMARY KEY (id) -); - -DROP PROCEDURE IF EXISTS create_clreqid_index; - -\d $$ -CREATE PROCEDURE create_clreqid_index() -BEGIN - DECLARE index_count INT DEFAULT 1; - - SELECT count(index_name) INTO index_count FROM information_schema.statistics - WHERE table_schema=DATABASE() AND table_name='operationshistory' AND index_name='operationshistory_clreqid_index'; - - IF index_count = 0 THEN - CREATE INDEX operationshistory_clreqid_index ON operationshistory(requestId, closedLoopName); - END IF; -END -$$ - -\d ; - -CALL create_clreqid_index(); - -DROP PROCEDURE IF EXISTS create_target_index; - -\d $$ -CREATE PROCEDURE create_target_index() -BEGIN - DECLARE index_count INT DEFAULT 1; - - SELECT count(index_name) INTO index_count FROM information_schema.statistics - WHERE table_schema=DATABASE() AND table_name='operationshistory' AND index_name='operationshistory_target_index'; - - IF index_count = 0 THEN - CREATE INDEX operationshistory_target_index ON operationshistory(target, operation, actor, endtime); - END IF; -END -$$ - -CALL create_target_index(); -\d ; diff --git a/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/bin/create-guard-table-pg.sh b/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/bin/create-guard-table-pg.sh deleted file mode 100644 index 167b2988..00000000 --- a/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/bin/create-guard-table-pg.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env sh -# -# ============LICENSE_START======================================================= -# Copyright (C) 2022-2024 Nordix Foundation. All rights reserved. -# Modifications Copyright (C) 2022 AT&T Intellectual Property. -# ================================================================================ -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# SPDX-License-Identifier: Apache-2.0 -# ============LICENSE_END========================================================= -# - -set -x - -SQL_FILE="${POLICY_HOME}/postgres/sql/createguardtable-pg.sql" -SQL_ADDON_FILE="${POLICY_HOME}/postgres/sql/db-pg.sql" - -# Remove escape backslashes if present and save output in temp file -sed 's/\\//g' "${POLICY_HOME}"/apps/guard/xacml-pg.properties > /tmp/temp.xacml-pg.properties - -# Remove temp file -if [ ! -f /tmp/temp.xacml-pg.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 == "jakarta.persistence.jdbc.url=jdbc" { print $3 $5 }' /tmp/temp.xacml-pg.properties) -DB_USERNAME=$(awk -F= '$1 == "jakarta.persistence.jdbc.user" { print $2 }' /tmp/temp.xacml-pg.properties) -DB_PASSWORD=$(awk -F= '$1 == "jakarta.persistence.jdbc.password" { st = index($0,"="); print substr($0,st+1) }' /tmp/temp.xacml-pg.properties) - -# Remove temp file -rm /tmp/temp.xacml-pg.properties - -if [ -z "$DB_HOSTNAME" ]; then - echo "No db host provided in guard xacml-pg.properties." - exit 2 -fi - -if [ -z "$DB_USERNAME" ]; then - echo "No db username provided in guard xacml-pg.properties." - exit 2 -fi - -if [ -z "$DB_PASSWORD" ]; then - echo "No db password provided in guard xacml-pg.properties." - exit 2 -fi - -# Execute sql command using sql file to create table -psql -U postgres -h ${DB_HOSTNAME} -f ${SQL_FILE} - -# Execute additional SQL configuration if provided -if [ -f "${POLICY_HOME}/postgres/sql/db-pg.sql" ]; then - echo "additional SQL to be loaded found" - psql -U postgres -h ${DB_HOSTNAME} -f ${SQL_ADDON_FILE} -fi - diff --git a/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/sql/createguardtable-pg.sql b/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/sql/createguardtable-pg.sql deleted file mode 100644 index 62738ae9..00000000 --- a/packages/policy-xacmlpdp-tarball/src/main/resources/postgres/sql/createguardtable-pg.sql +++ /dev/null @@ -1,38 +0,0 @@ --- ============LICENSE_START======================================================= --- Copyright (C) 2022, 2024 Nordix Foundation. All rights reserved. --- ================================================================================ --- Licensed under the Apache License, Version 2.0 (the "License"); --- you may not use this file except in compliance with the License. --- You may obtain a copy of the License at --- --- http://www.apache.org/licenses/LICENSE-2.0 --- --- Unless required by applicable law or agreed to in writing, software --- distributed under the License is distributed on an "AS IS" BASIS, --- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. --- See the License for the specific language governing permissions and --- limitations under the License. --- ============LICENSE_END========================================================= - -\c operationshistory; - -CREATE TABLE IF NOT EXISTS operationshistory -( - id SERIAL PRIMARY KEY, - closedLoopName VARCHAR(255) NOT NULL, - requestId VARCHAR(50), - actor VARCHAR(50) NOT NULL, - operation VARCHAR(50) NOT NULL, - target VARCHAR(50) NOT NULL, - starttime TIMESTAMP NOT NULL, - outcome VARCHAR(50) NOT NULL, - message VARCHAR(255), - subrequestId VARCHAR(50), - endtime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -); - -create index if not exists operationshistory_clreqid_index on - operationshistory (requestId, closedLoopName); - -create index if not exists operationshistory_target_index on - operationshistory (target, operation, actor, endtime); |