summaryrefslogtreecommitdiffstats
path: root/extra
diff options
context:
space:
mode:
Diffstat (limited to 'extra')
-rw-r--r--extra/docker/clamp/clamp.env1
-rw-r--r--extra/docker/clamp/docker-compose.yml22
-rw-r--r--extra/docker/mariadb/conf1/my.cnf194
-rw-r--r--extra/docker/mariadb/conf2/my.cnf193
-rw-r--r--extra/docker/mariadb/conf3/my.cnf193
-rw-r--r--extra/sql/bulkload/clds-create-db-objects.sql189
-rw-r--r--extra/sql/bulkload/clds-stored-procedures.sql431
-rw-r--r--extra/sql/drop/clds-drop-db-objects.sql32
-rwxr-xr-xextra/sql/load-sql-files-tests-automation.sh28
9 files changed, 1283 insertions, 0 deletions
diff --git a/extra/docker/clamp/clamp.env b/extra/docker/clamp/clamp.env
new file mode 100644
index 00000000..c38d29b0
--- /dev/null
+++ b/extra/docker/clamp/clamp.env
@@ -0,0 +1 @@
+SPRING_APPLICATION_JSON={"spring": {"datasource": {"url":"jdbc:mysql://db:3306/camundabpm?autoReconnect=true"}, "cldsdatasource": {"url":"jdbc:mysql://db:3306/cldsdb4?autoReconnect=true"}}}
diff --git a/extra/docker/clamp/docker-compose.yml b/extra/docker/clamp/docker-compose.yml
new file mode 100644
index 00000000..a4a935ad
--- /dev/null
+++ b/extra/docker/clamp/docker-compose.yml
@@ -0,0 +1,22 @@
+version: '2'
+
+services:
+ db:
+ image: mariadb:10.1.11
+ volumes:
+ - "/var/lib/mysql"
+ - "../mariadb/conf1:/etc/mysql/conf.d:ro"
+ - "../../sql/:/docker-entrypoint-initdb.d:ro"
+ environment:
+ - MYSQL_ROOT_PASSWORD=strong_pitchou
+ ports:
+ - "3306:3306"
+
+ clamp:
+ image: onap/clamp
+ depends_on:
+ - db
+ env_file:
+ - clamp.env
+ ports:
+ - "8080:8080"
diff --git a/extra/docker/mariadb/conf1/my.cnf b/extra/docker/mariadb/conf1/my.cnf
new file mode 100644
index 00000000..0be1bd7a
--- /dev/null
+++ b/extra/docker/mariadb/conf1/my.cnf
@@ -0,0 +1,194 @@
+# Example MySQL config file for medium systems.
+#
+# This is for a system with memory 8G where MySQL plays
+# an important part, or systems up to 128M where MySQL is used together with
+# other programs (such as a web server)
+#
+# In this file, you can use all long options that a program supports.
+# If you want to know which options a program supports, run the program
+# with the "--help" option.
+
+# The following options will be passed to all MySQL clients
+##[client]
+##user = root
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+
+# Here follows entries for some specific programs
+
+# The MySQL server
+[mysqld]
+##performance_schema
+
+slow_query_log =ON
+long_query_time =2
+slow_query_log_file =//var/lib/mysql/slow_query.log
+##basedir = //opt/app/mysql/product/mariadb-10.1.11-linux-x86_64
+##datadir = //opt/app/mysql/data
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+skip-external-locking
+explicit_defaults_for_timestamp = true
+skip-symbolic-links
+local-infile = 0
+#ignore_db_dir=lost+found
+key_buffer_size = 16M
+max_allowed_packet = 4M
+table_open_cache = 100
+sort_buffer_size = 512K
+net_buffer_length = 8K
+read_buffer_size = 256K
+read_rnd_buffer_size = 512K
+myisam_sort_buffer_size = 8M
+max_connections = 500
+lower_case_table_names = 1
+thread_stack = 256K
+thread_cache_size = 25
+query_cache_size = 8M
+query_cache_type = 0
+query_prealloc_size = 512K
+query_cache_limit = 1M
+
+# Password validation
+##plugin-load-add=simple_password_check.so
+##simple_password_check_other_characters=0
+
+# Audit Log settings
+plugin-load-add=server_audit.so
+server_audit=FORCE_PLUS_PERMANENT
+server_audit_file_path=//var/lib/mysql/audit.log
+server_audit_file_rotate_size=50M
+server_audit_events=CONNECT,QUERY,TABLE
+server_audit_logging=on
+
+# Don't listen on a TCP/IP port at all. This can be a security enhancement,
+# if all processes that need to connect to mysqld run on the same host.
+# All interaction with mysqld must be made via Unix sockets or named pipes.
+# Note that using this option without enabling named pipes on Windows
+# (via the "enable-named-pipe" option) will render mysqld useless!
+#
+#skip-networking
+
+# Replication Master Server (default)
+# binary logging is required for replication
+##log-bin=//var/lib/mysql/mysql-bin
+
+# binary logging format - mixed recommended
+binlog_format=row
+
+# required unique id between 1 and 2^32 - 1
+# defaults to 1 if master-host is not set
+# but will not function as a master if omitted
+
+# Replication Slave (comment out master section to use this)
+#
+# To configure this host as a replication slave, you can choose between
+# two methods :
+#
+# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
+# the syntax is:
+#
+# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
+# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
+#
+# where you replace <host>, <user>, <password> by quoted strings and
+# <port> by the master's port number (3306 by default).
+#
+# Example:
+#
+# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
+# MASTER_USER='joe', MASTER_PASSWORD='secret';
+#
+# OR
+#
+# 2) Set the variables below. However, in case you choose this method, then
+# start replication for the first time (even unsuccessfully, for example
+# if you mistyped the password in master-password and the slave fails to
+# connect), the slave will create a master.info file, and any later
+# change in this file to the variables' values below will be ignored and
+# overridden by the content of the master.info file, unless you shutdown
+# the slave server, delete master.info and restart the slaver server.
+# For that reason, you may want to leave the lines below untouched
+# (commented) and instead use CHANGE MASTER TO (see above)
+#
+# required unique id between 2 and 2^32 - 1
+# (and different from the master)
+# defaults to 2 if master-host is set
+# but will not function as a slave if omitted
+#server-id = 2
+#
+# The replication master for this slave - required
+#master-host = <hostname>
+#
+# The username the slave will use for authentication when connecting
+# to the master - required
+#master-user = <username>
+#
+# The password the slave will authenticate with when connecting to
+# the master - required
+#master-password = <password>
+#
+# The port the master is listening on.
+# optional - defaults to 3306
+#master-port = <port>
+#
+# binary logging - not required for slaves, but recommended
+#log-bin=mysql-bin
+
+# Uncomment the following if you are using InnoDB tables
+##innodb_data_home_dir = //opt/app/mysql/data
+##innodb_data_file_path = ibdata1:20M:autoextend:max:32G
+##innodb_log_group_home_dir = //opt/app/mysql/iblogs
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+innodb_buffer_pool_size = 6380M
+#innodb_additional_mem_pool_size = 2M
+# Set .._log_file_size to 25 % of buffer pool size
+innodb_log_file_size = 150M
+innodb_log_files_in_group = 3
+innodb_log_buffer_size = 8M
+#innodb_flush_log_at_trx_commit = 1
+innodb_lock_wait_timeout = 50
+innodb_autoextend_increment = 100
+expire_logs_days = 8
+open_files_limit = 2000
+transaction-isolation=READ-COMMITTED
+####### Galera parameters #######
+## Galera Provider configuration
+wsrep_provider=/usr/lib/galera/libgalera_smm.so
+wsrep_provider_options="gcache.size=2G; gcache.page_size=1G"
+## Galera Cluster configuration
+wsrep_cluster_name="MSO-automated-tests-cluster"
+wsrep_cluster_address="gcomm://"
+#wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3"
+##wsrep_cluster_address="gcomm://192.169.3.184,192.169.3.185,192.169.3.186"
+## Galera Synchronization configuration
+wsrep_sst_method=rsync
+#wsrep_sst_method=xtrabackup-v2
+#wsrep_sst_auth="sstuser:Mon#2o!6"
+## Galera Node configuration
+wsrep_node_name="mariadb1"
+##wsrep_node_address="192.169.3.184"
+wsrep_on=ON
+## Status notification
+#wsrep_notify_cmd=/opt/app/mysql/bin/wsrep_notify
+#######
+
+
+[mysqldump]
+quick
+max_allowed_packet = 16M
+
+[mysql]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[myisamchk]
+key_buffer_size = 20971520
+
+##[mysqlhotcopy]
+##interactive-timeout
+##[mysqld_safe]
+##malloc-lib=//opt/app/mysql/local/lib/libjemalloc.so.1
+##log-error=//opt/app/mysql/log/mysqld.log \ No newline at end of file
diff --git a/extra/docker/mariadb/conf2/my.cnf b/extra/docker/mariadb/conf2/my.cnf
new file mode 100644
index 00000000..bf5f9c17
--- /dev/null
+++ b/extra/docker/mariadb/conf2/my.cnf
@@ -0,0 +1,193 @@
+# Example MySQL config file for medium systems.
+#
+# This is for a system with memory 8G where MySQL plays
+# an important part, or systems up to 128M where MySQL is used together with
+# other programs (such as a web server)
+#
+# In this file, you can use all long options that a program supports.
+# If you want to know which options a program supports, run the program
+# with the "--help" option.
+
+# The following options will be passed to all MySQL clients
+##[client]
+##user = root
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+
+# Here follows entries for some specific programs
+
+# The MySQL server
+[mysqld]
+##performance_schema
+
+slow_query_log =ON
+long_query_time =2
+slow_query_log_file =//var/lib/mysql/slow_query.log
+##basedir = //opt/app/mysql/product/mariadb-10.1.11-linux-x86_64
+##datadir = //opt/app/mysql/data
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+skip-external-locking
+explicit_defaults_for_timestamp = true
+skip-symbolic-links
+local-infile = 0
+#ignore_db_dir=lost+found
+key_buffer_size = 16M
+max_allowed_packet = 4M
+table_open_cache = 100
+sort_buffer_size = 512K
+net_buffer_length = 8K
+read_buffer_size = 256K
+read_rnd_buffer_size = 512K
+myisam_sort_buffer_size = 8M
+max_connections = 500
+lower_case_table_names = 1
+thread_stack = 256K
+thread_cache_size = 25
+query_cache_size = 8M
+query_cache_type = 0
+query_prealloc_size = 512K
+query_cache_limit = 1M
+
+# Password validation
+##plugin-load-add=simple_password_check.so
+##simple_password_check_other_characters=0
+
+# Audit Log settings
+plugin-load-add=server_audit.so
+server_audit=FORCE_PLUS_PERMANENT
+server_audit_file_path=//var/lib/mysql/audit.log
+server_audit_file_rotate_size=50M
+server_audit_events=CONNECT,QUERY,TABLE
+server_audit_logging=on
+
+# Don't listen on a TCP/IP port at all. This can be a security enhancement,
+# if all processes that need to connect to mysqld run on the same host.
+# All interaction with mysqld must be made via Unix sockets or named pipes.
+# Note that using this option without enabling named pipes on Windows
+# (via the "enable-named-pipe" option) will render mysqld useless!
+#
+#skip-networking
+
+# Replication Master Server (default)
+# binary logging is required for replication
+##log-bin=//var/lib/mysql/mysql-bin
+
+# binary logging format - mixed recommended
+binlog_format=row
+
+# required unique id between 1 and 2^32 - 1
+# defaults to 1 if master-host is not set
+# but will not function as a master if omitted
+
+# Replication Slave (comment out master section to use this)
+#
+# To configure this host as a replication slave, you can choose between
+# two methods :
+#
+# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
+# the syntax is:
+#
+# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
+# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
+#
+# where you replace <host>, <user>, <password> by quoted strings and
+# <port> by the master's port number (3306 by default).
+#
+# Example:
+#
+# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
+# MASTER_USER='joe', MASTER_PASSWORD='secret';
+#
+# OR
+#
+# 2) Set the variables below. However, in case you choose this method, then
+# start replication for the first time (even unsuccessfully, for example
+# if you mistyped the password in master-password and the slave fails to
+# connect), the slave will create a master.info file, and any later
+# change in this file to the variables' values below will be ignored and
+# overridden by the content of the master.info file, unless you shutdown
+# the slave server, delete master.info and restart the slaver server.
+# For that reason, you may want to leave the lines below untouched
+# (commented) and instead use CHANGE MASTER TO (see above)
+#
+# required unique id between 2 and 2^32 - 1
+# (and different from the master)
+# defaults to 2 if master-host is set
+# but will not function as a slave if omitted
+#server-id = 2
+#
+# The replication master for this slave - required
+#master-host = <hostname>
+#
+# The username the slave will use for authentication when connecting
+# to the master - required
+#master-user = <username>
+#
+# The password the slave will authenticate with when connecting to
+# the master - required
+#master-password = <password>
+#
+# The port the master is listening on.
+# optional - defaults to 3306
+#master-port = <port>
+#
+# binary logging - not required for slaves, but recommended
+#log-bin=mysql-bin
+
+# Uncomment the following if you are using InnoDB tables
+##innodb_data_home_dir = //opt/app/mysql/data
+##innodb_data_file_path = ibdata1:20M:autoextend:max:32G
+##innodb_log_group_home_dir = //opt/app/mysql/iblogs
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+innodb_buffer_pool_size = 6380M
+#innodb_additional_mem_pool_size = 2M
+# Set .._log_file_size to 25 % of buffer pool size
+innodb_log_file_size = 150M
+innodb_log_files_in_group = 3
+innodb_log_buffer_size = 8M
+#innodb_flush_log_at_trx_commit = 1
+innodb_lock_wait_timeout = 50
+innodb_autoextend_increment = 100
+expire_logs_days = 8
+open_files_limit = 2000
+transaction-isolation=READ-COMMITTED
+####### Galera parameters #######
+## Galera Provider configuration
+wsrep_provider=/usr/lib/galera/libgalera_smm.so
+wsrep_provider_options="gcache.size=2G; gcache.page_size=1G"
+## Galera Cluster configuration
+wsrep_cluster_name="MSO-automated-tests-cluster"
+wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3"
+##wsrep_cluster_address="gcomm://192.169.3.184,192.169.3.185,192.169.3.186"
+## Galera Synchronization configuration
+wsrep_sst_method=rsync
+#wsrep_sst_method=xtrabackup-v2
+#wsrep_sst_auth="sstuser:Mon#2o!6"
+## Galera Node configuration
+wsrep_node_name="mariadb2"
+##wsrep_node_address="192.169.3.184"
+wsrep_on=ON
+## Status notification
+#wsrep_notify_cmd=/opt/app/mysql/bin/wsrep_notify
+#######
+
+
+[mysqldump]
+quick
+max_allowed_packet = 16M
+
+[mysql]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[myisamchk]
+key_buffer_size = 20971520
+
+##[mysqlhotcopy]
+##interactive-timeout
+##[mysqld_safe]
+##malloc-lib=//opt/app/mysql/local/lib/libjemalloc.so.1
+##log-error=//opt/app/mysql/log/mysqld.log \ No newline at end of file
diff --git a/extra/docker/mariadb/conf3/my.cnf b/extra/docker/mariadb/conf3/my.cnf
new file mode 100644
index 00000000..74f7a31b
--- /dev/null
+++ b/extra/docker/mariadb/conf3/my.cnf
@@ -0,0 +1,193 @@
+# Example MySQL config file for medium systems.
+#
+# This is for a system with memory 8G where MySQL plays
+# an important part, or systems up to 128M where MySQL is used together with
+# other programs (such as a web server)
+#
+# In this file, you can use all long options that a program supports.
+# If you want to know which options a program supports, run the program
+# with the "--help" option.
+
+# The following options will be passed to all MySQL clients
+##[client]
+##user = root
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+
+# Here follows entries for some specific programs
+
+# The MySQL server
+[mysqld]
+##performance_schema
+
+slow_query_log =ON
+long_query_time =2
+slow_query_log_file =//var/lib/mysql/slow_query.log
+##basedir = //opt/app/mysql/product/mariadb-10.1.11-linux-x86_64
+##datadir = //opt/app/mysql/data
+##port = 3306
+##socket = //opt/app/mysql/mysql.sock
+skip-external-locking
+explicit_defaults_for_timestamp = true
+skip-symbolic-links
+local-infile = 0
+#ignore_db_dir=lost+found
+key_buffer_size = 16M
+max_allowed_packet = 4M
+table_open_cache = 100
+sort_buffer_size = 512K
+net_buffer_length = 8K
+read_buffer_size = 256K
+read_rnd_buffer_size = 512K
+myisam_sort_buffer_size = 8M
+max_connections = 500
+lower_case_table_names = 1
+thread_stack = 256K
+thread_cache_size = 25
+query_cache_size = 8M
+query_cache_type = 0
+query_prealloc_size = 512K
+query_cache_limit = 1M
+
+# Password validation
+##plugin-load-add=simple_password_check.so
+##simple_password_check_other_characters=0
+
+# Audit Log settings
+plugin-load-add=server_audit.so
+server_audit=FORCE_PLUS_PERMANENT
+server_audit_file_path=//var/lib/mysql/audit.log
+server_audit_file_rotate_size=50M
+server_audit_events=CONNECT,QUERY,TABLE
+server_audit_logging=on
+
+# Don't listen on a TCP/IP port at all. This can be a security enhancement,
+# if all processes that need to connect to mysqld run on the same host.
+# All interaction with mysqld must be made via Unix sockets or named pipes.
+# Note that using this option without enabling named pipes on Windows
+# (via the "enable-named-pipe" option) will render mysqld useless!
+#
+#skip-networking
+
+# Replication Master Server (default)
+# binary logging is required for replication
+##log-bin=//var/lib/mysql/mysql-bin
+
+# binary logging format - mixed recommended
+binlog_format=row
+
+# required unique id between 1 and 2^32 - 1
+# defaults to 1 if master-host is not set
+# but will not function as a master if omitted
+
+# Replication Slave (comment out master section to use this)
+#
+# To configure this host as a replication slave, you can choose between
+# two methods :
+#
+# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
+# the syntax is:
+#
+# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
+# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
+#
+# where you replace <host>, <user>, <password> by quoted strings and
+# <port> by the master's port number (3306 by default).
+#
+# Example:
+#
+# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
+# MASTER_USER='joe', MASTER_PASSWORD='secret';
+#
+# OR
+#
+# 2) Set the variables below. However, in case you choose this method, then
+# start replication for the first time (even unsuccessfully, for example
+# if you mistyped the password in master-password and the slave fails to
+# connect), the slave will create a master.info file, and any later
+# change in this file to the variables' values below will be ignored and
+# overridden by the content of the master.info file, unless you shutdown
+# the slave server, delete master.info and restart the slaver server.
+# For that reason, you may want to leave the lines below untouched
+# (commented) and instead use CHANGE MASTER TO (see above)
+#
+# required unique id between 2 and 2^32 - 1
+# (and different from the master)
+# defaults to 2 if master-host is set
+# but will not function as a slave if omitted
+#server-id = 2
+#
+# The replication master for this slave - required
+#master-host = <hostname>
+#
+# The username the slave will use for authentication when connecting
+# to the master - required
+#master-user = <username>
+#
+# The password the slave will authenticate with when connecting to
+# the master - required
+#master-password = <password>
+#
+# The port the master is listening on.
+# optional - defaults to 3306
+#master-port = <port>
+#
+# binary logging - not required for slaves, but recommended
+#log-bin=mysql-bin
+
+# Uncomment the following if you are using InnoDB tables
+##innodb_data_home_dir = //opt/app/mysql/data
+##innodb_data_file_path = ibdata1:20M:autoextend:max:32G
+##innodb_log_group_home_dir = //opt/app/mysql/iblogs
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+innodb_buffer_pool_size = 6380M
+#innodb_additional_mem_pool_size = 2M
+# Set .._log_file_size to 25 % of buffer pool size
+innodb_log_file_size = 150M
+innodb_log_files_in_group = 3
+innodb_log_buffer_size = 8M
+#innodb_flush_log_at_trx_commit = 1
+innodb_lock_wait_timeout = 50
+innodb_autoextend_increment = 100
+expire_logs_days = 8
+open_files_limit = 2000
+transaction-isolation=READ-COMMITTED
+####### Galera parameters #######
+## Galera Provider configuration
+wsrep_provider=/usr/lib/galera/libgalera_smm.so
+wsrep_provider_options="gcache.size=2G; gcache.page_size=1G"
+## Galera Cluster configuration
+wsrep_cluster_name="MSO-automated-tests-cluster"
+wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3"
+##wsrep_cluster_address="gcomm://192.169.3.184,192.169.3.185,192.169.3.186"
+## Galera Synchronization configuration
+wsrep_sst_method=rsync
+#wsrep_sst_method=xtrabackup-v2
+#wsrep_sst_auth="sstuser:Mon#2o!6"
+## Galera Node configuration
+wsrep_node_name="mariadb3"
+##wsrep_node_address="192.169.3.184"
+wsrep_on=ON
+## Status notification
+#wsrep_notify_cmd=/opt/app/mysql/bin/wsrep_notify
+#######
+
+
+[mysqldump]
+quick
+max_allowed_packet = 16M
+
+[mysql]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[myisamchk]
+key_buffer_size = 20971520
+
+##[mysqlhotcopy]
+##interactive-timeout
+##[mysqld_safe]
+##malloc-lib=//opt/app/mysql/local/lib/libjemalloc.so.1
+##log-error=//opt/app/mysql/log/mysqld.log \ No newline at end of file
diff --git a/extra/sql/bulkload/clds-create-db-objects.sql b/extra/sql/bulkload/clds-create-db-objects.sql
new file mode 100644
index 00000000..5cbb7e01
--- /dev/null
+++ b/extra/sql/bulkload/clds-create-db-objects.sql
@@ -0,0 +1,189 @@
+#
+# Create CLDS database objects (tables, etc.)
+#
+#
+CREATE DATABASE `camundabpm`;
+USE `camundabpm`;
+DROP USER 'camunda';
+CREATE USER 'camunda';
+GRANT ALL on camundabpm.* to 'camunda' identified by 'ndMSpw4CAM' with GRANT OPTION;
+FLUSH PRIVILEGES;
+
+CREATE DATABASE `cldsdb4`;
+USE `cldsdb4`;
+DROP USER 'clds';
+CREATE USER 'clds';
+GRANT ALL on cldsdb4.* to 'clds' identified by 'sidnnd83K' with GRANT OPTION;
+GRANT SELECT on mysql.proc TO 'clds';
+FLUSH PRIVILEGES;
+
+
+CREATE TABLE template (
+ template_id VARCHAR(36) NOT NULL,
+ template_name VARCHAR(80) NOT NULL,
+ template_bpmn_id VARCHAR(36) NULL,
+ template_image_id VARCHAR(36) NULL,
+ template_doc_id VARCHAR(36) NULL,
+ PRIMARY KEY (template_id),
+ UNIQUE (template_name)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE template_bpmn (
+ template_bpmn_id VARCHAR(36) NOT NULL,
+ template_id VARCHAR(36) NOT NULL,
+ template_bpmn_text MEDIUMTEXT NOT NULL,
+ userid VARCHAR(8),
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (template_bpmn_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE template_image (
+ template_image_id VARCHAR(36) NOT NULL,
+ template_id VARCHAR(36) NOT NULL,
+ template_image_text MEDIUMTEXT NULL,
+ userid VARCHAR(8),
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (template_image_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE template_doc (
+ template_doc_id VARCHAR(36) NOT NULL,
+ template_id VARCHAR(36) NOT NULL,
+ template_doc_text MEDIUMTEXT NULL,
+ userid VARCHAR(8),
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (template_doc_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE model (
+ model_id VARCHAR(36) NOT NULL,
+ model_name VARCHAR(80) NOT NULL,
+ template_id VARCHAR(36) NULL,
+ model_prop_id VARCHAR(36) NULL,
+ model_blueprint_id VARCHAR(36) NULL,
+ event_id VARCHAR(36) NULL,
+ control_name_prefix VARCHAR(80) NULL,
+ control_name_uuid VARCHAR(36) NOT NULL,
+ PRIMARY KEY (model_id),
+ UNIQUE (model_name),
+ UNIQUE (control_name_uuid)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE model_properties (
+ model_prop_id VARCHAR(36) NOT NULL,
+ model_id VARCHAR(36) NOT NULL,
+ model_prop_text MEDIUMTEXT NULL,
+ userid VARCHAR(8),
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (model_prop_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE model_blueprint (
+ model_blueprint_id VARCHAR(36) NOT NULL,
+ model_id VARCHAR(36) NOT NULL,
+ model_blueprint_text MEDIUMTEXT NULL,
+ userid VARCHAR(8),
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (model_blueprint_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE model_instance (
+ model_instance_id VARCHAR(36) NOT NULL,
+ model_id VARCHAR(36) NOT NULL,
+ vm_name VARCHAR(250) NOT NULL,
+ location VARCHAR(250) NULL,
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ PRIMARY KEY (model_instance_id),
+ UNIQUE (model_id, vm_name)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE event (
+ event_id VARCHAR(36) NOT NULL,
+ model_id VARCHAR(36) NULL,
+ action_cd VARCHAR(80) NOT NULL,
+ action_state_cd VARCHAR(80) NULL,
+ prev_event_id VARCHAR(36) NULL,
+ process_instance_id VARCHAR(80) NULL,
+ userid VARCHAR(8) NULL,
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (event_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+CREATE TABLE clds_service_cache (
+ invariant_service_id VARCHAR(36) NOT NULL,
+ service_id VARCHAR(36) NULL,
+ timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ object_data MEDIUMBLOB NULL,
+ PRIMARY KEY (invariant_service_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
+
+ALTER TABLE template
+ ADD CONSTRAINT template_bpmn_id_fkey01
+ FOREIGN KEY (template_bpmn_id)
+ REFERENCES template_bpmn (template_bpmn_id);
+
+ALTER TABLE template
+ ADD CONSTRAINT template_image_id_fkey01
+ FOREIGN KEY (template_image_id)
+ REFERENCES template_image (template_image_id);
+
+ALTER TABLE template
+ ADD CONSTRAINT template_doc_id_fkey01
+ FOREIGN KEY (template_doc_id)
+ REFERENCES template_doc (template_doc_id);
+
+ALTER TABLE template_bpmn
+ ADD CONSTRAINT template_id_fkey02
+ FOREIGN KEY (template_id)
+ REFERENCES template (template_id);
+
+ALTER TABLE template_image
+ ADD CONSTRAINT template_id_fkey03
+ FOREIGN KEY (template_id)
+ REFERENCES template (template_id);
+
+ALTER TABLE template_doc
+ ADD CONSTRAINT template_id_fkey04
+ FOREIGN KEY (template_id)
+ REFERENCES template (template_id);
+
+ALTER TABLE model
+ ADD CONSTRAINT template_id_fkey01
+ FOREIGN KEY (template_id)
+ REFERENCES template (template_id);
+
+ALTER TABLE model
+ ADD CONSTRAINT model_prop_id_fkey01
+ FOREIGN KEY (model_prop_id)
+ REFERENCES model_properties (model_prop_id);
+
+ALTER TABLE model
+ ADD CONSTRAINT model_blueprint_id_fkey01
+ FOREIGN KEY (model_blueprint_id)
+ REFERENCES model_blueprint (model_blueprint_id);
+
+ALTER TABLE model
+ ADD CONSTRAINT event_id_fkey01
+ FOREIGN KEY (event_id)
+ REFERENCES event (event_id);
+
+ALTER TABLE model_properties
+ ADD CONSTRAINT model_id_fkey01
+ FOREIGN KEY (model_id)
+ REFERENCES model (model_id);
+
+ALTER TABLE model_blueprint
+ ADD CONSTRAINT model_id_fkey02
+ FOREIGN KEY (model_id)
+ REFERENCES model (model_id);
+
+ALTER TABLE model_instance
+ ADD CONSTRAINT model_id_fkey04
+ FOREIGN KEY (model_id)
+ REFERENCES model (model_id);
+
+ALTER TABLE event
+ ADD CONSTRAINT model_id_fkey03
+ FOREIGN KEY (model_id)
+ REFERENCES model (model_id);
+
diff --git a/extra/sql/bulkload/clds-stored-procedures.sql b/extra/sql/bulkload/clds-stored-procedures.sql
new file mode 100644
index 00000000..41cc75e1
--- /dev/null
+++ b/extra/sql/bulkload/clds-stored-procedures.sql
@@ -0,0 +1,431 @@
+#
+# CLDS stored procedures
+#
+#
+USE cldsdb4;
+
+DROP PROCEDURE IF EXISTS upd_event;
+DROP PROCEDURE IF EXISTS ins_event;
+DROP PROCEDURE IF EXISTS del_all_model_instances;
+DROP PROCEDURE IF EXISTS del_model_instance;
+DROP PROCEDURE IF EXISTS ins_model_instance;
+DROP PROCEDURE IF EXISTS set_model;
+DROP PROCEDURE IF EXISTS get_model;
+DROP PROCEDURE IF EXISTS get_model_template;
+DROP PROCEDURE IF EXISTS set_template;
+DROP PROCEDURE IF EXISTS get_template;
+DELIMITER //
+CREATE PROCEDURE get_template
+ (IN v_template_name VARCHAR(80),
+ OUT v_template_id VARCHAR(36),
+ OUT v_template_bpmn_id VARCHAR(36),
+ OUT v_template_bpmn_userid VARCHAR(8),
+ OUT v_template_bpmn_text MEDIUMTEXT,
+ OUT v_template_image_id VARCHAR(36),
+ OUT v_template_image_userid VARCHAR(8),
+ OUT v_template_image_text MEDIUMTEXT,
+ OUT v_template_doc_id VARCHAR(36),
+ OUT v_template_doc_userid VARCHAR(8),
+ OUT v_template_doc_text MEDIUMTEXT)
+BEGIN
+ SELECT t.template_id,
+ tb.template_bpmn_id,
+ tb.userid,
+ tb.template_bpmn_text,
+ ti.template_image_id,
+ ti.userid,
+ ti.template_image_text,
+ td.template_doc_id,
+ td.userid,
+ td.template_doc_text
+ INTO v_template_id,
+ v_template_bpmn_id,
+ v_template_bpmn_userid,
+ v_template_bpmn_text,
+ v_template_image_id,
+ v_template_image_userid,
+ v_template_image_text,
+ v_template_doc_id,
+ v_template_doc_userid,
+ v_template_doc_text
+ FROM template t,
+ template_bpmn tb,
+ template_image ti,
+ template_doc td
+ WHERE t.template_bpmn_id = tb.template_bpmn_id
+ AND t.template_image_id = ti.template_image_id
+ AND t.template_doc_id = td.template_doc_id
+ AND t.template_name = v_template_name;
+END;
+CREATE PROCEDURE set_template
+ (IN v_template_name VARCHAR(80),
+ IN v_userid VARCHAR(8),
+ IN v_template_bpmn_text MEDIUMTEXT,
+ IN v_template_image_text MEDIUMTEXT,
+ IN v_template_doc_text MEDIUMTEXT,
+ OUT v_template_id VARCHAR(36),
+ OUT v_template_bpmn_id VARCHAR(36),
+ OUT v_template_bpmn_userid VARCHAR(8),
+ OUT v_template_image_id VARCHAR(36),
+ OUT v_template_image_userid VARCHAR(8),
+ OUT v_template_doc_id VARCHAR(36),
+ OUT v_template_doc_userid VARCHAR(8))
+BEGIN
+ DECLARE v_old_template_bpmn_text MEDIUMTEXT;
+ DECLARE v_old_template_image_text MEDIUMTEXT;
+ DECLARE v_old_template_doc_text MEDIUMTEXT;
+ SET v_template_id = NULL;
+ CALL get_template(
+ v_template_name,
+ v_template_id,
+ v_template_bpmn_id,
+ v_template_bpmn_userid,
+ v_old_template_bpmn_text,
+ v_template_image_id,
+ v_template_image_userid,
+ v_old_template_image_text,
+ v_template_doc_id,
+ v_template_doc_userid,
+ v_old_template_doc_text);
+ IF v_template_id IS NULL THEN
+ BEGIN
+ SET v_template_id = UUID();
+ INSERT INTO template
+ (template_id, template_name)
+ VALUES (v_template_id, v_template_name);
+ END;
+ END IF;
+ IF v_template_bpmn_id IS NULL OR v_template_bpmn_text <> v_old_template_bpmn_text THEN
+ SET v_template_bpmn_id = UUID();
+ INSERT INTO template_bpmn
+ (template_bpmn_id, template_id, template_bpmn_text, userid)
+ VALUES (v_template_bpmn_id, v_template_id, v_template_bpmn_text, v_userid);
+ SET v_template_bpmn_userid = v_userid;
+ END IF;
+ IF v_template_image_id IS NULL OR v_template_image_text <> v_old_template_image_text THEN
+ SET v_template_image_id = UUID();
+ INSERT INTO template_image
+ (template_image_id, template_id, template_image_text, userid)
+ VALUES (v_template_image_id, v_template_id, v_template_image_text, v_userid);
+ SET v_template_image_userid = v_userid;
+ END IF;
+ IF v_template_doc_id IS NULL OR v_template_doc_text <> v_old_template_doc_text THEN
+ SET v_template_doc_id = UUID();
+ INSERT INTO template_doc
+ (template_doc_id, template_id, template_doc_text, userid)
+ VALUES (v_template_doc_id, v_template_id, v_template_doc_text, v_userid);
+ SET v_template_doc_userid = v_userid;
+ END IF;
+ UPDATE template
+ SET template_bpmn_id = v_template_bpmn_id,
+ template_image_id = v_template_image_id,
+ template_doc_id = v_template_doc_id
+ WHERE template_id = v_template_id;
+END;
+CREATE PROCEDURE get_model
+ (IN v_model_name VARCHAR(80),
+ OUT v_control_name_prefix VARCHAR(80),
+ INOUT v_control_name_uuid VARCHAR(36),
+ OUT v_model_id VARCHAR(36),
+ OUT v_template_name VARCHAR(80),
+ OUT v_template_id VARCHAR(36),
+ OUT v_model_prop_id VARCHAR(36),
+ OUT v_model_prop_userid VARCHAR(8),
+ OUT v_model_prop_text MEDIUMTEXT,
+ OUT v_model_blueprint_id VARCHAR(36),
+ OUT v_model_blueprint_userid VARCHAR(8),
+ OUT v_model_blueprint_text MEDIUMTEXT,
+ OUT v_event_id VARCHAR(36),
+ OUT v_action_cd VARCHAR(80),
+ OUT v_action_state_cd VARCHAR(80),
+ OUT v_event_process_instance_id VARCHAR(80),
+ OUT v_event_userid VARCHAR(8))
+BEGIN
+ SELECT m.control_name_prefix,
+ m.control_name_uuid,
+ m.model_id,
+ t.template_name,
+ m.template_id,
+ mp.model_prop_id,
+ mp.userid,
+ mp.model_prop_text,
+ mb.model_blueprint_id,
+ mb.userid,
+ mb.model_blueprint_text,
+ e.event_id,
+ e.action_cd,
+ e.action_state_cd,
+ e.process_instance_id,
+ e.userid
+ INTO v_control_name_prefix,
+ v_control_name_uuid,
+ v_model_id,
+ v_template_name,
+ v_template_id,
+ v_model_prop_id,
+ v_model_prop_userid,
+ v_model_prop_text,
+ v_model_blueprint_id,
+ v_model_blueprint_userid,
+ v_model_blueprint_text,
+ v_event_id,
+ v_action_cd,
+ v_action_state_cd,
+ v_event_process_instance_id,
+ v_event_userid
+ FROM model m,
+ template t,
+ model_properties mp,
+ model_blueprint mb,
+ event e
+ WHERE m.template_id = t.template_id
+ AND m.model_prop_id = mp.model_prop_id
+ AND m.model_blueprint_id = mb.model_blueprint_id
+ AND m.event_id = e.event_id
+ AND (m.model_name = v_model_name
+ OR m.control_name_uuid = v_control_name_uuid);
+ SELECT model_instance_id,
+ vm_name,
+ location,
+ timestamp
+ FROM model_instance
+ WHERE model_id = v_model_id
+ ORDER BY 2;
+END;
+CREATE PROCEDURE get_model_template
+ (IN v_model_name VARCHAR(80),
+ OUT v_control_name_prefix VARCHAR(80),
+ INOUT v_control_name_uuid VARCHAR(36),
+ OUT v_model_id VARCHAR(36),
+ OUT v_template_name VARCHAR(80),
+ OUT v_template_id VARCHAR(36),
+ OUT v_model_prop_id VARCHAR(36),
+ OUT v_model_prop_userid VARCHAR(8),
+ OUT v_model_prop_text MEDIUMTEXT,
+ OUT v_model_blueprint_id VARCHAR(36),
+ OUT v_model_blueprint_userid VARCHAR(8),
+ OUT v_model_blueprint_text MEDIUMTEXT,
+ OUT v_template_bpmn_id VARCHAR(36),
+ OUT v_template_bpmn_userid VARCHAR(8),
+ OUT v_template_bpmn_text MEDIUMTEXT,
+ OUT v_template_image_id VARCHAR(36),
+ OUT v_template_image_userid VARCHAR(8),
+ OUT v_template_image_text MEDIUMTEXT,
+ OUT v_template_doc_id VARCHAR(36),
+ OUT v_template_doc_userid VARCHAR(8),
+ OUT v_template_doc_text MEDIUMTEXT,
+ OUT v_event_id VARCHAR(36),
+ OUT v_action_cd VARCHAR(80),
+ OUT v_action_state_cd VARCHAR(80),
+ OUT v_event_process_instance_id VARCHAR(80),
+ OUT v_event_userid VARCHAR(8))
+BEGIN
+ CALL get_model(
+ v_model_name,
+ v_control_name_prefix,
+ v_control_name_uuid,
+ v_model_id,
+ v_template_name,
+ v_template_id,
+ v_model_prop_id,
+ v_model_prop_userid,
+ v_model_prop_text,
+ v_model_blueprint_id,
+ v_model_blueprint_userid,
+ v_model_blueprint_text,
+ v_event_id,
+ v_action_cd,
+ v_action_state_cd,
+ v_event_process_instance_id,
+ v_event_userid);
+ CALL get_template(
+ v_template_name,
+ v_template_id,
+ v_template_bpmn_id,
+ v_template_bpmn_userid,
+ v_template_bpmn_text,
+ v_template_image_id,
+ v_template_image_userid,
+ v_template_image_text,
+ v_template_doc_id,
+ v_template_doc_userid,
+ v_template_doc_text);
+ END;
+CREATE PROCEDURE set_model
+ (IN v_model_name VARCHAR(80),
+ IN v_template_id VARCHAR(36),
+ IN v_userid VARCHAR(8),
+ IN v_model_prop_text MEDIUMTEXT,
+ IN v_model_blueprint_text MEDIUMTEXT,
+ INOUT v_control_name_prefix VARCHAR(80),
+ INOUT v_control_name_uuid VARCHAR(36),
+ OUT v_model_id VARCHAR(36),
+ OUT v_model_prop_id VARCHAR(36),
+ OUT v_model_prop_userid VARCHAR(8),
+ OUT v_model_blueprint_id VARCHAR(36),
+ OUT v_model_blueprint_userid VARCHAR(8),
+ OUT v_event_id VARCHAR(36),
+ OUT v_action_cd VARCHAR(80),
+ OUT v_action_state_cd VARCHAR(80),
+ OUT v_event_process_instance_id VARCHAR(80),
+ OUT v_event_userid VARCHAR(8))
+BEGIN
+ DECLARE v_old_template_name VARCHAR(80);
+ DECLARE v_old_template_id VARCHAR(36);
+ DECLARE v_old_control_name_prefix VARCHAR(80);
+ DECLARE v_old_control_name_uuid VARCHAR(36);
+ DECLARE v_old_model_prop_text MEDIUMTEXT;
+ DECLARE v_old_model_blueprint_text MEDIUMTEXT;
+ SET v_model_id = NULL;
+ CALL get_model(
+ v_model_name,
+ v_old_control_name_prefix,
+ v_old_control_name_uuid,
+ v_model_id,
+ v_old_template_name,
+ v_old_template_id,
+ v_model_prop_id,
+ v_model_prop_userid,
+ v_old_model_prop_text,
+ v_model_blueprint_id,
+ v_model_blueprint_userid,
+ v_old_model_blueprint_text,
+ v_event_id,
+ v_action_cd,
+ v_action_state_cd,
+ v_event_process_instance_id,
+ v_event_userid);
+ IF v_model_id IS NULL THEN
+ BEGIN
+ # UUID can be provided initially but cannot be updated
+ # if not provided (this is expected) then it will be set here
+ IF v_control_name_uuid IS NULL THEN
+ SET v_control_name_uuid = UUID();
+ END IF;
+ SET v_model_id = v_control_name_uuid;
+ INSERT INTO model
+ (model_id, model_name, template_id, control_name_prefix, control_name_uuid)
+ VALUES (v_model_id, v_model_name, v_template_id, v_control_name_prefix, v_control_name_uuid);
+ # since just created model, insert CREATED event as initial default event
+ SET v_action_cd = 'CREATE';
+ SET v_action_state_cd = 'COMPLETED';
+ SET v_event_userid = v_userid;
+ SET v_event_id = UUID();
+ INSERT INTO event
+ (event_id, model_id, action_cd, action_state_cd, userid)
+ VALUES (v_event_id, v_model_id, v_action_cd, v_action_state_cd, v_event_userid);
+ UPDATE model
+ SET event_id = v_event_id
+ WHERE model_id = v_model_id;
+ END;
+ ELSE
+ BEGIN
+ # use old control_name_prefix if null value is provided
+ IF v_control_name_prefix IS NULL THEN
+ SET v_control_name_prefix = v_old_control_name_prefix;
+ END IF;
+ # UUID can not be updated after initial insert
+ SET v_control_name_uuid = v_old_control_name_uuid;
+ END;
+ END IF;
+ IF v_model_prop_id IS NULL OR v_model_prop_text <> v_old_model_prop_text THEN
+ SET v_model_prop_id = UUID();
+ INSERT INTO model_properties
+ (model_prop_id, model_id, model_prop_text, userid)
+ VALUES (v_model_prop_id, v_model_id, v_model_prop_text, v_userid);
+ SET v_model_prop_userid = v_userid;
+ END IF;
+ IF v_model_blueprint_id IS NULL OR v_model_blueprint_text <> v_old_model_blueprint_text THEN
+ SET v_model_blueprint_id = UUID();
+ INSERT INTO model_blueprint
+ (model_blueprint_id, model_id, model_blueprint_text, userid)
+ VALUES (v_model_blueprint_id, v_model_id, v_model_blueprint_text, v_userid);
+ SET v_model_blueprint_userid = v_userid;
+ END IF;
+ UPDATE model
+ SET control_name_prefix = v_control_name_prefix,
+ model_prop_id = v_model_prop_id,
+ model_blueprint_id = v_model_blueprint_id
+ WHERE model_id = v_model_id;
+END;
+CREATE PROCEDURE ins_model_instance
+ (IN v_control_name_uuid VARCHAR(36),
+ IN v_vm_name VARCHAR(250),
+ IN v_location VARCHAR(250),
+ OUT v_model_id VARCHAR(36),
+ OUT v_model_instance_id VARCHAR(36))
+BEGIN
+ SELECT m.model_id
+ INTO v_model_id
+ FROM model m
+ WHERE m.control_name_uuid = v_control_name_uuid;
+ SET v_model_instance_id = UUID();
+ INSERT INTO model_instance
+ (model_instance_id, model_id, vm_name, location)
+ VALUES (v_model_instance_id, v_model_id, v_vm_name, v_location);
+END;
+CREATE PROCEDURE del_model_instance
+ (IN v_control_name_uuid VARCHAR(36),
+ IN v_vm_name VARCHAR(250),
+ OUT v_model_id VARCHAR(36),
+ OUT v_model_instance_id VARCHAR(36))
+BEGIN
+ SELECT m.model_id, i.model_instance_id
+ INTO v_model_id,
+ v_model_instance_id
+ FROM model m,
+ model_instance i
+ WHERE m.model_id = i.model_id
+ AND m.control_name_uuid = v_control_name_uuid
+ AND i.vm_name = v_vm_name;
+ DELETE FROM model_instance
+ WHERE model_instance_id = v_model_instance_id;
+END;
+CREATE PROCEDURE del_all_model_instances
+ (IN v_control_name_uuid VARCHAR(36),
+ OUT v_model_id VARCHAR(36))
+BEGIN
+ SELECT m.model_id
+ INTO v_model_id
+ FROM model m
+ WHERE m.control_name_uuid = v_control_name_uuid;
+ DELETE FROM model_instance
+ WHERE model_id = v_model_id;
+END;
+CREATE PROCEDURE ins_event
+ (IN v_model_name VARCHAR(80),
+ IN v_control_name_prefix VARCHAR(80),
+ IN v_control_name_uuid VARCHAR(36),
+ IN v_userid VARCHAR(8),
+ IN v_action_cd VARCHAR(80),
+ IN v_action_state_cd VARCHAR(80),
+ IN v_process_instance_id VARCHAR(80),
+ OUT v_model_id VARCHAR(36),
+ OUT v_event_id VARCHAR(36))
+BEGIN
+ DECLARE v_prev_event_id VARCHAR(36);
+ SELECT m.model_id,
+ m.event_id
+ INTO v_model_id,
+ v_prev_event_id
+ FROM model m
+ WHERE m.model_name = v_model_name
+ OR m.control_name_uuid = v_control_name_uuid;
+ SET v_event_id = UUID();
+ INSERT INTO event
+ (event_id, model_id, action_cd, action_state_cd, prev_event_id, process_instance_id, userid)
+ VALUES (v_event_id, v_model_id, v_action_cd, v_action_state_cd, v_prev_event_id, v_process_instance_id, v_userid);
+ UPDATE model
+ SET event_id = v_event_id
+ WHERE model_id = v_model_id;
+END;
+CREATE PROCEDURE upd_event
+ (IN v_event_id VARCHAR(36),
+ IN v_process_instance_id VARCHAR(80))
+BEGIN
+ UPDATE event
+ SET process_instance_id = v_process_instance_id
+ WHERE event_id = v_event_id;
+END
+//
+DELIMITER ;
diff --git a/extra/sql/drop/clds-drop-db-objects.sql b/extra/sql/drop/clds-drop-db-objects.sql
new file mode 100644
index 00000000..487aa49d
--- /dev/null
+++ b/extra/sql/drop/clds-drop-db-objects.sql
@@ -0,0 +1,32 @@
+#
+# Drop CLDS database objects (tables, etc.)
+#
+#
+
+
+ALTER TABLE template
+ DROP FOREIGN KEY template_image_id_fkey01;
+ALTER TABLE template
+ DROP FOREIGN KEY template_bpmn_id_fkey01;
+ALTER TABLE template
+ DROP FOREIGN KEY template_doc_id_fkey01;
+
+ALTER TABLE model
+ DROP FOREIGN KEY template_id_fkey01;
+ALTER TABLE model
+ DROP FOREIGN KEY model_prop_id_fkey01;
+ALTER TABLE model
+ DROP FOREIGN KEY model_blueprint_id_fkey01;
+ALTER TABLE model
+ DROP FOREIGN KEY event_id_fkey01;
+
+DROP TABLE model_instance;
+DROP TABLE model_blueprint;
+DROP TABLE model_properties;
+DROP TABLE event;
+DROP TABLE model;
+
+DROP TABLE template_doc;
+DROP TABLE template_image;
+DROP TABLE template_bpmn;
+DROP TABLE template;
diff --git a/extra/sql/load-sql-files-tests-automation.sh b/extra/sql/load-sql-files-tests-automation.sh
new file mode 100755
index 00000000..4924922c
--- /dev/null
+++ b/extra/sql/load-sql-files-tests-automation.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+###
+# ============LICENSE_START=======================================================
+# ONAP CLAMP
+# ================================================================================
+# 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 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============================================
+# ===================================================================
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+###
+
+cd /docker-entrypoint-initdb.d/bulkload
+mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < clds-create-db-objects.sql
+mysql -uroot -p$MYSQL_ROOT_PASSWORD -f < clds-stored-procedures.sql