diff --git a/README.md b/README.md index e61968de3..1543e3367 100644 --- a/README.md +++ b/README.md @@ -52,14 +52,14 @@ There are clients outside of the Eclipse IoT eco system as well, e.g.: ## SQL database -| Database | H2 | MySQL/MariaDB | MS SQL Server | IBM DB2 | -| --------------------------------- | :------------------------------------------------: | :-----------------------------------------------------------------------: | :-------------------------------------------------------: | :----------------: | -| DDLs maintained by project | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Test dependencies defined | :white_check_mark: | :white_check_mark: | :white_check_mark: | | -| Versions tested | 1.4 | MySQL 5.6/5.7, AWS Aurora | MS SQL Server 2017 | DB2 Server v11.1 | -| Docker image with driver provided | :white_check_mark: | :white_check_mark: (Tag: "-mysql") | :white_check_mark: | | -| JDBC driver | [H2 1.4](https://github.com/h2database/h2database) | [MariaDB Connector/J 2.0](https://github.com/MariaDB/mariadb-connector-j) | [MSSQL-JDBC 6.4](https://github.com/Microsoft/mssql-jdbc) | | -| Status | Test, Dev, Trial | Production grade | Production grade | Test, Dev | +| Database | H2 | MySQL/MariaDB | MS SQL Server | IBM DB2 | PostgreSQL | +| --------------------------------- | :------------------------------------------------: | :-----------------------------------------------------------------------: | :-------------------------------------------------------: | :----------------: | :----------------------------------------------------------------: | +| DDLs maintained by project | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Test dependencies defined | :white_check_mark: | :white_check_mark: | :white_check_mark: | | | +| Versions tested | 1.4 | MySQL 5.6/5.7, AWS Aurora | MS SQL Server 2017 | DB2 Server v11.1 | PostgreSQL 12.1 | +| Docker image with driver provided | :white_check_mark: | :white_check_mark: (Tag: "-mysql") | :white_check_mark: | | | +| JDBC driver | [H2 1.4](https://github.com/h2database/h2database) | [MariaDB Connector/J 2.0](https://github.com/MariaDB/mariadb-connector-j) | [MSSQL-JDBC 6.4](https://github.com/Microsoft/mssql-jdbc) | | [PostgreSQL JDBC Driver 42.2.10](https://github.com/pgjdbc/pgjdbc) | +| Status | Test, Dev, Trial | Production grade | Production grade | Test, Dev | Test, Dev | ## (Optional) RabbitMQ: 3.6,3.7 diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/POSTGRESQL/V1_12_15__baseline___POSTGRESQL.sql b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/POSTGRESQL/V1_12_15__baseline___POSTGRESQL.sql new file mode 100644 index 000000000..ba8b988d6 --- /dev/null +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/resources/db/migration/POSTGRESQL/V1_12_15__baseline___POSTGRESQL.sql @@ -0,0 +1,872 @@ +-- ------------ Write CREATE-SEQUENCE-stage scripts ----------- + +CREATE SEQUENCE IF NOT EXISTS sp_action_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_action_status_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_artifact_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_base_software_module_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_distribution_set_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_distribution_set_type_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_distributionset_tag_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_rollout_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_rolloutgroup_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_software_module_type_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_target_filter_query_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_target_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_target_tag_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_tenant_configuration_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +CREATE SEQUENCE IF NOT EXISTS sp_tenant_seq +INCREMENT BY 1 +START WITH 1 +NO CYCLE; + +-- ------------ Write CREATE-TABLE-stage scripts ----------- + +CREATE TABLE sp_action( + id BIGINT NOT NULL DEFAULT nextval('sp_action_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + active BOOLEAN, + forced_time BIGINT, + status INTEGER NOT NULL, + distribution_set BIGINT NOT NULL, + target BIGINT NOT NULL, + rollout BIGINT, + rolloutgroup BIGINT, + action_type INTEGER NOT NULL, + maintenance_cron_schedule VARCHAR(40), + maintenance_duration VARCHAR(40), + maintenance_time_zone VARCHAR(40), + external_ref VARCHAR(512), + weight INTEGER +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_action_status( + id BIGINT NOT NULL DEFAULT nextval('sp_action_status_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + target_occurred_at BIGINT NOT NULL, + status INTEGER NOT NULL, + action BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_action_status_messages( + action_status_id BIGINT NOT NULL, + detail_message VARCHAR(512) NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_artifact( + id BIGINT NOT NULL DEFAULT nextval('sp_artifact_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + md5_hash VARCHAR(32), + file_size BIGINT, + provided_file_name VARCHAR(256), + sha1_hash VARCHAR(40) NOT NULL, + software_module BIGINT NOT NULL, + sha256_hash CHAR(64) +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_base_software_module( + id BIGINT NOT NULL DEFAULT nextval('sp_base_software_module_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + version VARCHAR(64) NOT NULL, + deleted BOOLEAN, + vendor VARCHAR(256), + module_type BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_distribution_set( + id BIGINT NOT NULL DEFAULT nextval('sp_distribution_set_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + version VARCHAR(64) NOT NULL, + complete BOOLEAN, + deleted BOOLEAN, + required_migration_step BOOLEAN, + ds_id BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_distribution_set_type( + id BIGINT NOT NULL DEFAULT nextval('sp_distribution_set_type_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + colour VARCHAR(16), + deleted BOOLEAN, + type_key VARCHAR(64) NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_distributionset_tag( + id BIGINT NOT NULL DEFAULT nextval('sp_distributionset_tag_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + colour VARCHAR(16) +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_ds_dstag( + ds BIGINT NOT NULL, + tag BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_ds_metadata( + meta_key VARCHAR(128) NOT NULL, + meta_value VARCHAR(4000), + ds_id BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_ds_module( + ds_id BIGINT NOT NULL, + module_id BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_ds_type_element( + mandatory BOOLEAN, + distribution_set_type BIGINT NOT NULL, + software_module_type BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_rollout( + id BIGINT NOT NULL DEFAULT nextval('sp_rollout_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + last_check BIGINT, + group_theshold REAL, + status INTEGER NOT NULL, + distribution_set BIGINT NOT NULL, + target_filter VARCHAR(1024), + forced_time BIGINT, + total_targets BIGINT, + rollout_groups_created BIGINT, + start_at BIGINT, + deleted BOOLEAN, + action_type INTEGER NOT NULL, + approval_decided_by VARCHAR(64), + approval_remark VARCHAR(255), + weight INTEGER +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_rolloutgroup( + id BIGINT NOT NULL DEFAULT nextval('sp_rolloutgroup_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + error_condition INTEGER, + error_condition_exp VARCHAR(512), + error_action INTEGER, + error_action_exp VARCHAR(512), + success_condition INTEGER NOT NULL, + success_condition_exp VARCHAR(512) NOT NULL, + success_action INTEGER NOT NULL, + success_action_exp VARCHAR(512), + status INTEGER NOT NULL, + parent_id BIGINT, + rollout BIGINT NOT NULL, + total_targets BIGINT, + target_percentage REAL, + target_filter VARCHAR(1024) +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_rollouttargetgroup( + target_id BIGINT NOT NULL, + rolloutgroup_id BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_software_module_type( + id BIGINT NOT NULL DEFAULT nextval('sp_software_module_type_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + colour VARCHAR(16), + deleted BOOLEAN, + type_key VARCHAR(64) NOT NULL, + max_ds_assignments INTEGER NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_sw_metadata( + meta_key VARCHAR(128) NOT NULL, + meta_value VARCHAR(4000), + sw_id BIGINT NOT NULL, + target_visible BOOLEAN +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target( + id BIGINT NOT NULL DEFAULT nextval('sp_target_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + controller_id VARCHAR(256), + sec_token VARCHAR(128) NOT NULL, + assigned_distribution_set BIGINT, + install_date BIGINT, + address VARCHAR(512), + last_target_query BIGINT, + request_controller_attributes BOOLEAN NOT NULL, + installed_distribution_set BIGINT, + update_status INTEGER NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target_attributes( + target_id BIGINT NOT NULL, + attribute_value VARCHAR(128), + attribute_key VARCHAR(128) NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target_filter_query( + id BIGINT NOT NULL DEFAULT nextval('sp_target_filter_query_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + name VARCHAR(128), + query VARCHAR(1024) NOT NULL, + auto_assign_distribution_set BIGINT, + auto_assign_action_type INTEGER, + auto_assign_weight INTEGER +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target_metadata( + meta_key VARCHAR(128) NOT NULL, + meta_value VARCHAR(4000), + target_id BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target_tag( + id BIGINT NOT NULL DEFAULT nextval('sp_target_tag_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + description VARCHAR(512), + name VARCHAR(128), + colour VARCHAR(16) +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_target_target_tag( + target BIGINT NOT NULL, + tag BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_tenant( + id BIGINT NOT NULL DEFAULT nextval('sp_tenant_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + default_ds_type BIGINT NOT NULL +) + WITH ( + OIDS=FALSE + ); + +CREATE TABLE sp_tenant_configuration( + id BIGINT NOT NULL DEFAULT nextval('sp_tenant_configuration_seq'), + created_at BIGINT, + created_by VARCHAR(64), + last_modified_at BIGINT, + last_modified_by VARCHAR(64), + optlock_revision BIGINT, + tenant VARCHAR(40) NOT NULL, + conf_key VARCHAR(128) NOT NULL, + conf_value VARCHAR(512) NOT NULL +) + WITH ( + OIDS=FALSE + ); + +-- ------------ Write CREATE-INDEX-stage scripts ----------- + +CREATE INDEX sp_idx_action_01_sp_action +ON sp_action +USING BTREE (tenant, distribution_set); + +CREATE INDEX sp_idx_action_02_sp_action +ON sp_action +USING BTREE (tenant, target, active); + +CREATE INDEX sp_idx_action_external_ref_sp_action +ON sp_action +USING BTREE (external_ref); + +CREATE INDEX sp_idx_action_prim_sp_action +ON sp_action +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_action_status_02_sp_action_status +ON sp_action_status +USING BTREE (tenant, action, status); + +CREATE INDEX sp_idx_action_status_prim_sp_action_status +ON sp_action_status +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_action_status_msgs_01_sp_action_status_messages +ON sp_action_status_messages +USING BTREE (action_status_id); + +CREATE INDEX sp_idx_artifact_01_sp_artifact +ON sp_artifact +USING BTREE (tenant, software_module); + +CREATE INDEX sp_idx_artifact_02_sp_artifact +ON sp_artifact +USING BTREE (tenant, sha1_hash); + +CREATE INDEX sp_idx_artifact_prim_sp_artifact +ON sp_artifact +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_base_sw_module_01_sp_base_software_module +ON sp_base_software_module +USING BTREE (tenant, deleted, name, version); + +CREATE INDEX sp_idx_base_sw_module_02_sp_base_software_module +ON sp_base_software_module +USING BTREE (tenant, deleted, module_type); + +CREATE INDEX sp_idx_base_sw_module_prim_sp_base_software_module +ON sp_base_software_module +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_distribution_set_01_sp_distribution_set +ON sp_distribution_set +USING BTREE (tenant, deleted, complete); + +CREATE INDEX sp_idx_distribution_set_prim_sp_distribution_set +ON sp_distribution_set +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_distribution_set_type_01_sp_distribution_set_type +ON sp_distribution_set_type +USING BTREE (tenant, deleted); + +CREATE INDEX sp_idx_distribution_set_type_prim_sp_distribution_set_type +ON sp_distribution_set_type +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_distribution_set_tag_01_sp_distributionset_tag +ON sp_distributionset_tag +USING BTREE (tenant, name); + +CREATE INDEX sp_idx_distribution_set_tag_prim_sp_distributionset_tag +ON sp_distributionset_tag +USING BTREE (tenant, id); + +CREATE INDEX fk_rolloutgroup_rolloutgroup_sp_rolloutgroup +ON sp_rolloutgroup +USING BTREE (parent_id); + +CREATE INDEX sp_idx_software_module_type_01_sp_software_module_type +ON sp_software_module_type +USING BTREE (tenant, deleted); + +CREATE INDEX sp_idx_software_module_type_prim_sp_software_module_type +ON sp_software_module_type +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_target_01_sp_target +ON sp_target +USING BTREE (tenant, name, assigned_distribution_set); + +CREATE INDEX sp_idx_target_03_sp_target +ON sp_target +USING BTREE (tenant, controller_id, assigned_distribution_set); + +CREATE INDEX sp_idx_target_04_sp_target +ON sp_target +USING BTREE (tenant, created_at); + +CREATE INDEX sp_idx_target_prim_sp_target +ON sp_target +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_target_tag_01_sp_target_tag +ON sp_target_tag +USING BTREE (tenant, name); + +CREATE INDEX sp_idx_target_tag_prim_sp_target_tag +ON sp_target_tag +USING BTREE (tenant, id); + +CREATE INDEX sp_idx_tenant_prim_sp_tenant +ON sp_tenant +USING BTREE (tenant, id); + +-- ------------ Write CREATE-CONSTRAINT-stage scripts ----------- + +ALTER TABLE sp_action +ADD CONSTRAINT pk_sp_action PRIMARY KEY (id); + +ALTER TABLE sp_action_status +ADD CONSTRAINT pk_sp_action_status PRIMARY KEY (id); + +ALTER TABLE sp_artifact +ADD CONSTRAINT pk_sp_artifact PRIMARY KEY (id); + +ALTER TABLE sp_base_software_module +ADD CONSTRAINT pk_sp_base_software_module PRIMARY KEY (id); + +ALTER TABLE sp_base_software_module +ADD CONSTRAINT uk_base_sw_mod_sp_base_software_module UNIQUE (module_type, name, version, tenant); + +ALTER TABLE sp_distribution_set +ADD CONSTRAINT pk_sp_distribution_set PRIMARY KEY (id); + +ALTER TABLE sp_distribution_set +ADD CONSTRAINT uk_distrib_set_sp_distribution_set UNIQUE (name, version, tenant); + +ALTER TABLE sp_distribution_set_type +ADD CONSTRAINT pk_sp_distribution_set_type PRIMARY KEY (id); + +ALTER TABLE sp_distribution_set_type +ADD CONSTRAINT uk_dst_key_sp_distribution_set_type UNIQUE (type_key, tenant); + +ALTER TABLE sp_distribution_set_type +ADD CONSTRAINT uk_dst_name_sp_distribution_set_type UNIQUE (name, tenant); + +ALTER TABLE sp_distributionset_tag +ADD CONSTRAINT pk_sp_distributionset_tag PRIMARY KEY (id); + +ALTER TABLE sp_distributionset_tag +ADD CONSTRAINT uk_ds_tag_sp_distributionset_tag UNIQUE (name, tenant); + +ALTER TABLE sp_ds_dstag +ADD CONSTRAINT pk_sp_ds_dstag PRIMARY KEY (ds, tag); + +ALTER TABLE sp_ds_metadata +ADD CONSTRAINT pk_sp_ds_metadata PRIMARY KEY (ds_id, meta_key); + +ALTER TABLE sp_ds_module +ADD CONSTRAINT pk_sp_ds_module PRIMARY KEY (ds_id, module_id); + +ALTER TABLE sp_ds_type_element +ADD CONSTRAINT pk_sp_ds_type_element PRIMARY KEY (distribution_set_type, software_module_type); + +ALTER TABLE sp_rollout +ADD CONSTRAINT pk_sp_rollout PRIMARY KEY (id); + +ALTER TABLE sp_rollout +ADD CONSTRAINT uk_rollout_sp_rollout UNIQUE (name, tenant); + +ALTER TABLE sp_rolloutgroup +ADD CONSTRAINT pk_sp_rolloutgroup PRIMARY KEY (id); + +ALTER TABLE sp_rolloutgroup +ADD CONSTRAINT uk_rolloutgroup_sp_rolloutgroup UNIQUE (name, rollout, tenant); + +ALTER TABLE sp_rollouttargetgroup +ADD CONSTRAINT pk_sp_rollouttargetgroup PRIMARY KEY (rolloutgroup_id, target_id); + +ALTER TABLE sp_software_module_type +ADD CONSTRAINT pk_sp_software_module_type PRIMARY KEY (id); + +ALTER TABLE sp_software_module_type +ADD CONSTRAINT uk_smt_name_sp_software_module_type UNIQUE (name, tenant); + +ALTER TABLE sp_software_module_type +ADD CONSTRAINT uk_smt_type_key_sp_software_module_type UNIQUE (type_key, tenant); + +ALTER TABLE sp_sw_metadata +ADD CONSTRAINT pk_sp_sw_metadata PRIMARY KEY (meta_key, sw_id); + +ALTER TABLE sp_target +ADD CONSTRAINT pk_sp_target PRIMARY KEY (id); + +ALTER TABLE sp_target +ADD CONSTRAINT uk_tenant_controller_id_sp_target UNIQUE (controller_id, tenant); + +ALTER TABLE sp_target_attributes +ADD CONSTRAINT pk_sp_target_attributes PRIMARY KEY (target_id, attribute_key); + +ALTER TABLE sp_target_filter_query +ADD CONSTRAINT pk_sp_target_filter_query PRIMARY KEY (id); + +ALTER TABLE sp_target_filter_query +ADD CONSTRAINT uk_tenant_custom_filter_name_sp_target_filter_query UNIQUE (name, tenant); + +ALTER TABLE sp_target_metadata +ADD CONSTRAINT pk_sp_target_metadata PRIMARY KEY (target_id, meta_key); + +ALTER TABLE sp_target_tag +ADD CONSTRAINT pk_sp_target_tag PRIMARY KEY (id); + +ALTER TABLE sp_target_tag +ADD CONSTRAINT uk_targ_tag_sp_target_tag UNIQUE (name, tenant); + +ALTER TABLE sp_target_target_tag +ADD CONSTRAINT pk_sp_target_target_tag PRIMARY KEY (target, tag); + +ALTER TABLE sp_tenant +ADD CONSTRAINT pk_sp_tenant PRIMARY KEY (id); + +ALTER TABLE sp_tenant +ADD CONSTRAINT uk_tenantmd_tenant_sp_tenant UNIQUE (tenant); + +ALTER TABLE sp_tenant_configuration +ADD CONSTRAINT pk_sp_tenant_configuration PRIMARY KEY (id); + +ALTER TABLE sp_tenant_configuration +ADD CONSTRAINT uk_tenant_key_sp_tenant_configuration UNIQUE (conf_key, tenant); + +-- ------------ Write CREATE-FOREIGN-KEY-CONSTRAINT-stage scripts ----------- + +ALTER TABLE sp_action +ADD CONSTRAINT fk_action_ds FOREIGN KEY (distribution_set) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_action +ADD CONSTRAINT fk_action_rollout FOREIGN KEY (rollout) +REFERENCES sp_rollout (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_action +ADD CONSTRAINT fk_action_rolloutgroup FOREIGN KEY (rolloutgroup) +REFERENCES sp_rolloutgroup (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_action +ADD CONSTRAINT fk_targ_act_hist_targ FOREIGN KEY (target) +REFERENCES sp_target (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_action_status +ADD CONSTRAINT fk_act_stat_action FOREIGN KEY (action) +REFERENCES sp_action (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_action_status_messages +ADD CONSTRAINT fk_stat_msg_act_stat FOREIGN KEY (action_status_id) +REFERENCES sp_action_status (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_artifact +ADD CONSTRAINT fk_assigned_sm FOREIGN KEY (software_module) +REFERENCES sp_base_software_module (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_base_software_module +ADD CONSTRAINT fk_module_type FOREIGN KEY (module_type) +REFERENCES sp_software_module_type (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_distribution_set +ADD CONSTRAINT fk_ds_dstype_ds FOREIGN KEY (ds_id) +REFERENCES sp_distribution_set_type (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_ds_dstag +ADD CONSTRAINT fk_ds_dstag_ds FOREIGN KEY (ds) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_dstag +ADD CONSTRAINT fk_ds_dstag_tag FOREIGN KEY (tag) +REFERENCES sp_distributionset_tag (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_metadata +ADD CONSTRAINT fk_metadata_ds FOREIGN KEY (ds_id) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_module +ADD CONSTRAINT fk_ds_module_ds FOREIGN KEY (ds_id) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_module +ADD CONSTRAINT fk_ds_module_module FOREIGN KEY (module_id) +REFERENCES sp_base_software_module (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_type_element +ADD CONSTRAINT fk_ds_type_element_element FOREIGN KEY (distribution_set_type) +REFERENCES sp_distribution_set_type (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_ds_type_element +ADD CONSTRAINT fk_ds_type_element_smtype FOREIGN KEY (software_module_type) +REFERENCES sp_software_module_type (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_rollout +ADD CONSTRAINT fk_rollout_ds FOREIGN KEY (distribution_set) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_rolloutgroup +ADD CONSTRAINT fk_rolloutgroup_rollout FOREIGN KEY (rollout) +REFERENCES sp_rollout (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_rollouttargetgroup +ADD CONSTRAINT fk_rollouttargetgroup_rolloutgroup FOREIGN KEY (rolloutgroup_id) +REFERENCES sp_rolloutgroup (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_rollouttargetgroup +ADD CONSTRAINT fk_rollouttargetgroup_target FOREIGN KEY (target_id) +REFERENCES sp_target (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_sw_metadata +ADD CONSTRAINT fk_metadata_sw FOREIGN KEY (sw_id) +REFERENCES sp_base_software_module (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_target +ADD CONSTRAINT fk_target_assign_ds FOREIGN KEY (assigned_distribution_set) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_target +ADD CONSTRAINT fk_target_inst_ds FOREIGN KEY (installed_distribution_set) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; + +ALTER TABLE sp_target_attributes +ADD CONSTRAINT fk_targ_attrib_target FOREIGN KEY (target_id) +REFERENCES sp_target (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_target_filter_query +ADD CONSTRAINT fk_filter_auto_assign_ds FOREIGN KEY (auto_assign_distribution_set) +REFERENCES sp_distribution_set (id) +ON UPDATE RESTRICT +ON DELETE SET NULL; + +ALTER TABLE sp_target_metadata +ADD CONSTRAINT fk_metadata_target FOREIGN KEY (target_id) +REFERENCES sp_target (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_target_target_tag +ADD CONSTRAINT fk_targ_targtag_tag FOREIGN KEY (tag) +REFERENCES sp_target_tag (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_target_target_tag +ADD CONSTRAINT fk_targ_targtag_target FOREIGN KEY (target) +REFERENCES sp_target (id) +ON UPDATE RESTRICT +ON DELETE CASCADE; + +ALTER TABLE sp_tenant +ADD CONSTRAINT fk_tenant_md_default_ds_type FOREIGN KEY (default_ds_type) +REFERENCES sp_distribution_set_type (id) +ON UPDATE RESTRICT +ON DELETE RESTRICT; diff --git a/hawkbit-runtime/docker/README.md b/hawkbit-runtime/docker/README.md index 62cd3f328..9c14f3e07 100644 --- a/hawkbit-runtime/docker/README.md +++ b/hawkbit-runtime/docker/README.md @@ -21,7 +21,7 @@ $ docker-compose up -d ``` -## C: Docker Stack +## C: Docker Stack Start the hawkBit Update Server and Device Simulator together with an MySQL and RabbitMQ instance as services within a swarm @@ -30,16 +30,16 @@ $ docker swarm init $ docker stack deploy -c docker-compose-stack.yml hawkbit ``` -# Access +# Access | Service / Container | URL | Login | A | B | C | |---|---|---|---|---|---| -| hawkBit Update Server | [http://localhost:8080/](http://localhost:8080/) | admin:admin | ✓ | ✓ | ✓ | -| hawkBit Device Simulator | [http://localhost:8083/](http://localhost:8083/) | - | | | ✓ | -| MySQL | localhost:3306/hawkbit | root | | ✓ | ✓ | -| RabbitMQ | [http://localhost:15672](http://localhost:15672) | guest:guest | | ✓ | ✓ | +| hawkBit Update Server | [http://localhost:8080/](http://localhost:8080/) | admin:admin | ✓ | ✓ | ✓ | +| hawkBit Device Simulator | [http://localhost:8083/](http://localhost:8083/) | - | | | ✓ | +| MySQL | localhost:3306/hawkbit | root | | ✓ | ✓ | +| RabbitMQ | [http://localhost:15672](http://localhost:15672) | guest:guest | | ✓ | ✓ | -# Configuration +# Configuration You can override application.properties by setting an environment variable SPRING_APPLICATION_JSON for hawkbit container. ``` @@ -58,4 +58,4 @@ hawkbit: "hawkbit.server.im.users[0].lastname": "HawkBit", "hawkbit.server.im.users[0].permissions": "ALL" }' -``` \ No newline at end of file +``` diff --git a/hawkbit-runtime/docker/generator/generate.sh b/hawkbit-runtime/docker/generator/generate.sh old mode 100644 new mode 100755 index 4392fff3e..81461b5e1 --- a/hawkbit-runtime/docker/generator/generate.sh +++ b/hawkbit-runtime/docker/generator/generate.sh @@ -23,5 +23,5 @@ cp ./template/KEY-mysql "../$HAWKBIT_VERSION-mysql/KEY" cp ./template/Dockerfile "../$HAWKBIT_VERSION/Dockerfile" cp ./template/Dockerfile-mysql "../$HAWKBIT_VERSION-mysql/Dockerfile" -sed -i '' -e "s/{{BASE_IMAGE}}/${BASE_IMAGE}/g; s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g" "../$HAWKBIT_VERSION/Dockerfile" -sed -i '' -e "s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g; s/{{MARIADB_DRIVER_VERSION}}/$MARIADB_DRIVER_VERSION/g" "../$HAWKBIT_VERSION-mysql/Dockerfile" +sed -i -e "s/{{BASE_IMAGE}}/${BASE_IMAGE}/g; s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g" "../$HAWKBIT_VERSION/Dockerfile" +sed -i -e "s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g; s/{{MARIADB_DRIVER_VERSION}}/$MARIADB_DRIVER_VERSION/g" "../$HAWKBIT_VERSION-mysql/Dockerfile" diff --git a/hawkbit-runtime/hawkbit-update-server/pom.xml b/hawkbit-runtime/hawkbit-update-server/pom.xml index 242b70f75..e1aaf2ad5 100644 --- a/hawkbit-runtime/hawkbit-update-server/pom.xml +++ b/hawkbit-runtime/hawkbit-update-server/pom.xml @@ -59,6 +59,10 @@ com.microsoft.sqlserver mssql-jdbc + + org.postgresql + postgresql + diff --git a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-mysql.properties b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-mysql.properties index 870a6c06b..28aa0b3e9 100644 --- a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-mysql.properties +++ b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-mysql.properties @@ -7,7 +7,7 @@ # http://www.eclipse.org/legal/epl-v10.html # -# This profile adds basic configurations for a MySQL DB usage. +# This profile adds basic configurations for a MySQL DB usage. # Keep in mind that you need the MariaDB driver in your classpath on compile. # see https://www.eclipse.org/hawkbit/guides/runhawkbit/ diff --git a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-postgresql.properties b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-postgresql.properties new file mode 100644 index 000000000..3e8e15e7e --- /dev/null +++ b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application-postgresql.properties @@ -0,0 +1,18 @@ +# +# Copyright (c) 2020 Enapter Co.,Ltd. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# + +# This profile adds basic configurations for a PostgreSQL usage. +# Keep in mind that you need the PostgreSQL driver in your classpath on compile. +# see https://www.eclipse.org/hawkbit/guides/runhawkbit/ + +spring.jpa.database=POSTGRESQL +spring.datasource.url=jdbc:postgresql://localhost:5432/hawkbit +spring.datasource.username=postgres +spring.datasource.password= +spring.datasource.driverClassName=org.postgresql.Driver diff --git a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties index b920fe136..468eb4793 100644 --- a/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties +++ b/hawkbit-runtime/hawkbit-update-server/src/main/resources/application.properties @@ -27,7 +27,7 @@ spring.rabbitmq.virtual-host=/ spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 -# Define own users instead of default "admin" user: +# Define own users instead of default "admin" user: #hawkbit.server.im.users[0].username=hawkbit #hawkbit.server.im.users[0].password={noop}isAwesome! #hawkbit.server.im.users[0].firstname=Eclipse diff --git a/licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt b/licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt new file mode 100644 index 000000000..91f2d3775 --- /dev/null +++ b/licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt @@ -0,0 +1,6 @@ +Copyright (c) 2020 Enapter Co.,Ltd. + +All rights reserved. This program and the accompanying materials +are made available under the terms of the Eclipse Public License v1.0 +which accompanies this distribution, and is available at +http://www.eclipse.org/legal/epl-v10.html diff --git a/pom.xml b/pom.xml index 4c428ce55..79767a2b4 100644 --- a/pom.xml +++ b/pom.xml @@ -328,6 +328,7 @@ licenses/LICENSE_HEADER_TEMPLATE_BOSCH_18.txt licenses/LICENSE_HEADER_TEMPLATE_DEVOLO_19.txt licenses/LICENSE_HEADER_TEMPLATE_KIWIGRID_19.txt + licenses/LICENSE_HEADER_TEMPLATE_ENAPTER.txt **/banner.txt