diff --git a/.devops/nodo-db-migration-pipelines.yml b/.devops/nodo-db-migration-pipelines.yml index b91336e6fd..c2849af566 100644 --- a/.devops/nodo-db-migration-pipelines.yml +++ b/.devops/nodo-db-migration-pipelines.yml @@ -75,6 +75,8 @@ variables: RE_SCHEMA: re WFESP_USERNAME: wfesp WFESP_SCHEMA: wfesp + PARTITION_USERNAME: partition + PARTITION_SCHEMA: partition stages: - stage: liquibase_status @@ -109,7 +111,7 @@ stages: inputs: azureSubscription: $(AZURE_SERVICE_CONNECTION) keyVaultName: $(KEY_VAULT_NAME) - secretsFilter: 'db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password' + secretsFilter: 'db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password,db-partition-password' - script: | liquibase \ --url="$(JDBC_URL)" \ @@ -175,6 +177,19 @@ stages: --log-level=${{ parameters.lbLogLevel }} \ status -Dschema=$(WFESP_SCHEMA) displayName: "wfeps db status" + - script: | + liquibase \ + --url="$(JDBC_URL)" \ + --username="$(PARTITION_USERNAME)" \ + --password="$(db-partition-password)" \ + --classpath=src/psql/nodo/liquibase/changelog/partition \ + --changeLogFile=db.changelog-master-${{ parameters.dbVersion }}.xml \ + --liquibaseSchemaName="$(PARTITION_SCHEMA)" \ + --defaultSchemaName="$(PARTITION_SCHEMA)" \ + --contexts="${{ parameters.lbContexts }}" \ + --log-level=${{ parameters.lbLogLevel }} \ + status -Dschema=$(PARTITION_SCHEMA) + displayName: "partition db status" - script: | liquibase \ --url="$(JDBC_URL)" \ @@ -240,6 +255,19 @@ stages: --log-level=${{ parameters.lbLogLevel }} \ validate -Dschema=$(WFESP_SCHEMA) displayName: "wfeps db validate" + - script: | + liquibase \ + --url="$(JDBC_URL)" \ + --username="$(PARTITION_USERNAME)" \ + --password="$(db-partition-password)" \ + --classpath=src/psql/nodo/liquibase/changelog/partition \ + --changeLogFile=db.changelog-master-${{ parameters.dbVersion }}.xml \ + --liquibaseSchemaName="$(PARTITION_SCHEMA)" \ + --defaultSchemaName="$(PARTITION_SCHEMA)" \ + --contexts="${{ parameters.lbContexts }}" \ + --log-level=${{ parameters.lbLogLevel }} \ + validate -Dschema=$(PARTITION_SCHEMA) + displayName: "partition db validate" - job: approval dependsOn: liquibase_status_job condition: eq('${{ parameters.k8sEnv }}', 'prd') @@ -288,7 +316,7 @@ stages: inputs: azureSubscription: $(AZURE_SERVICE_CONNECTION) keyVaultName: $(KEY_VAULT_NAME) - secretsFilter: 'db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password' + secretsFilter: 'db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password,db-partition-password' - script: | liquibase \ --url="$(JDBC_URL)" \ @@ -419,3 +447,29 @@ stages: --log-level=${{ parameters.lbLogLevel }} \ tag ${{ parameters.dbVersion }} displayName: "Tag wfesp" + - script: | + liquibase \ + --url="$(JDBC_URL)" \ + --username="$(PARTITION_USERNAME)" \ + --password="$(db-partition-password)" \ + --classpath=src/psql/nodo/liquibase/changelog/partition \ + --changeLogFile=db.changelog-master-${{ parameters.dbVersion }}.xml \ + --liquibaseSchemaName="$(PARTITION_SCHEMA)" \ + --defaultSchemaName="$(PARTITION_SCHEMA)" \ + --contexts="${{ parameters.lbContexts }}" \ + --log-level=${{ parameters.lbLogLevel }} \ + update -Dschema=$(PARTITION_SCHEMA) + displayName: "Run Liquibase partition" + - script: | + liquibase \ + --url="$(JDBC_URL)" \ + --username="$(PARTITION_USERNAME)" \ + --password="$(db-partition-password)" \ + --classpath=src/psql/nodo/liquibase/changelog/partition \ + --changeLogFile=db.changelog-master-${{ parameters.dbVersion }}.xml \ + --liquibaseSchemaName="$(PARTITION_SCHEMA)" \ + --defaultSchemaName="$(PARTITION_SCHEMA)" \ + --contexts="${{ parameters.lbContexts }}" \ + --log-level=${{ parameters.lbLogLevel }} \ + tag ${{ parameters.dbVersion }} + displayName: "Tag partition" diff --git a/.devops/nodo-db-schema-pipelines.yml b/.devops/nodo-db-schema-pipelines.yml index aad1e4389b..ad50027c6b 100644 --- a/.devops/nodo-db-schema-pipelines.yml +++ b/.devops/nodo-db-schema-pipelines.yml @@ -60,6 +60,8 @@ variables: RE_SCHEMA: re WFESP_USERNAME: wfesp WFESP_SCHEMA: wfesp + PARTITION_SCHEMA: partition + PARTITION_USERNAME: partition stages: - stage: initialization_jobs @@ -74,7 +76,8 @@ stages: inputs: azureSubscription: $(AZURE_SERVICE_CONNECTION) keyVaultName: $(KEY_VAULT_NAME) - secretsFilter: 'db-administrator-login-password,db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password' + secretsFilter: 'db-administrator-login-password,db-cfg-password,db-online-password,db-offline-password,db-re-password,db-wfesp-password, db-partition-password' + - task: AzureCLI@2 displayName: "create all schemas" inputs: @@ -132,3 +135,226 @@ stages: END \$\$; " + + - task: AzureCLI@2 + displayName: "create partition" + inputs: + azureSubscription: $(AZURE_SERVICE_CONNECTION) + scriptLocation: inlineScript + scriptType: bash + inlineScript: | + + az config set extension.use_dynamic_install=yes_without_prompt + az postgres flexible-server execute --name $(DB_HOST) --admin-user $(ADMIN_USERNAME) \ + --admin-password '$(db-administrator-login-password)' --database-name "$(DATABASE_NAME)" \ + --querytext " + do \$\$ + + BEGIN + IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '$PARTITION_USERNAME') THEN + CREATE ROLE $PARTITION_USERNAME WITH + NOSUPERUSER + CREATEDB + CREATEROLE + INHERIT + LOGIN + NOREPLICATION + NOBYPASSRLS + CONNECTION LIMIT -1; + END IF; + + ALTER ROLE $PARTITION_USERNAME PASSWORD '$(db-partition-password)'; + + CREATE SCHEMA IF NOT EXISTS $PARTITION_SCHEMA; + + GRANT azure_pg_admin TO $PARTITION_USERNAME; + GRANT $CFG_SCHEMA TO $PARTITION_USERNAME; + GRANT $OFFLINE_SCHEMA TO $PARTITION_USERNAME; + GRANT $ONLINE_SCHEMA TO $PARTITION_USERNAME; + GRANT $RE_SCHEMA TO $PARTITION_USERNAME; + GRANT $WFESP_SCHEMA TO $PARTITION_USERNAME; + GRANT pg_read_all_settings TO $PARTITION_USERNAME; + GRANT pg_read_all_stats TO $PARTITION_USERNAME; + GRANT pg_stat_scan_tables TO $PARTITION_USERNAME; + + GRANT CONNECT ON DATABASE \"$(DATABASE_NAME)\" TO $PARTITION_USERNAME; + GRANT ALL ON SCHEMA $PARTITION_SCHEMA TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE \"$(ADMIN_USERNAME)\" IN SCHEMA $PARTITION_SCHEMA + GRANT ALL ON TABLES TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE \"$(ADMIN_USERNAME)\" IN SCHEMA $PARTITION_SCHEMA + GRANT ALL ON SEQUENCES TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE \"$(ADMIN_USERNAME)\" IN SCHEMA $PARTITION_SCHEMA + GRANT EXECUTE ON FUNCTIONS TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE \"$(ADMIN_USERNAME)\" IN SCHEMA $PARTITION_SCHEMA + GRANT USAGE ON TYPES TO $PARTITION_USERNAME; + END; + + \$\$; + " + - task: AzureCLI@2 + displayName: "configure partition" + inputs: + azureSubscription: $(AZURE_SERVICE_CONNECTION) + scriptLocation: inlineScript + scriptType: bash + inlineScript: | + + az config set extension.use_dynamic_install=yes_without_prompt + az postgres flexible-server execute --name $(DB_HOST) --admin-user $(PARTITION_USERNAME) \ + --admin-password '$(db-partition-password)' --database-name "$(DATABASE_NAME)" \ + --querytext " + do \$\$ + BEGIN + CREATE TABLE IF NOT EXISTS $(PARTITION_SCHEMA).tab_part + ( + tabella character varying(100) COLLATE pg_catalog."default", + schema character varying(100) COLLATE pg_catalog."default", + prefisso_nome_indice character varying(100) COLLATE pg_catalog."default", + campi_indice character varying(100) COLLATE pg_catalog."default" + ); + + ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO "$PARTITION_USERNAME"; + ALTER DEFAULT PRIVILEGES IN SCHEMA $ONLINE_SCHEMA GRANT ALL ON TABLES TO "$PARTITION_USERNAME"; + ALTER DEFAULT PRIVILEGES IN SCHEMA $RE_SCHEMA GRANT ALL ON TABLES TO "$PARTITION_USERNAME"; + ALTER DEFAULT PRIVILEGES IN SCHEMA $WFESP_SCHEMA GRANT ALL ON TABLES TO "$PARTITION_USERNAME"; + ALTER DEFAULT PRIVILEGES IN SCHEMA $OFFLINE_SCHEMA GRANT ALL ON TABLES TO "$PARTITION_USERNAME"; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA + GRANT ALL ON SEQUENCES TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA + GRANT EXECUTE ON FUNCTIONS TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA + GRANT USAGE ON TYPES TO $PARTITION_USERNAME; + GRANT ALL ON SCHEMA public TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA public GRANT ALL ON SEQUENCES TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA public GRANT EXECUTE ON FUNCTIONS TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA public GRANT USAGE ON TYPES TO $PARTITION_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA GRANT ALL ON TABLES TO $ADMIN_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA GRANT ALL ON SEQUENCES TO $ADMIN_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA GRANT EXECUTE ON FUNCTIONS TO $ADMIN_USERNAME; + ALTER DEFAULT PRIVILEGES FOR ROLE $PARTITION_USERNAME IN SCHEMA $PARTITION_SCHEMA GRANT USAGE ON TYPES TO $ADMIN_USERNAME; + GRANT ALL ON TABLE $PARTITION_SCHEMA.tab_part TO $ADMIN_USERNAME; + + CREATE OR REPLACE PROCEDURE $PARTITION_SCHEMA.modify_partition(a integer) LANGUAGE 'plpgsql' AS \$BODY\$ + + DECLARE + l_partname TEXT; + l_part_list date; + l_part_listb date; + l_partab TEXT; + L_INDEX_NAME TEXT; + l_campi_indice TEXT; + l_prefisso_indice TEXT; + l_sql text; + l_exist text; + l_var_exist integer; + loop_counter INTEGER; + + tab_cursor CURSOR FOR + SELECT lower(tabella) as tabella, lower(schema) as schema, lower(prefisso_nome_indice) as prefisso_indice, lower(campi_indice) as campi_indice + FROM $PARTITION_SCHEMA.TAB_PART; + tab_record TEXT; + tab_schema TEXT; + + BEGIN + + IF A is null + THEN A=1; + END IF; + + FOR loop_counter in 0..a + LOOP + + OPEN tab_cursor; + LOOP + FETCH NEXT FROM tab_cursor INTO tab_record, tab_schema,l_prefisso_indice, l_campi_indice; + EXIT WHEN NOT FOUND; + + ------------------------------------------------------------------------------------------------------ + + IF loop_counter=0 THEN + L_PART_LIST = DATE_TRUNC('DAY', CURRENT_DATE+loop_counter-1500)::DATE; + L_PART_LISTB = DATE_TRUNC('DAY', CURRENT_DATE+loop_counter+1)::DATE; + L_PARTNAME := TAB_RECORD||'_PMINVALUE'; + ELSE + L_PART_LIST = date_trunc('day', CURRENT_DATE+loop_counter)::date; + L_PART_LISTB = date_trunc('day', CURRENT_DATE+loop_counter+1)::date; + L_PARTNAME := tab_record||'_P'||to_char(CURRENT_DATE+loop_counter, 'yyyymmdd'); + END IF; + + L_INDEX_NAME := l_prefisso_indice||'_'||L_PARTNAME; + + IF NOT EXISTS + ( SELECT 1 + FROM information_schema.tables + WHERE table_name=l_partname and table_schema=tab_schema + union all + SELECT 1 + FROM pg_inherits + JOIN pg_class parent ON pg_inherits.inhparent = parent.oid + JOIN pg_class child ON pg_inherits.inhrelid = child.oid + JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = parent.relnamespace + JOIN pg_namespace nmsp_child ON nmsp_child.oid = child.relnamespace + WHERE child.relname=l_partname and nmsp_child.nspname =tab_schema + ) + THEN + + l_sql := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname, tab_schema, tab_record, l_part_list, l_part_listb); + execute l_sql; + + END IF; + + IF NOT EXISTS + (SELECT * + FROM pg_stat_all_indexes + WHERE indexrelname=L_INDEX_NAME and schemaname=tab_schema) + THEN + if l_campi_indice is not null then + l_sql := format('CREATE UNIQUE INDEX %I ON %I.%I USING BTREE(%s)', L_INDEX_NAME, tab_schema, l_partname, l_campi_indice); + execute l_sql; + END IF; + END IF; + ------------------------------------------------------------------------------------------------------ + + END LOOP; + + CLOSE tab_cursor; + + END LOOP; + + END; + \$BODY\$; + + ALTER PROCEDURE $PARTITION_SCHEMA.modify_partition(integer) OWNER TO $PARTITION_USERNAME; + + END; + \$\$; + " + + - task: AzureCLI@2 + displayName: "partition scheduling" + inputs: + azureSubscription: $(AZURE_SERVICE_CONNECTION) + scriptLocation: inlineScript + scriptType: bash + inlineScript: | + + az config set extension.use_dynamic_install=yes_without_prompt + az postgres flexible-server execute --name $(DB_HOST) --admin-user $(PARTITION_USERNAME) \ + --admin-password '$(db-partition-password)' --database-name "postgres" \ + --querytext " + do \$\$ + BEGIN + DECLARE + job_id INT; + BEGIN + SELECT j.jobid INTO job_id FROM cron.job j WHERE j.jobname = '$DATABASE_NAME'; + + -- use job id to cancel the schedule + PERFORM cron.unschedule(job_id); + END; + + PERFORM cron.schedule_in_database('$DATABASE_NAME', '00 23 * * *', 'call partition.modify_partition(7);','$DATABASE_NAME'); + END; + + \$\$; + " diff --git a/.devops/nodo-partitioned-db-data-migration-pipelines.yml b/.devops/nodo-partitioned-db-data-migration-pipelines.yml new file mode 100644 index 0000000000..fe6c381aa0 --- /dev/null +++ b/.devops/nodo-partitioned-db-data-migration-pipelines.yml @@ -0,0 +1,101 @@ +#pr: none +#trigger: none +# +#pool: +# vmImage: 'ubuntu-latest' +# +#parameters: +# - name: k8sEnv +# displayName: K8s Environment +# type: string +# default: dev +# values: +# - dev +# - it +# - prf +# - uat +# - prd +# +#variables: +# ${{ if eq(parameters.k8sEnv, 'dev') }}: +# DB_HOST: pagopa-d-weu-nodo-flexible-postgresql +# AZURE_SERVICE_CONNECTION: '$(TF_AZURE_SERVICE_CONNECTION_PLAN_NAME_DEV)' +# KEY_VAULT_NAME: 'pagopa-d-nodo-kv' +# DATABASE_NAME: nodo +# poolImage: 'pagopa-dev-linux-infra' +# ${{ if eq(parameters.k8sEnv, 'it') }}: +# DB_HOST: pagopa-d-weu-nodo-flexible-postgresql +# AZURE_SERVICE_CONNECTION: '$(TF_AZURE_SERVICE_CONNECTION_PLAN_NAME_DEV)' +# KEY_VAULT_NAME: 'pagopa-d-nodo-kv' +# DATABASE_NAME: 'nodo-replica' +# poolImage: 'pagopa-dev-linux-infra' +# ${{ elseif eq(parameters.k8sEnv, 'uat') }}: +# DB_HOST: pagopa-u-weu-nodo-flexible-postgresql +# AZURE_SERVICE_CONNECTION: '$(TF_AZURE_SERVICE_CONNECTION_PLAN_NAME_UAT)' +# KEY_VAULT_NAME: 'pagopa-u-nodo-kv' +# DATABASE_NAME: nodo +# poolImage: 'pagopa-uat-linux-infra' +# ${{ elseif eq(parameters.k8sEnv, 'prf') }}: +# DB_HOST: pagopa-u-weu-nodo-flexible-postgresql +# AZURE_SERVICE_CONNECTION: '$(TF_AZURE_SERVICE_CONNECTION_PLAN_NAME_UAT)' +# KEY_VAULT_NAME: 'pagopa-u-nodo-kv' +# DATABASE_NAME: 'nodo-replica' +# poolImage: 'pagopa-uat-linux-infra' +# ${{ elseif eq(parameters.k8sEnv, 'prd') }}: +# DB_HOST: pagopa-p-weu-nodo-flexible-postgresql +# AZURE_SERVICE_CONNECTION: '$(TF_AZURE_SERVICE_CONNECTION_PLAN_NAME_PROD)' +# KEY_VAULT_NAME: 'pagopa-p-nodo-kv' +# DATABASE_NAME: nodo +# poolImage: 'pagopa-prod-linux-infra' +# +# OFFLINE_USERNAME: offline +# OFFLINE_SCHEMA: offline +# ONLINE_USERNAME: online +# ONLINE_SCHEMA: online +# RE_USERNAME: re +# RE_SCHEMA: re +# WFESP_USERNAME: wfesp +# WFESP_SCHEMA: wfesp +# +#stages: +# - stage: initialization_jobs +# displayName: "Init ${{ parameters.k8sEnv }}" +# jobs: +# - job: initialization +# pool: $(poolImage) +# displayName: "Schemas creation job" +# steps: +# - task: AzureKeyVault@2 +# displayName: "Get secrets" +# inputs: +# azureSubscription: $(AZURE_SERVICE_CONNECTION) +# keyVaultName: $(KEY_VAULT_NAME) +# secretsFilter: 'db-online-password,db-offline-password,db-re-password,db-wfesp-password' +# +# - task: AzureCLI@2 +# displayName: "offline - migrate data from old to parted table" +# inputs: +# azureSubscription: $(AZURE_SERVICE_CONNECTION) +# scriptLocation: inlineScript +# scriptType: bash +# inlineScript: | +# +# az config set extension.use_dynamic_install=yes_without_prompt +# az postgres flexible-server execute --name $(DB_HOST) --admin-user $(OFFLINE_USERNAME) \ +# --admin-password '$(db-offline-password)' --database-name "$(DATABASE_NAME)" \ +# --querytext " +# do \$\$ +# +# BEGIN +# INSERT INTO $OFFLINE_SCHEMA.rendicontazione_sftp_receive_queue +# SELECT * +# FROM $OFFLINE_SCHEMA.rendicontazione_sftp_receive_queue_old; +# +# INSERT INTO $OFFLINE_SCHEMA.rendicontazione_sftp_send_queue +# SELECT * +# FROM $OFFLINE_SCHEMA.rendicontazione_sftp_send_queue_old; +# +# END; +# +# \$\$; +# " diff --git a/src/core-itn/00_dns_private.tf b/src/core-itn/00_dns_private.tf index e3a037115f..c34bbf38d1 100644 --- a/src/core-itn/00_dns_private.tf +++ b/src/core-itn/00_dns_private.tf @@ -16,8 +16,8 @@ data "azurerm_private_dns_zone" "internal_postgresql_pagopa_it" { # resource_group_name = "pagopa-${var.env_short}-vnet-rg" # } -data "azurerm_private_dns_zone" "internal_dev_platform_pagopa_it" { - name = "internal.dev.platform.pagopa.it" +data "azurerm_private_dns_zone" "internal_env_platform_pagopa_it" { + name = var.env_short != "p" ? "internal.${var.env}.platform.pagopa.it" : "internal.platform.pagopa.it" resource_group_name = "pagopa-${var.env_short}-vnet-rg" } diff --git a/src/core-itn/01_keyvault.tf b/src/core-itn/01_keyvault.tf index 08dd7d1084..33a2900831 100644 --- a/src/core-itn/01_keyvault.tf +++ b/src/core-itn/01_keyvault.tf @@ -63,12 +63,47 @@ resource "azurerm_key_vault_access_policy" "adgroup_externals_policy" { # # Secrets # +#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret +resource "azurerm_key_vault_secret" "monitor_notification_email" { + name = "monitor-notification-email" + value = "" + content_type = "text/plain" + + key_vault_id = module.key_vault.id + + lifecycle { + ignore_changes = [ + value, + ] + } +} + + +#tfsec:ignore:azure-keyvault-ensure-secret-expiry tfsec:ignore:azure-keyvault-content-type-for-secret +resource "azurerm_key_vault_secret" "monitor_notification_slack_email" { + name = "monitor-notification-slack-email" + value = "" + content_type = "text/plain" + + key_vault_id = module.key_vault.id + + lifecycle { + ignore_changes = [ + value, + ] + } +} + data "azurerm_key_vault_secret" "monitor_notification_email" { name = "monitor-notification-email" key_vault_id = module.key_vault.id + + depends_on = [azurerm_key_vault_secret.monitor_notification_email] } data "azurerm_key_vault_secret" "monitor_notification_slack_email" { name = "monitor-notification-slack-email" key_vault_id = module.key_vault.id + + depends_on = [azurerm_key_vault_secret.monitor_notification_slack_email] } diff --git a/src/core-itn/01_network.tf b/src/core-itn/01_network.tf index 9b6b5451ba..5b99c2a720 100644 --- a/src/core-itn/01_network.tf +++ b/src/core-itn/01_network.tf @@ -9,9 +9,8 @@ resource "azurerm_resource_group" "rg_ita_vnet" { } module "vnet_italy" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network?ref=v8.13.0" - count = var.is_feature_enabled.vnet_ita ? 1 : 0 - + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network?ref=v8.13.0" + count = 1 name = "${local.product_ita}-vnet" location = var.location_ita resource_group_name = azurerm_resource_group.rg_ita_vnet.name @@ -24,9 +23,8 @@ module "vnet_italy" { ## Peering between the vnet(main) and italy vnet module "vnet_ita_peering" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network_peering?ref=v8.13.0" - count = var.is_feature_enabled.vnet_ita ? 1 : 0 - + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network_peering?ref=v8.13.0" + count = 1 source_resource_group_name = azurerm_resource_group.rg_ita_vnet.name source_virtual_network_name = module.vnet_italy[0].name source_remote_virtual_network_id = module.vnet_italy[0].id @@ -42,9 +40,8 @@ module "vnet_ita_peering" { } module "vnet_ita_to_integration_peering" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network_peering?ref=v8.13.0" - count = var.is_feature_enabled.vnet_ita ? 1 : 0 - + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network_peering?ref=v8.13.0" + count = 1 source_resource_group_name = azurerm_resource_group.rg_ita_vnet.name source_virtual_network_name = module.vnet_italy[0].name source_remote_virtual_network_id = module.vnet_italy[0].id diff --git a/src/core-itn/02_dns_private_link.tf b/src/core-itn/02_dns_private_link.tf index 3094a35de1..b3b6d6caa4 100644 --- a/src/core-itn/02_dns_private_link.tf +++ b/src/core-itn/02_dns_private_link.tf @@ -24,8 +24,8 @@ resource "azurerm_private_dns_zone_virtual_network_link" "internal_postgresql_pa resource "azurerm_private_dns_zone_virtual_network_link" "internal_dev_platform_pagopa_it_vnet_link" { name = module.vnet_italy[0].name - private_dns_zone_name = data.azurerm_private_dns_zone.internal_dev_platform_pagopa_it.name - resource_group_name = data.azurerm_private_dns_zone.internal_dev_platform_pagopa_it.resource_group_name + private_dns_zone_name = data.azurerm_private_dns_zone.internal_env_platform_pagopa_it.name + resource_group_name = data.azurerm_private_dns_zone.internal_env_platform_pagopa_it.resource_group_name virtual_network_id = module.vnet_italy[0].id tags = var.tags } diff --git a/src/core-itn/10_evenhubs.tf b/src/core-itn/10_evenhubs.tf index 30ba45a60d..10788b6541 100644 --- a/src/core-itn/10_evenhubs.tf +++ b/src/core-itn/10_evenhubs.tf @@ -21,6 +21,9 @@ module "eventhub_meucci" { private_endpoint_subnet_id = azurerm_subnet.eventhubs_italy.id public_network_access_enabled = var.ehns_public_network_access private_endpoint_created = var.ehns_private_endpoint_is_present + + private_endpoint_resource_group_name = azurerm_resource_group.eventhub_ita_rg.name + private_dns_zones = { id = [data.azurerm_private_dns_zone.eventhub.id] name = [data.azurerm_private_dns_zone.eventhub.name] diff --git a/src/core-itn/99_variables.tf b/src/core-itn/99_variables.tf index 6fae74de25..5cf167fe0a 100644 --- a/src/core-itn/99_variables.tf +++ b/src/core-itn/99_variables.tf @@ -1,6 +1,5 @@ variable "is_feature_enabled" { type = object({ - vnet_ita = bool, container_app_tools_cae = optional(bool, false), node_forwarder_ha_enabled = bool vpn = optional(bool, false) diff --git a/src/core-itn/README.md b/src/core-itn/README.md index 7d6b38e5ed..e331d761c1 100644 --- a/src/core-itn/README.md +++ b/src/core-itn/README.md @@ -125,6 +125,8 @@ No outputs. | [azurerm_key_vault_access_policy.ad_group_policy](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | | [azurerm_key_vault_access_policy.adgroup_developers_policy](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | | [azurerm_key_vault_access_policy.adgroup_externals_policy](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | +| [azurerm_key_vault_secret.monitor_notification_email](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.monitor_notification_slack_email](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_log_analytics_workspace.log_analytics_workspace](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/log_analytics_workspace) | resource | | [azurerm_monitor_action_group.email](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_action_group) | resource | | [azurerm_monitor_action_group.slack](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_action_group) | resource | @@ -164,7 +166,7 @@ No outputs. | [azurerm_key_vault_secret.monitor_notification_slack_email](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_secret) | data source | | [azurerm_private_dns_zone.db_nodo_pagamenti_com](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | | [azurerm_private_dns_zone.eventhub](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | -| [azurerm_private_dns_zone.internal_dev_platform_pagopa_it](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | +| [azurerm_private_dns_zone.internal_env_platform_pagopa_it](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | | [azurerm_private_dns_zone.internal_postgresql_pagopa_it](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | | [azurerm_private_dns_zone.privatelink_azurecr_io](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | | [azurerm_private_dns_zone.privatelink_blob_core_windows_net](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | @@ -208,7 +210,7 @@ No outputs. | [env](#input\_env) | n/a | `string` | n/a | yes | | [env\_short](#input\_env\_short) | n/a | `string` | n/a | yes | | [external\_domain](#input\_external\_domain) | Domain for delegation | `string` | `"pagopa.it"` | no | -| [is\_feature\_enabled](#input\_is\_feature\_enabled) | Features enabled in this domain |
object({
vnet_ita = bool,
container_app_tools_cae = optional(bool, false),
node_forwarder_ha_enabled = bool
vpn = optional(bool, false)
dns_forwarder_lb = optional(bool, false)
postgres_private_dns = bool
})
| n/a | yes | +| [is\_feature\_enabled](#input\_is\_feature\_enabled) | Features enabled in this domain |
object({
container_app_tools_cae = optional(bool, false),
node_forwarder_ha_enabled = bool
vpn = optional(bool, false)
dns_forwarder_lb = optional(bool, false)
postgres_private_dns = bool
})
| n/a | yes | | [law\_daily\_quota\_gb](#input\_law\_daily\_quota\_gb) | The workspace daily quota for ingestion in GB. | `number` | n/a | yes | | [law\_internet\_query\_enabled](#input\_law\_internet\_query\_enabled) | Should the Log Analytics Workspace support querying over the Public Internet? Defaults to true. | `bool` | n/a | yes | | [law\_retention\_in\_days](#input\_law\_retention\_in\_days) | The workspace data retention in days | `number` | n/a | yes | diff --git a/src/core-itn/env/uat/terraform.tfvars b/src/core-itn/env/uat/terraform.tfvars index 0801361bf2..cbfc7d52e5 100644 --- a/src/core-itn/env/uat/terraform.tfvars +++ b/src/core-itn/env/uat/terraform.tfvars @@ -17,10 +17,9 @@ tags = { ### Feature Flag is_feature_enabled = { - vnet_ita = false, container_app_tools_cae = true, node_forwarder_ha_enabled = false, - vpn = false, + vpn = true, dns_forwarder_lb = true, postgres_private_dns = true } @@ -129,3 +128,5 @@ law_sku = "PerGB2018" law_retention_in_days = 30 law_daily_quota_gb = 10 law_internet_query_enabled = true + +ehns_zone_redundant = false diff --git a/src/domains/bizevents-app/api/transaction-service/v1/_openapi-jwt.json.tpl b/src/domains/bizevents-app/api/transaction-service/v1/_openapi-jwt.json.tpl index 98cfd4f907..df3774c3ee 100644 --- a/src/domains/bizevents-app/api/transaction-service/v1/_openapi-jwt.json.tpl +++ b/src/domains/bizevents-app/api/transaction-service/v1/_openapi-jwt.json.tpl @@ -4,7 +4,7 @@ "title": "Biz-Events Transaction Service JWT", "description": "Microservice for exposing REST APIs about payment transaction.", "termsOfService": "https://www.pagopa.gov.it/", - "version": "0.1.26" + "version": "0.1.27" }, "servers" : [ { "url": "${host}/bizevents/bizevents/tx-service-jwt/v1", @@ -33,17 +33,6 @@ } } ], "responses" : { - "401" : { - "description" : "Wrong or missing function key.", - "headers" : { - "X-Request-Id" : { - "description" : "This header identifies the call", - "schema" : { - "type" : "string" - } - } - } - }, "200" : { "description" : "Disabled Transactions.", "headers" : { @@ -58,8 +47,8 @@ "application/json" : { } } }, - "404" : { - "description" : "Not found the transaction.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -76,8 +65,8 @@ } } }, - "500" : { - "description" : "Service unavailable.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -104,6 +93,17 @@ } } } + }, + "401" : { + "description" : "Wrong or missing function key.", + "headers" : { + "X-Request-Id" : { + "description" : "This header identifies the call", + "schema" : { + "type" : "string" + } + } + } } }, "security" : [ { @@ -149,31 +149,27 @@ } } ], "responses" : { - "401" : { - "description" : "Wrong or missing function key.", + "200" : { + "description" : "Obtained transaction list.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", "schema" : { "type" : "string" } - } - } - }, - "404" : { - "description" : "Not found the transaction.", - "headers" : { - "X-Request-Id" : { - "description" : "This header identifies the call", + }, + "x-continuation-token" : { + "description" : "continuation token for paginated query", + "style" : "simple", "schema" : { "type" : "string" } } }, "content" : { - "*/*" : { + "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ProblemJson" + "$ref" : "#/components/schemas/TransactionListWrapResponse" } } } @@ -196,30 +192,20 @@ } } }, - "200" : { - "description" : "Obtained transaction list.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", "schema" : { "type" : "string" } - }, - "x-continuation-token" : { - "description" : "continuation token for paginated query", - "style" : "simple", - "schema" : { - "type" : "string" - } } }, "content" : { - "application/json" : { + "*/*" : { "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/TransactionListItem" - } + "$ref" : "#/components/schemas/ProblemJson" } } } @@ -234,6 +220,17 @@ } } } + }, + "401" : { + "description" : "Wrong or missing function key.", + "headers" : { + "X-Request-Id" : { + "description" : "This header identifies the call", + "schema" : { + "type" : "string" + } + } + } } }, "security" : [ { @@ -271,19 +268,8 @@ } } ], "responses" : { - "401" : { - "description" : "Wrong or missing function key.", - "headers" : { - "X-Request-Id" : { - "description" : "This header identifies the call", - "schema" : { - "type" : "string" - } - } - } - }, - "404" : { - "description" : "Not found the transaction.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -300,8 +286,8 @@ } } }, - "500" : { - "description" : "Service unavailable.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -346,6 +332,17 @@ } } } + }, + "401" : { + "description" : "Wrong or missing function key.", + "headers" : { + "X-Request-Id" : { + "description" : "This header identifies the call", + "schema" : { + "type" : "string" + } + } + } } }, "security" : [ { @@ -367,7 +364,7 @@ "summary" : "Retrieve the PDF receipt given event id.", "operationId" : "getPDFReceipt", "parameters" : [ { - "name" : "x-fiscal-code", + "name" : "walletId", "in" : "header", "required" : true, "schema" : { @@ -383,19 +380,8 @@ } } ], "responses" : { - "429" : { - "description" : "Too many requests.", - "headers" : { - "X-Request-Id" : { - "description" : "This header identifies the call", - "schema" : { - "type" : "string" - } - } - } - }, "422" : { - "description" : "Unprocessable recipt.", + "description" : "Unprocessable receipt.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -412,8 +398,8 @@ } } }, - "404" : { - "description" : "Not found the receipt.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -430,8 +416,8 @@ } } }, - "500" : { - "description" : "Service unavailable.", + "404" : { + "description" : "Not found the receipt.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -462,6 +448,17 @@ "application/pdf" : { } } }, + "429" : { + "description" : "Too many requests.", + "headers" : { + "X-Request-Id" : { + "description" : "This header identifies the call", + "schema" : { + "type" : "string" + } + } + } + }, "401" : { "description" : "Wrong or missing function key.", "headers" : { @@ -494,8 +491,8 @@ "description" : "Return OK if application is started", "operationId" : "healthCheck", "responses" : { - "200" : { - "description" : "OK", + "429" : { + "description" : "Too many requests", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -503,13 +500,6 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/AppInfo" - } - } } }, "401" : { @@ -523,8 +513,8 @@ } } }, - "403" : { - "description" : "Forbidden", + "400" : { + "description" : "Bad Request", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -532,6 +522,13 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemJson" + } + } } }, "500" : { @@ -552,8 +549,8 @@ } } }, - "400" : { - "description" : "Bad Request", + "403" : { + "description" : "Forbidden", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -561,17 +558,10 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ProblemJson" - } - } } }, - "429" : { - "description" : "Too many requests", + "200" : { + "description" : "OK", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -579,6 +569,13 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/AppInfo" + } + } } } }, @@ -643,6 +640,20 @@ }, "isPayer" : { "type" : "boolean" + }, + "isDebtor" : { + "type" : "boolean" + } + } + }, + "TransactionListWrapResponse" : { + "type" : "object", + "properties" : { + "transactions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/TransactionListItem" + } } } }, @@ -669,7 +680,7 @@ } } }, - "InfoTransaction" : { + "InfoTransactionView" : { "type" : "object", "properties" : { "transactionId" : { @@ -713,7 +724,7 @@ "type" : "object", "properties" : { "infoTransaction" : { - "$ref" : "#/components/schemas/InfoTransaction" + "$ref" : "#/components/schemas/InfoTransactionView" }, "carts" : { "type" : "array", @@ -745,6 +756,9 @@ }, "blurredNumber" : { "type" : "string" + }, + "maskedEmail" : { + "type" : "string" } } }, diff --git a/src/domains/bizevents-app/api/transaction-service/v1/_openapi.json.tpl b/src/domains/bizevents-app/api/transaction-service/v1/_openapi.json.tpl index a212d096c4..e3b0045928 100644 --- a/src/domains/bizevents-app/api/transaction-service/v1/_openapi.json.tpl +++ b/src/domains/bizevents-app/api/transaction-service/v1/_openapi.json.tpl @@ -4,7 +4,7 @@ "title" : "Biz-Events Transaction Service", "description" : "Microservice for exposing REST APIs about payment receipts.", "termsOfService" : "https://www.pagopa.gov.it/", - "version" : "0.1.26" + "version" : "0.1.27" }, "servers" : [ { "url": "${host}/bizevents/bizevents/tx-service/v1", @@ -33,8 +33,8 @@ } } ], "responses" : { - "404" : { - "description" : "Not found the transaction.", + "200" : { + "description" : "Disabled Transactions.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -44,15 +44,11 @@ } }, "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ProblemJson" - } - } + "application/json" : { } } }, - "429" : { - "description" : "Too many requests.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -60,10 +56,17 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemJson" + } + } } }, - "500" : { - "description" : "Service unavailable.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -80,8 +83,8 @@ } } }, - "401" : { - "description" : "Wrong or missing function key.", + "429" : { + "description" : "Too many requests.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -91,8 +94,8 @@ } } }, - "200" : { - "description" : "Disabled Transactions.", + "401" : { + "description" : "Wrong or missing function key.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -100,9 +103,6 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { } } } }, @@ -149,26 +149,33 @@ } } ], "responses" : { - "404" : { - "description" : "Not found the transaction.", + "200" : { + "description" : "Obtained transaction list.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", "schema" : { "type" : "string" } + }, + "x-continuation-token" : { + "description" : "continuation token for paginated query", + "style" : "simple", + "schema" : { + "type" : "string" + } } }, "content" : { - "*/*" : { + "application/json" : { "schema" : { - "$ref" : "#/components/schemas/ProblemJson" + "$ref" : "#/components/schemas/TransactionListWrapResponse" } } } }, - "429" : { - "description" : "Too many requests.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -176,10 +183,17 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemJson" + } + } } }, - "500" : { - "description" : "Service unavailable.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -189,38 +203,21 @@ } }, "content" : { - "application/json" : { + "*/*" : { "schema" : { "$ref" : "#/components/schemas/ProblemJson" } } } }, - "200" : { - "description" : "Obtained transaction list.", + "429" : { + "description" : "Too many requests.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", "schema" : { "type" : "string" } - }, - "x-continuation-token" : { - "description" : "continuation token for paginated query", - "style" : "simple", - "schema" : { - "type" : "string" - } - } - }, - "content" : { - "application/json" : { - "schema" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/TransactionListItem" - } - } } } }, @@ -271,8 +268,8 @@ } } ], "responses" : { - "404" : { - "description" : "Not found the transaction.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -289,8 +286,8 @@ } } }, - "200" : { - "description" : "Obtained transaction details.", + "404" : { + "description" : "Not found the transaction.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -302,13 +299,13 @@ "content" : { "application/json" : { "schema" : { - "$ref" : "#/components/schemas/TransactionDetailResponse" + "$ref" : "#/components/schemas/ProblemJson" } } } }, - "429" : { - "description" : "Too many requests.", + "200" : { + "description" : "Obtained transaction details.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -316,10 +313,17 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/TransactionDetailResponse" + } + } } }, - "500" : { - "description" : "Service unavailable.", + "429" : { + "description" : "Too many requests.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -327,13 +331,6 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ProblemJson" - } - } } }, "401" : { @@ -383,8 +380,8 @@ } } ], "responses" : { - "404" : { - "description" : "Not found the receipt.", + "422" : { + "description" : "Unprocessable receipt.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -401,8 +398,8 @@ } } }, - "429" : { - "description" : "Too many requests.", + "500" : { + "description" : "Service unavailable.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -410,24 +407,17 @@ "type" : "string" } } - } - }, - "200" : { - "description" : "Obtained the PDF receipt.", - "headers" : { - "X-Request-Id" : { - "description" : "This header identifies the call", + }, + "content" : { + "application/json" : { "schema" : { - "type" : "string" + "$ref" : "#/components/schemas/ProblemJson" } } - }, - "content" : { - "application/pdf" : { } } }, - "422" : { - "description" : "Unprocessable receipt.", + "404" : { + "description" : "Not found the receipt.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -444,8 +434,8 @@ } } }, - "500" : { - "description" : "Service unavailable.", + "200" : { + "description" : "Obtained the PDF receipt.", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -455,9 +445,16 @@ } }, "content" : { - "application/json" : { + "application/pdf" : { } + } + }, + "429" : { + "description" : "Too many requests.", + "headers" : { + "X-Request-Id" : { + "description" : "This header identifies the call", "schema" : { - "$ref" : "#/components/schemas/ProblemJson" + "type" : "string" } } } @@ -494,8 +491,8 @@ "description" : "Return OK if application is started", "operationId" : "healthCheck", "responses" : { - "400" : { - "description" : "Bad Request", + "429" : { + "description" : "Too many requests", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -503,13 +500,6 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ProblemJson" - } - } } }, "401" : { @@ -523,8 +513,8 @@ } } }, - "403" : { - "description" : "Forbidden", + "400" : { + "description" : "Bad Request", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -532,6 +522,13 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ProblemJson" + } + } } }, "500" : { @@ -552,8 +549,8 @@ } } }, - "200" : { - "description" : "OK", + "403" : { + "description" : "Forbidden", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -561,17 +558,10 @@ "type" : "string" } } - }, - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/AppInfo" - } - } } }, - "429" : { - "description" : "Too many requests", + "200" : { + "description" : "OK", "headers" : { "X-Request-Id" : { "description" : "This header identifies the call", @@ -579,6 +569,13 @@ "type" : "string" } } + }, + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/AppInfo" + } + } } } }, @@ -643,6 +640,20 @@ }, "isPayer" : { "type" : "boolean" + }, + "isDebtor" : { + "type" : "boolean" + } + } + }, + "TransactionListWrapResponse" : { + "type" : "object", + "properties" : { + "transactions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/TransactionListItem" + } } } }, @@ -669,7 +680,7 @@ } } }, - "InfoTransaction" : { + "InfoTransactionView" : { "type" : "object", "properties" : { "transactionId" : { @@ -713,7 +724,7 @@ "type" : "object", "properties" : { "infoTransaction" : { - "$ref" : "#/components/schemas/InfoTransaction" + "$ref" : "#/components/schemas/InfoTransactionView" }, "carts" : { "type" : "array", @@ -745,6 +756,9 @@ }, "blurredNumber" : { "type" : "string" + }, + "maskedEmail" : { + "type" : "string" } } }, diff --git a/src/domains/ecommerce-app/api/ecommerce-checkout/v1/_openapi.json.tpl b/src/domains/ecommerce-app/api/ecommerce-checkout/v1/_openapi.json.tpl index 8f64f41934..2ab8bb9624 100644 --- a/src/domains/ecommerce-app/api/ecommerce-checkout/v1/_openapi.json.tpl +++ b/src/domains/ecommerce-app/api/ecommerce-checkout/v1/_openapi.json.tpl @@ -2477,11 +2477,13 @@ }, "PaymentMethodManagementType": { "type": "string", - "description": "Payment method management type", + "description": "Describes how to manage the payment method authorization flow in wallet and eCommerce domain:\n- REDIRECT if it must be managed with a redirect flow;\n- ONBOARDABLE if it must be managed with NPG and it is possible to save the payment method in the wallet, but also guest payment is accepted;\n- NOT_ONBOARDABLE if it must be managed with NPG but the method cannot be saved, only guest payment is accepted;\n- ONBOARDABLE_ONLY if it must be managed with NPG and it is mandatory to save the payment method in the wallet to use it. Guest payment isn't accepted;\n- ONBORDABLE_WITH_PAYMENT if it must be managed with NPG and it is possible to save it, to use it as guest payment, and to onboard it during the payment;", "enum": [ "ONBOARDABLE", "NOT_ONBOARDABLE", - "REDIRECT" + "REDIRECT", + "ONBOARDABLE_ONLY", + "ONBOARDABLE_WITH_PAYMENT" ] } }, diff --git a/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl b/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl index 2d72100a9b..d5a48e775d 100644 --- a/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl +++ b/src/domains/ecommerce-app/api/ecommerce-io/v1/_openapi.json.tpl @@ -1801,11 +1801,13 @@ }, "PaymentMethodManagementType": { "type": "string", - "description": "Payment method management type", + "description": "Describes how to manage the payment method authorization flow in wallet and eCommerce domain:\n- REDIRECT if it must be managed with a redirect flow;\n- ONBOARDABLE if it must be managed with NPG and it is possible to save the payment method in the wallet, but also guest payment is accepted;\n- NOT_ONBOARDABLE if it must be managed with NPG but the method cannot be saved, only guest payment is accepted;\n- ONBOARDABLE_ONLY if it must be managed with NPG and it is mandatory to save the payment method in the wallet to use it. Guest payment isn't accepted;\n- ONBORDABLE_WITH_PAYMENT if it must be managed with NPG and it is possible to save it, to use it as guest payment, and to onboard it during the payment;", "enum": [ "ONBOARDABLE", "NOT_ONBOARDABLE", - "REDIRECT" + "REDIRECT", + "ONBOARDABLE_ONLY", + "ONBOARDABLE_WITH_PAYMENT" ] }, "NewSessionTokenResponse": { diff --git a/src/domains/ecommerce-app/api/ecommerce-payment-methods-service/v1/_openapi.json.tpl b/src/domains/ecommerce-app/api/ecommerce-payment-methods-service/v1/_openapi.json.tpl index 45dc063de2..482c888ccf 100644 --- a/src/domains/ecommerce-app/api/ecommerce-payment-methods-service/v1/_openapi.json.tpl +++ b/src/domains/ecommerce-app/api/ecommerce-payment-methods-service/v1/_openapi.json.tpl @@ -946,11 +946,13 @@ }, "PaymentMethodManagementType": { "type": "string", - "description": "Payment method management type", + "description": "Describes how to manage the payment method authorization flow in wallet and eCommerce domain:\n- REDIRECT if it must be managed with a redirect flow;\n- ONBOARDABLE if it must be managed with NPG and it is possible to save the payment method in the wallet, but also guest payment is accepted;\n- NOT_ONBOARDABLE if it must be managed with NPG but the method cannot be saved, only guest payment is accepted;\n- ONBOARDABLE_ONLY if it must be managed with NPG and it is mandatory to save the payment method in the wallet to use it. Guest payment isn't accepted;\n- ONBORDABLE_WITH_PAYMENT if it must be managed with NPG and it is possible to save it, to use it as guest payment, and to onboard it during the payment;", "enum": [ "ONBOARDABLE", "NOT_ONBOARDABLE", - "REDIRECT" + "REDIRECT", + "ONBOARDABLE_ONLY", + "ONBOARDABLE_WITH_PAYMENT" ] }, "CreateSessionResponse": { diff --git a/src/domains/fdr-common/01_events.tf b/src/domains/fdr-common/01_events.tf new file mode 100644 index 0000000000..f4110ecbd0 --- /dev/null +++ b/src/domains/fdr-common/01_events.tf @@ -0,0 +1,27 @@ +data "azurerm_eventhub_authorization_rule" "pagopa-weu-core-evh-ns04_fdr-qi-flows-tx" { + name = "fdr-qi-flows-tx" + namespace_name = "${local.product}-${local.evt_hub_location}-evh-ns04" + eventhub_name = "fdr-qi-flows" + resource_group_name = "${local.product}-msg-rg" +} + +data "azurerm_eventhub_authorization_rule" "pagopa-weu-core-evh-ns04_fdr-qi-flows-rx" { + name = "fdr-qi-flows-rx" + namespace_name = "${local.product}-${local.evt_hub_location}-evh-ns04" + eventhub_name = "fdr-qi-flows" + resource_group_name = "${local.product}-msg-rg" +} + +data "azurerm_eventhub_authorization_rule" "pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-tx" { + name = "fdr-qi-reported-iuv-tx" + namespace_name = "${local.product}-${local.evt_hub_location}-evh-ns04" + eventhub_name = "fdr-qi-reported-iuv" + resource_group_name = "${local.product}-msg-rg" +} + +data "azurerm_eventhub_authorization_rule" "pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-rx" { + name = "fdr-qi-reported-iuv-rx" + namespace_name = "${local.product}-${local.evt_hub_location}-evh-ns04" + eventhub_name = "fdr-qi-reported-iuv" + resource_group_name = "${local.product}-msg-rg" +} \ No newline at end of file diff --git a/src/domains/fdr-common/02_security.tf b/src/domains/fdr-common/02_security.tf index 4cc7d19e64..acae4f0552 100644 --- a/src/domains/fdr-common/02_security.tf +++ b/src/domains/fdr-common/02_security.tf @@ -12,6 +12,39 @@ resource "azurerm_key_vault_secret" "fdr-re-tx" { key_vault_id = data.azurerm_key_vault.key_vault.id } +### FdR Quality Improvement +resource "azurerm_key_vault_secret" "evthub_fdr-qi-flows_tx" { + name = "fdr-qi-flows-tx-connection-string" + value = data.azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-flows-tx.primary_connection_string + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.key_vault.id +} + +resource "azurerm_key_vault_secret" "evthub_fdr-qi-flows_rx" { + name = "fdr-qi-flows-rx-connection-string" + value = data.azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-flows-rx.primary_connection_string + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.key_vault.id +} + +resource "azurerm_key_vault_secret" "evthub_fdr-qi-reported-iuv_tx" { + name = "fdr-qi-reported-iuv-tx-connection-string" + value = data.azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-tx.primary_connection_string + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.key_vault.id +} + +resource "azurerm_key_vault_secret" "evthub_fdr-qi-reported-iuv_rx" { + name = "fdr-qi-reported-iuv-rx-connection-string" + value = data.azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-rx.primary_connection_string + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.key_vault.id +} + ############ ## Cosmos ## ############ diff --git a/src/domains/fdr-common/README.md b/src/domains/fdr-common/README.md index fac9838046..5197b2fc01 100644 --- a/src/domains/fdr-common/README.md +++ b/src/domains/fdr-common/README.md @@ -37,6 +37,10 @@ |------|------| | [azurerm_cosmosdb_mongo_database.fdr](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cosmosdb_mongo_database) | resource | | [azurerm_cosmosdb_mongo_database.fdr_re](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cosmosdb_mongo_database) | resource | +| [azurerm_key_vault_secret.evthub_fdr-qi-flows_rx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.evthub_fdr-qi-flows_tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.evthub_fdr-qi-reported-iuv_rx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.evthub_fdr-qi-reported-iuv_tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.fdr-re-tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.fdr_history_storage_account_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.fdr_mongodb_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | @@ -82,6 +86,10 @@ | [azurerm_application_insights.application_insights](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/application_insights) | data source | | [azurerm_client_config.current](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/client_config) | data source | | [azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns03_fdr-re-fdr-re-tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-flows-rx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-flows-tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-rx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.pagopa-weu-core-evh-ns04_fdr-qi-reported-iuv-tx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | | [azurerm_key_vault.key_vault](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault) | data source | | [azurerm_key_vault_secret.pgres_flex_admin_login](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_secret) | data source | | [azurerm_key_vault_secret.pgres_flex_admin_pwd](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_secret) | data source | diff --git a/src/domains/fdr-common/env/weu-prod/terraform.tfvars b/src/domains/fdr-common/env/weu-prod/terraform.tfvars index bfbba4f7d3..37dec26cb4 100644 --- a/src/domains/fdr-common/env/weu-prod/terraform.tfvars +++ b/src/domains/fdr-common/env/weu-prod/terraform.tfvars @@ -250,4 +250,4 @@ reporting_fdr_storage_account = { blob_versioning_enabled = false blob_delete_retention_days = 30 account_replication_type = "GZRS" -} +} \ No newline at end of file diff --git a/src/domains/nodo-common/10_github_identity.tf b/src/domains/nodo-common/10_github_identity.tf index 577dbf8818..3a03630a6f 100644 --- a/src/domains/nodo-common/10_github_identity.tf +++ b/src/domains/nodo-common/10_github_identity.tf @@ -17,7 +17,8 @@ locals { "pagopa-wisp-soap-converter", "pagopa-wisp-converter", "pagopa-wisp-converter-technical-support", - "pagopa-node-technical-support-worker" + "pagopa-node-technical-support-worker", + "pagopa-mbd" ] federations_01 = [ diff --git a/src/domains/nodo-secret/secret/weu-dev/noedit_secret_enc.json b/src/domains/nodo-secret/secret/weu-dev/noedit_secret_enc.json index 417c59bc47..24116cebb7 100644 --- a/src/domains/nodo-secret/secret/weu-dev/noedit_secret_enc.json +++ b/src/domains/nodo-secret/secret/weu-dev/noedit_secret_enc.json @@ -9,6 +9,7 @@ "db-re-password": "ENC[AES256_GCM,data:q764LR9q/eM=,iv:jurYFK6k9Dfn2xlgX+QEUW3AmlAGEpcvzX/hIq5etys=,tag:QuyQg3iJcCsRi4pZmES5MQ==,type:str]", "db-wfesp-password": "ENC[AES256_GCM,data:GLVlRkdIqjw=,iv:VzdZS5lLOYmoURxVOQR6WLjpdu7iCFB4AzXrZYOvjD0=,tag:+yJb4cdE+RFCfy+RCyFoaQ==,type:str]", "db-web-bo-password": "ENC[AES256_GCM,data:k6DXrvG/dcE=,iv:8+zjdhQ4S5gXLKOAPEMhPaypbV8adFh6mADdkaRMpqg=,tag:vRJRxmWVuN43Qzern5PvvA==,type:str]", + "db-partition-password": "ENC[AES256_GCM,data:Fq7KTIygi/U=,iv:c4D/FwJ0xm+yFHGVGJD2C6915dZ0IF/FWMlvyGWU+KU=,tag:TilWE3o8PqmAPuOazLblMA==,type:str]", "oracle-db-cfg-password": "ENC[AES256_GCM,data:C1j7+a8Pgr68,iv:YxvKljBCasP4Wmw928qWs1gHzNu47EtACQ2yr3JsPiE=,tag:2we5c/SW3TSmjIaMi9idWQ==,type:str]", "firmatore-sftp-key-pem": "ENC[AES256_GCM,data:OX7NggROs3FQQHuQzXYIX9/AcMFGA7ev4yioXaEDwqGbEBk8zKoOjBN4tai50ceE37aXiMshJWh+qbeKAmF8Vjvv4rO/GTBiy6K3BDEnsdN115pCSUSNjAQfTN4zKVo2PMfGoVCIC63sRU4JjIqVBwpX/5398VjOhJr//HwYTBhqi91HITQrV1EUWoqjn3NOrhjt8pKbzZVv+0XSdl/hkYroWOf6XRsWkiXDKgvxtVzbFaHgUuntLg6sYK5CxGu0gyxLfO3m3+k2HIBK4osHysSj6/CgnD5HD1bMieJVaoj7NoiA4R4z+COvUfXbibcskleoPjCk8Yf+w+0kHassc9wgZSYszySKmkmbGlMiD0mOolfyMpTXRm7C+171f6hmkT97NcTah41PIJojO0B3EYXRaNUNhsQAkE2uSZA6IcTE/7+ZJpieKoT2asJ7zS2Iwca+Xr51jJkitK3A37MXaDo66vyGr9RyWD1ihMy3IO0VV7A9jvYZZ86fFjCo5YLavYuSPPLvkJ69whV+x4+fTcBTTm0zhSYV5/mamYUKsi750a/VCA/G5MKwKAOVtEkuiWkgALWu6XOu3PrkPDrziLIsPD6e2JwVJ5m3z4K4r1yO5Qd2uW5Xy6Pd1VBWUV1nDeakGOxpMPGXKMyhgLc17PQOZOJTydMgjCUK7iuBUl3WQOpuGDYUS4L6bsz6GdJodAl7RP2uwSzXselPuc7sA/OsFLPlgi16ekiwO+4glQw/Gr2hl6UBJGuoxj1lPHNSK7Prg8sJelfMv0kg0SDoWjWtrU9zzaf23RMqEoSpsrXuN6BNOp4/jtFfyk894vCiaNkP3bIA+QZ++BLSldi2sSKBuBn7kyljmED0esoDJpsATGZjgjS3bEv+ZOFfgwDljmGe8BFuiB2neQq0i662Phi0COSO2bgLbf4472vvuNB4wQ34g2BUAixEsHcib5J20UEDBxODWT5qRd/HNP9ayPq625/ynYPkwsiQP7I1cN2lhd1vhEbb82fIQJMH4WvNVBc3MVWKPr9mrHHZNRa4EEZdQMJ2OhdBKZIfEJI0zROk/5Xr2I+KqXhVc42J0n/DJuQWl/6raysYpggTKLe2QFQw70vtrzS8x4WVVE7zMIBsHfYApT1mgggD+PS9S4pgrso3ul2Gr3q7mP08EgwE7dhDyNz8WWU6M7DRs64k3DtbLiSQ6Z/mjd36f4X1ZJfnzrQxMTLadyiJ5SH12b1e6ppdPTc07O6j+EjI9TbQ0kAPanVBlu5E/HpGHnnS7+BnztlzieDoRBKYleUTju3E+dtqeGhV59/l1Br/CZzsY8eW0mram9La7jB7nn5UDD/Z9RF9SQiFw0X4fn7P41v7M1+XWTWYKzYqikSJIungpPlZHwkag4VEejPAcXnBC8pAvuQppapMSTpntckFu6fd27RO4PUJm5GoA7gF9sj2D9KD7cbM1LBf4QE5+nR1YCyw1473RMvFucGGOzn6AbeAuJaoMTj4W9Il5DZfdwIRMa8/RbZ2unbM8BBuQHidi5yP7BUhZnzELXg7VwQ67LGcq2N04idWiPypOHrQEokgyMAO5hi4wfW+CJ8ycS6Ih0ARcb4B/2GIvI6YKaT3b8M5OqT7BukjmgMYVMlYKQNA7/H5XDF8SWg7hogQB7J9KNhkhWAZ/SI69BICj2t4h+8M/FgcPxdn38r34q1fCFWskZnwKxWSguMsXLryHb+zaPM4FsEx+08FBJrk4vE4jT1wRNjUUeFjcZZ86Pm2X/nOTY8yPnheAMtYgRvIiuEhkTFAWudaK/wxVnBd6neErkSYKE1nUvCWJC5SwZ0xhLSOpwT7tW0iPXxbPU2aFYbxxz2ppr+BnQl4OAt4ssSYXZpz0rnF1LdOw/Eu+t8cf1BsGDTM5qPGwUbNA3Hfj55WG8PIqTaFau0hzQlncFYQQpSxvWE3f1RQl9KBai1EYBn8T3rCch/y0+k1y4bbw11dSg3/3WaF+F3mcTVCzLbpIT5DOsmd1vZFLxbnpo2oho0dwKB8ocPLHw4ZVCUZ7kGcptVFNgLmV/WPBYPKQ4B5ZJ5ofn83Uy7JckgWslVbPsILKaxzeFTZ4qq7Dz7Pj+gy3rTaHuCUfpE9ZjBU0uCMQtPYddC3K+eKbP6g8zcx3IZcTlbRCsrBOQhaaI4uRlRPcwz7vGz2db49en4P0oDNnmxmvm+VUs4bxKDjNG7P2jRPj8eZI6M0cARnaxnWtJ6UyZ2/WGv5EV/b5ADyEnG8d/Ds9mCvgXUqJ+VPmf06+Rfs6PXeCMxTC+YQ2bUwbePDexF/HWE/kWXEw/Pqvkn7929T1ZuUj4FOvpRN6DwvxbSeguM/iWADy0CTxCbYep9ijU7R0bSkJP7+6F23quCzNM9eiFtri4qCsGa8E3Wwtl58xe9nxzlyZGuZWyKMpE4g4QtjAIWd87GCT6qGMkC9txzqfBu3O/PCRdV6bHOP/QI2TtGZJSMZuf+fFJIFBi+2hZq9l1MeeG+9Ot4s5yNW/Q5JlG+8M6jEPJbFBEfJdYtcT6HiAKFzmpfu69uJ4pgSlRzvjOJhl9G+7pAOD2UyCbMSwaJ0gO9hqn2cAm3H1C27n/+OSvbiRCBx1N+Ywm1F+eUNXBLEjqKHRiJ+96M5PkIVHqgsul6JWUlyc0wOaox08KO23uRBKuEq4imX52KpBQt3ryjB0YcbapwO6Lacb/BRCumb21tnNW9Lk3GiWzSpuyykkLhHngvG9Fmku2kuiV2YsrSLEVbLU3wVOq0tHnC2pmnuTvVDZ88Y0Nk8VJK46AZtDa0AObt6B8ROvyARqpSU1Bd1QeQMyUnjNuvdfVau/qmtyUPMnWXxaKCq9Fv99KTMJxoWreRVlEElPUYh/+HBLnjqxg3XjXNrWzCzkYswzPfTA2aKfk7bQ3aFWXmgERAC/GSlWnGLmOW2n0Gdevvlt/R4r0k94FR4cgSleX6nUMZVR+hv/xUXel/7F20A69jKKpUjT2gYBQ3XkL/j/sWXobUbFYWLr30UGmEcoz3+v/neFiU/tohH2M1JyrkYHRpXprZESAp5l5mTip1Wt9KmfOWyGMM7utlcRhjZEGKmrp13eKYmu9EJFk9+MhEi4LcukGvmH0yxV1bdZaf910o+QJHUp8gkwoRaCafqwXUAoMY5mMMdSkpWHIabV5hZP0YnumrSXmaoqJGJDhmOkjWPo/5eG/UdG0bzMF+BOhfuFRS4TZUnup5y4E0wK+/lv971/mlLQTXB9yTtEvocNenuUpnyDw/Khg==,iv:EipNtD/Z9SjPh4V/gL6omhiOdouHRl4J+RMx/7hbfOA=,tag:bHQhaveS1a28leIjJ2F4EA==,type:str]", "casogei-cert-pem": "ENC[AES256_GCM,data:gTyFra2vK2ii/slGF2BxlMw8nke/vy+iMS2BITTkWZ+vP0V4Ig1F3kJezdKxAXmQkGX4tPHxmrqP/7lFQwGVYESfXKaBaYhukmtEVy7gXAKQeHIIbeIkXc8uKcQnLn7gTIb9HBfpVlDtHoQEik1mziDMpp5AxQ8h8fbsO2+F50LXOc/x6WLROJsCKREGsqp3z1PtnzA25LkxTw7GHCIPM7YAjmbCv/2JJCT5NaBP13EtRmeM6IhwpXn4mA9bjSj/c8imU3leRV2+qDMpfmro6FfQx3C07hJJU3myjqivAUdgvUjSdq8Z6RJWDt8HRakU26OBK+inAUDNFLOpsVIhYJMFXF3fgValaWdShW8M4sXK9onmUSNQyhil31hKazcmstmNj7UHAS/se19LHd+09cSzIVnJYvz2aZpdhSlmqJkSwYgzkjGSSOOfdD9SIXLDRDudnlzBcVszY1fStE+AtfLN5Ahebs83aLW2KgMQRFGEN1HG1NR1dlbEaRxDOWgqD08+DQiUosM/XKHmpwyACQgPyE5Kxbc82yFD6idd0AvcUrPN8pqbCdphLX2aTP0wo04GA37sbLEEcZzrTA7Y72iZHa/VfP1tzRxP8afHiPz9SGP5dMUdYBxy8jktNJeJ0D/dLfNNGvpKX+rLGpjp8yhEEmBB/kLf+CVy14zxNZPizGbHMfJ49P1bx2rwNhr3CTAWxbcc8nKGfcUYtu+xePwCmKZwNIs2eczDub6DJqZ7L3JaGDd7yb/1Kz1JuFyP+rlo+Qbg5Zl03VclU+XlYlYH4DYvgexI+l79/LfkdwmZhBqblxzGkpBfAXph47uk6bCDzyu+bbvbK7BycVPo9cTD6ufY9dwu7VCucXtXxBKSE19tBWGRAt7Hv5GdwlkNRvK8CsG5TeGHHBswBsfylF0Fr9ScTHySY+8tG45agYb/wmle0mi626tBbuMgyjNUvxI8nX98IUHUNign7YtdQEfE+iqzjzkLBxIIJjpw9zwpEBGypm5MKJjxhln7rbRO3C4poZFQnhWVIChuu/A2GA/wSxixPdCfZ69pGb3jeSM8tlIEwdUh+dlDQepCtugPRO9DDoCZlVMb6ImArKNvuKSahSOyJiTVabwCt/AHpXW363A9fYN2j8+bgP9Vj7AABofK9DBCNqgbwLygtOH82MyGKoQR9Lc0A0Qa0R3MiLrWy1pSBet5ba39LejEb9HLPbQRbENPusPs0BWfOZ4nAf0YlfnaGP07/xHpPHZLQvUqCVwFeGGpgAw2RXW66No9t10oFxJwpMNN50rUhYf8yJwCgDMjF6sh+VHaEhDeoMrFhrDkJyJk+yJc+szBhGEXuN69DlkWbMw4n9HPy+bmClqCD4onk8tPbIPzDYoWv3lMOHCprvQthikycxL+knb27LPndb4090m9+d0VHBKUyjy/w47jZ7k0fEBxCNqAVPtmtzLcwee5Wpd1k5q9ORNFSFl4hOxh/ZeXnm/IjCBrJSCUpdF9zAOEo3MhxKF2B0m1CgrLbUu70AB/7Fl2l5kbTGj3o0XW8gzOAvXfVzpi1SFVvgd83D7nR2r2nGKJ3+JijyOu09u38JJ/hcTWrYju/FWlN3O7epMDq0s/WvhqIX2R8fxAta9TpK6+uJc9NaYYyQQW39IFm9cNcrpEUPwzxDugCcPaurpjvo4//2DPaJYh1rKhC13An9h7P734TRqkpSnX5AMmpCAB3Wze5zW5RBVEjoaKDHDptiY7PCuNGa50cAUXjC+7lB+Ik1fA9cxaTfUcQRArqZ7ohAliBC3s9PYxtF80FYTFZuUEN1xqFeg/8Os1HisoZVsMn2BUCZWf9C5ux4BmAMQIUd5vWyDElmNmniUucwQb+PWVJAuDWUGVquLzJ5Nhim6kAw31hgGWtPU7VitGfdtSBxLUhZBX+gCr4YPZgIX/Uc6Q/GZSOy8YNnBy3Is8aNdBlZLBbHUznpuTzvnOoQIUh7VoxFCjV/4Lb69omD3DleBeNrL5RQitmUGJ370SM90yCcBjyeI+ty0tQpBAzrE0fBCW4iokbCEAfDaKzOOqW9UJhevGrEYc3xKzkof10Xjvak1Jq7zbfaLVOb0cjQaKlLu9j7lpNPCVL13/oL73tcJqwxti9u3qwjl9vg9z/N2PSeASDhheQUE2FYJgWCxie4XQWxEzlWR1FPcfSY786f8QecBIFJ1UYipujtDjI1pdGCgkKdYRwflokUeW1k+lB533xOSn3fzBnuPCiO/qLBcTMGTKuB4OxMcMONPptcFXuazWY61ehh0LCU0jw9bdlPXMvxUUYvNG/C8HxdEvkE/rD2HHuXSOHeN5TQ75ELecMPrpw8yaUQBd/JI3uwgnPosUncoVnTLzWDByEYOBpeuLubtZO/jPEzjDdqQp/8q9I9COudVer/bXPv6aG+LS/l7D/JPcT5E4oOP2wcs1FJNHZRBXBAaoOi0KJPenkug++RFfEDi13ANZl8xUXCvVIuNVyzyFmFSuoOumm7Mi1lIQlyZ0x7PI193B3Wcoq0TcyQiqi2m43GpEHdLSy5cvWrSTA0VV7r5fFm8yfozaJUedvcgx6iQZIfeLpVbHougsRlDSnqEjhjAILEisimU5YbQFwt26sUdWxaF4uO/Sd3MvwM92/QpT1f8ZlGXt69NgMkB7qP/eFsi1cMu/GKgcXSrkr8OyBUJNYKm0v9RJDf6zUY2PI/NTVLvSLMTcSQ==,iv:y3a0YZoSrBNLq/B64S8bFttVfxZTvcR8Nn3TYNESBk4=,tag:pT0H+1bvh/Nq03/ZSwGwtA==,type:str]", @@ -63,8 +64,8 @@ ], "hc_vault": null, "age": null, - "lastmodified": "2024-05-08T17:37:23Z", - "mac": "ENC[AES256_GCM,data:Upj0Ybuwz2KbLLJ20Pub7Z30vK7nFaEuiTLwd14CpnVx7+w8Lf7wVxxwvdnsxwNoG4rrb7bFPRNX1pKlVKqKr9zzDmhzrKI4Qm6kjEM63M6OhIquipykAWB7cSb9tCteL4C65qoKcjPcWweiNyly8YQHFc67SIYmHL4u32gxllQ=,iv:ivJjk+UIUDrAq1a6vsteN6bVWymllGWuCedG1lnA4hc=,tag:GsgHkk/uBglm5TzWgA4/PA==,type:str]", + "lastmodified": "2024-05-21T07:52:49Z", + "mac": "ENC[AES256_GCM,data:23cgo5k/w0o9anYtuyb5vJvo41lRLWbiEZuURe25VGVp9Kq8y2yMe2fWZOK4K6kIPbF7ksiX1rULSwwqboSmUpK742KxNBUDTS5uqGxDifvEo+8rIIHOt+W+SfS8g2S/wegKmyZ24qvItJ480vUGP1tggqoAjc0j6ytKOeUFPmE=,iv:HjWB5AnQ9HO5yTey5X0zUc7K9sv2GLwlg76E/riSJyI=,tag:WtTwKYrQz2OPP+dovOGYaw==,type:str]", "pgp": null, "unencrypted_suffix": "_unencrypted", "version": "3.8.1" diff --git a/src/domains/nodo-secret/secret/weu-prod/noedit_secret_enc.json b/src/domains/nodo-secret/secret/weu-prod/noedit_secret_enc.json index a56e41824e..218051660c 100644 --- a/src/domains/nodo-secret/secret/weu-prod/noedit_secret_enc.json +++ b/src/domains/nodo-secret/secret/weu-prod/noedit_secret_enc.json @@ -10,6 +10,7 @@ "db-re-password": "ENC[AES256_GCM,data:COaVcb1ziLeb+6iwNfZk8S4zhGwHz3mD,iv:fsitkIUqCBCnEI14uiJv0ZBE/hgw1jZsnm2HSskqE8A=,tag:lPYJhyL3JRkkKs6rVYAaUQ==,type:str]", "db-wfesp-password": "ENC[AES256_GCM,data:qZqY/F3yINLfswrlx1hnbKVFAQlzPV4=,iv:ItkOkK8SCEkh9rYYD/3a54lJvp5Y8pk3/Gb7FI2BqjI=,tag:ieUz5AYQkZyP8WlU3g16Pg==,type:str]", "db-web-bo-password": "ENC[AES256_GCM,data:ziNo0VbpMIPLdbQiF+2fEVWBXMl/u3UZFg==,iv:jZqG2Q5nAYBciRJJJN2NANdhPyvHiXzo8uTxmbwliI4=,tag:y5dKLhXtErWI30GomzDqRw==,type:str]", + "db-partition-password": "ENC[AES256_GCM,data:CwaJkLKLfhWEwwCRqnwEy7IJAW/etAwF3Q==,iv:OC9sCbWi0g+VkkfUd1sM+6qXD0OO0RbGLsPwta2NS9M=,tag:0hjzweOvVVX3UR8ZpuUg7A==,type:str]", "casogei-cert-pem": "ENC[AES256_GCM,data:aYSKJSLNyxDFRIr2gMleVCZSQh1QynPN9g1tjXV67boMMGg+1juC47mx0N77lzsRkKzmb5SufMsQAmW5LxIpALt+CY6kFO7wbHKqcHkoGdMqS9qL4nqfCsRVEHn2y6AkV/EPZnVzf6sTkGfvpMZY8f6DrOtkFQIteUt7bw6dfdlt7buXkpaTAahwSKKnex8yYxPK4NKQCb9lvddyf/PTTffqRtxn9FJ9TVJgqfiDOFG3IKZXaeaeDUUOXrXvJWtdXAQXzKBg8I5uGw5/pLhkf93q/0zHNTt9wj/TPXEs4/1VhnSKah7XeY/scbAyGnCiA+LiTuXWxW7cxOEtir4vR2MXzY8KgRrdUmqSgHzD+FP5gJhhMkf/jf9GCJb+o2XA1l5SxcahH1mb52RpWbJ85hjEuTQv+vTUpwEVeBiwHagobVwT2QVZ1dh8UPB8H2Bz0BBgvoNgmstqL8rDgFp4XKFn5R8VkXL6jSYbbqz8yN0ElVaq/sQ+UW5h/n5aIMn0tPsY5PtdPC9nODSWNsbObkqPtbqkhjkCquNDcymxFjGYdemK8LMZ3xJ4UEZrD/etMo0stK1+1L/R0MvFI6g+ZQjKdrXwKFpJimohkkC+qIYJPdpOFpLLY+V2hjXW/+5kO4/Wh13hL6xCB5Umq686mZj+1/7yGW2rQoNxY9o4c5HarUTzS6WUhqS3bjCMBgd8YGixd/OodfPo45nfvrCMypeCAodacaBWQSxvuv+b0i39QxYkKu9KHxZ4q35+Nz1M0ucqjGMs3qj0FBQ/gR/31ec0eyXyT6lW2gKziywmZlZmC0g60P0JZC3y3Hed5S9C74dG5nDAZSWUTW2DoasUEfCvIOjYfCHnUto82KRMXb9FF69r8BwEs0KfS6hnJEtnYGzdEr6dAWgNLvhZp8dN2uTPDM4dTrlb1AqdUjkQYTDcqU95fyOP2oiFOZe72OqQvAzNTj5N0F9M8/RIBJgz6wwjY5B3bfpzo+KoVJU++k86/m9irsV/2BLnyXUg0jABBYcAwSekTkLNXg3QKOYazmgdGcgUbC1UFQN2qbxflsmQEu2KejUdqbxvfStYzWnLntAaYUDVubY0wxrAx8mbXaPbKiq82tStSPGCAWUgllx3fbSpmQjVeu+xCx3/FsecWDIl7mzC22aCR0MAgKRz889w8NuqpsEAe7D6gJYNLmeeoD5636ToIh67cewuiqhQIphMCHrT6aobN7tvc6jKnFfMKKM5npSYjZ3JfG90k+ZiJbPxOrGE0DK7HmSldkTMB8ilhR9bH4w3AneTkQVbmb42/lUpM9RJfLC0Ru/4BvHPNz317K8aKfkv3NF8nybtN3z4dx4t+oTVJ317SChwEPCI4p2tNHpgwTUMr5LRTSGAr+I01z3HfMm/dC4Ia2JkZdRObkfZFDQttrV1KJizO+LNhVSP9w2c5JGoy1LmzVw2GLXtw37PH3/HNcQC2knhuQP1bcdHbp2MiEDNuv0ILviAI7t2kzkLqUG7qwKreaZvmQ9UOVpiUv94qjVzmuZJ6oFVDVJYjQJPqOGMA5ny62M/k9S9a+0ePe/ktp7JIcizDI0g8od7vSMVj0bV3y0WmJIrN1LuujiKgK9cSss79LfmRUmmYIdjSuD7yKr7iroPs5rQW09OHakJvodo/Tzoy3meOkHwjTNmLN4N3g6J3PqdlxuZYNouqrSY9/BEFd38urJsfdpaqO6BKaAdkWjt30oHoQYxb6OyvhKDtE18cUIphpra4XA5RsxHkjkBZJtgBu3dOuwoKyMaq3jGUvVKNbxjTiuSETnahKb2hQS8oLJKt12M0lUR4vRMBZpNw1fd6Lzz8Hg8v/mLgG4bTfaTn+57saYdf3CyvRwHHAsNuCYFC/GcQgan+C47bkEcZSdxxeZalZYPXUdYklqfXs4yfL26MX2pksMmzC+RW4kjGVuRixdvijKM7VhyTNTw3puRY8CnUd1y+hNYiITWotkuhNNpqDnmjQU+SZ3MlAfZwCAqbQ5U80oO0aAzHQgaK6Wd6J6RZ6KtcXnxwalGEt1m57cqhjD5guFOVnIyHrO2gCv4FRH8NsCK13ZaNW5vnfo0k5nALSbfFyRVOWtwS1jJqdhhSow9SIXRSMOf2tkzj7AvMA/PED8qmdb8ShKgWXzr8HSQFu4J4iHdzyEdC/0v907cEDtzqGwhZ/xmaRdQKuu0aiqo8auxOvR02hJuQqGRQBZbpxBNKAN7UF4Zggn6kNyOG51dVCFJXRw0+TT+LHxLNlm6iIS9PWkbjQEFmWbYoJpEjM3uNsDndnUCxIk3WPkreMuEu147gVqVtfP7HELKDL4ROYCxxQ5LTVbG3PHHH8QrxmKwZKp8sS8ynTFw8HNIpH/xZsXl8SLoIfViAfwnd29Qu/uPeL4gr2tKYPzn840iX5DJg3fO93J52vH2GeItyvoWr/HlRMVJUNczAcfbRUZJBO+226afrv8D4duuSA1075hgDR4EQb0rBlRDhFWZWYSLKMXW6mu48L9uGHsVb8NAiykMS60fZOaC2qWDKk1Y1V0u1AAPPb1T6C1bAuriCFyxyXV6OHuMiDO2NJT2W6PO241n4bL+D+cuzoYdR/XAQkuyfQ5OUQkcAi7bcG/nWlUHgWwfifNV7anCz8Qo+ULZgor475cmsjIicHMXeM4yeD2vIi+3gLatgU8V64BBbripCXp93KH0d2mZktSmecz1/gROfw==,iv:ThZLEIBChu7VGAZHDGTtxcQUtHDhF74bR+3mHyOOalQ=,tag:JRhofKhu+/UY687sOVYvWQ==,type:str]", "azurestorageaccountkey": "ENC[AES256_GCM,data:+JgkDIgCiaAKjN7NZxxZa2TwQhLC3Mg3iM4fpor9YG8RkFOsNXBO5z6QwpGEXjheaXW9kkUhc0UNQKxFANGW+CiQzhyUWFtHKskMupCo8QjgMv0P6oqwFQ==,iv:vaEQNauWu/bBOng5js/fWNTt9gR+WjFFKNLXNMLByRQ=,tag:xa5LE/mMS8Uu5t0qmEqV5Q==,type:str]", "db-administrator-login-password": "ENC[AES256_GCM,data:frbVueLYB+TPx3x+LjYJ2KTua9j2PSg=,iv:so06rv9VZKUwfQoWF+eykx8v62p0GccRGs1wcRbgVLQ=,tag:fswC+0h3hvZKT8uSy5wdbA==,type:str]", @@ -61,10 +62,10 @@ ], "hc_vault": null, "age": null, - "lastmodified": "2024-05-15T09:25:04Z", - "mac": "ENC[AES256_GCM,data:rdSxSztRLry40OoXui6JJJ/09W39uvxYFdUabCbLfDeO+6Tj7Pmk7PsQLG4cvdhZrGUkVSxiIN9gMyUt9aMeVmI8EqMPoHoFk12vylycnH/avedLOMOCrmcpP/2FCQWjS8pECUiW7+4pZRpZWpsNbOsUxIVWikYDfhvTPUN/C/Y=,iv:zTz04A72Dz6SqqAts04/bTIrYPDNUeNnp5hYNy7847w=,tag:0DpcYZUGTyCX54oJP3jQNA==,type:str]", + "lastmodified": "2024-05-21T07:59:11Z", + "mac": "ENC[AES256_GCM,data:VTGFLws/j4PaGB9e+rfIfDftW5HYxtWUo6t8R/cbhLnhepQIdQnXHqb8N8tCIDYmqGNcXMeFbI7D8obAqCQFAe7v9YTsl8CHAI8afIguVP4yGp+i9w4MoksktAWVZy+/pw5NuzK0OXY+ZKfHYVPrhh8jqFpcnZ3QDamoBM/UE2s=,iv:oLgKxn6WVFhsNSpM6Yfv1ewOgI5dDfvhvy9R3oYItE8=,tag:tXoDCAKCGHIf9YmbgDRKWw==,type:str]", "pgp": null, "unencrypted_suffix": "_unencrypted", "version": "3.7.3" } -} \ No newline at end of file +} diff --git a/src/domains/nodo-secret/secret/weu-uat/noedit_secret_enc.json b/src/domains/nodo-secret/secret/weu-uat/noedit_secret_enc.json index f28bee4029..deef88e166 100644 --- a/src/domains/nodo-secret/secret/weu-uat/noedit_secret_enc.json +++ b/src/domains/nodo-secret/secret/weu-uat/noedit_secret_enc.json @@ -9,6 +9,7 @@ "db-offline-password": "ENC[AES256_GCM,data:Y9Jke8S2jgg=,iv:rPnGjtP1dXQELJjGl4Q9P4KsgrqcqMwaqr/61xeYwZQ=,tag:eQpWYlNRayeJV+D07YEidg==,type:str]", "db-re-password": "ENC[AES256_GCM,data:MfSEKgIUhzg=,iv:Y3z2TeYweIpA5gdi4nPYS3dUxGWGtvdIKnJdggtBfpM=,tag:51RxBOS4zclxyFPQyulLMg==,type:str]", "db-wfesp-password": "ENC[AES256_GCM,data:L2uww9moOK4=,iv:qP3SpCMgGNPP+EeKwKLQQVMczMnGY4Saw25QoDPnhGU=,tag:s7UrfqPihe+Rp5SX0vzb3w==,type:str]", + "db-partition-password": "ENC[AES256_GCM,data:x54E4vRudDQ=,iv:+8YoGAYjG8Dt0z3kdYWXZNvb80eIxKvTNyICd78oNkE=,tag:0ce4ek4gnGKz1oinJhtPXw==,type:str]", "oracle-db-cfg-password": "ENC[AES256_GCM,data:hQAOm7GfzTVf,iv:0TyeS/+P1N5uEd8GSueTixCPz0aY/4DXJ5ZwPUHUGcA=,tag:wygWdRLqLYxy0wYo36SCfA==,type:str]", "casogei-cert-pem": "ENC[AES256_GCM,data:ZGWn9k6LdXpV5DnuKQ6yet/Jb084/w9/6elnb0XuEo/aGsW7B1ED8mC/glouYKFAfoiCT1JETynVhLaBxYvYWR7nLPah7FToqvRErVKBFcXNm3SyinaxwiYIMx7ISokHK9vG0OuctBK/tK2r82fP/nEfqTnZw6ej1dpMfxNacNKb9oyC5ohqf27FlaYG5VNgYkd+vdJDsrVE6IAsyca8egJuc+FY/NWq0RfvOkHRIdE/V3rkptpKqsUKaUFqQZ5vK2M0s5sKun9FdpP7Xf0gQvM94YH1+nteQlsKwCSdnTMwYhoRgkkSkbwoiQQEGLItXp1aZ2alyyTxONlJAaFLmbzdAvh2uDCWniAqkVjr3YKYL19YM9kaMNoS+Jm2Qsl4YaB7G7cAgAOXAPWi1Rsozkdx1vFQCyQOAlr6u8/uz8KlXhcBtuRFavHVw+7YHvyWaRyFKVtjdhjdoheQ5C8p3aTN+/U4r9y4iTnzPLUqJzltNRp0u6c3hxQ4ZLijpS6Cq7Vf74W3AD4hBSxgo4z10quQwmCws/Ip05GFeNnZ8fHyf+wflj2Z/eHls/XHN/aBgsyg7qxoA4n9nM52nNQ0ZyATtaUFciZmvo5jfiqSHysZXEapXYuA4dwbKIZ7jhV4RCeztdXvkjnU0WkC05MkVT9RJLY6mrcGpSiG1/OPN29BfR7mXAb9OPpLw39Hyh7ER7SJKoU9EfWKULlMTIA+672xblU42pu2GzYYeJuQvexCSVoCsUJHfYF5WNrWVnDi3wk2sbpzgiNUOinLhMYtOPqb9N2felqdREjTfommF0nDrMD0rFf+RkeNRbkltt5zLiG+2f6YikZhOACwv9oErIs1R60qZ3r98BuuSYnxqqF1ZsC4TgOcgkcxGNUc52+JUKKRiPb1UlslDH/ij3FVStEWipgaAkRxNgr2qSboIlLt1IEMNQn7lF2P/cmYYQBhPnt+ZhIRM+Tuc7f0X+pMaXPUuPQd318vQ8uFSIcbFr2uQsmW1foGBE9Zw8rMMGsWCr7JvcXFNZ8qCkHIlNy8TA1w9B4P/GuaUzx2KWZt0jsyhpYgJl9ehiF4lMIkKk7xpjehzR0Lc2mVypYOvUgCE54bGM+GNiWe55X5jXUrAYnA23c4AEQFeP91j8g7rmwbwQ1jZmWqrPc5UEuLdXguk5YFXmKSn3YQlKDTazX8FMYpzugqSu73T+AGyCOqQwFLPF0oaXkigjRkZuNJPYIRdk2u3WIdqmhTUihkyISYk9kuDl5n9ArgEXxW7VS47HOj1MR1FK8VR+XMps7GKCVE7BhAksBewcpKlGJ3T0p9GeDBQZrte34KkIecqKZkI7XjS0CYmTnMmmidBoIOJjRRFLbMvubh4eEyQCNeN+foqc9fEE20HF4YvfeWssB4nFkRNeQUVhM7Yya13ySKoaXGBfJuuNQuowM9GSBfsh+rkJ1tn8LkoO7UeJ0mAlCMlXoJOUKmmQEE8De3sCgseizX5fdVQR0CAyfueNEBWShelkRCwjsvYM8e24Oe+sMd72gGzP1x64GVWy5ibBFeKEPgc6M++9H9qXvnOsp44lFUd6v0Elb9abXkL9m1ZvafYoxlRIhQb6lP7WnhQTYR+QoRTGdKGRySctYtRoOxyyFkRJ0zthKRoRrE7s/4VhXDj3tmP0q0EAGVg+3P6l853oATlrwl4tJwSc0lIqD+qTXzUQog3/Ie7MXxKTWR3T6ff0X1G25oWAmm1gtcOV1+aStPHE9LqxWsvnma7FRgdnRzLhrSxraOLW8NKqTPP+afyN1RIN57iPyIYBDPi+67WubSkNZpcKf3HpkfTBmNQcSNYpT0JSJEfzetOfRZwRkxXnD9b8hufKUyhA5v36aHvEM9xwioEWJHQ7iEY10KX3ukwxynQ+Muu1RxCyhKH8LzAp88DiDEAABYhf8zLb0mAsJGhTTAYQzO2/iGTnMU+tiZjt4+BR/qnFWWZn73JOrt191Ea/N1NNv8C+oLqrq/NWzJy/NWubGF0DjkDn+vrtbpo6rs7Xs58cyVzArHhOuCYR7+cUCJRKmzs1tXPVccEaZ447c79BRrPWkcqyg1WGROrY1W+THxeJOs9Krr5ohTMp84wkYbB0SYSU+HQj8sgT94xzu939orJnFwmDDJUBlOSHcqjNkLxncHxEYREu3N8Cmvd3CRSUtaU025ElvodvFc9YW94uf0XhEl3I+c4/aN18kFDNkB3cdbsSzyBednmetpBM6jN/cFRdFa7AMeEKnCHNeu9aGaECybhSD2a1gjL/ROWZEVaKLsy180k2lUz74ANUyVkPZx9bDezS79pH6TYJOCvIwBYSAScLApnZFuX1tGMBf0LKHuRQseWiDOsbWhLONHAqeIX5RJixZQ8bNTMIsoqSqkspqLZ4f7F5IcwlBhucLdj4fcPznq/J7e2xTmG3waU4kQ8zUzOoE13agUZA3rJCYvdDRfbguxH08AR4kwKWcNVlaDAgJo0FvGBtKSSUZQ5ENqYQOeXGbAJJkJaQ1feP/6YcJw1EfeNUAE3rFU50ghzJt2p3DtiAQZvvpMTS2XBiopGBSAPb05U7WISGOVs/WS+tc/4uK6t3qFH3WXO44szeAfULFC7ySVNRk7evHZxawzkS3wf0T6+2aszqXJPVkQkyXxdap7SL9HAtdZy8b3PcUIzFiORBsJjb3lR+6SsP3yRbgkTa9hZ6EWgxudpDJ9XOVydg==,iv:oukN1Lx7Rsk3598yrCDNGmMkSL8YcHrxlCasTZBFpxc=,tag:K4uFVXxGaE0EldoElP5D1g==,type:str]", "azurestorageaccountkey": "ENC[AES256_GCM,data:kwc61kJ4y2tlpU3DQSDrekcns7olSR6CofoM8TE1dzAEI8nBCsrAK07UAez4gbDP7ubloYTgTrxblhUXboRhOF/ABMecWE5pCmgqHacRUjVN1TCBFpcdKw==,iv:WZIm8P4Px5dT8jQ6z/Rz8xF+3QKSHChpXpflyrG/tuY=,tag:jlm0z1wQr9kFOG+bboQ3Fw==,type:str]", @@ -63,8 +64,8 @@ ], "hc_vault": null, "age": null, - "lastmodified": "2024-05-08T17:40:31Z", - "mac": "ENC[AES256_GCM,data:y9VgJK2RlQBx2IC5LwKNZi40+bDzj8qcmrIUGKMY+zGYJk9zuuSy1t4tSoRdft/Vl2+gRq5QHmE6hZpavEOv6FGDq+mb328R2/tOAklppKlPfv8Ait26/c3Jd7F0/UwNaHwUnRRr7cIERbxLVRQzpPNuBSrb6yR4Ml/QC0VocpY=,iv:Ofa+1YZnDO/u4L8MaipvmX6Ent2T7Qk2YjtMMi33ggo=,tag:MT3Fj8SN0vKsdGo7iZW5hg==,type:str]", + "lastmodified": "2024-05-21T07:57:18Z", + "mac": "ENC[AES256_GCM,data:j3ra3zv0P5cy0JVKWsw59fsj/tmfjezMxIUO5vwFxywdxGvbLa9+yQZdlZwXWa6N5BbKA9kPfANGvIb9235+zbPZRvtnZMfTUk84u6Vq8DS64NIUefTC3qW0ghy7v4SJ2ZBLQt0E8qJtGhpujNbas/RLkbZhSR5dCkuY3Cs7N3w=,iv:+LsdeuBPMkXzfRhPkp6Guy602gTfVrVij/wFjJeeiFE=,tag:SmWWehk12+D5I8vSbU42nQ==,type:str]", "pgp": null, "unencrypted_suffix": "_unencrypted", "version": "3.8.0" diff --git a/src/domains/observability/02_security.tf b/src/domains/observability/02_security.tf new file mode 100644 index 0000000000..aaf6dc53b7 --- /dev/null +++ b/src/domains/observability/02_security.tf @@ -0,0 +1,4 @@ +data "azurerm_key_vault" "kv" { + name = "${local.product}-shared-kv" + resource_group_name = "${local.product}-shared-sec-rg" +} diff --git a/src/domains/observability/05_app_forwarder.tf b/src/domains/observability/05_app_forwarder.tf index 404d41777b..531b100dda 100644 --- a/src/domains/observability/05_app_forwarder.tf +++ b/src/domains/observability/05_app_forwarder.tf @@ -28,8 +28,8 @@ locals { JAVA_OPTS = "-Djavax.net.debug=ssl:handshake" // mTLS debug # Cert configuration - CERTIFICATE_CRT = data.azurerm_key_vault_secret.certificate_crt_app_forwarder[0].value - CERTIFICATE_KEY = data.azurerm_key_vault_secret.certificate_key_app_forwarder[0].value + CERTIFICATE_CRT = var.app_forwarder_enabled ? data.azurerm_key_vault_secret.certificate_crt_app_forwarder[0].value : "" + CERTIFICATE_KEY = var.app_forwarder_enabled ? data.azurerm_key_vault_secret.certificate_key_app_forwarder[0].value : "" WEBSITES_ENABLE_APP_SERVICE_STORAGE = false WEBSITES_PORT = 8080 diff --git a/src/domains/observability/06_apim_app_forwarder.tf b/src/domains/observability/06_apim_app_forwarder.tf new file mode 100644 index 0000000000..c361a66e2d --- /dev/null +++ b/src/domains/observability/06_apim_app_forwarder.tf @@ -0,0 +1,107 @@ +############## +## Products ## +############## + +locals { + apim_app_forwarder_api = { + display_name = "pagoPA App Forwarder API" + description = "pagoPA App Forwarder API" + path = "pagopa-app-forwarder/api" + subscription_required = true + service_url = null + } +} + +module "apim_app_forwarder_product" { + count = var.app_forwarder_enabled ? 1 : 0 + + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v6.4.1" + + product_id = "product-app-forwarder" + display_name = "Product ${local.apim_app_forwarder_api.display_name}" + description = "Product ${local.apim_app_forwarder_api.description}" + + resource_group_name = local.pagopa_apim_rg + api_management_name = local.pagopa_apim_name + + published = true + subscription_required = true + approval_required = true + subscriptions_limit = 100 + + policy_xml = file("./api_product/app_forwarder_api/_base_policy.xml") +} + +resource "azurerm_api_management_api_version_set" "app_forwarder_api" { + count = var.app_forwarder_enabled ? 1 : 0 + + name = "${var.env_short}-app-forwarder-api" + api_management_name = local.pagopa_apim_name + resource_group_name = local.pagopa_apim_rg + display_name = local.apim_app_forwarder_api.display_name + versioning_scheme = "Segment" +} + +module "apim_app_forwarder_api" { + count = var.app_forwarder_enabled ? 1 : 0 + + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_api?ref=v6.4.1" + + name = "${var.env_short}-app-forwarder-api" + api_management_name = local.pagopa_apim_name + resource_group_name = local.pagopa_apim_rg + product_ids = [module.apim_app_forwarder_product[0].product_id] + subscription_required = true + + version_set_id = azurerm_api_management_api_version_set.app_forwarder_api[0].id + api_version = "v1" + + display_name = local.apim_app_forwarder_api.display_name + description = local.apim_app_forwarder_api.description + + path = local.apim_app_forwarder_api.path + protocols = ["https"] + + service_url = "https://${module.app_forwarder_app_service[0].default_site_hostname}" + + content_format = "openapi" + content_value = templatefile("./api/app_forwarder_api/v1/_openapi.json.tpl", { + host = local.apim_hostname + }) + + xml_content = templatefile("./api/app_forwarder_api/v1/_base_policy.xml", { + app_forwarder_host_path = "https://${module.app_forwarder_app_service[0].default_site_hostname}" + }) + + depends_on = [ + module.app_forwarder_app_service + ] + +} + + +# ApiKey section +resource "azurerm_api_management_subscription" "apim_app_forwarder_subkey" { + count = var.app_forwarder_enabled ? 1 : 0 + + api_management_name = local.pagopa_apim_name + resource_group_name = local.pagopa_apim_rg + + product_id = module.apim_app_forwarder_product[0].id + display_name = "SMO ${local.apim_app_forwarder_api.display_name}" + allow_tracing = false + state = "active" +} + +resource "azurerm_key_vault_secret" "apim_app_forwarder_subscription_key" { + count = var.app_forwarder_enabled ? 1 : 0 + + depends_on = [azurerm_api_management_subscription.apim_app_forwarder_subkey] + name = format("smo-%s-appforwarder-subscription-key", var.env_short) + value = azurerm_api_management_subscription.apim_app_forwarder_subkey[0].primary_key + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.kv.id +} + + diff --git a/src/domains/observability/99_locals.tf b/src/domains/observability/99_locals.tf index 4bf8a737e0..2ddb6bcefa 100644 --- a/src/domains/observability/99_locals.tf +++ b/src/domains/observability/99_locals.tf @@ -3,6 +3,11 @@ locals { project_legacy = "${var.prefix}-${var.env_short}" product = "${var.prefix}-${var.env_short}" + apim_hostname = "api.${var.apim_dns_zone_prefix}.${var.external_domain}" + + pagopa_apim_name = "${local.product}-apim" + pagopa_apim_rg = "${local.product}-api-rg" + pagopa_apim_snet = "${local.product}-apim-snet" # app_insights_ips_west_europe = [ # "51.144.56.96/28", diff --git a/src/domains/observability/99_variables.tf b/src/domains/observability/99_variables.tf index 3eb91d08b3..56ef5b67e0 100644 --- a/src/domains/observability/99_variables.tf +++ b/src/domains/observability/99_variables.tf @@ -109,4 +109,16 @@ variable "app_forwarder_enabled" { type = bool description = "Enable app_forwarder" default = false +} + +variable "external_domain" { + type = string + default = null + description = "Domain for delegation" +} + +variable "apim_dns_zone_prefix" { + type = string + default = null + description = "The dns subdomain for apim." } \ No newline at end of file diff --git a/src/domains/observability/README.md b/src/domains/observability/README.md index 346a2bf90c..fd2c439abc 100644 --- a/src/domains/observability/README.md +++ b/src/domains/observability/README.md @@ -14,6 +14,8 @@ | Name | Source | Version | |------|--------|---------| +| [apim\_app\_forwarder\_api](#module\_apim\_app\_forwarder\_api) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_api | v6.4.1 | +| [apim\_app\_forwarder\_product](#module\_apim\_app\_forwarder\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v6.4.1 | | [app\_forwarder\_app\_service](#module\_app\_forwarder\_app\_service) | git::https://github.com/pagopa/terraform-azurerm-v3.git//app_service | v8.12.2 | | [app\_forwarder\_slot\_staging](#module\_app\_forwarder\_slot\_staging) | git::https://github.com/pagopa/terraform-azurerm-v3.git//app_service_slot | v8.12.2 | @@ -21,6 +23,8 @@ | Name | Type | |------|------| +| [azurerm_api_management_api_version_set.app_forwarder_api](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/api_management_api_version_set) | resource | +| [azurerm_api_management_subscription.apim_app_forwarder_subkey](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/api_management_subscription) | resource | | [azurerm_data_factory_custom_dataset.qi_datasets](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_custom_dataset) | resource | | [azurerm_data_factory_custom_dataset.qi_datasets_cosmos](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_custom_dataset) | resource | | [azurerm_data_factory_linked_service_cosmosdb.cosmos_biz](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_linked_service_cosmosdb) | resource | @@ -54,6 +58,7 @@ | [azurerm_data_factory_trigger_schedule.Trigger_PDND_KPI_TPNP](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_trigger_schedule) | resource | | [azurerm_data_factory_trigger_schedule.Trigger_PDND_KPI_WAFDR](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_trigger_schedule) | resource | | [azurerm_data_factory_trigger_schedule.Trigger_PDND_KPI_WPNFDR](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/data_factory_trigger_schedule) | resource | +| [azurerm_key_vault_secret.apim_app_forwarder_subscription_key](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.certificate_crt_app_forwarder_s](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.certificate_key_app_forwarder_s](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/key_vault_secret) | resource | | [azurerm_kusto_cluster.data_explorer_cluster](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/resources/kusto_cluster) | resource | @@ -66,6 +71,7 @@ | [azurerm_data_factory.qi_data_factory](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/data_factory) | data source | | [azurerm_data_factory.qi_data_factory_cosmos](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/data_factory) | data source | | [azurerm_eventhub.pagopa-evh-ns03_nodo-dei-pagamenti-re_nodo-dei-pagamenti-re](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/eventhub) | data source | +| [azurerm_key_vault.kv](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/key_vault) | data source | | [azurerm_key_vault.kv_shared](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/key_vault) | data source | | [azurerm_key_vault_secret.certificate_crt_app_forwarder](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/key_vault_secret) | data source | | [azurerm_key_vault_secret.certificate_key_app_forwarder](https://registry.terraform.io/providers/hashicorp/azurerm/3.53.0/docs/data-sources/key_vault_secret) | data source | @@ -79,6 +85,7 @@ | Name | Description | Type | Default | Required | |------|-------------|------|---------|:--------:| +| [apim\_dns\_zone\_prefix](#input\_apim\_dns\_zone\_prefix) | The dns subdomain for apim. | `string` | `null` | no | | [app\_forwarder\_enabled](#input\_app\_forwarder\_enabled) | Enable app\_forwarder | `bool` | `false` | no | | [dexp\_db](#input\_dexp\_db) | n/a |
object({
enable = bool
hot_cache_period = string
soft_delete_period = string
})
| n/a | yes | | [dexp\_params](#input\_dexp\_params) | n/a |
object({
enabled = bool
sku = object({
name = string
capacity = number
})
autoscale = object({
enabled = bool
min_instances = number
max_instances = number
})
public_network_access_enabled = bool
double_encryption_enabled = bool
disk_encryption_enabled = bool
purge_enabled = bool
})
| n/a | yes | @@ -86,6 +93,7 @@ | [domain](#input\_domain) | n/a | `string` | n/a | yes | | [env](#input\_env) | n/a | `string` | n/a | yes | | [env\_short](#input\_env\_short) | n/a | `string` | n/a | yes | +| [external\_domain](#input\_external\_domain) | Domain for delegation | `string` | `null` | no | | [instance](#input\_instance) | One of beta, prod01, prod02 | `string` | n/a | yes | | [location](#input\_location) | One of westeurope, northeurope | `string` | n/a | yes | | [location\_short](#input\_location\_short) | One of wue, neu | `string` | n/a | yes | diff --git a/src/domains/observability/api/app_forwarder_api/v1/_base_policy.xml b/src/domains/observability/api/app_forwarder_api/v1/_base_policy.xml new file mode 100644 index 0000000000..b748690ed2 --- /dev/null +++ b/src/domains/observability/api/app_forwarder_api/v1/_base_policy.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + diff --git a/src/domains/observability/api/app_forwarder_api/v1/_openapi.json.tpl b/src/domains/observability/api/app_forwarder_api/v1/_openapi.json.tpl new file mode 100644 index 0000000000..35489e6bfc --- /dev/null +++ b/src/domains/observability/api/app_forwarder_api/v1/_openapi.json.tpl @@ -0,0 +1,124 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Node Forwarder", + "description": "API to forward Node requests to the related CIs and PSPs", + "termsOfService": "https://www.pagopa.gov.it/", + "version": "0.0.1-1" + }, + "servers": [ + { + "url": "http://localhost:8080", + "description": "Generated server url" + } + ], + "tags": [ + { + "name": "Actuator", + "description": "Monitor and interact", + "externalDocs": { + "description": "Spring Boot Actuator Web API Documentation", + "url": "https://docs.spring.io/spring-boot/docs/current/actuator-api/html/" + } + } + ], + "paths": { + "/forward": { + "post": { + "tags": [ + "Proxy" + ], + "operationId": "forward", + "parameters": [ + { + "name": "X-Host-Url", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "X-Host-Port", + "in": "header", + "required": true, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "X-Host-Path", + "in": "header", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": { + "X-Request-Id": { + "description": "This header identifies the call", + "schema": { + "type": "string" + } + } + }, + "content": { + "*/*": { + "schema": { + "type": "string" + } + } + } + } + } + }, + "parameters": [ + { + "name": "X-Request-Id", + "in": "header", + "description": "This header identifies the call, if not passed it is self-generated. This ID is returned in the response.", + "schema": { + "type": "string" + } + } + ] + } + }, + "components": { + "schemas": { + "Link": { + "type": "object", + "properties": { + "href": { + "type": "string" + }, + "templated": { + "type": "boolean" + } + } + } + }, + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "The API key to access this function app.", + "name": "Ocp-Apim-Subscription-Key", + "in": "header" + } + } + } +} diff --git a/src/domains/observability/api_product/app_forwarder_api/_base_policy.xml b/src/domains/observability/api_product/app_forwarder_api/_base_policy.xml new file mode 100644 index 0000000000..ce1df461e7 --- /dev/null +++ b/src/domains/observability/api_product/app_forwarder_api/_base_policy.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + diff --git a/src/domains/observability/datafactory/datasets/KPI_TNSPO.json b/src/domains/observability/datafactory/datasets/KPI_TNSPO.json index 837558023a..a371e60b98 100644 --- a/src/domains/observability/datafactory/datasets/KPI_TNSPO.json +++ b/src/domains/observability/datafactory/datasets/KPI_TNSPO.json @@ -44,7 +44,7 @@ "type": "long" }, { - "name": "OUTCOME", + "name": "OUTCOME_SPO_REQ", "type": "string" }, { @@ -54,5 +54,25 @@ { "name": "pipelineRunID", "type": "string" + }, + { + "name": "NODE_METHOD", + "type": "string" + }, + { + "name": "PSP_METHOD", + "type": "string" + }, + { + "name": "OUTCOME_PSP_RESP", + "type": "string" + }, + { + "name": "FAULT_CODE_PSP", + "type": "string" + }, + { + "name": "FAULT_CODE_SPO", + "type": "string" } ] \ No newline at end of file diff --git a/src/domains/observability/datafactory/pipelines/KPI_TNSPO.json b/src/domains/observability/datafactory/pipelines/KPI_TNSPO.json index ee4bcbb130..68b40f6e6e 100644 --- a/src/domains/observability/datafactory/pipelines/KPI_TNSPO.json +++ b/src/domains/observability/datafactory/pipelines/KPI_TNSPO.json @@ -1,416 +1,434 @@ { - "name":"Copy of data for KPI", - "type":"Copy", - "dependsOn":[ - { - "activity":"Configure count_record variable", - "dependencyConditions":[ - "Completed" - ] - } + "name": "Copy of data for KPI", + "type": "Copy", + "dependsOn": [ + { + "activity": "Configure count_record variable", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "timeout":"0.12:00:00", - "retry":0, - "retryIntervalInSeconds":30, - "secureOutput":false, - "secureInput":false + "policy": { + "timeout": "0.12:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "source":{ - "type":"AzureDataExplorerSource", - "additionalColumns":[ - { - "name":"pipelineRunID", - "value":{ - "value":"@variables('run_id')", - "type":"Expression" + "userProperties": [], + "typeProperties": { + "source": { + "type": "AzureDataExplorerSource", + "additionalColumns": [ + { + "name": "pipelineRunID", + "value": { + "value": "@variables('run_id')", + "type": "Expression" + } } - } - ], - "query":{ - "value":"let trigger_start=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add('minute', -15, trigger_start);\nlet end=datetime_add('minute', 10, start);\nlet end_sp=datetime_add('minute', 15, start);\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_sp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\npspNP\n| join kind=leftouter SPO on idDominio, iuv, paymentToken\n| extend diff_time_in_ms = datetime_diff(\"millisecond\", insertedTimestamp1, insertedTimestamp)\n| project-rename REQUEST_PSPNOTIFY=insertedTimestamp, REQUEST_SPO=insertedTimestamp1\n| extend NO_RESPONSE=case(isempty(REQUEST_SPO), true, false)\n| extend ID_BROKER_PSP=split(canale, \"_\", 0)[0]\n| extend ID_BROKER_PA=split(stazione, \"_\", 0)[0]\n| project REQUEST_PSPNOTIFY, REQUEST_SPO, ID_DOMINIO=idDominio, IUV=iuv, TOKEN=paymentToken, DIFF_TIME_IN_MS=diff_time_in_ms, PSP=psp, OUTCOME=outcome, STAZIONE=stazione, CANALE=canale, ID_BROKER_PSP, ID_BROKER_PA, NO_RESPONSE, NODE_METHOD, PSP_METHOD", - "type":"Expression" - }, - "queryTimeout":"00:10:00", - "noTruncation":false - }, - "sink":{ - "type":"AzureDataExplorerSink", - "ingestionMappingName":"" - }, - "enableStaging":false, - "validateDataConsistency":true, - "translator":{ - "type":"TabularTranslator", - "mappings":[ - { - "source":{ - "name":"REQUEST_PSPNOTIFY", - "type":"DateTime", - "physicalType":"datetime" + ], + "query": { + "value": "let trigger_start=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add('minute', -15, trigger_start);\nlet end=datetime_add('minute', 10, start);\nlet end_sp=datetime_add('minute', 15, start);\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend fault_code_psp = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento, OUTCOME_PSP_RESP=outcome, FAULT_CODE_PSP=fault_code_psp;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_sp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend fault_code_spo = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento, FAULT_CODE_SPO=fault_code_spo;\npspNP\n| join kind=leftouter SPO on paymentToken\n| extend diff_time_in_ms = datetime_diff(\"millisecond\", insertedTimestamp1, insertedTimestamp)\n| project-rename REQUEST_PSPNOTIFY=insertedTimestamp, REQUEST_SPO=insertedTimestamp1\n| extend NO_RESPONSE=case(isempty(REQUEST_SPO), true, false)\n| extend ID_BROKER_PSP=split(canale, \"_\", 0)[0]\n| extend ID_BROKER_PA=split(stazione, \"_\", 0)[0]\n| project REQUEST_PSPNOTIFY, REQUEST_SPO, ID_DOMINIO=idDominio, IUV=iuv, TOKEN=paymentToken, DIFF_TIME_IN_MS=diff_time_in_ms, PSP=psp, OUTCOME_SPO_REQ=outcome, STAZIONE=stazione, CANALE=canale, ID_BROKER_PSP, ID_BROKER_PA, NO_RESPONSE, NODE_METHOD, PSP_METHOD, OUTCOME_PSP_RESP, FAULT_CODE_PSP, FAULT_CODE_SPO\n", + "type": "Expression" + }, + "queryTimeout": "00:10:00", + "noTruncation": false + }, + "sink": { + "type": "AzureDataExplorerSink", + "ingestionMappingName": "" + }, + "enableStaging": false, + "validateDataConsistency": true, + "translator": { + "type": "TabularTranslator", + "mappings": [ + { + "source": { + "name": "REQUEST_PSPNOTIFY", + "type": "DateTime", + "physicalType": "datetime" + }, + "sink": { + "name": "REQUEST_PSPNOTIFY", + "type": "DateTime", + "physicalType": "datetime" + } }, - "sink":{ - "name":"REQUEST_PSPNOTIFY", - "type":"DateTime", - "physicalType":"datetime" - } - }, - { - "source":{ - "name":"REQUEST_SPO", - "type":"DateTime", - "physicalType":"datetime" + { + "source": { + "name": "REQUEST_SPO", + "type": "DateTime", + "physicalType": "datetime" + }, + "sink": { + "name": "REQUEST_SPO", + "type": "DateTime", + "physicalType": "datetime" + } }, - "sink":{ - "name":"REQUEST_SPO", - "type":"DateTime", - "physicalType":"datetime" - } - }, - { - "source":{ - "name":"ID_DOMINIO", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "ID_DOMINIO", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "ID_DOMINIO", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"ID_DOMINIO", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"IUV", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "IUV", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "IUV", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"IUV", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"TOKEN", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "TOKEN", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "TOKEN", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"TOKEN", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"ID_BROKER_PSP", - "type":"String", - "physicalType":"dynamic" + { + "source": { + "name": "ID_BROKER_PSP", + "type": "String", + "physicalType": "dynamic" + }, + "sink": { + "name": "ID_BROKER_PSP", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"ID_BROKER_PSP", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"ID_BROKER_PA", - "type":"String", - "physicalType":"dynamic" + { + "source": { + "name": "ID_BROKER_PA", + "type": "String", + "physicalType": "dynamic" + }, + "sink": { + "name": "ID_BROKER_PA", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"ID_BROKER_PA", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"PSP", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "PSP", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "PSP", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"PSP", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"STAZIONE", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "STAZIONE", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "STAZIONE", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"STAZIONE", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"CANALE", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "CANALE", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "CANALE", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"CANALE", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"DIFF_TIME_IN_MS", - "type":"Int64", - "physicalType":"long" + { + "source": { + "name": "DIFF_TIME_IN_MS", + "type": "Int64", + "physicalType": "long" + }, + "sink": { + "name": "DIFF_TIME_IN_MS", + "type": "Int64", + "physicalType": "long" + } }, - "sink":{ - "name":"DIFF_TIME_IN_MS", - "type":"Int64", - "physicalType":"long" - } - }, - { - "source":{ - "name":"OUTCOME", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "OUTCOME_SPO_REQ", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "OUTCOME_SPO_REQ", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"OUTCOME", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"NO_RESPONSE", - "type":"Boolean", - "physicalType":"bool" + { + "source": { + "name": "NO_RESPONSE", + "type": "Boolean", + "physicalType": "bool" + }, + "sink": { + "name": "NO_RESPONSE", + "type": "Boolean", + "physicalType": "bool" + } }, - "sink":{ - "name":"NO_RESPONSE", - "type":"Boolean", - "physicalType":"bool" - } - }, - { - "source":{ - "name":"pipelineRunID", - "type":"String" + { + "source": { + "name": "pipelineRunID", + "type": "String" + }, + "sink": { + "name": "pipelineRunID", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"pipelineRunID", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"NODE_METHOD", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "NODE_METHOD", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "NODE_METHOD", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"NODE_METHOD", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"PSP_METHOD", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "PSP_METHOD", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "PSP_METHOD", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"PSP_METHOD", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "OUTCOME_PSP_RESP", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "OUTCOME_PSP_RESP", + "type": "String", + "physicalType": "string" + } + }, + { + "source": { + "name": "FAULT_CODE_PSP", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "FAULT_CODE_PSP", + "type": "String", + "physicalType": "string" + } + }, + { + "source": { + "name": "FAULT_CODE_SPO", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "FAULT_CODE_SPO", + "type": "String", + "physicalType": "string" + } } - } - ], - "typeConversion":true, - "typeConversionSettings":{ - "allowDataTruncation":true, - "treatBooleanAsNumber":false - } - } + ], + "typeConversion": true, + "typeConversionSettings": { + "allowDataTruncation": true, + "treatBooleanAsNumber": false + } + } }, - "inputs":[ - { - "referenceName":"${inputdataset}", - "type":"DatasetReference" - } + "inputs": [ + { + "referenceName": "${inputdataset}", + "type": "DatasetReference" + } ], - "outputs":[ - { - "referenceName":"${outputdataset}", - "type":"DatasetReference" - } + "outputs": [ + { + "referenceName": "${outputdataset}", + "type": "DatasetReference" + } ] - }, - { - "name":"Configure run_id variable", - "description":"La variabile contiene l'id univoco di esecuzione della pipeLine", - "type":"SetVariable", - "dependsOn":[ - - ], - "policy":{ - "secureOutput":false, - "secureInput":false +}, +{ + "name": "Configure run_id variable", + "description": "La variabile contiene l'id univoco di esecuzione della pipeLine", + "type": "SetVariable", + "dependsOn": [], + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"run_id", - "value":{ - "value":"@pipeline().RunId", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "run_id", + "value": { + "value": "@pipeline().RunId", + "type": "Expression" + } } - }, - { - "name":"Configure start_date variable", - "description":"La variabile contiene il valore relativo alla data di start della pipeline, prelevato a sua volta dalla data di start del trigger", - "type":"SetVariable", - "dependsOn":[ - { - "activity":"Configure run_id variable", - "dependencyConditions":[ - "Completed" - ] - } +}, +{ + "name": "Configure start_date variable", + "description": "La variabile contiene il valore relativo alla data di start della pipeline, prelevato a sua volta dalla data di start del trigger", + "type": "SetVariable", + "dependsOn": [ + { + "activity": "Configure run_id variable", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "secureOutput":false, - "secureInput":false + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"start_date", - "value":{ - "value":"@pipeline().TriggerTime", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "start_date", + "value": { + "value": "@pipeline().TriggerTime", + "type": "Expression" + } } - }, - { - "name":"Count dei record", - "description":"Prelevo la count dei record per un check finale", - "type":"Lookup", - "dependsOn":[ - { - "activity":"Configure start_date variable", - "dependencyConditions":[ - "Completed" - ] - } +}, +{ + "name": "Count dei record", + "description": "Prelevo la count dei record per un check finale", + "type": "Lookup", + "dependsOn": [ + { + "activity": "Configure start_date variable", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "timeout":"0.12:00:00", - "retry":0, - "retryIntervalInSeconds":30, - "secureOutput":false, - "secureInput":false + "policy": { + "timeout": "0.12:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "source":{ - "type":"AzureDataExplorerSource", - "query":{ - "value":"let trigger_start=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add('minute', -15, trigger_start);\nlet end=datetime_add('minute', 10, start);\nlet end_sp=datetime_add('minute', 15, start);\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_sp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\npspNP\n| join kind=leftouter SPO on idDominio, iuv, paymentToken\n| extend diff_time_in_ms = datetime_diff(\"millisecond\", insertedTimestamp1, insertedTimestamp)\n| project-rename REQUEST_PSPNOTIFY=insertedTimestamp, REQUEST_SPO=insertedTimestamp1\n| extend NO_RESPONSE=case(isempty(REQUEST_SPO), true, false)\n| extend ID_BROKER_PSP=split(canale, \"_\", 0)[0]\n| extend ID_BROKER_PA=split(stazione, \"_\", 0)[0]\n| project REQUEST_PSPNOTIFY, REQUEST_SPO, ID_DOMINIO=idDominio, IUV=iuv, TOKEN=paymentToken, DIFF_TIME_IN_MS=diff_time_in_ms, PSP=psp, OUTCOME=outcome, STAZIONE=stazione, CANALE=canale, ID_BROKER_PSP, ID_BROKER_PA, NO_RESPONSE, NODE_METHOD, PSP_METHOD", - "type":"Expression" - }, - "queryTimeout":"00:10:00", - "noTruncation":false - }, - "dataset":{ - "referenceName":"${inputdataset}", - "type":"DatasetReference" - }, - "firstRowOnly":false + "userProperties": [], + "typeProperties": { + "source": { + "type": "AzureDataExplorerSource", + "query": { + "value": "let trigger_start=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add('minute', -15, trigger_start);\nlet end=datetime_add('minute', 10, start);\nlet end_sp=datetime_add('minute', 15, start);\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend fault_code_psp = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento, OUTCOME_PSP_RESP=outcome, FAULT_CODE_PSP=fault_code_psp;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_sp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend fault_code_spo = extract(\"(.*)\", 1, xml_payload)\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento, FAULT_CODE_SPO=fault_code_spo;\npspNP\n| join kind=leftouter SPO on paymentToken\n| extend diff_time_in_ms = datetime_diff(\"millisecond\", insertedTimestamp1, insertedTimestamp)\n| project-rename REQUEST_PSPNOTIFY=insertedTimestamp, REQUEST_SPO=insertedTimestamp1\n| extend NO_RESPONSE=case(isempty(REQUEST_SPO), true, false)\n| extend ID_BROKER_PSP=split(canale, \"_\", 0)[0]\n| extend ID_BROKER_PA=split(stazione, \"_\", 0)[0]\n| project REQUEST_PSPNOTIFY, REQUEST_SPO, ID_DOMINIO=idDominio, IUV=iuv, TOKEN=paymentToken, DIFF_TIME_IN_MS=diff_time_in_ms, PSP=psp, OUTCOME_SPO_REQ=outcome, STAZIONE=stazione, CANALE=canale, ID_BROKER_PSP, ID_BROKER_PA, NO_RESPONSE, NODE_METHOD, PSP_METHOD, OUTCOME_PSP_RESP, FAULT_CODE_PSP, FAULT_CODE_SPO", + "type": "Expression" + }, + "queryTimeout": "00:10:00", + "noTruncation": false + }, + "dataset": { + "referenceName": "SMO_ReEvent_DataSet", + "type": "DatasetReference" + }, + "firstRowOnly": false } - }, - { - "name":"Configure count_record variable", - "description":"Contiene il numero totale dei record che saranno oggetto di ingestion. Viene utilizzato per il check del caricamento ", - "type":"SetVariable", - "dependsOn":[ - { - "activity":"Count dei record", - "dependencyConditions":[ - "Completed" - ] - } +}, +{ + "name": "Configure count_record variable", + "description": "Contiene il numero totale dei record che saranno oggetto di ingestion. Viene utilizzato per il check del caricamento ", + "type": "SetVariable", + "dependsOn": [ + { + "activity": "Count dei record", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "secureOutput":false, - "secureInput":false + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"count_record", - "value":{ - "value":"@string(activity('Count dei record').output.count)", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "count_record", + "value": { + "value": "@string(activity('Count dei record').output.count)", + "type": "Expression" + } } - }, - { - "name":"If Condition1", - "type":"IfCondition", - "dependsOn":[ - { - "activity":"Copy of data for KPI", - "dependencyConditions":[ - "Completed" - ] - } - ], - "userProperties":[ - +}, +{ + "name": "If Condition1", + "type": "IfCondition", + "dependsOn": [ + { + "activity": "Copy of data for KPI", + "dependencyConditions": [ + "Completed" + ] + } ], - "typeProperties":{ - "expression":{ - "value":"@equals(variables('count_record'),string(activity('Copy of data for KPI').output.rowsCopied))", - "type":"Expression" - }, - "ifFalseActivities":[ - { - "name":"Errore", - "type":"Fail", - "dependsOn":[ - - ], - "userProperties":[ - - ], - "typeProperties":{ - "message":{ - "value":"@concat('Lette :' ,variables('count_record'), ' Scritte : ', activity('Copy of data for KPI').output.rowsCopied)", - "type":"Expression" - }, - "errorCode":"412" - } - } - ] + "userProperties": [], + "typeProperties": { + "expression": { + "value": "@equals(variables('count_record'),string(activity('Copy of data for KPI').output.rowsCopied))", + "type": "Expression" + }, + "ifFalseActivities": [ + { + "name": "Errore", + "type": "Fail", + "dependsOn": [], + "userProperties": [], + "typeProperties": { + "message": { + "value": "@concat('Lette :' ,variables('count_record'), ' Scritte : ', activity('Copy of data for KPI').output.rowsCopied)", + "type": "Expression" + }, + "errorCode": "412" + } + } + ] } - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/domains/observability/datafactory/pipelines/KPI_TPSPO_DASPO.json b/src/domains/observability/datafactory/pipelines/KPI_TPSPO_DASPO.json index c81949571d..e791ca7b29 100644 --- a/src/domains/observability/datafactory/pipelines/KPI_TPSPO_DASPO.json +++ b/src/domains/observability/datafactory/pipelines/KPI_TPSPO_DASPO.json @@ -1,278 +1,260 @@ { - "name":"run_id", - "type":"SetVariable", - "dependsOn":[ - - ], - "policy":{ - "secureOutput":false, - "secureInput":false + "name": "run_id", + "type": "SetVariable", + "dependsOn": [], + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"run_id", - "value":{ - "value":"@pipeline().RunId", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "run_id", + "value": { + "value": "@pipeline().RunId", + "type": "Expression" + } } }, { - "name":"start_date", - "type":"SetVariable", - "dependsOn":[ - { - "activity":"run_id", - "dependencyConditions":[ - "Completed" - ] - } + "name": "start_date", + "type": "SetVariable", + "dependsOn": [ + { + "activity": "run_id", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "secureOutput":false, - "secureInput":false + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"start_date", - "value":{ - "value":"@pipeline().TriggerTime", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "start_date", + "value": { + "value": "@pipeline().TriggerTime", + "type": "Expression" + } } }, { - "name":"Count degli elementi", - "type":"Lookup", - "dependsOn":[ - { - "activity":"start_date", - "dependencyConditions":[ - "Completed" - ] - } + "name": "Count degli elementi", + "type": "Lookup", + "dependsOn": [ + { + "activity": "start_date", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "timeout":"0.12:00:00", - "retry":0, - "retryIntervalInSeconds":30, - "secureOutput":false, - "secureInput":false + "policy": { + "timeout": "0.12:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "source":{ - "type":"AzureDataExplorerSource", - "query":{ - "value":"let trigger_time=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add(\"hour\", -1, trigger_time);\nlet end=datetime_add(\"minute\", 30, start);\nlet end_resp=datetime_add(\"minute\", 30, end);\nlet activateReq = ReEvent\n| where insertedTimestamp between (start .. end)\n| where tipoEvento == \"activatePaymentNotice\"\n| where sottoTipoEvento == \"REQ\"\n| extend expirationTime = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend expirationTime = (case(isempty(expirationTime), 1800000, toint(expirationTime)) / 1000)\n| project ACTIVATE_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, CANALE=canale, STAZIONE=stazione, PSP=psp, sessionId, MINUTE_SESSION=expirationTime;\nlet activateResp = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento == \"activatePaymentNotice\"\n| where sottoTipoEvento == \"RESP\"\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where outcome == \"OK\"\n| project ACTIVATE_RESP=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_ACTIVATE=outcome, sessionId;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento == \"sendPaymentOutcome\"\n| where sottoTipoEvento in (\"REQ\", \"RESP\")\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload));\nlet SPO_req = SPO\n| where sottoTipoEvento == \"REQ\"\n| project-away payload;\nlet SPO_resp = SPO\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| project-away payload;\nlet SPO_join = SPO_req\n| join kind=inner SPO_resp on sessionId, iuv, idDominio, paymentToken\n| project SPO_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_SPO=outcome, FAULTCODE_SPO=faultCode;\nlet sync_call = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"paGetPayment\", \"paaAttivaRPT\")\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where isempty(faultCode) == true\n| project SYNC_METHOD_RESPONSE=insertedTimestamp, SYNC_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, sessionId, FAULT_CODE_PA=faultCode;\nlet dataJoined = activateReq\n| join kind=inner activateResp on sessionId\n| join kind=inner sync_call on sessionId\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE\n| join kind=leftouter SPO_join on IUV, TOKEN, DOMINIO\n| extend EXISTS_SPO=case(isempty(SPO_REQ), false, true)\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE, SPO_REQ, PSP_METHOD1, OUTCOME_SPO, FAULTCODE_SPO, EXISTS_SPO;\nlet totalCount=dataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE\n| extend ESITO=\"TOTALE_CHIAMATE\";\nlet fromFaultCode=FAULT_CODE\n| where insertedTimestamp between (start .. end)\n| where tipoEvento == \"sendPaymentOutcome\"\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale, faultCode\n| extend ESITO=\"FROM_FAULTCODE\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPONP = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\nlet pagoPA_touchPoing_Token_Scaduti = pspNP\n| join kind=inner SPONP on idDominio, iuv, paymentToken\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale\n| extend ESITO=\"TOKEN_SCADUTI_PAGOPA_TOUCHPOINT\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\ndataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE, EXISTS_SPO, FAULTCODE_SPO\n| extend ESITO=case(\nFAULTCODE_SPO in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\"), \"TOKEN_SCADUTO\",\nEXISTS_SPO == true, \"SPO_OK\",\n\"SPO_ASSENTE\")\n| union totalCount\n| union fromFaultCode\n| union pagoPA_touchPoing_Token_Scaduti\n| extend JSON_FIELD=bag_pack(ESITO, NUM_EVENTI)\n| summarize DETAILED_INFO=make_bag(JSON_FIELD) by bin(ACTIVATE_REQ, 10m), PSP, CANALE \n| extend INTERMEDIARIO_PSP=substring(CANALE,0, strlen(CANALE)-3)\n| project ACTIVATE_REQ, INTERMEDIARIO_PSP, PSP, DETAILED_INFO", - "type":"Expression" - }, - "queryTimeout":"00:10:00", - "noTruncation":false - }, - "dataset":{ - "referenceName":"${inputdataset}", - "type":"DatasetReference" - }, - "firstRowOnly":false + "userProperties": [], + "typeProperties": { + "source": { + "type": "AzureDataExplorerSource", + "query": { + "value": "let trigger_time=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add(\"hour\", -1, trigger_time);\nlet end=datetime_add(\"minute\", 30, start);\nlet end_resp=datetime_add(\"minute\", 30, end);\nlet activateReq = ReEvent\n| where insertedTimestamp between (start .. end)\n| where tipoEvento in (\"activatePaymentNotice\", \"activatePaymentNoticeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend expirationTime = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend expirationTime = (case(isempty(expirationTime), 1800000, toint(expirationTime)) / 1000)\n| project ACTIVATE_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, CANALE=canale, STAZIONE=stazione, PSP=psp, sessionId, MINUTE_SESSION=expirationTime;\nlet activateResp = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"activatePaymentNotice\", \"activatePaymentNoticeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where outcome == \"OK\"\n| project ACTIVATE_RESP=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_ACTIVATE=outcome, sessionId;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento in (\"REQ\", \"RESP\")\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload));\nlet SPO_req = SPO\n| where sottoTipoEvento == \"REQ\"\n| project-away payload;\nlet SPO_resp = SPO\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| project-away payload;\nlet SPO_join = SPO_req\n| join kind=inner SPO_resp on sessionId, iuv, idDominio, paymentToken\n| project SPO_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_SPO=outcome, FAULTCODE_SPO=faultCode;\nlet sync_call = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"paGetPayment\", \"paaAttivaRPT\", \"paGetPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where isempty(faultCode) == true\n| project SYNC_METHOD_RESPONSE=insertedTimestamp, SYNC_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, sessionId, FAULT_CODE_PA=faultCode;\nlet dataJoined = activateReq\n| join kind=inner activateResp on sessionId\n| join kind=inner sync_call on sessionId\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE\n| join kind=leftouter SPO_join on IUV, TOKEN, DOMINIO\n| extend EXISTS_SPO=case(isempty(SPO_REQ), false, true)\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE, SPO_REQ, PSP_METHOD1, OUTCOME_SPO, FAULTCODE_SPO, EXISTS_SPO;\nlet totalCount=dataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE\n| extend ESITO=\"TOTALE_CHIAMATE\";\nlet fromFaultCode=FAULT_CODE\n| where insertedTimestamp between (start .. end)\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale, faultCode\n| extend ESITO=\"FROM_FAULTCODE\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPONP = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\nlet pagoPA_touchPoing_Token_Scaduti = pspNP\n| join kind=inner SPONP on idDominio, iuv, paymentToken\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale\n| extend ESITO=\"TOKEN_SCADUTI_PAGOPA_TOUCHPOINT\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\ndataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE, EXISTS_SPO, FAULTCODE_SPO\n| extend ESITO=case(\nFAULTCODE_SPO in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\"), \"TOKEN_SCADUTO\",\nEXISTS_SPO == true, \"SPO_OK\",\n\"SPO_ASSENTE\")\n| union totalCount\n| union fromFaultCode\n| union pagoPA_touchPoing_Token_Scaduti\n| extend JSON_FIELD=bag_pack(ESITO, NUM_EVENTI)\n| summarize DETAILED_INFO=make_bag(JSON_FIELD) by bin(ACTIVATE_REQ, 10m), PSP, CANALE \n| extend INTERMEDIARIO_PSP=substring(CANALE,0, strlen(CANALE)-3)\n| project ACTIVATE_REQ, INTERMEDIARIO_PSP, PSP, DETAILED_INFO\n| where PSP != \"AGID_01\"", + "type": "Expression" + }, + "queryTimeout": "00:10:00", + "noTruncation": false + }, + "dataset": { + "referenceName": "${inputdataset}", + "type": "DatasetReference" + }, + "firstRowOnly": false } }, { - "name":"Count_Record", - "type":"SetVariable", - "dependsOn":[ - { - "activity":"Count degli elementi", - "dependencyConditions":[ - "Completed" - ] - } + "name": "Count_Record", + "type": "SetVariable", + "dependsOn": [ + { + "activity": "Count degli elementi", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "secureOutput":false, - "secureInput":false + "policy": { + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "variableName":"count_record", - "value":{ - "value":"@string(activity('Count degli elementi').output.count)", - "type":"Expression" - } + "userProperties": [], + "typeProperties": { + "variableName": "count_record", + "value": { + "value": "@string(activity('Count degli elementi').output.count)", + "type": "Expression" + } } }, { - "name":"Copia dei dati", - "type":"Copy", - "dependsOn":[ - { - "activity":"Count_Record", - "dependencyConditions":[ - "Completed" - ] - } + "name": "Copia dei dati", + "type": "Copy", + "dependsOn": [ + { + "activity": "Count_Record", + "dependencyConditions": [ + "Completed" + ] + } ], - "policy":{ - "timeout":"0.12:00:00", - "retry":0, - "retryIntervalInSeconds":30, - "secureOutput":false, - "secureInput":false + "policy": { + "timeout": "0.12:00:00", + "retry": 0, + "retryIntervalInSeconds": 30, + "secureOutput": false, + "secureInput": false }, - "userProperties":[ - - ], - "typeProperties":{ - "source":{ - "type":"AzureDataExplorerSource", - "additionalColumns":[ - { - "name":"pipelineRunID", - "value":{ - "value":"@variables('run_id')", - "type":"Expression" - } - } - ], - "query":{ - "value":"let trigger_time=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add(\"hour\", -1, trigger_time);\nlet end=datetime_add(\"minute\", 30, start);\nlet end_resp=datetime_add(\"minute\", 30, end);\nlet activateReq = ReEvent\n| where insertedTimestamp between (start .. end)\n| where tipoEvento == \"activatePaymentNotice\"\n| where sottoTipoEvento == \"REQ\"\n| extend expirationTime = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend expirationTime = (case(isempty(expirationTime), 1800000, toint(expirationTime)) / 1000)\n| project ACTIVATE_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, CANALE=canale, STAZIONE=stazione, PSP=psp, sessionId, MINUTE_SESSION=expirationTime;\nlet activateResp = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento == \"activatePaymentNotice\"\n| where sottoTipoEvento == \"RESP\"\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where outcome == \"OK\"\n| project ACTIVATE_RESP=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_ACTIVATE=outcome, sessionId;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento == \"sendPaymentOutcome\"\n| where sottoTipoEvento in (\"REQ\", \"RESP\")\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload));\nlet SPO_req = SPO\n| where sottoTipoEvento == \"REQ\"\n| project-away payload;\nlet SPO_resp = SPO\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| project-away payload;\nlet SPO_join = SPO_req\n| join kind=inner SPO_resp on sessionId, iuv, idDominio, paymentToken\n| project SPO_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_SPO=outcome, FAULTCODE_SPO=faultCode;\nlet sync_call = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"paGetPayment\", \"paaAttivaRPT\")\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where isempty(faultCode) == true\n| project SYNC_METHOD_RESPONSE=insertedTimestamp, SYNC_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, sessionId, FAULT_CODE_PA=faultCode;\nlet dataJoined = activateReq\n| join kind=inner activateResp on sessionId\n| join kind=inner sync_call on sessionId\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE\n| join kind=leftouter SPO_join on IUV, TOKEN, DOMINIO\n| extend EXISTS_SPO=case(isempty(SPO_REQ), false, true)\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE, SPO_REQ, PSP_METHOD1, OUTCOME_SPO, FAULTCODE_SPO, EXISTS_SPO;\nlet totalCount=dataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE\n| extend ESITO=\"TOTALE_CHIAMATE\";\nlet fromFaultCode=FAULT_CODE\n| where insertedTimestamp between (start .. end)\n| where tipoEvento == \"sendPaymentOutcome\"\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale, faultCode\n| extend ESITO=\"FROM_FAULTCODE\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPONP = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\nlet pagoPA_touchPoing_Token_Scaduti = pspNP\n| join kind=inner SPONP on idDominio, iuv, paymentToken\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale\n| extend ESITO=\"TOKEN_SCADUTI_PAGOPA_TOUCHPOINT\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\ndataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE, EXISTS_SPO, FAULTCODE_SPO\n| extend ESITO=case(\nFAULTCODE_SPO in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\"), \"TOKEN_SCADUTO\",\nEXISTS_SPO == true, \"SPO_OK\",\n\"SPO_ASSENTE\")\n| union totalCount\n| union fromFaultCode\n| union pagoPA_touchPoing_Token_Scaduti\n| extend JSON_FIELD=bag_pack(ESITO, NUM_EVENTI)\n| summarize DETAILED_INFO=make_bag(JSON_FIELD) by bin(ACTIVATE_REQ, 10m), PSP, CANALE \n| extend INTERMEDIARIO_PSP=substring(CANALE,0, strlen(CANALE)-3)\n| project ACTIVATE_REQ, INTERMEDIARIO_PSP, PSP, DETAILED_INFO", - "type":"Expression" - }, - "queryTimeout":"00:10:00", - "noTruncation":false - }, - "sink":{ - "type":"AzureDataExplorerSink" - }, - "enableStaging":false, - "translator":{ - "type":"TabularTranslator", - "mappings":[ - { - "source":{ - "name":"ACTIVATE_REQ", - "type":"DateTime", - "physicalType":"datetime" - }, - "sink":{ - "name":"ACTIVATE_REQ", - "type":"DateTime", - "physicalType":"datetime" + "userProperties": [], + "typeProperties": { + "source": { + "type": "AzureDataExplorerSource", + "additionalColumns": [ + { + "name": "pipelineRunID", + "value": { + "value": "@variables('run_id')", + "type": "Expression" + } } - }, - { - "source":{ - "name":"INTERMEDIARIO_PSP", - "type":"String", - "physicalType":"string" + ], + "query": { + "value": "let trigger_time=bin(datetime_utc_to_local(datetime('@{variables('start_date')}'), \"Europe/Rome\"), 10m);\nlet start=datetime_add(\"hour\", -1, trigger_time);\nlet end=datetime_add(\"minute\", 30, start);\nlet end_resp=datetime_add(\"minute\", 30, end);\nlet activateReq = ReEvent\n| where insertedTimestamp between (start .. end)\n| where tipoEvento in (\"activatePaymentNotice\", \"activatePaymentNoticeV2\")\n| where sottoTipoEvento == \"REQ\"\n| extend expirationTime = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend expirationTime = (case(isempty(expirationTime), 1800000, toint(expirationTime)) / 1000)\n| project ACTIVATE_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, CANALE=canale, STAZIONE=stazione, PSP=psp, sessionId, MINUTE_SESSION=expirationTime;\nlet activateResp = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"activatePaymentNotice\", \"activatePaymentNoticeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where outcome == \"OK\"\n| project ACTIVATE_RESP=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_ACTIVATE=outcome, sessionId;\nlet SPO = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento in (\"REQ\", \"RESP\")\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload));\nlet SPO_req = SPO\n| where sottoTipoEvento == \"REQ\"\n| project-away payload;\nlet SPO_resp = SPO\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| project-away payload;\nlet SPO_join = SPO_req\n| join kind=inner SPO_resp on sessionId, iuv, idDominio, paymentToken\n| project SPO_REQ=insertedTimestamp, PSP_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, OUTCOME_SPO=outcome, FAULTCODE_SPO=faultCode;\nlet sync_call = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where tipoEvento in (\"paGetPayment\", \"paaAttivaRPT\", \"paGetPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| extend outcome = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where isempty(faultCode) == true\n| project SYNC_METHOD_RESPONSE=insertedTimestamp, SYNC_METHOD=tipoEvento, IUV=iuv, DOMINIO=idDominio, TOKEN=paymentToken, sessionId, FAULT_CODE_PA=faultCode;\nlet dataJoined = activateReq\n| join kind=inner activateResp on sessionId\n| join kind=inner sync_call on sessionId\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE\n| join kind=leftouter SPO_join on IUV, TOKEN, DOMINIO\n| extend EXISTS_SPO=case(isempty(SPO_REQ), false, true)\n| project ACTIVATE_REQ, PSP_METHOD, IUV, DOMINIO, TOKEN, CANALE, STAZIONE, PSP, MINUTE_SESSION, OUTCOME_ACTIVATE, SPO_REQ, PSP_METHOD1, OUTCOME_SPO, FAULTCODE_SPO, EXISTS_SPO;\nlet totalCount=dataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE\n| extend ESITO=\"TOTALE_CHIAMATE\";\nlet fromFaultCode=FAULT_CODE\n| where insertedTimestamp between (start .. end)\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale, faultCode\n| extend ESITO=\"FROM_FAULTCODE\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\nlet pspNP = ReEvent\n| where insertedTimestamp between (start .. end)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"pspNotifyPayment\",\"pspNotifyPaymentV2\")\n| where sottoTipoEvento == \"RESP\"\n| project insertedTimestamp, idDominio, iuv, ccp, psp, paymentToken, PSP_METHOD=tipoEvento;\nlet SPONP = ReEvent\n| where insertedTimestamp between (start .. end_resp)\n| where categoriaEvento == \"INTERFACCIA\"\n| where tipoEvento in (\"sendPaymentOutcome\", \"sendPaymentOutcomeV2\")\n| where sottoTipoEvento == \"RESP\"\n| extend xml_payload = base64_decode_tostring(payload)\n| extend outcome = extract(\"(.*)\", 1, xml_payload)\n| extend faultCode = extract(\"(.*)\", 1 , base64_decode_tostring(payload))\n| where faultCode in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\")\n| project insertedTimestamp, idDominio, iuv, ccp, psp, outcome, stazione, canale, paymentToken, NODE_METHOD=tipoEvento;\nlet pagoPA_touchPoing_Token_Scaduti = pspNP\n| join kind=inner SPONP on idDominio, iuv, paymentToken\n| summarize NUM_EVENTI=count() by bin(insertedTimestamp, 10m), psp, canale\n| extend ESITO=\"TOKEN_SCADUTI_PAGOPA_TOUCHPOINT\"\n| project ACTIVATE_REQ=insertedTimestamp, PSP=psp, CANALE=canale, ESITO, NUM_EVENTI;\ndataJoined\n| summarize NUM_EVENTI=count() by bin(ACTIVATE_REQ, 10m), PSP, CANALE, EXISTS_SPO, FAULTCODE_SPO\n| extend ESITO=case(\nFAULTCODE_SPO in (\"PPT_TOKEN_SCADUTO\", \"PPT_TOKEN_SCADUTO_KO\"), \"TOKEN_SCADUTO\",\nEXISTS_SPO == true, \"SPO_OK\",\n\"SPO_ASSENTE\")\n| union totalCount\n| union fromFaultCode\n| union pagoPA_touchPoing_Token_Scaduti\n| extend JSON_FIELD=bag_pack(ESITO, NUM_EVENTI)\n| summarize DETAILED_INFO=make_bag(JSON_FIELD) by bin(ACTIVATE_REQ, 10m), PSP, CANALE \n| extend INTERMEDIARIO_PSP=substring(CANALE,0, strlen(CANALE)-3)\n| project ACTIVATE_REQ, INTERMEDIARIO_PSP, PSP, DETAILED_INFO\n| where PSP != \"AGID_01\"", + "type": "Expression" + }, + "queryTimeout": "00:10:00", + "noTruncation": false + }, + "sink": { + "type": "AzureDataExplorerSink" + }, + "enableStaging": false, + "translator": { + "type": "TabularTranslator", + "mappings": [ + { + "source": { + "name": "ACTIVATE_REQ", + "type": "DateTime", + "physicalType": "datetime" + }, + "sink": { + "name": "ACTIVATE_REQ", + "type": "DateTime", + "physicalType": "datetime" + } }, - "sink":{ - "name":"INTERMEDIARIO_PSP", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"PSP", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "INTERMEDIARIO_PSP", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "INTERMEDIARIO_PSP", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"PSP", - "type":"String", - "physicalType":"string" - } - }, - { - "source":{ - "name":"DETAILED_INFO", - "type":"String", - "physicalType":"dynamic" + { + "source": { + "name": "PSP", + "type": "String", + "physicalType": "string" + }, + "sink": { + "name": "PSP", + "type": "String", + "physicalType": "string" + } }, - "sink":{ - "name":"DETAILED_INFO", - "type":"String", - "physicalType":"dynamic" - } - }, - { - "source":{ - "name":"pipelineRunID", - "type":"String" + { + "source": { + "name": "DETAILED_INFO", + "type": "String", + "physicalType": "dynamic" + }, + "sink": { + "name": "DETAILED_INFO", + "type": "String", + "physicalType": "dynamic" + } }, - "sink":{ - "name":"pipelineRunID", - "type":"String", - "physicalType":"string" + { + "source": { + "name": "pipelineRunID", + "type": "String" + }, + "sink": { + "name": "pipelineRunID", + "type": "String", + "physicalType": "string" + } } - } - ], - "typeConversion":true, - "typeConversionSettings":{ - "allowDataTruncation":true, - "treatBooleanAsNumber":false - } - } + ], + "typeConversion": true, + "typeConversionSettings": { + "allowDataTruncation": true, + "treatBooleanAsNumber": false + } + } }, - "inputs":[ - { - "referenceName":"${inputdataset}", - "type":"DatasetReference" - } + "inputs": [ + { + "referenceName": "${inputdataset}", + "type": "DatasetReference" + } ], - "outputs":[ - { - "referenceName":"${outputdataset}", - "type":"DatasetReference" - } + "outputs": [ + { + "referenceName": "${outputdataset}", + "type": "DatasetReference" + } ] }, { - "name":"Condizione per gestione errore copia", - "type":"IfCondition", - "dependsOn":[ - { - "activity":"Copia dei dati", - "dependencyConditions":[ - "Completed" - ] - } + "name": "Condizione per gestione errore copia", + "type": "IfCondition", + "dependsOn": [ + { + "activity": "Copia dei dati", + "dependencyConditions": [ + "Completed" + ] + } ], - "userProperties":[ - - ], - "typeProperties":{ - "expression":{ - "value":"@equals(variables('count_record'),string(activity('Copia dei dati').output.rowsCopied))", - "type":"Expression" - }, - "ifFalseActivities":[ - { - "name":"Errore", - "type":"Fail", - "dependsOn":[ - - ], - "userProperties":[ - - ], - "typeProperties":{ - "message":{ - "value":"@concat('Lette :' ,variables('count_record'), ' Scritte : ', activity('Copia dei dati').output.rowsCopied)", - "type":"Expression" - }, - "errorCode":"412" - } - } - ] + "userProperties": [], + "typeProperties": { + "expression": { + "value": "@equals(variables('count_record'),string(activity('Copia dei dati').output.rowsCopied))", + "type": "Expression" + }, + "ifFalseActivities": [ + { + "name": "Errore", + "type": "Fail", + "dependsOn": [], + "userProperties": [], + "typeProperties": { + "message": { + "value": "@concat('Lette :' ,variables('count_record'), ' Scritte : ', activity('Copia dei dati').output.rowsCopied)", + "type": "Expression" + }, + "errorCode": "412" + } + } + ] } } \ No newline at end of file diff --git a/src/domains/observability/env/weu-dev/terraform.tfvars b/src/domains/observability/env/weu-dev/terraform.tfvars index 91d6471e47..de346562fb 100644 --- a/src/domains/observability/env/weu-dev/terraform.tfvars +++ b/src/domains/observability/env/weu-dev/terraform.tfvars @@ -46,4 +46,7 @@ dexp_re_db_linkes_service = { enable = true } -app_forwarder_enabled = true \ No newline at end of file +app_forwarder_enabled = true + +external_domain = "pagopa.it" +apim_dns_zone_prefix = "dev.platform" \ No newline at end of file diff --git a/src/domains/observability/env/weu-prod/terraform.tfvars b/src/domains/observability/env/weu-prod/terraform.tfvars index 6f1a0c7623..63d3d29f00 100644 --- a/src/domains/observability/env/weu-prod/terraform.tfvars +++ b/src/domains/observability/env/weu-prod/terraform.tfvars @@ -46,3 +46,6 @@ dexp_db = { dexp_re_db_linkes_service = { enable = true } + +external_domain = "NOT_USED" +apim_dns_zone_prefix = "NOT_USED" \ No newline at end of file diff --git a/src/domains/observability/env/weu-uat/terraform.tfvars b/src/domains/observability/env/weu-uat/terraform.tfvars index 24a9e1c062..ed775c5bb8 100644 --- a/src/domains/observability/env/weu-uat/terraform.tfvars +++ b/src/domains/observability/env/weu-uat/terraform.tfvars @@ -47,4 +47,7 @@ dexp_re_db_linkes_service = { enable = true } -app_forwarder_enabled = true \ No newline at end of file +app_forwarder_enabled = true + +external_domain = "pagopa.it" +apim_dns_zone_prefix = "uat.platform" \ No newline at end of file diff --git a/src/domains/printit-app/00_data.tf b/src/domains/printit-app/00_data.tf index ee9bed3e91..795be1a630 100644 --- a/src/domains/printit-app/00_data.tf +++ b/src/domains/printit-app/00_data.tf @@ -1,10 +1,22 @@ - data "azurerm_eventhub_authorization_rule" "notices_evt_authorization_rule" { name = "${var.prefix}-${var.env_short}-${var.location_short}-${var.domain}-notice-evt-rx" resource_group_name = "${var.prefix}-${var.env_short}-${var.location_short}-evenhub-rg" eventhub_name = "${var.prefix}-${var.domain}-evh" namespace_name = "${var.prefix}-${var.env_short}-${var.location_short}-core-evh-meucci" } +data "azurerm_eventhub_authorization_rule" "notices_evt_complete_authorization_rule" { + name = "${var.prefix}-${var.env_short}-${var.location_short}-${var.domain}-notice-evt-complete-rx" + resource_group_name = "${var.prefix}-${var.env_short}-${var.location_short}-evenhub-rg" + eventhub_name = "${var.prefix}-${var.domain}-complete-evh" + namespace_name = "${var.prefix}-${var.env_short}-${var.location_short}-core-evh-meucci" +} +data "azurerm_eventhub_authorization_rule" "notices_evt_errors_authorization_rule" { + name = "${var.prefix}-${var.env_short}-${var.location_short}-${var.domain}-notice-evt-errors-rx" + resource_group_name = "${var.prefix}-${var.env_short}-${var.location_short}-evenhub-rg" + eventhub_name = "${var.prefix}-${var.domain}-errors-evh" + namespace_name = "${var.prefix}-${var.env_short}-${var.location_short}-core-evh-meucci" +} + data "azurerm_cosmosdb_account" "notices_cosmos_account" { name = "pagopa-${var.env_short}-${var.location_short}-${var.domain}-cosmos-account" diff --git a/src/domains/printit-app/06_keyvault.tf b/src/domains/printit-app/06_keyvault.tf index 08ace274e4..441626fff3 100644 --- a/src/domains/printit-app/06_keyvault.tf +++ b/src/domains/printit-app/06_keyvault.tf @@ -20,6 +20,17 @@ resource "azurerm_key_vault_secret" "application_insights_connection_string" { key_vault_id = data.azurerm_key_vault.kv.id } + +resource "azurerm_key_vault_secret" "tenant_id" { + name = "tenant-id" + value = data.azurerm_subscription.current.tenant_id + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + + +# Mongo DB + resource "azurerm_key_vault_secret" "notices_mongo_connection_string" { name = "notices-mongo-connection-string" value = data.azurerm_cosmosdb_account.notices_cosmos_account.primary_mongodb_connection_string @@ -34,6 +45,15 @@ resource "azurerm_key_vault_secret" "notices_mongo_primary_key" { key_vault_id = data.azurerm_key_vault.kv.id } +# Notices + +resource "azurerm_key_vault_secret" "notices_storage_account_endpoint" { + name = "notices-storage-account-blob-endpoint" + value = data.azurerm_storage_account.notices_storage_sa.primary_blob_endpoint + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + resource "azurerm_key_vault_secret" "notices_storage_account_connection_string" { name = "notices-storage-account-connection-string" value = data.azurerm_storage_account.notices_storage_sa.primary_connection_string @@ -48,6 +68,8 @@ resource "azurerm_key_vault_secret" "notices_storage_account_pkey" { key_vault_id = data.azurerm_key_vault.kv.id } +# Templates + resource "azurerm_key_vault_secret" "templates_storage_account_connection_string" { name = "templates-storage-account-connection-string" value = data.azurerm_storage_account.templates_storage_sa.primary_connection_string @@ -62,6 +84,8 @@ resource "azurerm_key_vault_secret" "templates_storage_account_pkey" { key_vault_id = data.azurerm_key_vault.kv.id } +# Institutions + resource "azurerm_key_vault_secret" "institutions_storage_account_connection_string" { name = "institutions-storage-account-connection-string" value = data.azurerm_storage_account.institutions_storage_sa.primary_connection_string @@ -76,6 +100,7 @@ resource "azurerm_key_vault_secret" "institutions_storage_account_pkey" { key_vault_id = data.azurerm_key_vault.kv.id } +# Event Hub resource "azurerm_key_vault_secret" "ehub_notice_connection_string" { name = "ehub-${var.env_short}-notice-connection-string" value = data.azurerm_eventhub_authorization_rule.notices_evt_authorization_rule.primary_connection_string @@ -83,6 +108,20 @@ resource "azurerm_key_vault_secret" "ehub_notice_connection_string" { key_vault_id = data.azurerm_key_vault.kv.id } +resource "azurerm_key_vault_secret" "ehub_notice_errors_connection_string" { + name = "ehub-${var.env_short}-notice-errors-connection-string" + value = data.azurerm_eventhub_authorization_rule.notices_evt_errors_authorization_rule.primary_connection_string + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + +resource "azurerm_key_vault_secret" "ehub_notice_complete_connection_string" { + name = "ehub-${var.env_short}-notice-complete-connection-string" + value = data.azurerm_eventhub_authorization_rule.notices_evt_complete_authorization_rule.primary_connection_string + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + resource "azurerm_key_vault_secret" "ehub_notice_jaas_config" { name = "ehub-${var.env_short}-notice-jaas-config" value = "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"${data.azurerm_eventhub_authorization_rule.notices_evt_authorization_rule.primary_connection_string}\";" @@ -90,6 +129,23 @@ resource "azurerm_key_vault_secret" "ehub_notice_jaas_config" { key_vault_id = data.azurerm_key_vault.kv.id } + +resource "azurerm_key_vault_secret" "ehub_notice_errors_jaas_config" { + name = "ehub-${var.env_short}-notice-errors-jaas-config" + value = "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"${data.azurerm_eventhub_authorization_rule.notices_evt_authorization_rule.primary_connection_string}\";" + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + +resource "azurerm_key_vault_secret" "ehub_notice_complete_jaas_config" { + name = "ehub-${var.env_short}-notice-complete-jaas-config" + value = "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"$ConnectionString\" password=\"${data.azurerm_eventhub_authorization_rule.notices_evt_authorization_rule.primary_connection_string}\";" + content_type = "text/plain" + key_vault_id = data.azurerm_key_vault.kv.id +} + +# SubKey + resource "azurerm_key_vault_secret" "pdf_engine_node_subkey_secret" { count = var.is_feature_enabled.pdf_engine ? 1 : 0 name = "pdf-engine-node-subkey" diff --git a/src/domains/printit-app/README.md b/src/domains/printit-app/README.md index ff66317287..d5afa12558 100644 --- a/src/domains/printit-app/README.md +++ b/src/domains/printit-app/README.md @@ -157,7 +157,11 @@ No outputs. | [azurerm_key_vault_secret.application_insights_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.azure_devops_sa_cacrt](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.azure_devops_sa_token](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.ehub_notice_complete_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.ehub_notice_complete_jaas_config](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_notice_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.ehub_notice_errors_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.ehub_notice_errors_jaas_config](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_notice_jaas_config](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.generator_for_service_subkey_secret](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.institutions_storage_account_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | @@ -165,11 +169,13 @@ No outputs. | [azurerm_key_vault_secret.notices_mongo_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.notices_mongo_primary_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.notices_storage_account_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.notices_storage_account_endpoint](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.notices_storage_account_pkey](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.pdf_engine_node_subkey_secret](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.pdf_engine_subkey_secret](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.templates_storage_account_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.templates_storage_account_pkey](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.tenant_id](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_monitor_autoscale_setting.autoscale_app_service_printit_pdf_engine_autoscale](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_autoscale_setting) | resource | | [azurerm_monitor_autoscale_setting.autoscale_app_service_printit_pdf_engine_java_autoscale](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_autoscale_setting) | resource | | [azurerm_private_dns_a_record.ingress](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_dns_a_record) | resource | @@ -190,6 +196,8 @@ No outputs. | [azurerm_container_registry.container_registry](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/container_registry) | data source | | [azurerm_cosmosdb_account.notices_cosmos_account](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/cosmosdb_account) | data source | | [azurerm_eventhub_authorization_rule.notices_evt_authorization_rule](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.notices_evt_complete_authorization_rule](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | +| [azurerm_eventhub_authorization_rule.notices_evt_errors_authorization_rule](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/eventhub_authorization_rule) | data source | | [azurerm_key_vault.kv](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault) | data source | | [azurerm_key_vault_secret.elastic_otel_token_header](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_secret) | data source | | [azurerm_kubernetes_cluster.aks](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/kubernetes_cluster) | data source | diff --git a/src/domains/printit-common/03_eventhub.tf b/src/domains/printit-common/03_eventhub.tf index ad33052cc5..efa6981bb0 100644 --- a/src/domains/printit-common/03_eventhub.tf +++ b/src/domains/printit-common/03_eventhub.tf @@ -22,6 +22,38 @@ module "eventhub_printit" { } ] }, + { + name = "${var.prefix}-${var.domain}-complete-evh" + partitions = 1 + message_retention = 1 + consumers = [ + "${local.project}-notice-evt-complete-rx", + ] + keys = [ + { + name = "${local.project}-notice-evt-complete-rx" + listen = true + send = true + manage = false + } + ] + }, + { + name = "${var.prefix}-${var.domain}-errors-evh" + partitions = 1 + message_retention = 1 + consumers = [ + "${local.project}-notice-evt-errors-rx", + ] + keys = [ + { + name = "${local.project}-notice-evt-errors-rx" + listen = true + send = true + manage = false + } + ] + }, ] } diff --git a/src/domains/printit-common/03_storage_account_notices.tf b/src/domains/printit-common/03_storage_account_notices.tf index 693cbb968d..6562774b2b 100644 --- a/src/domains/printit-common/03_storage_account_notices.tf +++ b/src/domains/printit-common/03_storage_account_notices.tf @@ -103,9 +103,6 @@ resource "azurerm_storage_management_policy" "st_blob_receipts_management_policy } - - - resource "azurerm_user_assigned_identity" "identity_blob_storage_pdf" { resource_group_name = data.azurerm_resource_group.identity_rg.name location = data.azurerm_resource_group.identity_rg.location diff --git a/src/domains/printit-common/10_github_identity.tf b/src/domains/printit-common/10_github_identity.tf index 618edb338d..cc80162a31 100644 --- a/src/domains/printit-common/10_github_identity.tf +++ b/src/domains/printit-common/10_github_identity.tf @@ -26,6 +26,14 @@ locals { } ] + federations_01_pr = [ + for repo in local.repos_01 : { + repository = repo + subject = "pull_request" + } + ] + + # to avoid subscription Contributor -> https://github.com/microsoft/azure-container-apps/issues/35 environment_cd_roles = { subscription = [ @@ -114,3 +122,43 @@ resource "null_resource" "github_runner_app_permissions_to_namespace_cd_01" { module.identity_cd_01 ] } + + +# create a module for each 20 repos +module "identity_pr_01" { + source = "github.com/pagopa/terraform-azurerm-v3//github_federated_identity?ref=fix-github-federated-identity" + prefix = var.prefix + env_short = var.env_short + domain = "${var.domain}-01-pr" + + identity_role = "cd" + + github_federations = local.federations_01_pr + + cd_rbac_roles = { + subscription_roles = local.environment_cd_roles.subscription + resource_groups = local.environment_cd_roles.resource_groups + } + + tags = var.tags + + depends_on = [ + data.azurerm_resource_group.identity_rg + ] +} + + +resource "azurerm_key_vault_access_policy" "gha_pr_iac_managed_identities" { + key_vault_id = data.azurerm_key_vault.key_vault.id + tenant_id = data.azurerm_client_config.current.tenant_id + object_id = module.identity_pr_01.identity_principal_id + + secret_permissions = ["Get", "List", "Set", ] + + certificate_permissions = ["SetIssuers", "DeleteIssuers", "Purge", "List", "Get"] + key_permissions = [ + "Get", "List", "Update", "Create", "Import", "Delete", "Encrypt", "Decrypt", "GetRotationPolicy" + ] + + storage_permissions = [] +} diff --git a/src/domains/printit-common/README.md b/src/domains/printit-common/README.md index 61c86b8be8..f0557e11ad 100644 --- a/src/domains/printit-common/README.md +++ b/src/domains/printit-common/README.md @@ -121,6 +121,7 @@ No outputs. | [cosmosdb\_notices\_collections](#module\_cosmosdb\_notices\_collections) | git::https://github.com/pagopa/terraform-azurerm-v3.git//cosmosdb_mongodb_collection | v8.9.1 | | [eventhub\_printit](#module\_eventhub\_printit) | git::https://github.com/pagopa/terraform-azurerm-v3.git//eventhub_configuration | v8.9.1 | | [identity\_cd\_01](#module\_identity\_cd\_01) | github.com/pagopa/terraform-azurerm-v3//github_federated_identity | v8.9.1 | +| [identity\_pr\_01](#module\_identity\_pr\_01) | github.com/pagopa/terraform-azurerm-v3//github_federated_identity | fix-github-federated-identity | | [institutions\_sa](#module\_institutions\_sa) | git::https://github.com/pagopa/terraform-azurerm-v3.git//storage_account | v8.9.1 | | [notices\_sa](#module\_notices\_sa) | git::https://github.com/pagopa/terraform-azurerm-v3.git//storage_account | v8.9.1 | | [templates\_sa](#module\_templates\_sa) | git::https://github.com/pagopa/terraform-azurerm-v3.git//storage_account | v8.9.1 | @@ -131,6 +132,7 @@ No outputs. |------|------| | [azurerm_cosmosdb_mongo_database.notices_mongo_db](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cosmosdb_mongo_database) | resource | | [azurerm_key_vault_access_policy.gha_iac_managed_identities](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | +| [azurerm_key_vault_access_policy.gha_pr_iac_managed_identities](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | | [azurerm_key_vault_secret.blob_storage_pdf_client_id](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_private_dns_a_record.ingress](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_dns_a_record) | resource | | [azurerm_private_endpoint.institutions_blob_private_endpoint](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_endpoint) | resource | diff --git a/src/domains/selfcare-app/.terraform.lock.hcl b/src/domains/selfcare-app/.terraform.lock.hcl index 13f6c03f01..28987175e2 100644 --- a/src/domains/selfcare-app/.terraform.lock.hcl +++ b/src/domains/selfcare-app/.terraform.lock.hcl @@ -5,11 +5,7 @@ provider "registry.terraform.io/hashicorp/azuread" { version = "2.30.0" constraints = "2.30.0" hashes = [ - "h1:MimDtBEnmdMwbriZQzga/kCjDZ1G0+QLVQjrYdBEpdc=", - "h1:Uw4TcmJBEJ71h+oCwwidlkk5jFpyFRDPAFCMs/bT/cw=", "h1:WnSPiREAFwnBUKREokMdHQ8Cjs47MzvS9pG8VS1ktec=", - "h1:eMxghqjmi2DCdps3dgo2SVOUfebzCatA3OdsTowlqXw=", - "h1:xzNKb+lWPsBTxJiaAJ8ECZnY+D6QNM9tA1qpEncIba0=", "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7", "zh:2e62c193030e04ebb10cc0526119cf69824bf2d7e4ea5a2f45bd5d5fb7221d36", "zh:2f3c7a35257332d68b778cefc5201a5f044e4914dd03794a4da662ddfe756483", @@ -26,38 +22,30 @@ provider "registry.terraform.io/hashicorp/azuread" { } provider "registry.terraform.io/hashicorp/azurerm" { - version = "3.39.0" - constraints = ">= 3.30.0, 3.39.0, <= 3.45.0, <= 3.53.0" + version = "3.100.0" + constraints = "~> 3.30, >= 3.76.0, <= 3.100.0" hashes = [ - "h1:2JG0uZsZ/M3GZ7KyKvf1RQimCDq/7nNCJDW/V5W+pbM=", - "h1:HREOaGbvo8wAx9mu6678GkhwchHXSHGIlilKPxEq5Qg=", - "h1:jqPHuhYLBYRFtAmwvA+ZxjfrKPLWK9rCrLtuT4DGylU=", - "h1:oc+QSXz2f18Kx+8DdL6f2oop0JG9qJibJa00gUDNXhw=", - "h1:qZ+S4LPuJLipCT1wEDwOTDheM25/EH5jvbYmFZngFic=", - "zh:02cb5d6d5947b41f5bea5b0ef18a95f9416a5b19df7613bbae3b7a5dfea0d398", - "zh:1da891970757d0cda13bc5ca9c9c38261480b1cfc6c19d1822d00badc29bb556", - "zh:32308383374c520c88e97a78e203308428d9b8951d14f2989d3e804eed71af53", - "zh:439809c33122ffc6f035161347b03a3a840df151c18cebfbc1d49cea1afadae3", - "zh:5bca5c0d44b8504d00076172b71faee1c02fd477a34809c005a6efa9cb09dcf2", - "zh:5efac57665cf7fb5536ec2fad451ad69336325bd50ab196350702c0266c3aac5", - "zh:60c0b54ef16aaf934d49a85841466096c681c960870245bca51924ca46f70206", - "zh:83ebcc7a5a336c1257f244ffbd4e7d5f7b93f52271fe3e68ab93ca467835f73c", - "zh:c5c9d06aa670d6a4cca5e4bec04600e924a64b7dbe7c0d025152964a6ac6e48b", + "h1:LT5rJLMwtCzHaGWOiV30hnFSaC/SL3QJRhN6yBpNTog=", + "zh:20c3259fd94ab41c6c3425fb428d8bd279addb755c8ea1fe0b3e1c3bea4363cb", + "zh:4c4a8d5dbd8a9d7b60934b0ffed442fe50ab1b0559b9693399e3f66eca53d045", + "zh:7c21f569b839e40d4976beb6143adaccc5688d1a754dde054cb6f19ca33576b2", + "zh:88042b599de9ff8ec200e26636e06682e024a28331c4c48db8589d6a03279a8a", + "zh:95c20834eee3b46a85e338988bf14a9a70f74f9cae45ec934cf157dedaa40f28", + "zh:beeed81f4483dec0b64bf1aaf611c5030ad6e4c88c4bd75f956835653a1a29c0", + "zh:d76fa7371648b5bdc17115b5e42fa616fe4c6d2998f727a0956c0bddc4842365", + "zh:d89fcaa83a1ff7c9f29c49b31c60c29d8a84486e11d34573d767a5cd208da7d8", + "zh:ddbe18aee99fb7e2c93343f7f8a95837461a047ca660553c88c873761205ed76", + "zh:e6e70c7635bb4472810bfd0a31949640e72c535e6e8707454ea7e86dcb5fcd89", + "zh:f0575689ce28e220bc8daa4d2fefbfd90afde01a14343c61dfd6489960e22ff4", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f640c4778f7b2b8ff724b8f73b2fff399c21373d7dfabab95d82556955f51922", - "zh:fc8901dbcaabf3103af97c9d29378d006e82d5061aa92afce1f3bdf2eb075599", ] } provider "registry.terraform.io/hashicorp/helm" { version = "2.5.1" - constraints = "2.5.1, <= 2.7.1" + constraints = "2.5.1, <= 2.12.1" hashes = [ - "h1:9yMFsXyHAo+mUuMKczNSw44HcZaf1JkMqgOUgJF1dXs=", - "h1:NasRPC0qqlpGqcF3dsSoOFu7uc5hM+zJm+okd8FgrnQ=", "h1:a9KwjqINdNy6IsEbkHUB1vwvYfy5OJ2VxFL9/NDFLoY=", - "h1:g3CzhAURjVq69AJ1u2d3DWd+i0rSmLX+JXSIts9BV6A=", - "h1:gogHvv1qr8bPzk5y1BoeTA5dOZt47byTXWXW3CJQ5C8=", "zh:140b9748f0ad193a20d69e59d672f3c4eda8a56cede56a92f931bd3af020e2e9", "zh:17ae319466ed6538ad49e011998bb86565fe0e97bc8b9ad7c8dda46a20f90669", "zh:3a8bd723c21ba70e19f0395ed7096fc8e08bfc23366f1c3f06a9107eb37c572c", @@ -78,10 +66,6 @@ provider "registry.terraform.io/hashicorp/kubernetes" { constraints = "2.11.0" hashes = [ "h1:T65SZhN/tQgsAsHe/G5PCgpjofi+aTKPZ+nZg6WOJpc=", - "h1:d5NamuGihJgxmtSq07kSZblnJuekkjdFdRLTDeGb0us=", - "h1:lSh/Q5vX73hHL80TtGn2Vrv1UYLzlIRjC+xaCijY4ew=", - "h1:lrhK0YgF/daYiTUWAQeY3vBD7uX8gm/44ZD4GTw71r4=", - "h1:pJiAJwZKUaoAJ4x+3ONJkwEVkjrwGROCGFgj7noPO58=", "zh:143a19dd0ea3b07fc5e3d9231f3c2d01f92894385c98a67327de74c76c715843", "zh:1fc757d209e09c3cf7848e4274daa32408c07743698fbed10ee52a4a479b62b6", "zh:22dfebd0685749c51a8f765d51a1090a259778960ac1cd4f32021a325b2b9b72", @@ -98,25 +82,21 @@ provider "registry.terraform.io/hashicorp/kubernetes" { } provider "registry.terraform.io/hashicorp/local" { - version = "2.4.0" + version = "2.5.1" hashes = [ - "h1:7RnIbO3CFakblTJs7o0mUiY44dc9xGYsLhSNFSNS1Ds=", - "h1:Bs7LAkV/iQTLv72j+cTMrvx2U3KyXrcVHaGbdns1NcE=", - "h1:OMqURhlP2IgLEgUCzSlaKXyb/IbnKForgDSjZF/NY4Y=", - "h1:R97FTYETo88sT2VHfMgkPU3lzCsZLunPftjSI5vfKe8=", - "h1:ZUEYUmm2t4vxwzxy1BvN1wL6SDWrDxfH7pxtzX8c6d0=", - "zh:53604cd29cb92538668fe09565c739358dc53ca56f9f11312b9d7de81e48fab9", - "zh:66a46e9c508716a1c98efbf793092f03d50049fa4a83cd6b2251e9a06aca2acf", - "zh:70a6f6a852dd83768d0778ce9817d81d4b3f073fab8fa570bff92dcb0824f732", + "h1:tjcGlQAFA0kmQ4vKkIPPUC4it1UYxLbg4YvHOWRAJHA=", + "zh:0af29ce2b7b5712319bf6424cb58d13b852bf9a777011a545fac99c7fdcdf561", + "zh:126063ea0d79dad1f68fa4e4d556793c0108ce278034f101d1dbbb2463924561", + "zh:196bfb49086f22fd4db46033e01655b0e5e036a5582d250412cc690fa7995de5", + "zh:37c92ec084d059d37d6cffdb683ccf68e3a5f8d2eb69dd73c8e43ad003ef8d24", + "zh:4269f01a98513651ad66763c16b268f4c2da76cc892ccfd54b401fff6cc11667", + "zh:51904350b9c728f963eef0c28f1d43e73d010333133eb7f30999a8fb6a0cc3d8", + "zh:73a66611359b83d0c3fcba2984610273f7954002febb8a57242bbb86d967b635", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:82a803f2f484c8b766e2e9c32343e9c89b91997b9f8d2697f9f3837f62926b35", - "zh:9708a4e40d6cc4b8afd1352e5186e6e1502f6ae599867c120967aebe9d90ed04", - "zh:973f65ce0d67c585f4ec250c1e634c9b22d9c4288b484ee2a871d7fa1e317406", - "zh:c8fa0f98f9316e4cfef082aa9b785ba16e36ff754d6aba8b456dab9500e671c6", - "zh:cfa5342a5f5188b20db246c73ac823918c189468e1382cb3c48a9c0c08fc5bf7", - "zh:e0e2b477c7e899c63b06b38cd8684a893d834d6d0b5e9b033cedc06dd7ffe9e2", - "zh:f62d7d05ea1ee566f732505200ab38d94315a4add27947a60afa29860822d3fc", - "zh:fa7ce69dde358e172bd719014ad637634bbdabc49363104f4fca759b4b73f2ce", + "zh:7ae387993a92bcc379063229b3cce8af7eaf082dd9306598fcd42352994d2de0", + "zh:9e0f365f807b088646db6e4a8d4b188129d9ebdbcf2568c8ab33bddd1b82c867", + "zh:b5263acbd8ae51c9cbffa79743fbcadcb7908057c87eb22fd9048268056efbc4", + "zh:dfcd88ac5f13c0d04e24be00b686d069b4879cc4add1b7b1a8ae545783d97520", ] } @@ -124,11 +104,7 @@ provider "registry.terraform.io/hashicorp/null" { version = "3.1.1" constraints = "3.1.1, <= 3.2.1" hashes = [ - "h1:1J3nqAREzuaLE7x98LEELCCaMV6BRiawHSg9MmFvfQo=", - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", - "h1:YvH6gTaQzGdNv+SKTZujU1O0bO+Pw6vJHOPhqgN8XNs=", - "h1:ZD4wyZ0KJzt5s2mD0xD7paJlVONNicLvZKdgtezz02I=", "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", @@ -145,24 +121,20 @@ provider "registry.terraform.io/hashicorp/null" { } provider "registry.terraform.io/hashicorp/tls" { - version = "4.0.4" + version = "4.0.5" hashes = [ - "h1:GZcFizg5ZT2VrpwvxGBHQ/hO9r6g0vYdQqx3bFD3anY=", - "h1:Wd3RqmQW60k2QWPN4sK5CtjGuO1d+CRNXgC+D4rKtXc=", - "h1:bNsvpX5EGuVxgGRXBQVLXlmq40PdoLp8Rfuh1ZmV7yY=", - "h1:pe9vq86dZZKCm+8k1RhzARwENslF3SXb9ErHbQfgjXU=", - "h1:rKKMyIEBZwR+8j6Tx3PwqBrStuH+J+pxcbCR5XN8WAw=", - "zh:23671ed83e1fcf79745534841e10291bbf34046b27d6e68a5d0aab77206f4a55", - "zh:45292421211ffd9e8e3eb3655677700e3c5047f71d8f7650d2ce30242335f848", - "zh:59fedb519f4433c0fdb1d58b27c210b27415fddd0cd73c5312530b4309c088be", - "zh:5a8eec2409a9ff7cd0758a9d818c74bcba92a240e6c5e54b99df68fff312bbd5", - "zh:5e6a4b39f3171f53292ab88058a59e64825f2b842760a4869e64dc1dc093d1fe", - "zh:810547d0bf9311d21c81cc306126d3547e7bd3f194fc295836acf164b9f8424e", - "zh:824a5f3617624243bed0259d7dd37d76017097dc3193dac669be342b90b2ab48", - "zh:9361ccc7048be5dcbc2fafe2d8216939765b3160bd52734f7a9fd917a39ecbd8", - "zh:aa02ea625aaf672e649296bce7580f62d724268189fe9ad7c1b36bb0fa12fa60", - "zh:c71b4cd40d6ec7815dfeefd57d88bc592c0c42f5e5858dcc88245d371b4b8b1e", - "zh:dabcd52f36b43d250a3d71ad7abfa07b5622c69068d989e60b79b2bb4f220316", + "h1:yLqz+skP3+EbU3yyvw8JqzflQTKDQGsC9QyZAg+S4dg=", + "zh:01cfb11cb74654c003f6d4e32bbef8f5969ee2856394a96d127da4949c65153e", + "zh:0472ea1574026aa1e8ca82bb6df2c40cd0478e9336b7a8a64e652119a2fa4f32", + "zh:1a8ddba2b1550c5d02003ea5d6cdda2eef6870ece86c5619f33edd699c9dc14b", + "zh:1e3bb505c000adb12cdf60af5b08f0ed68bc3955b0d4d4a126db5ca4d429eb4a", + "zh:6636401b2463c25e03e68a6b786acf91a311c78444b1dc4f97c539f9f78de22a", + "zh:76858f9d8b460e7b2a338c477671d07286b0d287fd2d2e3214030ae8f61dd56e", + "zh:a13b69fb43cb8746793b3069c4d897bb18f454290b496f19d03c3387d1c9a2dc", + "zh:a90ca81bb9bb509063b736842250ecff0f886a91baae8de65c8430168001dad9", + "zh:c4de401395936e41234f1956ebadbd2ed9f414e6908f27d578614aaa529870d4", + "zh:c657e121af8fde19964482997f0de2d5173217274f6997e16389e7707ed8ece8", + "zh:d68b07a67fbd604c38ec9733069fbf23441436fecf554de6c75c032f82e1ef19", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } diff --git a/src/domains/selfcare-app/02_namespace.tf b/src/domains/selfcare-app/02_namespace.tf index b4fa277444..bec40cef86 100644 --- a/src/domains/selfcare-app/02_namespace.tf +++ b/src/domains/selfcare-app/02_namespace.tf @@ -5,7 +5,7 @@ resource "kubernetes_namespace" "namespace" { } module "pod_identity" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity?ref=v8.15.1" resource_group_name = local.aks_resource_group_name location = var.location diff --git a/src/domains/selfcare-app/04_apim_backoffice.tf b/src/domains/selfcare-app/04_apim_backoffice.tf index 1a2d1f0132..aabb00a449 100644 --- a/src/domains/selfcare-app/04_apim_backoffice.tf +++ b/src/domains/selfcare-app/04_apim_backoffice.tf @@ -10,7 +10,7 @@ locals { module "apim_selfcare_product" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v8.15.1" product_id = "selfcare-be" display_name = local.apim_selfcare_pagopa_api.display_name diff --git a/src/domains/selfcare-app/04_apim_backoffice_external.tf b/src/domains/selfcare-app/04_apim_backoffice_external.tf index 806a4ea275..bf42daeab0 100644 --- a/src/domains/selfcare-app/04_apim_backoffice_external.tf +++ b/src/domains/selfcare-app/04_apim_backoffice_external.tf @@ -18,7 +18,7 @@ locals { module "apim_selfcare_backoffice_external_psp_product" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v8.15.1" product_id = "selfcare-bo-external-psp" display_name = local.apim_selfcare_backoffice_external_api_psp.display_name @@ -36,7 +36,7 @@ module "apim_selfcare_backoffice_external_psp_product" { } module "apim_selfcare_backoffice_external_ec_product" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v8.15.1" product_id = "selfcare-bo-external-ec" display_name = local.apim_selfcare_backoffice_external_api_ec.display_name @@ -54,7 +54,7 @@ module "apim_selfcare_backoffice_external_ec_product" { } module "apim_selfcare_backoffice_helpdesk_product" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product?ref=v8.15.1" product_id = "selfcare-bo-helpdesk" display_name = local.apim_selfcare_backoffice_helpdesk_api.display_name diff --git a/src/domains/selfcare-app/06_selfcare-fe.tf b/src/domains/selfcare-app/06_selfcare-fe.tf index f553bc0307..710e47b791 100644 --- a/src/domains/selfcare-app/06_selfcare-fe.tf +++ b/src/domains/selfcare-app/06_selfcare-fe.tf @@ -14,7 +14,8 @@ locals { for i, spa in var.spa : { name = replace("SPA-${spa}", "-", "") - order = i + 3 // +3 required because the order start from 1: 1 is reserved for default application redirect; 2 is reserved for the https rewrite; + order = i + 3 + // +3 required because the order start from 1: 1 is reserved for default application redirect; 2 is reserved for the https rewrite; conditions = [ { condition_type = "url_path_condition" @@ -49,7 +50,7 @@ locals { // public storage used to serve FE #tfsec:ignore:azure-storage-default-action-deny module "selfcare_cdn" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//cdn?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//cdn?ref=v8.15.1" count = var.selfcare_fe_enabled ? 1 : 0 name = "selfcare" @@ -59,7 +60,6 @@ module "selfcare_cdn" { # selfcare..platform.pagopa.it hostname = "${local.dns_zone_selfcare}.${local.dns_zone_platform}.${local.external_domain}" https_rewrite_enabled = true - lock_enabled = false index_document = "index.html" error_404_document = "error.html" @@ -82,16 +82,18 @@ module "selfcare_cdn" { modify_request_header_action = [] # HSTS - modify_response_header_action = [{ - action = "Overwrite" - name = "Strict-Transport-Security" - value = "max-age=31536000" + modify_response_header_action = [ + { + action = "Overwrite" + name = "Strict-Transport-Security" + value = "max-age=31536000" }, # Content-Security-Policy (in Report mode) { action = "Overwrite" name = "Content-Security-Policy-Report-Only" - value = "default-src 'self'; object-src 'none'; connect-src 'self' https://api.${local.dns_zone_selfcare}.${local.external_domain}/ https://${local.dns_zone_selfcare}.${local.dns_zone_platform}.${local.external_domain}/;" # https://api-eu.mixpanel.com https://wisp2.pagopa.gov.it + value = "default-src 'self'; object-src 'none'; connect-src 'self' https://api.${local.dns_zone_selfcare}.${local.external_domain}/ https://${local.dns_zone_selfcare}.${local.dns_zone_platform}.${local.external_domain}/;" + # https://api-eu.mixpanel.com https://wisp2.pagopa.gov.it }, { action = "Append" @@ -136,24 +138,26 @@ module "selfcare_cdn" { ] } - delivery_rule_rewrite = concat([{ - name = "RewriteRules" - order = 2 - conditions = [ - { - condition_type = "url_path_condition" - operator = "Equal" - match_values = ["/"] - negate_condition = false - transforms = null + delivery_rule_rewrite = concat([ + { + name = "RewriteRules" + order = 2 + conditions = [ + { + condition_type = "url_path_condition" + operator = "Equal" + match_values = ["/"] + negate_condition = false + transforms = null + } + ] + url_rewrite_action = { + source_pattern = "/" + destination = "/ui/index.html" + preserve_unmatched_path = false } - ] - url_rewrite_action = { - source_pattern = "/" - destination = "/ui/index.html" - preserve_unmatched_path = false } - }], + ], local.spa ) @@ -163,12 +167,14 @@ module "selfcare_cdn" { order = 3 + length(local.spa) // conditions - url_path_conditions = [{ - operator = "Equal" - match_values = length(var.robots_indexed_paths) > 0 ? var.robots_indexed_paths : ["dummy"] - negate_condition = true - transforms = null - }] + url_path_conditions = [ + { + operator = "Equal" + match_values = length(var.robots_indexed_paths) > 0 ? var.robots_indexed_paths : ["dummy"] + negate_condition = true + transforms = null + } + ] cookies_conditions = [] device_conditions = [] http_version_conditions = [] @@ -184,11 +190,13 @@ module "selfcare_cdn" { url_file_name_conditions = [] // actions - modify_response_header_actions = [{ - action = "Overwrite" - name = "X-Robots-Tag" - value = "noindex, nofollow" - }] + modify_response_header_actions = [ + { + action = "Overwrite" + name = "X-Robots-Tag" + value = "noindex, nofollow" + } + ] cache_expiration_actions = [] cache_key_query_string_actions = [] modify_request_header_actions = [] @@ -214,19 +222,23 @@ module "selfcare_cdn" { request_uri_conditions = [] url_file_extension_conditions = [] - url_file_name_conditions = [{ - operator = "Equal" - match_values = ["remoteEntry.js"] - negate_condition = false - transforms = null - }] + url_file_name_conditions = [ + { + operator = "Equal" + match_values = ["remoteEntry.js"] + negate_condition = false + transforms = null + } + ] // actions - modify_response_header_actions = [{ - action = "Overwrite" - name = "Cache-Control" - value = "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0" - }] + modify_response_header_actions = [ + { + action = "Overwrite" + name = "Cache-Control" + value = "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0" + } + ] cache_expiration_actions = [] cache_key_query_string_actions = [] modify_request_header_actions = [] @@ -238,12 +250,14 @@ module "selfcare_cdn" { order = 5 + length(local.spa) // conditions - url_path_conditions = [{ - operator = "BeginsWith" - match_values = local.cors.paths - negate_condition = false - transforms = null - }] + url_path_conditions = [ + { + operator = "BeginsWith" + match_values = local.cors.paths + negate_condition = false + transforms = null + } + ] request_header_conditions = [] cookies_conditions = [] device_conditions = [] @@ -259,19 +273,23 @@ module "selfcare_cdn" { url_file_name_conditions = [] // actions - modify_response_header_actions = [{ - action = "Overwrite" - name = "Access-Control-Allow-Origin" - value = "*" - }] + modify_response_header_actions = [ + { + action = "Overwrite" + name = "Access-Control-Allow-Origin" + value = "*" + } + ] cache_expiration_actions = [] cache_key_query_string_actions = [] modify_request_header_actions = [] url_redirect_actions = [] url_rewrite_actions = [] - }] + } + ] - tags = var.tags + tags = var.tags + log_analytics_workspace_id = data.azurerm_log_analytics_workspace.log_analytics.id } #tfsec:ignore:azure-keyvault-ensure-secret-expiry @@ -300,3 +318,25 @@ resource "azurerm_key_vault_secret" "selfcare_web_storage_blob_connection_string key_vault_id = data.azurerm_key_vault.kv.id } + + +resource "azurerm_static_web_app" "selfcare_backoffice_static_web_app" { + count = var.env_short == "d" ? 1 : 0 + + name = "${var.prefix}-${var.env_short}-${var.domain}-backoffice-fe" + resource_group_name = azurerm_resource_group.selfcare_fe_rg[0].name + location = var.location + + sku_tier = "Standard" + sku_size = "Standard" +} + +resource "azurerm_key_vault_secret" "selfcare_backoffice_static_app_key" { + count = var.env_short == "d" ? 1 : 0 + + name = "backoffice-static-app-key" + value = azurerm_static_web_app.selfcare_backoffice_static_web_app[0].api_key + content_type = "text/plain" + + key_vault_id = data.azurerm_key_vault.kv.id +} diff --git a/src/domains/selfcare-app/10_aks_middleware_tools.tf b/src/domains/selfcare-app/10_aks_middleware_tools.tf index 499ef27b02..85b71dfd5b 100644 --- a/src/domains/selfcare-app/10_aks_middleware_tools.tf +++ b/src/domains/selfcare-app/10_aks_middleware_tools.tf @@ -1,5 +1,5 @@ module "tls_checker" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//tls_checker?ref=v6.7.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//tls_checker?ref=v8.15.1" https_endpoint = local.selfcare_hostname alert_name = local.selfcare_hostname diff --git a/src/domains/selfcare-app/99_main.tf b/src/domains/selfcare-app/99_main.tf index eb95bca2c3..de21e40f79 100644 --- a/src/domains/selfcare-app/99_main.tf +++ b/src/domains/selfcare-app/99_main.tf @@ -6,7 +6,7 @@ terraform { } azurerm = { source = "hashicorp/azurerm" - version = "= 3.39.0" + version = "<= 3.100.0" } azuread = { source = "hashicorp/azuread" diff --git a/src/domains/selfcare-app/README.md b/src/domains/selfcare-app/README.md index 70e43b768c..edf7acdf3d 100644 --- a/src/domains/selfcare-app/README.md +++ b/src/domains/selfcare-app/README.md @@ -7,7 +7,7 @@ | Name | Version | |------|---------| | [azuread](#requirement\_azuread) | 2.30.0 | -| [azurerm](#requirement\_azurerm) | = 3.39.0 | +| [azurerm](#requirement\_azurerm) | <= 3.100.0 | | [helm](#requirement\_helm) | = 2.5.1 | | [kubernetes](#requirement\_kubernetes) | = 2.11.0 | | [null](#requirement\_null) | = 3.1.1 | @@ -16,34 +16,36 @@ | Name | Source | Version | |------|--------|---------| -| [apim\_selfcare\_backoffice\_external\_ec\_product](#module\_apim\_selfcare\_backoffice\_external\_ec\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v6.7.0 | -| [apim\_selfcare\_backoffice\_external\_psp\_product](#module\_apim\_selfcare\_backoffice\_external\_psp\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v6.7.0 | -| [apim\_selfcare\_backoffice\_helpdesk\_product](#module\_apim\_selfcare\_backoffice\_helpdesk\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v6.7.0 | -| [apim\_selfcare\_product](#module\_apim\_selfcare\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v6.7.0 | -| [pod\_identity](#module\_pod\_identity) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity | v6.7.0 | -| [selfcare\_cdn](#module\_selfcare\_cdn) | git::https://github.com/pagopa/terraform-azurerm-v3.git//cdn | v6.7.0 | -| [tls\_checker](#module\_tls\_checker) | git::https://github.com/pagopa/terraform-azurerm-v3.git//tls_checker | v6.7.0 | +| [apim\_selfcare\_backoffice\_external\_ec\_product](#module\_apim\_selfcare\_backoffice\_external\_ec\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v8.15.1 | +| [apim\_selfcare\_backoffice\_external\_psp\_product](#module\_apim\_selfcare\_backoffice\_external\_psp\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v8.15.1 | +| [apim\_selfcare\_backoffice\_helpdesk\_product](#module\_apim\_selfcare\_backoffice\_helpdesk\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v8.15.1 | +| [apim\_selfcare\_product](#module\_apim\_selfcare\_product) | git::https://github.com/pagopa/terraform-azurerm-v3.git//api_management_product | v8.15.1 | +| [pod\_identity](#module\_pod\_identity) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity | v8.15.1 | +| [selfcare\_cdn](#module\_selfcare\_cdn) | git::https://github.com/pagopa/terraform-azurerm-v3.git//cdn | v8.15.1 | +| [tls\_checker](#module\_tls\_checker) | git::https://github.com/pagopa/terraform-azurerm-v3.git//tls_checker | v8.15.1 | ## Resources | Name | Type | |------|------| -| [azurerm_api_management_api.pagopa_token_exchange](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/api_management_api) | resource | -| [azurerm_api_management_api_operation.pagopa_token_exchange](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/api_management_api_operation) | resource | -| [azurerm_api_management_api_operation_policy.pagopa_token_exchange_policy](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/api_management_api_operation_policy) | resource | -| [azurerm_api_management_certificate.pagopa_token_exchange_cert_jwt](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/api_management_certificate) | resource | -| [azurerm_key_vault_certificate.pagopa_jwt_signing_cert](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_certificate) | resource | -| [azurerm_key_vault_secret.aks_apiserver_url](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.azure_devops_sa_cacrt](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.azure_devops_sa_token](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.forwarder_subscription_key](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.jwt_pub_key](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.selfcare_web_storage_access_key](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.selfcare_web_storage_blob_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_key_vault_secret.selfcare_web_storage_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/key_vault_secret) | resource | -| [azurerm_monitor_scheduled_query_rules_alert.alert-pagopa-backoffice-availability](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | -| [azurerm_resource_group.selfcare_fe_rg](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/resource_group) | resource | -| [azurerm_storage_container.pagopa_oidc_config](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/resources/storage_container) | resource | +| [azurerm_api_management_api.pagopa_token_exchange](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api) | resource | +| [azurerm_api_management_api_operation.pagopa_token_exchange](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_operation) | resource | +| [azurerm_api_management_api_operation_policy.pagopa_token_exchange_policy](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_operation_policy) | resource | +| [azurerm_api_management_certificate.pagopa_token_exchange_cert_jwt](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_certificate) | resource | +| [azurerm_key_vault_certificate.pagopa_jwt_signing_cert](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_certificate) | resource | +| [azurerm_key_vault_secret.aks_apiserver_url](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.azure_devops_sa_cacrt](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.azure_devops_sa_token](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.forwarder_subscription_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.jwt_pub_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.selfcare_backoffice_static_app_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.selfcare_web_storage_access_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.selfcare_web_storage_blob_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.selfcare_web_storage_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_monitor_scheduled_query_rules_alert.alert-pagopa-backoffice-availability](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_scheduled_query_rules_alert) | resource | +| [azurerm_resource_group.selfcare_fe_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource | +| [azurerm_static_web_app.selfcare_backoffice_static_web_app](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/static_web_app) | resource | +| [azurerm_storage_container.pagopa_oidc_config](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/storage_container) | resource | | [helm_release.cert_mounter](https://registry.terraform.io/providers/hashicorp/helm/2.5.1/docs/resources/release) | resource | | [helm_release.reloader](https://registry.terraform.io/providers/hashicorp/helm/2.5.1/docs/resources/release) | resource | | [kubernetes_namespace.namespace](https://registry.terraform.io/providers/hashicorp/kubernetes/2.11.0/docs/resources/namespace) | resource | @@ -58,21 +60,21 @@ | [azuread_group.adgroup_developers](https://registry.terraform.io/providers/hashicorp/azuread/2.30.0/docs/data-sources/group) | data source | | [azuread_group.adgroup_externals](https://registry.terraform.io/providers/hashicorp/azuread/2.30.0/docs/data-sources/group) | data source | | [azuread_group.adgroup_security](https://registry.terraform.io/providers/hashicorp/azuread/2.30.0/docs/data-sources/group) | data source | -| [azurerm_api_management.apim](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/api_management) | data source | -| [azurerm_application_insights.application_insights](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/application_insights) | data source | -| [azurerm_client_config.current](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/client_config) | data source | -| [azurerm_key_vault.kv](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/key_vault) | data source | -| [azurerm_key_vault_certificate_data.pagopa_token_exchange_cert_jwt_public](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/key_vault_certificate_data) | data source | -| [azurerm_key_vault_secret.cdn_storage_access_secret](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/key_vault_secret) | data source | -| [azurerm_kubernetes_cluster.aks](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/kubernetes_cluster) | data source | -| [azurerm_log_analytics_workspace.log_analytics](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/log_analytics_workspace) | data source | -| [azurerm_monitor_action_group.email](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/monitor_action_group) | data source | -| [azurerm_monitor_action_group.opsgenie](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/monitor_action_group) | data source | -| [azurerm_monitor_action_group.slack](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/monitor_action_group) | data source | -| [azurerm_resource_group.monitor_rg](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/resource_group) | data source | -| [azurerm_resource_group.rg_api](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/resource_group) | data source | -| [azurerm_subscription.current](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/subscription) | data source | -| [azurerm_virtual_network.vnet](https://registry.terraform.io/providers/hashicorp/azurerm/3.39.0/docs/data-sources/virtual_network) | data source | +| [azurerm_api_management.apim](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/api_management) | data source | +| [azurerm_application_insights.application_insights](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/application_insights) | data source | +| [azurerm_client_config.current](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/client_config) | data source | +| [azurerm_key_vault.kv](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault) | data source | +| [azurerm_key_vault_certificate_data.pagopa_token_exchange_cert_jwt_public](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_certificate_data) | data source | +| [azurerm_key_vault_secret.cdn_storage_access_secret](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/key_vault_secret) | data source | +| [azurerm_kubernetes_cluster.aks](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/kubernetes_cluster) | data source | +| [azurerm_log_analytics_workspace.log_analytics](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/log_analytics_workspace) | data source | +| [azurerm_monitor_action_group.email](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/monitor_action_group) | data source | +| [azurerm_monitor_action_group.opsgenie](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/monitor_action_group) | data source | +| [azurerm_monitor_action_group.slack](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/monitor_action_group) | data source | +| [azurerm_resource_group.monitor_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | +| [azurerm_resource_group.rg_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | +| [azurerm_subscription.current](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/subscription) | data source | +| [azurerm_virtual_network.vnet](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/virtual_network) | data source | | [kubernetes_secret.azure_devops_secret](https://registry.terraform.io/providers/hashicorp/kubernetes/2.11.0/docs/data-sources/secret) | data source | | [tls_public_key.private_key_pem](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/public_key) | data source | diff --git a/src/domains/selfcare-common/.terraform.lock.hcl b/src/domains/selfcare-common/.terraform.lock.hcl index f7ff402f1d..40a3103011 100644 --- a/src/domains/selfcare-common/.terraform.lock.hcl +++ b/src/domains/selfcare-common/.terraform.lock.hcl @@ -5,11 +5,7 @@ provider "registry.terraform.io/hashicorp/azuread" { version = "2.30.0" constraints = "2.30.0" hashes = [ - "h1:MimDtBEnmdMwbriZQzga/kCjDZ1G0+QLVQjrYdBEpdc=", - "h1:Uw4TcmJBEJ71h+oCwwidlkk5jFpyFRDPAFCMs/bT/cw=", "h1:WnSPiREAFwnBUKREokMdHQ8Cjs47MzvS9pG8VS1ktec=", - "h1:eMxghqjmi2DCdps3dgo2SVOUfebzCatA3OdsTowlqXw=", - "h1:xzNKb+lWPsBTxJiaAJ8ECZnY+D6QNM9tA1qpEncIba0=", "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7", "zh:2e62c193030e04ebb10cc0526119cf69824bf2d7e4ea5a2f45bd5d5fb7221d36", "zh:2f3c7a35257332d68b778cefc5201a5f044e4914dd03794a4da662ddfe756483", @@ -29,11 +25,7 @@ provider "registry.terraform.io/hashicorp/azurerm" { version = "3.53.0" constraints = ">= 3.30.0, >= 3.39.0, <= 3.53.0, <= 3.84.0" hashes = [ - "h1:NqV7ilkolM3jBsmAx5Bh6mA9zfUHCQh3hyjOPBUeWlo=", - "h1:bK70LV1NldhodSm58cUpawKwdUL1A5AKKglAV2wZ/QY=", "h1:ocOIwGJG+K9hb22GdXhTdDiewSdeo9YO3BZ8cm8fUiE=", - "h1:vXyTtRE9MC/6pNTxrvYTJRwxQVsLxZdopz/xLXT18Ts=", - "h1:whOsp6yHx6/QVHci8z2K+ntZmpuC2Rvvn6rrZ0qsIzk=", "zh:078ece8318ad7d6c1cd2e5f2044188e74af63921b93223c7f8d477539fa91888", "zh:1bdc98ff8c2d3f3e81a746762e03d39794b2f5c90dc478cdb23dcc3d3f9947b6", "zh:20b51cfc0ffc4ff368e6eb2eaece0b6bb99ade09e4b91b3444b50e94fc54c119", @@ -51,13 +43,9 @@ provider "registry.terraform.io/hashicorp/azurerm" { provider "registry.terraform.io/hashicorp/null" { version = "3.1.1" - constraints = "3.1.1, <= 3.2.1" + constraints = "3.1.1" hashes = [ - "h1:1J3nqAREzuaLE7x98LEELCCaMV6BRiawHSg9MmFvfQo=", - "h1:71sNUDvmiJcijsvfXpiLCz0lXIBSsEJjMxljt7hxMhw=", "h1:Pctug/s/2Hg5FJqjYcTM0kPyx3AoYK1MpRWO0T9V2ns=", - "h1:YvH6gTaQzGdNv+SKTZujU1O0bO+Pw6vJHOPhqgN8XNs=", - "h1:ZD4wyZ0KJzt5s2mD0xD7paJlVONNicLvZKdgtezz02I=", "zh:063466f41f1d9fd0dd93722840c1314f046d8760b1812fa67c34de0afcba5597", "zh:08c058e367de6debdad35fc24d97131c7cf75103baec8279aba3506a08b53faf", "zh:73ce6dff935150d6ddc6ac4a10071e02647d10175c173cfe5dca81f3d13d8afe", @@ -74,24 +62,20 @@ provider "registry.terraform.io/hashicorp/null" { } provider "registry.terraform.io/hashicorp/time" { - version = "0.10.0" + version = "0.11.1" hashes = [ - "h1:EeF/Lb4db1Kl1HEHzT1StTC7RRqHn/eB7aDR3C3yjVg=", - "h1:NAl8eupFAZXCAbE5uiHZTz+Yqler55B3fMG+jNPrjjM=", - "h1:QL1ivYrUSB3zvhgXcRBfQak4HDxvesT2zktM+N6StVo=", - "h1:rPbqd7mEyBetQPjyBDBAdwiARulKbh2LwzQp2GSl/AI=", - "h1:wraHzpOZSaxgC37HLOt0k5Mstl1iNrol7DvvqkSQ1kc=", - "zh:0ab31efe760cc86c9eef9e8eb070ae9e15c52c617243bbd9041632d44ea70781", - "zh:0ee4e906e28f23c598632eeac297ab098d6d6a90629d15516814ab90ad42aec8", - "zh:3bbb3e9da728b82428c6f18533b5b7c014e8ff1b8d9b2587107c966b985e5bcc", - "zh:6771c72db4e4486f2c2603c81dfddd9e28b6554d1ded2996b4cb37f887b467de", + "h1:UyhbtF79Wy4EVNrnvMcOPzmZLVQQyzM2ostfjs2l5PI=", + "zh:19a393db736ec4fd024d098d55aefaef07056c37a448ece3b55b3f5f4c2c7e4a", + "zh:227fa1e221de2907f37be78d40c06ca6a6f7b243a1ec33ade014dfaf6d92cd9c", + "zh:29970fecbf4a3ca23bacbb05d6b90cdd33dd379f90059fe39e08289951502d9f", + "zh:65024596f22f10e7dcb5e0e4a75277f275b529daa0bc0daf34ca7901c678ab88", + "zh:694d080cb5e3bf5ef08c7409208d061c135a4f5f4cdc93ea8607860995264b2e", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:833c636d86c2c8f23296a7da5d492bdfd7260e22899fc8af8cc3937eb41a7391", - "zh:c545f1497ae0978ffc979645e594b57ff06c30b4144486f4f362d686366e2e42", - "zh:def83c6a85db611b8f1d996d32869f59397c23b8b78e39a978c8a2296b0588b2", - "zh:df9579b72cc8e5fac6efee20c7d0a8b72d3d859b50828b1c473d620ab939e2c7", - "zh:e281a8ecbb33c185e2d0976dc526c93b7359e3ffdc8130df7422863f4952c00e", - "zh:ecb1af3ae67ac7933b5630606672c94ec1f54b119bf77d3091f16d55ab634461", - "zh:f8109f13e07a741e1e8a52134f84583f97a819e33600be44623a21f6424d6593", + "zh:b29d15d13e1b3412e6a4e1627d378dbd102659132f7488f64017dd6b6d5216d3", + "zh:bb79f4cae9f8c17c73998edc54aa16c2130a03227f7f4e71fc6ac87e230575ec", + "zh:ceccf80e95929d97f62dcf1bb3c7c7553d5757b2d9e7d222518722fc934f7ad5", + "zh:f40e638336527490e294d9c938ae55919069e6987e85a80506784ba90348792a", + "zh:f99ef33b1629a3b2278201142a3011a8489e66d92da832a5b99e442204de18fb", + "zh:fded14754ea46fdecc62a52cd970126420d4cd190e598cb61190b4724a727edb", ] } diff --git a/src/domains/selfcare-common/02_security.tf b/src/domains/selfcare-common/02_security.tf index 73d0698ff5..6d5d35c425 100644 --- a/src/domains/selfcare-common/02_security.tf +++ b/src/domains/selfcare-common/02_security.tf @@ -57,7 +57,7 @@ resource "azurerm_key_vault_access_policy" "adgroup_externals_policy" { tenant_id = data.azurerm_client_config.current.tenant_id object_id = data.azuread_group.adgroup_externals.object_id - key_permissions = ["Get", "List", "Update", "Create", "Import", "Delete", ] + key_permissions = var.env_short != "d" ? ["Get", "List", "Update", "Create", "Import", "Delete", ] : ["Get", "List", "Update", "Create", "Import", "Delete", "Decrypt", "Encrypt", "UnwrapKey", "WrapKey", "Verify", "Sign", ] secret_permissions = ["Get", "List", "Set", "Delete", "Recover", "Restore", ] storage_permissions = [] certificate_permissions = [ diff --git a/src/domains/selfcare-common/04_app_configuration_feature.tf b/src/domains/selfcare-common/04_app_configuration_feature.tf index 2d6e2bc0cb..45109a9ab7 100644 --- a/src/domains/selfcare-common/04_app_configuration_feature.tf +++ b/src/domains/selfcare-common/04_app_configuration_feature.tf @@ -27,6 +27,8 @@ resource "azurerm_app_configuration_feature" "maintenance_banner_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -40,6 +42,8 @@ resource "azurerm_app_configuration_feature" "maintenance_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -60,6 +64,8 @@ resource "azurerm_app_configuration_feature" "is_operation_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -73,6 +79,8 @@ resource "azurerm_app_configuration_feature" "commission_bundles_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -86,6 +94,8 @@ resource "azurerm_app_configuration_feature" "commission_bundles_private_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -99,6 +109,8 @@ resource "azurerm_app_configuration_feature" "commission_bundles_public_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -112,6 +124,8 @@ resource "azurerm_app_configuration_feature" "delegations_list_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -125,6 +139,8 @@ resource "azurerm_app_configuration_feature" "payments_receipts_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } @@ -138,6 +154,8 @@ resource "azurerm_app_configuration_feature" "test_stations_flag" { lifecycle { ignore_changes = [ enabled, + targeting_filter, + timewindow_filter ] } } diff --git a/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl b/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl index 8a1c3215fc..bff6846308 100644 --- a/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl +++ b/src/domains/wallet-app/api/payment-wallet/v1/_openapi.json.tpl @@ -935,11 +935,13 @@ }, "PaymentMethodManagementType": { "type": "string", - "description": "Payment method management type", + "description": "Describes how to manage the payment method authorization flow in wallet and eCommerce domain:\n- REDIRECT if it must be managed with a redirect flow;\n- ONBOARDABLE if it must be managed with NPG and it is possible to save the payment method in the wallet, but also guest payment is accepted;\n- NOT_ONBOARDABLE if it must be managed with NPG but the method cannot be saved, only guest payment is accepted;\n- ONBOARDABLE_ONLY if it must be managed with NPG and it is mandatory to save the payment method in the wallet to use it. Guest payment isn't accepted;\n- ONBORDABLE_WITH_PAYMENT if it must be managed with NPG and it is possible to save it, to use it as guest payment, and to onboard it during the payment;", "enum": [ "ONBOARDABLE", "NOT_ONBOARDABLE", - "REDIRECT" + "REDIRECT", + "ONBOARDABLE_ONLY", + "ONBOARDABLE_WITH_PAYMENT" ] }, "Range": { diff --git a/src/elk-monitoring/pagopa/ecommerce/dashboards/ecommerceNpgMonitoringDashboard.ndjson b/src/elk-monitoring/pagopa/ecommerce/dashboards/ecommerceNpgMonitoringDashboard.ndjson index fc63a7653a..eaa9db3ad7 100644 --- a/src/elk-monitoring/pagopa/ecommerce/dashboards/ecommerceNpgMonitoringDashboard.ndjson +++ b/src/elk-monitoring/pagopa/ecommerce/dashboards/ecommerceNpgMonitoringDashboard.ndjson @@ -1,2 +1,2 @@ -{"attributes":{"controlGroupInput":{"chainingSystem":"HIERARCHICAL","controlStyle":"oneLine","ignoreParentSettingsJSON":"{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}","panelsJSON":"{\"b1900a95-f0c4-451a-a9fc-0b0ed43e7253\":{\"type\":\"optionsListControl\",\"order\":0,\"grow\":true,\"width\":\"medium\",\"explicitInput\":{\"id\":\"b1900a95-f0c4-451a-a9fc-0b0ed43e7253\",\"fieldName\":\"labels.npg_correlation_id\",\"title\":\"NPG correlation id\",\"grow\":true,\"width\":\"medium\",\"runPastTimeout\":true,\"selectedOptions\":[],\"enhancements\":{}}}}"},"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":16,\"i\":\"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b\"},\"panelIndex\":\"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b\",\"embeddableConfig\":{\"attributes\":{\"title\":\"95-ile Nexi NPG APIs\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029\"},{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"xlarge\",\"shouldTruncate\":false},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar\",\"layers\":[{\"layerId\":\"e1788b34-e384-4e6c-9e34-6566514b6029\",\"layerType\":\"data\",\"accessors\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\"],\"seriesType\":\"bar\",\"xAccessor\":\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\",\"splitAccessor\":\"6ffc3d4f-888b-4e05-ad18-96042eec7218\"},{\"layerId\":\"bfc9b265-f308-4250-9530-6bc79cb65a25\",\"layerType\":\"referenceLine\",\"accessors\":[\"d2bf8e26-3573-4b21-bdab-fe57f2714056\"],\"yConfig\":[{\"forAccessor\":\"d2bf8e26-3573-4b21-bdab-fe57f2714056\",\"axisMode\":\"left\",\"lineStyle\":\"dotted\",\"color\":\"#fa0000\",\"fill\":\"none\"}]}]},\"query\":{\"query\":\"span.name: NpgClient* \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"e1788b34-e384-4e6c-9e34-6566514b6029\":{\"columns\":{\"6ffc3d4f-888b-4e05-ad18-96042eec7218\":{\"label\":\"Top 10 values of span.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"span.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"accuracyMode\":false}},\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\":{\"label\":\"95-ile duration (ms)\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(span.duration.us, percentile=95) / 1000\",\"isFormulaBroken\":false},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\":{\"label\":\"Part of percentile(span.duration.us, percentile=95) / 1000\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"span.duration.us\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\":{\"label\":\"Part of percentile(span.duration.us, percentile=95) / 1000\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",1000],\"location\":{\"min\":0,\"max\":50},\"text\":\"percentile(span.duration.us, percentile=95) / 1000\"}},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\"],\"customLabel\":true}},\"columnOrder\":[\"6ffc3d4f-888b-4e05-ad18-96042eec7218\",\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"incompleteColumns\":{},\"sampling\":1},\"bfc9b265-f308-4250-9530-6bc79cb65a25\":{\"linkToLayers\":[],\"columns\":{\"d2bf8e26-3573-4b21-bdab-fe57f2714056\":{\"label\":\"Static value: 250\",\"dataType\":\"number\",\"operationType\":\"static_value\",\"isStaticValue\":true,\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"value\":\"250\"},\"references\":[]}},\"columnOrder\":[\"d2bf8e26-3573-4b21-bdab-fe57f2714056\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":16,\"w\":24,\"h\":15,\"i\":\"7b027a09-caa7-48dc-9839-a15b346e7746\"},\"panelIndex\":\"7b027a09-caa7-48dc-9839-a15b346e7746\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-32b62339-b174-4bb4-a35f-d2a1245c9800\"}],\"state\":{\"visualization\":{\"layerId\":\"32b62339-b174-4bb4-a35f-d2a1245c9800\",\"layerType\":\"data\",\"columns\":[{\"isTransposed\":false,\"columnId\":\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\"},{\"isTransposed\":false,\"columnId\":\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\",\"hidden\":false},{\"isTransposed\":false,\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"}],\"headerRowHeight\":\"single\",\"headerRowHeightLines\":1,\"paging\":{\"size\":10,\"enabled\":true}},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"32b62339-b174-4bb4-a35f-d2a1245c9800\":{\"columns\":{\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\":{\"label\":\"Operation\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"span.name\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\":{\"label\":\"NPG error codes\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"labels.npg_error_codes\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"d6030200-293f-402d-8992-afb11c2dcedf\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\",\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\",\"d6030200-293f-402d-8992-afb11c2dcedf\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"NPG error codes\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":16,\"w\":24,\"h\":15,\"i\":\"b75d7124-0b78-4d83-9e8d-f06b3dff91ef\"},\"panelIndex\":\"b75d7124-0b78-4d83-9e8d-f06b3dff91ef\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-05e05a2c-34d4-415f-a4c9-e44b0442dc2e\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"05e05a2c-34d4-415f-a4c9-e44b0442dc2e\",\"accessors\":[\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getState\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"05e05a2c-34d4-415f-a4c9-e44b0442dc2e\":{\"columns\":{\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\":{\"label\":\"GET state operations\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"span.name\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\",\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Overall of all GET state operation performed\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":31,\"w\":48,\"h\":13,\"i\":\"3da4b609-6eea-4132-a1e0-2648e3f20e59\"},\"panelIndex\":\"3da4b609-6eea-4132-a1e0-2648e3f20e59\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-e3e67b20-e51b-490d-ab30-05173dce5bc7\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"e3e67b20-e51b-490d-ab30-05173dce5bc7\",\"accessors\":[\"e853e320-d5aa-45e3-a322-144b90951b16\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"0ae56433-84be-47fe-b86c-219d15f472e2\",\"splitAccessor\":\"3c3c747b-b167-44e1-b0b0-26c429838af4\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"e3e67b20-e51b-490d-ab30-05173dce5bc7\":{\"columns\":{\"3c3c747b-b167-44e1-b0b0-26c429838af4\":{\"label\":\"NPG error code\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"labels.npg_error_codes\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"e853e320-d5aa-45e3-a322-144b90951b16\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"0ae56433-84be-47fe-b86c-219d15f472e2\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"e853e320-d5aa-45e3-a322-144b90951b16\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"3c3c747b-b167-44e1-b0b0-26c429838af4\",\"0ae56433-84be-47fe-b86c-219d15f472e2\",\"e853e320-d5aa-45e3-a322-144b90951b16\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"NPG error code time distrubition\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":44,\"w\":48,\"h\":12,\"i\":\"454d3fd0-de75-4da6-8618-6971e308dacd\"},\"panelIndex\":\"454d3fd0-de75-4da6-8618-6971e308dacd\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: NpgClient*\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[ALL] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":56,\"w\":24,\"h\":16,\"i\":\"2d69e7e6-01e9-4b3f-940f-012eb393ebcd\"},\"panelIndex\":\"2d69e7e6-01e9-4b3f-940f-012eb393ebcd\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#buildForm\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST order/build] Total NPG api calls vs HTTP errors \"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":56,\"w\":24,\"h\":16,\"i\":\"82b3df95-a7fe-434d-986e-5aaa6b2802d5\"},\"panelIndex\":\"82b3df95-a7fe-434d-986e-5aaa6b2802d5\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#confirmPayment\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST confirmPayment] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":72,\"w\":24,\"h\":16,\"i\":\"2b85453d-e396-4cd8-97f7-825ac5df9b14\"},\"panelIndex\":\"2b85453d-e396-4cd8-97f7-825ac5df9b14\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getCardData\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[GET cardData] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":72,\"w\":24,\"h\":16,\"i\":\"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e\"},\"panelIndex\":\"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getState\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[GET state] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":88,\"w\":24,\"h\":16,\"i\":\"250cd572-2771-4252-91b5-1ba157320c71\"},\"panelIndex\":\"250cd572-2771-4252-91b5-1ba157320c71\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#refundPayment\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST refund] Total NPG api calls vs HTTP errors\"}]","refreshInterval":{"pause":true,"value":0},"timeFrom":"now-2d","timeRestore":true,"timeTo":"now","title":"[eCommerce] - NPG Monitoring","version":1},"coreMigrationVersion":"8.8.0","created_at":"2024-04-19T08:37:26.724Z","id":"4c65ce70-f6ca-4cf6-8ad6-59ae96f6b7dc","managed":false,"originId":"0e1a19f0-f68c-11ee-941c-f9d3ef9f5cc7","references":[{"id":"apm_static_index_pattern_id","name":"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b:indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b:indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"7b027a09-caa7-48dc-9839-a15b346e7746:indexpattern-datasource-layer-32b62339-b174-4bb4-a35f-d2a1245c9800","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"b75d7124-0b78-4d83-9e8d-f06b3dff91ef:indexpattern-datasource-layer-05e05a2c-34d4-415f-a4c9-e44b0442dc2e","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"3da4b609-6eea-4132-a1e0-2648e3f20e59:indexpattern-datasource-layer-e3e67b20-e51b-490d-ab30-05173dce5bc7","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"454d3fd0-de75-4da6-8618-6971e308dacd:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"2d69e7e6-01e9-4b3f-940f-012eb393ebcd:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"82b3df95-a7fe-434d-986e-5aaa6b2802d5:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"2b85453d-e396-4cd8-97f7-825ac5df9b14:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"250cd572-2771-4252-91b5-1ba157320c71:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"controlGroup_b1900a95-f0c4-451a-a9fc-0b0ed43e7253:optionsListDataView","type":"index-pattern"},{"id":"7446b380-f693-11ee-941c-f9d3ef9f5cc7","name":"tag-ref-7446b380-f693-11ee-941c-f9d3ef9f5cc7","type":"tag"}],"type":"dashboard","typeMigrationVersion":"8.9.0","updated_at":"2024-04-19T08:37:26.724Z","version":"WzUxMjEsOF0="} +{"attributes":{"controlGroupInput":{"chainingSystem":"HIERARCHICAL","controlStyle":"oneLine","ignoreParentSettingsJSON":"{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}","panelsJSON":"{\"b1900a95-f0c4-451a-a9fc-0b0ed43e7253\":{\"type\":\"optionsListControl\",\"order\":0,\"grow\":true,\"width\":\"medium\",\"explicitInput\":{\"id\":\"b1900a95-f0c4-451a-a9fc-0b0ed43e7253\",\"fieldName\":\"labels.npg_correlation_id\",\"title\":\"NPG correlation id\",\"grow\":true,\"width\":\"medium\",\"runPastTimeout\":true,\"selectedOptions\":[],\"enhancements\":{}}}}"},"description":"","kibanaSavedObjectMeta":{"searchSourceJSON":"{\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filter\":[]}"},"optionsJSON":"{\"useMargins\":true,\"syncColors\":false,\"syncCursor\":true,\"syncTooltips\":false,\"hidePanelTitles\":false}","panelsJSON":"[{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":0,\"w\":48,\"h\":16,\"i\":\"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b\"},\"panelIndex\":\"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b\",\"embeddableConfig\":{\"attributes\":{\"title\":\"95-ile Nexi NPG APIs\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029\",\"type\":\"index-pattern\"},{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\",\"legendSize\":\"xlarge\",\"shouldTruncate\":false},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar\",\"layers\":[{\"layerId\":\"e1788b34-e384-4e6c-9e34-6566514b6029\",\"layerType\":\"data\",\"accessors\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\"],\"seriesType\":\"bar\",\"xAccessor\":\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\",\"splitAccessor\":\"6ffc3d4f-888b-4e05-ad18-96042eec7218\"},{\"layerId\":\"bfc9b265-f308-4250-9530-6bc79cb65a25\",\"layerType\":\"referenceLine\",\"accessors\":[\"d2bf8e26-3573-4b21-bdab-fe57f2714056\"],\"yConfig\":[{\"forAccessor\":\"d2bf8e26-3573-4b21-bdab-fe57f2714056\",\"axisMode\":\"left\",\"lineStyle\":\"dotted\",\"color\":\"#fa0000\",\"fill\":\"none\"}]}]},\"query\":{\"query\":\"span.name: NpgClient* \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"e1788b34-e384-4e6c-9e34-6566514b6029\":{\"columns\":{\"6ffc3d4f-888b-4e05-ad18-96042eec7218\":{\"label\":\"Top 10 values of span.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"span.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"accuracyMode\":false}},\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\":{\"label\":\"95-ile duration (ms)\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(span.duration.us, percentile=95) / 1000\",\"isFormulaBroken\":false},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\":{\"label\":\"Part of percentile(span.duration.us, percentile=95) / 1000\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"span.duration.us\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\":{\"label\":\"Part of percentile(span.duration.us, percentile=95) / 1000\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",1000],\"location\":{\"min\":0,\"max\":50},\"text\":\"percentile(span.duration.us, percentile=95) / 1000\"}},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\"],\"customLabel\":true}},\"columnOrder\":[\"6ffc3d4f-888b-4e05-ad18-96042eec7218\",\"54b205fa-f112-49ff-adbb-4787fa3e2c3e\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"incompleteColumns\":{},\"sampling\":1},\"bfc9b265-f308-4250-9530-6bc79cb65a25\":{\"linkToLayers\":[],\"columns\":{\"d2bf8e26-3573-4b21-bdab-fe57f2714056\":{\"label\":\"Static value: 250\",\"dataType\":\"number\",\"operationType\":\"static_value\",\"isStaticValue\":true,\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"value\":\"250\"},\"references\":[]}},\"columnOrder\":[\"d2bf8e26-3573-4b21-bdab-fe57f2714056\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{}}},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":16,\"w\":23,\"h\":15,\"i\":\"da7e9699-f2d8-4404-b0ef-65704a892dce\"},\"panelIndex\":\"da7e9699-f2d8-4404-b0ef-65704a892dce\",\"embeddableConfig\":{\"attributes\":{\"title\":\"95-ile Nexi NPG APIs\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029\"},{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25\"}],\"state\":{\"visualization\":{\"layerId\":\"e1788b34-e384-4e6c-9e34-6566514b6029\",\"layerType\":\"data\",\"columns\":[{\"columnId\":\"6ffc3d4f-888b-4e05-ad18-96042eec7218\"},{\"columnId\":\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\"}]},\"query\":{\"query\":\"span.name: NpgClient* \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"e1788b34-e384-4e6c-9e34-6566514b6029\":{\"columns\":{\"6ffc3d4f-888b-4e05-ad18-96042eec7218\":{\"label\":\"Top 10 values of span.name\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"span.name\",\"isBucketed\":true,\"params\":{\"size\":10,\"orderBy\":{\"type\":\"alphabetical\",\"fallback\":true},\"orderDirection\":\"asc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false,\"accuracyMode\":false}},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\":{\"label\":\"Part of 95-ile duration (ms)\",\"dataType\":\"number\",\"operationType\":\"percentile\",\"sourceField\":\"span.duration.us\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"percentile\":95},\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\":{\"label\":\"Part of 95-ile duration (ms)\",\"dataType\":\"number\",\"operationType\":\"math\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"tinymathAst\":{\"type\":\"function\",\"name\":\"divide\",\"args\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",1000],\"location\":{\"min\":0,\"max\":50},\"text\":\"percentile(span.duration.us, percentile=95) / 1000\"}},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\"],\"customLabel\":true},\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\":{\"label\":\"95-ile duration (ms)\",\"dataType\":\"number\",\"operationType\":\"formula\",\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"formula\":\"percentile(span.duration.us, percentile=95) / 1000\",\"isFormulaBroken\":false},\"references\":[\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"customLabel\":true}},\"columnOrder\":[\"6ffc3d4f-888b-4e05-ad18-96042eec7218\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59b\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX0\",\"3fca91b5-9d7e-4767-94c0-6dfeab0bd59bX1\"],\"incompleteColumns\":{},\"sampling\":1},\"bfc9b265-f308-4250-9530-6bc79cb65a25\":{\"linkToLayers\":[],\"columns\":{\"d2bf8e26-3573-4b21-bdab-fe57f2714056\":{\"label\":\"Static value: 250\",\"dataType\":\"number\",\"operationType\":\"static_value\",\"isStaticValue\":true,\"isBucketed\":false,\"scale\":\"ratio\",\"params\":{\"value\":\"250\"},\"references\":[]}},\"columnOrder\":[\"d2bf8e26-3573-4b21-bdab-fe57f2714056\"],\"sampling\":1,\"ignoreGlobalFilters\":false,\"incompleteColumns\":{}}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"enhancements\":{},\"hidePanelTitles\":false},\"title\":\"95-ile Nexi NPG APIs (global)\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":23,\"y\":16,\"w\":25,\"h\":15,\"i\":\"7b027a09-caa7-48dc-9839-a15b346e7746\"},\"panelIndex\":\"7b027a09-caa7-48dc-9839-a15b346e7746\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsDatatable\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-32b62339-b174-4bb4-a35f-d2a1245c9800\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"layerId\":\"32b62339-b174-4bb4-a35f-d2a1245c9800\",\"layerType\":\"data\",\"columns\":[{\"isTransposed\":false,\"columnId\":\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\"},{\"isTransposed\":false,\"columnId\":\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\",\"hidden\":false},{\"isTransposed\":false,\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"}],\"headerRowHeight\":\"single\",\"headerRowHeightLines\":1,\"paging\":{\"size\":10,\"enabled\":true}},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"32b62339-b174-4bb4-a35f-d2a1245c9800\":{\"columns\":{\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\":{\"label\":\"Operation\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"span.name\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\":{\"label\":\"NPG error codes\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"labels.npg_error_codes\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"d6030200-293f-402d-8992-afb11c2dcedf\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"d6030200-293f-402d-8992-afb11c2dcedf\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"b4d1e96b-5238-4aff-8687-c9a8aa0d4e2c\",\"d7b77d07-0e8f-4bf7-befd-ccd04d8d9a99\",\"d6030200-293f-402d-8992-afb11c2dcedf\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"NPG error codes\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":31,\"w\":48,\"h\":15,\"i\":\"b75d7124-0b78-4d83-9e8d-f06b3dff91ef\"},\"panelIndex\":\"b75d7124-0b78-4d83-9e8d-f06b3dff91ef\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-05e05a2c-34d4-415f-a4c9-e44b0442dc2e\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"05e05a2c-34d4-415f-a4c9-e44b0442dc2e\",\"accessors\":[\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getState\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"05e05a2c-34d4-415f-a4c9-e44b0442dc2e\":{\"columns\":{\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\":{\"label\":\"GET state operations\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"span.name\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"24f50479-ec2b-4402-ab20-2c5bf6b3823f\",\"ee18ff31-7a87-44bd-a97e-4fcdc607031d\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"Overall of all GET state operation performed\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":46,\"w\":48,\"h\":13,\"i\":\"3da4b609-6eea-4132-a1e0-2648e3f20e59\"},\"panelIndex\":\"3da4b609-6eea-4132-a1e0-2648e3f20e59\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-e3e67b20-e51b-490d-ab30-05173dce5bc7\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"bar_stacked\",\"layers\":[{\"layerId\":\"e3e67b20-e51b-490d-ab30-05173dce5bc7\",\"accessors\":[\"e853e320-d5aa-45e3-a322-144b90951b16\"],\"position\":\"top\",\"seriesType\":\"bar_stacked\",\"showGridlines\":false,\"layerType\":\"data\",\"xAccessor\":\"0ae56433-84be-47fe-b86c-219d15f472e2\",\"splitAccessor\":\"3c3c747b-b167-44e1-b0b0-26c429838af4\"}]},\"query\":{\"query\":\"\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"e3e67b20-e51b-490d-ab30-05173dce5bc7\":{\"columns\":{\"3c3c747b-b167-44e1-b0b0-26c429838af4\":{\"label\":\"NPG error code\",\"dataType\":\"string\",\"operationType\":\"terms\",\"scale\":\"ordinal\",\"sourceField\":\"labels.npg_error_codes\",\"isBucketed\":true,\"params\":{\"size\":10000,\"orderBy\":{\"type\":\"column\",\"columnId\":\"e853e320-d5aa-45e3-a322-144b90951b16\"},\"orderDirection\":\"desc\",\"otherBucket\":true,\"missingBucket\":false,\"parentFormat\":{\"id\":\"terms\"},\"include\":[],\"exclude\":[],\"includeIsRegex\":false,\"excludeIsRegex\":false},\"customLabel\":true},\"0ae56433-84be-47fe-b86c-219d15f472e2\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"e853e320-d5aa-45e3-a322-144b90951b16\":{\"label\":\"Count of records\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true}}},\"columnOrder\":[\"3c3c747b-b167-44e1-b0b0-26c429838af4\",\"0ae56433-84be-47fe-b86c-219d15f472e2\",\"e853e320-d5aa-45e3-a322-144b90951b16\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"NPG error code time distrubition\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":59,\"w\":48,\"h\":12,\"i\":\"454d3fd0-de75-4da6-8618-6971e308dacd\"},\"panelIndex\":\"454d3fd0-de75-4da6-8618-6971e308dacd\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: NpgClient*\",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[ALL] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":71,\"w\":24,\"h\":16,\"i\":\"2d69e7e6-01e9-4b3f-940f-012eb393ebcd\"},\"panelIndex\":\"2d69e7e6-01e9-4b3f-940f-012eb393ebcd\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#buildForm\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST order/build] Total NPG api calls vs HTTP errors \"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":71,\"w\":24,\"h\":16,\"i\":\"82b3df95-a7fe-434d-986e-5aaa6b2802d5\"},\"panelIndex\":\"82b3df95-a7fe-434d-986e-5aaa6b2802d5\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#confirmPayment\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST confirmPayment] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":87,\"w\":24,\"h\":16,\"i\":\"2b85453d-e396-4cd8-97f7-825ac5df9b14\"},\"panelIndex\":\"2b85453d-e396-4cd8-97f7-825ac5df9b14\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getCardData\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[GET cardData] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":87,\"w\":24,\"h\":16,\"i\":\"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e\"},\"panelIndex\":\"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getState\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[GET state] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":0,\"y\":103,\"w\":24,\"h\":16,\"i\":\"250cd572-2771-4252-91b5-1ba157320c71\"},\"panelIndex\":\"250cd572-2771-4252-91b5-1ba157320c71\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"type\":\"index-pattern\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#refundPayment\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[POST refund] Total NPG api calls vs HTTP errors\"},{\"version\":\"8.9.0\",\"type\":\"lens\",\"gridData\":{\"x\":24,\"y\":103,\"w\":24,\"h\":16,\"i\":\"f2dec95b-5b63-4521-95ba-7989b300c3c8\"},\"panelIndex\":\"f2dec95b-5b63-4521-95ba-7989b300c3c8\",\"embeddableConfig\":{\"attributes\":{\"title\":\"\",\"description\":\"\",\"visualizationType\":\"lnsXY\",\"type\":\"lens\",\"references\":[{\"type\":\"index-pattern\",\"id\":\"apm_static_index_pattern_id\",\"name\":\"indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db\"}],\"state\":{\"visualization\":{\"legend\":{\"isVisible\":true,\"position\":\"right\"},\"valueLabels\":\"hide\",\"fittingFunction\":\"None\",\"axisTitlesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"tickLabelsVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"labelsOrientation\":{\"x\":0,\"yLeft\":0,\"yRight\":0},\"gridlinesVisibilitySettings\":{\"x\":true,\"yLeft\":true,\"yRight\":true},\"preferredSeriesType\":\"area_percentage_stacked\",\"layers\":[{\"layerId\":\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\",\"seriesType\":\"area_percentage_stacked\",\"xAccessor\":\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"accessors\":[\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"layerType\":\"data\"}]},\"query\":{\"query\":\"span.name: \\\"NpgClient#getOrder\\\" \",\"language\":\"kuery\"},\"filters\":[],\"datasourceStates\":{\"formBased\":{\"layers\":{\"388c4bf8-22b8-49b7-83cb-5fc3826f24db\":{\"columns\":{\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\":{\"label\":\"@timestamp\",\"dataType\":\"date\",\"operationType\":\"date_histogram\",\"sourceField\":\"@timestamp\",\"isBucketed\":true,\"scale\":\"interval\",\"params\":{\"interval\":\"auto\",\"includeEmptyRows\":true,\"dropPartials\":false}},\"034891e4-5940-4450-9cd4-3136164d4f0f\":{\"label\":\"Total NPG api calls\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"___records___\",\"params\":{\"emptyAsNull\":true},\"customLabel\":true},\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\":{\"label\":\"NPG api call with HTTP error\",\"dataType\":\"number\",\"operationType\":\"count\",\"isBucketed\":false,\"scale\":\"ratio\",\"sourceField\":\"numeric_labels.npg_http_error_code\",\"filter\":{\"query\":\"\",\"language\":\"kuery\"},\"params\":{\"emptyAsNull\":true},\"customLabel\":true}},\"columnOrder\":[\"83f2d7c4-cb48-41c3-8e03-f1047183ff5c\",\"034891e4-5940-4450-9cd4-3136164d4f0f\",\"d96e9ff2-ed21-4c7d-b8c1-dc50878e4407\"],\"incompleteColumns\":{},\"sampling\":1}}},\"indexpattern\":{\"layers\":{}},\"textBased\":{\"layers\":{}}},\"internalReferences\":[],\"adHocDataViews\":{}}},\"hidePanelTitles\":false,\"enhancements\":{}},\"title\":\"[GET orders] Total NPG api calls vs HTTP errors\"}]","refreshInterval":{"pause":false,"value":60000},"timeFrom":"2024-05-22T12:00:00.000Z","timeRestore":true,"timeTo":"now","title":"[eCommerce] - NPG Monitoring","version":1},"coreMigrationVersion":"8.8.0","created_at":"2024-05-22T13:06:03.471Z","id":"4c65ce70-f6ca-4cf6-8ad6-59ae96f6b7dc","managed":false,"originId":"0e1a19f0-f68c-11ee-941c-f9d3ef9f5cc7","references":[{"id":"apm_static_index_pattern_id","name":"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b:indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"6f7e9ae6-d648-4dc1-b2a6-9998dc8f935b:indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"da7e9699-f2d8-4404-b0ef-65704a892dce:indexpattern-datasource-layer-e1788b34-e384-4e6c-9e34-6566514b6029","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"da7e9699-f2d8-4404-b0ef-65704a892dce:indexpattern-datasource-layer-bfc9b265-f308-4250-9530-6bc79cb65a25","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"7b027a09-caa7-48dc-9839-a15b346e7746:indexpattern-datasource-layer-32b62339-b174-4bb4-a35f-d2a1245c9800","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"b75d7124-0b78-4d83-9e8d-f06b3dff91ef:indexpattern-datasource-layer-05e05a2c-34d4-415f-a4c9-e44b0442dc2e","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"3da4b609-6eea-4132-a1e0-2648e3f20e59:indexpattern-datasource-layer-e3e67b20-e51b-490d-ab30-05173dce5bc7","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"454d3fd0-de75-4da6-8618-6971e308dacd:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"2d69e7e6-01e9-4b3f-940f-012eb393ebcd:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"82b3df95-a7fe-434d-986e-5aaa6b2802d5:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"2b85453d-e396-4cd8-97f7-825ac5df9b14:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"fdde80cc-1ec1-4e8a-ae76-a8828d8b9f2e:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"250cd572-2771-4252-91b5-1ba157320c71:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"f2dec95b-5b63-4521-95ba-7989b300c3c8:indexpattern-datasource-layer-388c4bf8-22b8-49b7-83cb-5fc3826f24db","type":"index-pattern"},{"id":"apm_static_index_pattern_id","name":"controlGroup_b1900a95-f0c4-451a-a9fc-0b0ed43e7253:optionsListDataView","type":"index-pattern"},{"id":"7446b380-f693-11ee-941c-f9d3ef9f5cc7","name":"tag-ref-7446b380-f693-11ee-941c-f9d3ef9f5cc7","type":"tag"}],"type":"dashboard","typeMigrationVersion":"8.9.0","updated_at":"2024-05-22T13:06:03.471Z","version":"WzE1NjA0LDEwXQ=="} {"excludedObjects":[],"excludedObjectsCount":0,"exportedCount":1,"missingRefCount":0,"missingReferences":[]} \ No newline at end of file diff --git a/src/next-core/env/dev/terraform.tfvars b/src/next-core/env/dev/terraform.tfvars index 289e55eb76..d3a7d552c0 100644 --- a/src/next-core/env/dev/terraform.tfvars +++ b/src/next-core/env/dev/terraform.tfvars @@ -641,6 +641,46 @@ eventhubs_04 = [ manage = false } ] + }, + { + name = "fdr-qi-reported-iuv" + partitions = 1 # in PROD shall be changed + message_retention = 1 # in PROD shall be changed + consumers = ["fdr-qi-reported-iuv-rx"] + keys = [ + { + name = "fdr-qi-reported-iuv-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-reported-iuv-rx" + listen = true + send = false + manage = false + } + ] + }, + { + name = "fdr-qi-flows" + partitions = 1 # in PROD shall be changed + message_retention = 1 # in PROD shall be changed + consumers = ["fdr-qi-flows-rx"] + keys = [ + { + name = "fdr-qi-flows-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-flows-rx" + listen = true + send = false + manage = false + } + ] } ] diff --git a/src/next-core/env/prod/terraform.tfvars b/src/next-core/env/prod/terraform.tfvars index bd71289c47..8232f12f8b 100644 --- a/src/next-core/env/prod/terraform.tfvars +++ b/src/next-core/env/prod/terraform.tfvars @@ -635,6 +635,46 @@ eventhubs_04 = [ manage = false } ] + }, + { + name = "fdr-qi-reported-iuv" + partitions = 32 + message_retention = 7 + consumers = ["fdr-qi-reported-iuv-rx"] + keys = [ + { + name = "fdr-qi-reported-iuv-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-reported-iuv-rx" + listen = true + send = false + manage = false + } + ] + }, + { + name = "fdr-qi-flows" + partitions = 32 + message_retention = 7 + consumers = ["fdr-qi-flows-rx"] + keys = [ + { + name = "fdr-qi-flows-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-flows-rx" + listen = true + send = false + manage = false + } + ] } ] diff --git a/src/next-core/env/uat/terraform.tfvars b/src/next-core/env/uat/terraform.tfvars index edcaeddf86..d98a6fcfdd 100644 --- a/src/next-core/env/uat/terraform.tfvars +++ b/src/next-core/env/uat/terraform.tfvars @@ -609,6 +609,46 @@ eventhubs_04 = [ manage = false } ] + }, + { + name = "fdr-qi-reported-iuv" + partitions = 3 + message_retention = 1 + consumers = ["fdr-qi-reported-iuv-rx"] + keys = [ + { + name = "fdr-qi-reported-iuv-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-reported-iuv-rx" + listen = true + send = false + manage = false + } + ] + }, + { + name = "fdr-qi-flows" + partitions = 3 + message_retention = 1 + consumers = ["fdr-qi-flows-rx"] + keys = [ + { + name = "fdr-qi-flows-tx" + listen = false + send = true + manage = false + }, + { + name = "fdr-qi-flows-rx" + listen = true + send = false + manage = false + } + ] } ] diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/db.changelog-20240318000000_partizionamento.xml b/src/psql/nodo/liquibase/changelog/offline/3.26.0/db.changelog-20240318000000_partizionamento.xml index c55782e9fe..8a9430528a 100644 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/db.changelog-20240318000000_partizionamento.xml +++ b/src/psql/nodo/liquibase/changelog/offline/3.26.0/db.changelog-20240318000000_partizionamento.xml @@ -1,55 +1,32 @@ - - - - - - - + + + diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/1_DDL_TABLE.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/1_DDL_TABLE.sql index 21b900d200..c4560a3319 100644 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/1_DDL_TABLE.sql +++ b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/1_DDL_TABLE.sql @@ -1,54 +1,45 @@ CREATE TABLE IF NOT EXISTS ${schema}.rendicontazione_sftp_receive_queue_parted ( - id numeric NOT NULL DEFAULT nextval('${schema}.rendicontazione_sftp_receive_queue_seq'::regclass), - file_name character varying(255) COLLATE pg_catalog."default" NOT NULL, - status character varying(10) COLLATE pg_catalog."default" NOT NULL, - file_size numeric(19,0), - server_id numeric(19,0) NOT NULL, - host_name character varying(50) COLLATE pg_catalog."default" NOT NULL, - port numeric(19,0) NOT NULL, - path character varying(255) COLLATE pg_catalog."default" NOT NULL, - hash character varying(32) COLLATE pg_catalog."default" NOT NULL, - content bytea NOT NULL, - sender character varying(50) COLLATE pg_catalog."default", - receiver character varying(50) COLLATE pg_catalog."default", - inserted_timestamp timestamp(6) without time zone NOT NULL, - updated_timestamp timestamp(6) without time zone NOT NULL, - inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT rendicontazione_sftp_receive_queue_parted_pk PRIMARY KEY (id,inserted_timestamp) -) partition by range ("inserted_timestamp"); + id numeric NOT NULL DEFAULT nextval('${schema}.rendicontazione_sftp_receive_queue_seq'::regclass), + file_name character varying(255) COLLATE pg_catalog."default" NOT NULL, + status character varying(10) COLLATE pg_catalog."default" NOT NULL, + file_size numeric(19,0), + server_id numeric(19,0) NOT NULL, + host_name character varying(50) COLLATE pg_catalog."default" NOT NULL, + port numeric(19,0) NOT NULL, + path character varying(255) COLLATE pg_catalog."default" NOT NULL, + hash character varying(32) COLLATE pg_catalog."default" NOT NULL, + content bytea NOT NULL, + sender character varying(50) COLLATE pg_catalog."default", + receiver character varying(50) COLLATE pg_catalog."default", + inserted_timestamp timestamp(6) without time zone NOT NULL, + updated_timestamp timestamp(6) without time zone NOT NULL, + inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + CONSTRAINT rendicontazione_sftp_receive_queue_parted_pk PRIMARY KEY (id,inserted_timestamp) + ) partition by range ("inserted_timestamp"); -- CREATE TABLE IF NOT EXISTS ${schema}.rendicontazione_sftp_send_queue_parted ( - id numeric NOT NULL DEFAULT nextval('${schema}.rendicontazione_sftp_send_queue_seq'::regclass), - file_name character varying(255) COLLATE pg_catalog."default" NOT NULL, - status character varying(10) COLLATE pg_catalog."default" NOT NULL, - file_size numeric(19,0), - server_id numeric(19,0) NOT NULL, - host_name character varying(50) COLLATE pg_catalog."default" NOT NULL, - port numeric(19,0) NOT NULL, - path character varying(255) COLLATE pg_catalog."default" NOT NULL, - hash character varying(32) COLLATE pg_catalog."default" NOT NULL, - content bytea NOT NULL, - sender character varying(50) COLLATE pg_catalog."default", - receiver character varying(50) COLLATE pg_catalog."default", - inserted_timestamp timestamp(6) without time zone NOT NULL, - updated_timestamp timestamp(6) without time zone NOT NULL, - inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - retry numeric(19,0), - CONSTRAINT rendicontazione_sftp_send_queue_parted_pk PRIMARY KEY (id,inserted_timestamp) -) partition by range ("inserted_timestamp"); - --- - -CREATE TABLE IF NOT EXISTS ${schema}.tab_part -( - tabella character varying(100) COLLATE pg_catalog."default", - schema character varying(100) COLLATE pg_catalog."default" -); - + id numeric NOT NULL DEFAULT nextval('${schema}.rendicontazione_sftp_send_queue_seq'::regclass), + file_name character varying(255) COLLATE pg_catalog."default" NOT NULL, + status character varying(10) COLLATE pg_catalog."default" NOT NULL, + file_size numeric(19,0), + server_id numeric(19,0) NOT NULL, + host_name character varying(50) COLLATE pg_catalog."default" NOT NULL, + port numeric(19,0) NOT NULL, + path character varying(255) COLLATE pg_catalog."default" NOT NULL, + hash character varying(32) COLLATE pg_catalog."default" NOT NULL, + content bytea NOT NULL, + sender character varying(50) COLLATE pg_catalog."default", + receiver character varying(50) COLLATE pg_catalog."default", + inserted_timestamp timestamp(6) without time zone NOT NULL, + updated_timestamp timestamp(6) without time zone NOT NULL, + inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + retry numeric(19,0), + CONSTRAINT rendicontazione_sftp_send_queue_parted_pk PRIMARY KEY (id,inserted_timestamp) + ) partition by range ("inserted_timestamp"); diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_DML_TABLE_PART.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_DML_TABLE_PART.sql deleted file mode 100644 index d110b82259..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_DML_TABLE_PART.sql +++ /dev/null @@ -1,2 +0,0 @@ -insert into ${schema}.tab_part(tabella,schema)values ('rendicontazione_sftp_receive_queue','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rendicontazione_sftp_send_queue','${schema}'); diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_RENAME_TABLE.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_RENAME_TABLE.sql new file mode 100644 index 0000000000..ce59f69602 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/2_RENAME_TABLE.sql @@ -0,0 +1,4 @@ +ALTER TABLE ${schema}.rendicontazione_sftp_receive_queue rename TO rendicontazione_sftp_receive_queue_old; +ALTER TABLE ${schema}.rendicontazione_sftp_receive_queue_parted rename TO rendicontazione_sftp_receive_queue; +ALTER TABLE ${schema}.rendicontazione_sftp_send_queue rename TO rendicontazione_sftp_send_queue_old; +ALTER TABLE ${schema}.rendicontazione_sftp_send_queue_parted rename TO rendicontazione_sftp_send_queue; diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_GRANT.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_GRANT.sql new file mode 100644 index 0000000000..8fcb5bf3c6 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_GRANT.sql @@ -0,0 +1,6 @@ +GRANT ALL ON TABLE ${schema}.rendicontazione_sftp_receive_queue TO ${schema}; +GRANT ALL ON TABLE ${schema}.rendicontazione_sftp_send_queue TO ${schema}; +------------------------------------------------------------------- +ALTER TABLE IF EXISTS ${schema}.rendicontazione_sftp_receive_queue OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rendicontazione_sftp_send_queue OWNER to ${schema}; +------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_RENAME_OLD_PART.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_RENAME_OLD_PART.sql deleted file mode 100644 index 28161b3022..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/3_RENAME_OLD_PART.sql +++ /dev/null @@ -1,5 +0,0 @@ -alter table ${schema}.rendicontazione_sftp_receive_queue rename to rendicontazione_sftp_receive_queue_old; -alter table ${schema}.rendicontazione_sftp_receive_queue_parted rename to rendicontazione_sftp_receive_queue; - -alter table ${schema}.rendicontazione_sftp_send_queue rename to rendicontazione_sftp_send_queue_old; -alter table ${schema}.rendicontazione_sftp_send_queue_parted rename to rendicontazione_sftp_send_queue; diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/4_PROCEDURE_modify_partition.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/4_PROCEDURE_modify_partition.sql deleted file mode 100644 index 3c2706fee6..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/4_PROCEDURE_modify_partition.sql +++ /dev/null @@ -1,210 +0,0 @@ --- PROCEDURE: ${schema}.modify_partition() - --- DROP PROCEDURE IF EXISTS ${schema}.modify_partition(); - - -CREATE OR REPLACE PROCEDURE ${schema}.modify_partition( - ) -LANGUAGE 'plpgsql' -AS $BODY$ - -DECLARE - -l_partname0 TEXT; -l_partname1 TEXT; -l_partname2 TEXT; -l_partname3 TEXT; -l_partname4 TEXT; -l_partname5 TEXT; -l_partname6 TEXT; -l_partname7 TEXT; -l_part_list0 date; -l_part_list1 date; -l_part_list2 date; -l_part_list3 date; -l_part_list4 date; -l_part_list5 date; -l_part_list6 date; -l_part_list7 date; -l_part_listb0 date; -l_part_listb1 date; -l_part_listb2 date; -l_part_listb3 date; -l_part_listb4 date; -l_part_listb5 date; -l_part_listb6 date; -l_part_listb7 date; -l_partab TEXT; -l_sql0 text; -l_sql1 text; -l_sql2 text; -l_sql3 text; -l_sql4 text; -l_sql5 text; -l_sql6 text; -l_sql7 text; -l_exist text; -l_var_exist integer; - - tab_cursor CURSOR FOR - SELECT lower(tabella) as tabella, lower(schema) as schema - FROM ${schema}.TAB_PART; - tab_record TEXT; - tab_schema TEXT; - -BEGIN - - OPEN tab_cursor; - - - - LOOP - FETCH NEXT FROM tab_cursor INTO tab_record, tab_schema; - EXIT WHEN NOT FOUND; - - - ------------------------------------------------------------------------------------------------------- - - l_part_list0 = date_trunc('day', CURRENT_DATE-1500)::date; - l_part_listb0 = date_trunc('day', CURRENT_DATE+1)::date; - l_partname0 := tab_record||'_PMINVALUE'; - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname0 and table_schema=tab_schema) - THEN - - l_sql0 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname0, tab_schema, tab_record, l_part_list0, l_part_listb0); - execute l_sql0; - END IF; - - ------------------------------------------------------------------------------------------------------- - - l_part_list1 = date_trunc('day', CURRENT_DATE+1)::date; - l_part_listb1 = date_trunc('day', CURRENT_DATE+2)::date; - l_partname1 := tab_record||'_P'||to_char(CURRENT_DATE+1, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname1 and table_schema=tab_schema) - THEN - - l_sql1 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname1, tab_schema, tab_record, l_part_list1, l_part_listb1); - execute l_sql1; - END IF; ------------------------------------------------------------------------------------------------------- - - l_part_list2 = date_trunc('day', CURRENT_DATE+2)::date; - l_part_listb2 = date_trunc('day', CURRENT_DATE+3)::date; - l_partname2 := tab_record||'_P'||to_char(CURRENT_DATE+2, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname2 and table_schema=tab_schema) - THEN - - l_sql2 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname2, tab_schema, tab_record, l_part_list2, l_part_listb2); - execute l_sql2; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list3 = date_trunc('day', CURRENT_DATE+3)::date; - l_part_listb3 = date_trunc('day', CURRENT_DATE+4)::date; - l_partname3 := tab_record||'_P'||to_char(CURRENT_DATE+3, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname3 and table_schema=tab_schema) - THEN - - l_sql3 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname3, tab_schema, tab_record, l_part_list3, l_part_listb3); - execute l_sql3; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list4 = date_trunc('day', CURRENT_DATE+4)::date; - l_part_listb4 = date_trunc('day', CURRENT_DATE+5)::date; - l_partname4 := tab_record||'_P'||to_char(CURRENT_DATE+4, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname4 and table_schema=tab_schema) - THEN - - l_sql4 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname4, tab_schema, tab_record, l_part_list4, l_part_listb4); - execute l_sql4; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list5 = date_trunc('day', CURRENT_DATE+5)::date; - l_part_listb5 = date_trunc('day', CURRENT_DATE+6)::date; - l_partname5 := tab_record||'_P'||to_char(CURRENT_DATE+5, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname5 and table_schema=tab_schema) - THEN - - l_sql5 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname5, tab_schema, tab_record, l_part_list5, l_part_listb5); - execute l_sql5; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list6 = date_trunc('day', CURRENT_DATE+6)::date; - l_part_listb6 = date_trunc('day', CURRENT_DATE+7)::date; - l_partname6 := tab_record||'_P'||to_char(CURRENT_DATE+6, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname6 and table_schema=tab_schema) - THEN - - l_sql6 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname6, tab_schema, tab_record, l_part_list6, l_part_listb6); - execute l_sql6; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list7 = date_trunc('day', CURRENT_DATE+7)::date; - l_part_listb7 = date_trunc('day', CURRENT_DATE+8)::date; - l_partname7 := tab_record||'_P'||to_char(CURRENT_DATE+7, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname7 and table_schema=tab_schema) - THEN - - l_sql7 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname7, tab_schema, tab_record, l_part_list7, l_part_listb7); - execute l_sql7; - END IF; - ---------------------------------------------------------------------------------------------------------------------- - - - - END LOOP; - - CLOSE tab_cursor; - -END; -$BODY$; - -ALTER PROCEDURE ${schema}.modify_partition() - OWNER TO ${schema}; diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/5_exec_PROCEDURE.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/5_exec_PROCEDURE.sql deleted file mode 100644 index 53934df218..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/5_exec_PROCEDURE.sql +++ /dev/null @@ -1 +0,0 @@ -CALL ${schema}.modify_partition(); diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/6_POPOLA_TABLE.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/6_POPOLA_TABLE.sql deleted file mode 100644 index d21e752cd7..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/6_POPOLA_TABLE.sql +++ /dev/null @@ -1,7 +0,0 @@ -INSERT INTO ${schema}.rendicontazione_sftp_receive_queue -SELECT * -FROM ${schema}.rendicontazione_sftp_receive_queue_old; - -INSERT INTO ${schema}.rendicontazione_sftp_send_queue -SELECT * -FROM ${schema}.rendicontazione_sftp_send_queue_old; diff --git a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/7_GRANT.sql b/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/7_GRANT.sql deleted file mode 100644 index 3e8b63f5d6..0000000000 --- a/src/psql/nodo/liquibase/changelog/offline/3.26.0/sql/7_GRANT.sql +++ /dev/null @@ -1,6 +0,0 @@ - GRANT ALL ON TABLE ${schema}.rendicontazione_sftp_receive_queue TO ${schema}; - GRANT ALL ON TABLE ${schema}.rendicontazione_sftp_send_queue TO ${schema}; - ------------------------------------------------------------------- - ALTER TABLE IF EXISTS ${schema}.rendicontazione_sftp_receive_queue OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rendicontazione_sftp_send_queue OWNER to ${schema}; - ------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/db.changelog-20240318000000_partizionamento.xml b/src/psql/nodo/liquibase/changelog/online/3.26.0/db.changelog-20240318000000_partizionamento.xml index c55782e9fe..8a9430528a 100644 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/db.changelog-20240318000000_partizionamento.xml +++ b/src/psql/nodo/liquibase/changelog/online/3.26.0/db.changelog-20240318000000_partizionamento.xml @@ -1,55 +1,32 @@ - - - - - - - + + + diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/1_DDL_TABLE.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/1_DDL_TABLE.sql index 425950bebf..60703a357c 100644 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/1_DDL_TABLE.sql +++ b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/1_DDL_TABLE.sql @@ -1,55 +1,55 @@ CREATE TABLE ${schema}.carrello_parted ( - id numeric DEFAULT nextval('${schema}.carrello_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - data_msg_rich timestamp(6) NOT NULL, - id_carrello varchar(35) NOT NULL, - staz_intermediariopa varchar(35) NOT NULL, - intermediariopa varchar(35) NOT NULL, - canale varchar(35) NOT NULL, - psp varchar(35) NOT NULL, - intermediariopsp varchar(35) NOT NULL, - tipo_versamento varchar(35) NULL, - parametri_profilo_pagamento varchar(255) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - codice_convenzione varchar(35) NULL, - flag_multibeneficiario bpchar(1) DEFAULT 'N'::bpchar NOT NULL, - CONSTRAINT carrello_parted__pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.carrello_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + data_msg_rich timestamp(6) NOT NULL, + id_carrello varchar(35) NOT NULL, + staz_intermediariopa varchar(35) NOT NULL, + intermediariopa varchar(35) NOT NULL, + canale varchar(35) NOT NULL, + psp varchar(35) NOT NULL, + intermediariopsp varchar(35) NOT NULL, + tipo_versamento varchar(35) NULL, + parametri_profilo_pagamento varchar(255) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + codice_convenzione varchar(35) NULL, + flag_multibeneficiario bpchar(1) DEFAULT 'N'::bpchar NOT NULL, + CONSTRAINT carrello_parted__pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX carrello_id_carrello_parted_idx ON ${schema}.carrello_parted USING btree (id_carrello); --- CREATE TABLE ${schema}.cd_info_pagamento_parted ( - obj_id numeric DEFAULT nextval('${schema}.cd_info_pagamento_seq'::regclass) NOT NULL, - ident_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - ccp varchar(35) NOT NULL, - id_sessione varchar(100) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT cd_info_pagamento_parted_pk PRIMARY KEY (obj_id, inserted_timestamp) + obj_id numeric DEFAULT nextval('${schema}.cd_info_pagamento_seq'::regclass) NOT NULL, + ident_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + ccp varchar(35) NOT NULL, + id_sessione varchar(100) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT cd_info_pagamento_parted_pk PRIMARY KEY (obj_id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX cd_info_pagamento_parted_idx ON ${schema}.cd_info_pagamento_parted USING btree (ident_dominio, iuv, ccp); --- CREATE TABLE ${schema}.idempotency_cache_parted ( - id numeric DEFAULT nextval('${schema}.idempotency_cache_seq'::regclass) NOT NULL, - primitiva varchar(50) NOT NULL, - psp_id varchar(50) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - idempotency_key varchar(50) NULL, - "token" varchar(50) NULL, - valid_to timestamp(6) NOT NULL, - hash_request varchar(500) NOT NULL, - response text NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT idempotency_cache_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.idempotency_cache_seq'::regclass) NOT NULL, + primitiva varchar(50) NOT NULL, + psp_id varchar(50) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + idempotency_key varchar(50) NULL, + "token" varchar(50) NULL, + valid_to timestamp(6) NOT NULL, + hash_request varchar(500) NOT NULL, + response text NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT idempotency_cache_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX idempotency_cache_hash_parted_idx ON ${schema}.idempotency_cache_parted USING btree (hash_request); CREATE INDEX idempotency_cache_key_psp_parted_id ON ${schema}.idempotency_cache_parted USING btree (idempotency_key, psp_id); @@ -59,17 +59,17 @@ CREATE INDEX idempotency_cache_psp_token_parted_idx ON ${schema}.idempotency_cac --- CREATE TABLE ${schema}.messaggi_parted ( - id numeric DEFAULT nextval('${schema}.messaggi_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - id_dominio varchar(35) NULL, - iuv varchar(35) NULL, - ccp varchar(35) NULL, - id_carrello varchar(35) NULL, - tipo varchar(35) NULL, - timestamp_evento timestamp(6) NULL, - "source" text NULL, - source_type varchar(10) NULL, - CONSTRAINT messaggi_parted_pk PRIMARY KEY (id, timestamp_evento) + id numeric DEFAULT nextval('${schema}.messaggi_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + id_dominio varchar(35) NULL, + iuv varchar(35) NULL, + ccp varchar(35) NULL, + id_carrello varchar(35) NULL, + tipo varchar(35) NULL, + timestamp_evento timestamp(6) NULL, + "source" text NULL, + source_type varchar(10) NULL, + CONSTRAINT messaggi_parted_pk PRIMARY KEY (id, timestamp_evento) ) partition by range ("timestamp_evento"); CREATE INDEX messaggi_id_carrello_parted_idx ON ${schema}.messaggi_parted USING btree (id_carrello); CREATE INDEX messaggi_id_dominio_iuv_ccp_parted_idx ON ${schema}.messaggi_parted USING btree (id_dominio, iuv, ccp); @@ -78,43 +78,43 @@ CREATE INDEX messaggi_id_sess_parted ON ${schema}.messaggi_parted USING btree (i --- CREATE TABLE ${schema}.pm_metadata_parted ( - id numeric DEFAULT nextval('${schema}.sq_pm_metadata_id'::regclass) NOT NULL, - transaction_id varchar(50) NOT NULL, - "key" varchar(140) NOT NULL, - value varchar(140) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(100) NOT NULL, - updated_by varchar(100) NOT NULL, - CONSTRAINT pk_pm_metadata_parted PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.sq_pm_metadata_id'::regclass) NOT NULL, + transaction_id varchar(50) NOT NULL, + "key" varchar(140) NOT NULL, + value varchar(140) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(100) NOT NULL, + updated_by varchar(100) NOT NULL, + CONSTRAINT pk_pm_metadata_parted PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.pm_session_data_parted ( - id numeric DEFAULT nextval('${schema}.pm_session_data_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - tipo varchar(35) NOT NULL, - mobile_token varchar(255) NULL, - rrn varchar(255) NULL, - tipo_interazione varchar(255) NULL, - importo_totale_pagato float4 NULL, - esito_transazione_carta varchar(255) NULL, - codice_autorizzativo varchar(6) NULL, - timestamp_operazione timestamp(6) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - motivo_annullamento varchar(10) NULL, - codice_convenzione varchar(35) NULL, - codice_autorizzativo_paypal varchar(255) NULL, - id_transazione_psp_paypal varchar(255) NULL, - id_transazione_pm_paypal varchar(255) NULL, - id_transazione_pm_bpay varchar(255) NULL, - id_transazione_psp_bpay varchar(255) NULL, - outcome_payment_gateway varchar(255) NULL, - commissione float4 NULL, - codice_autorizzativo_bpay varchar(255) NULL, - CONSTRAINT rpt_pm_data_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.pm_session_data_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + tipo varchar(35) NOT NULL, + mobile_token varchar(255) NULL, + rrn varchar(255) NULL, + tipo_interazione varchar(255) NULL, + importo_totale_pagato float4 NULL, + esito_transazione_carta varchar(255) NULL, + codice_autorizzativo varchar(6) NULL, + timestamp_operazione timestamp(6) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + motivo_annullamento varchar(10) NULL, + codice_convenzione varchar(35) NULL, + codice_autorizzativo_paypal varchar(255) NULL, + id_transazione_psp_paypal varchar(255) NULL, + id_transazione_pm_paypal varchar(255) NULL, + id_transazione_pm_bpay varchar(255) NULL, + id_transazione_psp_bpay varchar(255) NULL, + outcome_payment_gateway varchar(255) NULL, + commissione float4 NULL, + codice_autorizzativo_bpay varchar(255) NULL, + CONSTRAINT rpt_pm_data_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX pm_sess_data_sessid_parted_idx ON ${schema}.pm_session_data_parted USING btree (id_sessione); CREATE INDEX pm_session_data_rrn_parted_idx ON ${schema}.pm_session_data_parted USING btree (rrn); @@ -122,29 +122,29 @@ CREATE INDEX pm_session_data_rrn_parted_idx ON ${schema}.pm_session_data_parted --- CREATE TABLE ${schema}.position_activate_parted ( - id numeric DEFAULT nextval('${schema}.position_activate_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - psp_id varchar(50) NULL, - idempotency_key varchar(50) NULL, - payment_token varchar(50) NULL, - token_valid_from timestamp(6) NULL, - token_valid_to timestamp(6) NULL, - due_date timestamp(6) NULL, - amount numeric NULL, - inserted_timestamp timestamp(6) DEFAULT now() NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - payment_method varchar(4) NULL, - touchpoint varchar(10) NULL, - suggested_idbundle varchar(70) NULL, - suggested_idcibundle varchar(70) NULL, - suggested_user_fee numeric NULL, - suggested_pa_fee numeric NULL, - payment_note varchar(255) NULL, - CONSTRAINT position_activate_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_activate_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + psp_id varchar(50) NULL, + idempotency_key varchar(50) NULL, + payment_token varchar(50) NULL, + token_valid_from timestamp(6) NULL, + token_valid_to timestamp(6) NULL, + due_date timestamp(6) NULL, + amount numeric NULL, + inserted_timestamp timestamp(6) DEFAULT now() NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + payment_method varchar(4) NULL, + touchpoint varchar(10) NULL, + suggested_idbundle varchar(70) NULL, + suggested_idcibundle varchar(70) NULL, + suggested_user_fee numeric NULL, + suggested_pa_fee numeric NULL, + payment_note varchar(255) NULL, + CONSTRAINT position_activate_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_activate_parted_idx1 ON ${schema}.position_activate_parted USING btree (payment_token); CREATE INDEX position_activate_pa_parted_no ON ${schema}.position_activate_parted USING btree (pa_fiscal_code, notice_id, payment_token); @@ -152,149 +152,149 @@ CREATE INDEX position_activate_pa_parted_no ON ${schema}.position_activate_parte --- CREATE TABLE ${schema}.position_payment_status_parted ( - id numeric DEFAULT nextval('${schema}.position_payment_status_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - inserted_by varchar(100) NULL, - CONSTRAINT position_payment_status_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_payment_status_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + inserted_by varchar(100) NULL, + CONSTRAINT position_payment_status_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_retry_sendpaymentresult_parted ( - id numeric DEFAULT nextval('${schema}.sq_position_retry_sendpaymentresult_id'::regclass) NOT NULL, - payment_token varchar(255) NOT NULL, - id_dominio varchar(255) NULL, - iuv varchar(255) NULL, - ccp varchar(255) NULL, - notice_id varchar(255) NULL, - creditor_reference_id varchar(255) NULL, - psp_transaction_id varchar(255) NOT NULL, - psp_id varchar(35) NULL, - stazione varchar(255) NULL, - canale varchar(35) NULL, - id_sessione_originale varchar(50) NOT NULL, - outcome varchar(10) NULL, - retry numeric(5) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(100) NOT NULL, - updated_by varchar(100) NOT NULL, - "version" varchar(10) DEFAULT 'v1'::character varying NULL, - request text NULL, - CONSTRAINT pk_position_retry_sendpaymentresult_parted PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.sq_position_retry_sendpaymentresult_id'::regclass) NOT NULL, + payment_token varchar(255) NOT NULL, + id_dominio varchar(255) NULL, + iuv varchar(255) NULL, + ccp varchar(255) NULL, + notice_id varchar(255) NULL, + creditor_reference_id varchar(255) NULL, + psp_transaction_id varchar(255) NOT NULL, + psp_id varchar(35) NULL, + stazione varchar(255) NULL, + canale varchar(35) NULL, + id_sessione_originale varchar(50) NOT NULL, + outcome varchar(10) NULL, + retry numeric(5) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(100) NOT NULL, + updated_by varchar(100) NOT NULL, + "version" varchar(10) DEFAULT 'v1'::character varying NULL, + request text NULL, + CONSTRAINT pk_position_retry_sendpaymentresult_parted PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_status_parted ( - id numeric DEFAULT nextval('${schema}.position_status_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - CONSTRAINT position_status_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_status_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + CONSTRAINT position_status_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_subject_parted ( - id numeric DEFAULT nextval('${schema}.position_subject_seq'::regclass) NOT NULL, - subject_type varchar(50) NULL, - entity_unique_identifier_type varchar(1) NULL, - entity_unique_identifier_value varchar(255) NULL, - full_name varchar(255) NULL, - street_name varchar(255) NULL, - civic_number varchar(50) NULL, - postal_code varchar(50) NULL, - city varchar(50) NULL, - state_province_region varchar(50) NULL, - country varchar(50) NULL, - email varchar(256) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT position_subject_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_subject_seq'::regclass) NOT NULL, + subject_type varchar(50) NULL, + entity_unique_identifier_type varchar(1) NULL, + entity_unique_identifier_value varchar(255) NULL, + full_name varchar(255) NULL, + street_name varchar(255) NULL, + civic_number varchar(50) NULL, + postal_code varchar(50) NULL, + city varchar(50) NULL, + state_province_region varchar(50) NULL, + country varchar(50) NULL, + email varchar(256) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT position_subject_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE TABLE ${schema}.retry_pa_attiva_rpt_parted ( - id numeric DEFAULT nextval('${schema}.retry_pa_attiva_rpt_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NOT NULL, - iuv varchar(50) NULL, - "token" varchar(50) NOT NULL, - retry numeric(19) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - ready bpchar(1) NULL, - CONSTRAINT retry_pa_attiva_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.retry_pa_attiva_rpt_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NOT NULL, + iuv varchar(50) NULL, + "token" varchar(50) NOT NULL, + retry numeric(19) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + ready bpchar(1) NULL, + CONSTRAINT retry_pa_attiva_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX retry_pa_attiva_rpt_parted_idx1 ON ${schema}.retry_pa_attiva_rpt_parted USING btree (pa_fiscal_code, iuv, token); --- CREATE TABLE ${schema}.retry_pa_invia_rt_parted ( - id numeric DEFAULT nextval('${schema}.retry_pa_invia_rt_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - id_stazione varchar(35) NOT NULL, - id_intermediario_pa varchar(35) NOT NULL, - id_canale varchar(35) NOT NULL, - id_sessione_originale varchar(36) NOT NULL, - id_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - ccp varchar(35) NOT NULL, - stato varchar(35) NULL, - inserted_timestamp timestamp(6) NOT NULL, - inserted_by varchar(35) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - updated_by varchar(35) NOT NULL, - retry numeric(19) NOT NULL, - stato_rpt varchar(50) NULL, - CONSTRAINT retry_pa_invia_rt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.retry_pa_invia_rt_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + id_stazione varchar(35) NOT NULL, + id_intermediario_pa varchar(35) NOT NULL, + id_canale varchar(35) NOT NULL, + id_sessione_originale varchar(36) NOT NULL, + id_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + ccp varchar(35) NOT NULL, + stato varchar(35) NULL, + inserted_timestamp timestamp(6) NOT NULL, + inserted_by varchar(35) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + updated_by varchar(35) NOT NULL, + retry numeric(19) NOT NULL, + stato_rpt varchar(50) NULL, + CONSTRAINT retry_pa_invia_rt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE UNIQUE INDEX retry_pa_invia_rt_parted_un ON ${schema}.retry_pa_invia_rt_parted USING btree (iuv, ccp, id_dominio, inserted_timestamp); --- CREATE TABLE ${schema}.retry_rpt_parted ( - id numeric DEFAULT nextval('${schema}.retry_rpt_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - id_carrello varchar(35) NULL, - id_canale varchar(35) NOT NULL, - id_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - ccp varchar(35) NOT NULL, - stato varchar(35) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(35) NOT NULL, - updated_by varchar(35) NOT NULL, - retry numeric(19) NOT NULL, - id_sessione_originale varchar(50) NULL, - CONSTRAINT retry_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.retry_rpt_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + id_carrello varchar(35) NULL, + id_canale varchar(35) NOT NULL, + id_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + ccp varchar(35) NOT NULL, + stato varchar(35) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(35) NOT NULL, + updated_by varchar(35) NOT NULL, + retry numeric(19) NOT NULL, + id_sessione_originale varchar(50) NULL, + CONSTRAINT retry_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.rpt_activations_parted ( - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - paaattivarptresp bpchar(1) NULL, - nodoinviarptreq bpchar(1) NULL, - paaattivarpterror bpchar(1) NULL, - inserted_timestamp timestamp(6) DEFAULT to_timestamp('1970-01-01'::text, 'yyyy-mm-dd'::text) NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - retry_pending bpchar(1) DEFAULT 'N'::bpchar NOT NULL + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + paaattivarptresp bpchar(1) NULL, + nodoinviarptreq bpchar(1) NULL, + paaattivarpterror bpchar(1) NULL, + inserted_timestamp timestamp(6) DEFAULT to_timestamp('1970-01-01'::text, 'yyyy-mm-dd'::text) NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + retry_pending bpchar(1) DEFAULT 'N'::bpchar NOT NULL ) partition by range ("inserted_timestamp"); CREATE INDEX rpt_activations_fu6msyd0tadcw_parted_idx ON ${schema}.rpt_activations_parted USING btree (creditor_reference_id, payment_token, pa_fiscal_code); CREATE INDEX rpt_activations_pa_fiscal_code_parted_idx ON ${schema}.rpt_activations_parted USING btree (pa_fiscal_code, notice_id, creditor_reference_id); @@ -302,24 +302,24 @@ CREATE INDEX rpt_activations_pa_fiscal_code_parted_idx ON ${schema}.rpt_activati --- CREATE TABLE ${schema}.rt_parted ( - id numeric DEFAULT nextval('${schema}.rt_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - ccp varchar(35) NOT NULL, - ident_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - cod_esito numeric(19) NOT NULL, - esito varchar(35) NOT NULL, - data_ricevuta timestamp(6) NOT NULL, - data_richiesta timestamp(6) NOT NULL, - id_ricevuta varchar(35) NOT NULL, - id_richiesta varchar(35) NOT NULL, - somma_versamenti float4 NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - canale varchar(32) NULL, - notifica_processata bpchar(1) DEFAULT 'N'::bpchar NOT NULL, - generata_da varchar(10) NULL, - CONSTRAINT rt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rt_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + ccp varchar(35) NOT NULL, + ident_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + cod_esito numeric(19) NOT NULL, + esito varchar(35) NOT NULL, + data_ricevuta timestamp(6) NOT NULL, + data_richiesta timestamp(6) NOT NULL, + id_ricevuta varchar(35) NOT NULL, + id_richiesta varchar(35) NOT NULL, + somma_versamenti float4 NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + canale varchar(32) NULL, + notifica_processata bpchar(1) DEFAULT 'N'::bpchar NOT NULL, + generata_da varchar(10) NULL, + CONSTRAINT rt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rt_unique_parted ON ${schema}.rt_parted USING btree (ident_dominio, iuv, ccp); ---* rt_unique_parted non pèuò piu essere unico, non avrebbe senso @@ -328,44 +328,44 @@ CREATE INDEX rt_unique_parted ON ${schema}.rt_parted USING btree (ident_dominio, --- CREATE TABLE ${schema}.stati_carrello_parted ( - id_sessione varchar(50) NOT NULL, - id_carrello varchar(35) NOT NULL, - stato varchar(35) NOT NULL, - inserted_by varchar(35) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - id_sessione_originale varchar(50) NULL, - id int8 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1 NO CYCLE) NOT NULL, - CONSTRAINT stati_carrello_parted_pk PRIMARY KEY (id,inserted_timestamp) + id_sessione varchar(50) NOT NULL, + id_carrello varchar(35) NOT NULL, + stato varchar(35) NOT NULL, + inserted_by varchar(35) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + id_sessione_originale varchar(50) NULL, + id int8 GENERATED BY DEFAULT AS IDENTITY( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1 NO CYCLE) NOT NULL, + CONSTRAINT stati_carrello_parted_pk PRIMARY KEY (id,inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX stati_carrello_idx_id_carrello_id_sessione_parted ON ${schema}.stati_carrello_parted USING btree (id_carrello, id_sessione); --- CREATE TABLE ${schema}.stati_carrello_snapshot_parted ( - id_sessione varchar(50) NOT NULL, - id_carrello varchar(35) NOT NULL, - stato varchar(35) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(35) NOT NULL, - updated_by varchar(35) NOT NULL, - CONSTRAINT pk_carrello_parted PRIMARY KEY (id_carrello, inserted_timestamp) + id_sessione varchar(50) NOT NULL, + id_carrello varchar(35) NOT NULL, + stato varchar(35) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(35) NOT NULL, + updated_by varchar(35) NOT NULL, + CONSTRAINT pk_carrello_parted PRIMARY KEY (id_carrello, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX stati_carrello_snapshot_idx_id_sessione_parted ON ${schema}.stati_carrello_snapshot_parted USING btree (id_sessione); --- CREATE TABLE ${schema}.stati_rpt_parted ( - id numeric DEFAULT nextval('${schema}.stati_rpt_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - id_sessione_originale varchar(50) NULL, - id_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - ccp varchar(35) NOT NULL, - stato varchar(35) NOT NULL, - inserted_by varchar(35) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - CONSTRAINT stati_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.stati_rpt_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + id_sessione_originale varchar(50) NULL, + id_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + ccp varchar(35) NOT NULL, + stato varchar(35) NOT NULL, + inserted_by varchar(35) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + CONSTRAINT stati_rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX stati_rpt_idx_id_sessione_originale_parted ON ${schema}.stati_rpt_parted USING btree (id_sessione_originale); CREATE INDEX stati_rpt_idx_rptkey_id_sessione_parted ON ${schema}.stati_rpt_parted USING btree (id_dominio, iuv, ccp, id_sessione); @@ -374,17 +374,17 @@ CREATE INDEX stati_rpt_mv_parted_idx1 ON ${schema}.stati_rpt_parted USING btree --- CREATE TABLE ${schema}.stati_rpt_snapshot_parted ( - id_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - ccp varchar(35) NOT NULL, - id_sessione varchar(50) NOT NULL, - stato varchar(35) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(35) NOT NULL, - updated_by varchar(35) NOT NULL, - push numeric(1) NULL, - CONSTRAINT stati_rpt_snapshot_parted_pk PRIMARY KEY (id_dominio, iuv, ccp, inserted_timestamp) + id_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + ccp varchar(35) NOT NULL, + id_sessione varchar(50) NOT NULL, + stato varchar(35) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(35) NOT NULL, + updated_by varchar(35) NOT NULL, + push numeric(1) NULL, + CONSTRAINT stati_rpt_snapshot_parted_pk PRIMARY KEY (id_dominio, iuv, ccp, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX stati_rpt_snapshot_parted_idx1 ON ${schema}.stati_rpt_snapshot_parted USING btree (stato); CREATE INDEX stati_rpt_snapshot_idx_id_sessione_parted ON ${schema}.stati_rpt_snapshot_parted USING btree (id_sessione); @@ -393,15 +393,15 @@ CREATE INDEX stati_rpt_snapshot_mv_parted_idx1 ON ${schema}.stati_rpt_snapshot_p --- CREATE TABLE ${schema}.verifica_bollettino_parted ( - id numeric DEFAULT nextval('${schema}.verifica_bollettino_seq'::regclass) NOT NULL, - ccpost varchar(12) NOT NULL, - notice_id varchar(50) NOT NULL, - pa_fiscal_code varchar(50) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT vb_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.verifica_bollettino_seq'::regclass) NOT NULL, + ccpost varchar(12) NOT NULL, + notice_id varchar(50) NOT NULL, + pa_fiscal_code varchar(50) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT vb_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX verifica_bollettino_unique_parted ON ${schema}.verifica_bollettino_parted USING btree (notice_id, pa_fiscal_code, inserted_timestamp); ---* indice non può essere unico @@ -411,37 +411,37 @@ CREATE INDEX verifica_bollettino_unique_parted ON ${schema}.verifica_bollettino_ --- tabelle con FK CREATE TABLE ${schema}.rt_versamenti_parted ( - id numeric DEFAULT nextval('${schema}.rt_versamenti_seq'::regclass) NOT NULL, - progressivo numeric(19) NOT NULL, - importo_rt float4 NOT NULL, - esito varchar(35) NULL, - causale_versamento varchar(255) NOT NULL, - dati_specifici_riscossione varchar(255) NOT NULL, - commissione_applicate_psp float4 NULL, - fk_rt numeric(19) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - commissione_carico_pa float4 NULL, - commissione_applicate_pa float4 NULL, - CONSTRAINT rt_versamenti_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rt_versamenti_seq'::regclass) NOT NULL, + progressivo numeric(19) NOT NULL, + importo_rt float4 NOT NULL, + esito varchar(35) NULL, + causale_versamento varchar(255) NOT NULL, + dati_specifici_riscossione varchar(255) NOT NULL, + commissione_applicate_psp float4 NULL, + fk_rt numeric(19) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + commissione_carico_pa float4 NULL, + commissione_applicate_pa float4 NULL, + CONSTRAINT rt_versamenti_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rt_versamenti_fk_rt_parted_idx ON ${schema}.rt_versamenti_parted USING btree (fk_rt); --- CREATE TABLE ${schema}.position_service_parted ( - id numeric DEFAULT nextval('${schema}.position_service_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - description varchar(140) NULL, - company_name varchar(140) NULL, - office_name varchar(140) NULL, - debtor_id numeric NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT ps_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_service_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + description varchar(140) NULL, + company_name varchar(140) NULL, + office_name varchar(140) NULL, + debtor_id numeric NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT ps_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_service_inserted_timestamp_parted ON ${schema}.position_service_parted USING btree (inserted_timestamp); CREATE INDEX position_service_pa_fiscal_code_parted_idx ON ${schema}.position_service_parted USING btree (pa_fiscal_code, notice_id); @@ -450,17 +450,17 @@ CREATE INDEX position_service_pa_fiscal_code_parted_idx ON ${schema}.position_se --- CREATE TABLE ${schema}.position_status_snapshot_parted ( - id numeric DEFAULT nextval('${schema}.position_status_snapshot_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - fk_position_service numeric NULL, - activation_pending bpchar(1) DEFAULT 'N'::bpchar NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT position_status_snapshot_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_status_snapshot_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + fk_position_service numeric NULL, + activation_pending bpchar(1) DEFAULT 'N'::bpchar NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT position_status_snapshot_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_status_snapshot_parted_idx ON ${schema}.position_status_snapshot_parted USING btree (fk_position_service); CREATE INDEX position_status_snapshot_parted_idx1 ON ${schema}.position_status_snapshot_parted USING btree (notice_id, pa_fiscal_code); @@ -470,34 +470,34 @@ CREATE INDEX position_status_snapshot_inserted_timestamp_parted ON ${schema}.pos --- CREATE TABLE ${schema}.rpt_parted ( - id numeric DEFAULT nextval('${schema}.rpt_seq'::regclass) NOT NULL, - id_sessione varchar(50) NOT NULL, - ccp varchar(35) NOT NULL, - ident_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - bic_addebito varchar(11) NULL, - data_msg_rich timestamp(6) NOT NULL, - flag_canc bpchar(1) NOT NULL, - iban_addebito varchar(35) NULL, - id_msg_rich varchar(100) NOT NULL, - staz_intermediariopa varchar(35) NOT NULL, - intermediariopa varchar(35) NOT NULL, - canale varchar(35) NOT NULL, - psp varchar(35) NOT NULL, - intermediariopsp varchar(35) NOT NULL, - tipo_versamento varchar(35) NOT NULL, - num_versamenti numeric(19) NOT NULL, - rt_signature_code numeric(19) NOT NULL, - somma_versamenti float4 NOT NULL, - parametri_profilo_pagamento varchar(255) NULL, - fk_carrello numeric(19) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - ricevuta_pm bpchar(1) DEFAULT 'N'::bpchar NOT NULL, - wisp_2 bpchar(1) DEFAULT 'N'::bpchar NOT NULL, - flag_seconda bpchar(1) NULL, - flag_io bpchar(1) NULL, - CONSTRAINT rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rpt_seq'::regclass) NOT NULL, + id_sessione varchar(50) NOT NULL, + ccp varchar(35) NOT NULL, + ident_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + bic_addebito varchar(11) NULL, + data_msg_rich timestamp(6) NOT NULL, + flag_canc bpchar(1) NOT NULL, + iban_addebito varchar(35) NULL, + id_msg_rich varchar(100) NOT NULL, + staz_intermediariopa varchar(35) NOT NULL, + intermediariopa varchar(35) NOT NULL, + canale varchar(35) NOT NULL, + psp varchar(35) NOT NULL, + intermediariopsp varchar(35) NOT NULL, + tipo_versamento varchar(35) NOT NULL, + num_versamenti numeric(19) NOT NULL, + rt_signature_code numeric(19) NOT NULL, + somma_versamenti float4 NOT NULL, + parametri_profilo_pagamento varchar(255) NULL, + fk_carrello numeric(19) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + ricevuta_pm bpchar(1) DEFAULT 'N'::bpchar NOT NULL, + wisp_2 bpchar(1) DEFAULT 'N'::bpchar NOT NULL, + flag_seconda bpchar(1) NULL, + flag_io bpchar(1) NULL, + CONSTRAINT rpt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX cffj72a4012c5_parted_idx ON ${schema}.rpt_parted USING btree (iuv, ident_dominio, ccp, flag_io); CREATE INDEX dsf6xw4twzyr2_parted_idx ON ${schema}.rpt_parted USING btree (fk_carrello, wisp_2); @@ -509,78 +509,78 @@ CREATE INDEX rpt_unique_parted ON ${schema}.rpt_parted USING btree (ident_domini --- CREATE TABLE ${schema}.rpt_soggetti_parted ( - rpt_id numeric(19) NOT NULL, - tipo_soggetto bpchar(1) NOT NULL, - tipo_identificativo_univoco bpchar(1) NOT NULL, - codice_identificativo_univoco varchar(35) NOT NULL, - anagrafica varchar(70) NOT NULL, - indirizzo varchar(70) NULL, - civico varchar(16) NULL, - cap varchar(16) NULL, - localita varchar(35) NULL, - provincia varchar(35) NULL, - nazione varchar(4) NULL, - email varchar(256) NULL, - codice_unitoper varchar(35) NULL, - denomin_unitoper varchar(35) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT rpt_soggetti_parted_pk PRIMARY KEY (rpt_id, tipo_soggetto, inserted_timestamp) + rpt_id numeric(19) NOT NULL, + tipo_soggetto bpchar(1) NOT NULL, + tipo_identificativo_univoco bpchar(1) NOT NULL, + codice_identificativo_univoco varchar(35) NOT NULL, + anagrafica varchar(70) NOT NULL, + indirizzo varchar(70) NULL, + civico varchar(16) NULL, + cap varchar(16) NULL, + localita varchar(35) NULL, + provincia varchar(35) NULL, + nazione varchar(4) NULL, + email varchar(256) NULL, + codice_unitoper varchar(35) NULL, + denomin_unitoper varchar(35) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT rpt_soggetti_parted_pk PRIMARY KEY (rpt_id, tipo_soggetto, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rpt_soggetti_rpt_id_parted_idx ON ${schema}.rpt_soggetti_parted USING btree (rpt_id); --- CREATE TABLE ${schema}.rpt_versamenti_parted ( - id numeric DEFAULT nextval('${schema}.rpt_versamenti_seq'::regclass) NOT NULL, - progressivo numeric(19) NOT NULL, - importo float4 NOT NULL, - commissione_carico_pa float4 NULL, - iban varchar(35) NULL, - iban_appoggio varchar(35) NULL, - bic_accredito varchar(11) NULL, - bic_appoggio varchar(11) NULL, - credenziali_pagatore varchar(35) NULL, - causale_versamento varchar(255) NOT NULL, - tipo_versamento varchar(25) NOT NULL, - dati_specifici_riscossione varchar(255) NOT NULL, - fk_rpt numeric(19) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT rpt_versamenti_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rpt_versamenti_seq'::regclass) NOT NULL, + progressivo numeric(19) NOT NULL, + importo float4 NOT NULL, + commissione_carico_pa float4 NULL, + iban varchar(35) NULL, + iban_appoggio varchar(35) NULL, + bic_accredito varchar(11) NULL, + bic_appoggio varchar(11) NULL, + credenziali_pagatore varchar(35) NULL, + causale_versamento varchar(255) NOT NULL, + tipo_versamento varchar(25) NOT NULL, + dati_specifici_riscossione varchar(255) NOT NULL, + fk_rpt numeric(19) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT rpt_versamenti_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rpt_versamenti_fk_rpt_parted_idx ON ${schema}.rpt_versamenti_parted USING btree (fk_rpt); --- CREATE TABLE ${schema}.rpt_versamenti_bollo_parted ( - id numeric DEFAULT nextval('${schema}.rpt_versamenti_bollo_seq'::regclass) NOT NULL, - progressivo numeric(19) NOT NULL, - tipo_bollo varchar(2) NOT NULL, - hash_documento varchar(70) NOT NULL, - provincia_residenza varchar(2) NOT NULL, - fk_rpt_versamenti numeric(19) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT rpt_versamenti_bollo_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rpt_versamenti_bollo_seq'::regclass) NOT NULL, + progressivo numeric(19) NOT NULL, + tipo_bollo varchar(2) NOT NULL, + hash_documento varchar(70) NOT NULL, + provincia_residenza varchar(2) NOT NULL, + fk_rpt_versamenti numeric(19) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT rpt_versamenti_bollo_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rpt_versamenti_bollo_fk_rpt_versamenti_parted_idx ON ${schema}.rpt_versamenti_bollo_parted USING btree (fk_rpt_versamenti); --- CREATE TABLE ${schema}.rpt_xml_parted ( - id numeric DEFAULT nextval('${schema}.rpt_xml_seq'::regclass) NOT NULL, - ccp varchar(35) NOT NULL, - ident_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - fk_rpt numeric(19) NULL, - fk_carrello numeric(19) NULL, - id_sessione varchar(50) NULL, - id_carrello varchar(35) NULL, - xml_content text NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT rpt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rpt_xml_seq'::regclass) NOT NULL, + ccp varchar(35) NOT NULL, + ident_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + fk_rpt numeric(19) NULL, + fk_carrello numeric(19) NULL, + id_sessione varchar(50) NULL, + id_carrello varchar(35) NULL, + xml_content text NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT rpt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rpt_xml_ccp_iuv_parted_idx ON ${schema}.rpt_xml_parted USING btree (ccp, iuv); CREATE INDEX rpt_xml_fk_rpt_parted_idx ON ${schema}.rpt_xml_parted USING btree (fk_rpt); @@ -589,50 +589,50 @@ CREATE INDEX rpt_xml_id_fk_carrello_parted_idx ON ${schema}.rpt_xml_parted USING --- CREATE TABLE ${schema}.position_payment_parted ( - id numeric DEFAULT nextval('${schema}.position_payment_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - broker_pa_id varchar(50) NULL, - station_id varchar(50) NULL, - station_version numeric NULL, - psp_id varchar(50) NULL, - broker_psp_id varchar(50) NULL, - channel_id varchar(50) NULL, - idempotency_key varchar(50) NULL, - amount numeric NULL, - fee numeric NULL, - outcome varchar(50) NULL, - payment_method varchar(50) NULL, - payment_channel varchar(50) NULL, - transfer_date date NULL, - payer_id numeric NULL, - application_date date NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - fk_payment_plan numeric NULL, - rpt_id numeric NULL, - payment_type varchar(10) DEFAULT 'NA'::character varying NOT NULL, - carrello_id numeric NULL, - original_payment_token varchar(50) NULL, - flag_io bpchar(1) DEFAULT 'N'::bpchar NULL, - ricevuta_pm bpchar(1) DEFAULT 'N'::bpchar NULL, - flag_activate_resp_missing bpchar(1) NULL, - flag_paypal bpchar(1) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - transaction_id varchar(255) NULL, - close_version varchar(50) NULL, - fee_pa numeric NULL, - bundle_id varchar(70) NULL, - bundle_pa_id varchar(70) NULL, - pm_info bytea NULL, - mbd bpchar(1) DEFAULT 'N'::bpchar NULL, - fee_spo numeric(19) NULL, - payment_note varchar(255) NULL, - flag_standin bpchar(1) NULL, - CONSTRAINT position_payment_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_payment_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + broker_pa_id varchar(50) NULL, + station_id varchar(50) NULL, + station_version numeric NULL, + psp_id varchar(50) NULL, + broker_psp_id varchar(50) NULL, + channel_id varchar(50) NULL, + idempotency_key varchar(50) NULL, + amount numeric NULL, + fee numeric NULL, + outcome varchar(50) NULL, + payment_method varchar(50) NULL, + payment_channel varchar(50) NULL, + transfer_date date NULL, + payer_id numeric NULL, + application_date date NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + fk_payment_plan numeric NULL, + rpt_id numeric NULL, + payment_type varchar(10) DEFAULT 'NA'::character varying NOT NULL, + carrello_id numeric NULL, + original_payment_token varchar(50) NULL, + flag_io bpchar(1) DEFAULT 'N'::bpchar NULL, + ricevuta_pm bpchar(1) DEFAULT 'N'::bpchar NULL, + flag_activate_resp_missing bpchar(1) NULL, + flag_paypal bpchar(1) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + transaction_id varchar(255) NULL, + close_version varchar(50) NULL, + fee_pa numeric NULL, + bundle_id varchar(70) NULL, + bundle_pa_id varchar(70) NULL, + pm_info bytea NULL, + mbd bpchar(1) DEFAULT 'N'::bpchar NULL, + fee_spo numeric(19) NULL, + payment_note varchar(255) NULL, + flag_standin bpchar(1) NULL, + CONSTRAINT position_payment_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX i_fk_pp_ps_parted ON ${schema}.position_payment_parted USING btree (fk_payment_plan); CREATE INDEX i_fk_pp_rpt_parted ON ${schema}.position_payment_parted USING btree (rpt_id); @@ -645,21 +645,21 @@ CREATE INDEX position_payment_trans_id_parted_idx ON ${schema}.position_payment_ --- CREATE TABLE ${schema}.position_payment_plan_parted ( - id numeric DEFAULT nextval('${schema}.position_payment_plan_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - due_date timestamp(6) NULL, - retention_date timestamp(6) NULL, - amount numeric NULL, - flag_final_payment varchar(1) NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - metadata varchar(3000) NULL, - fk_position_service numeric NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT ppp_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_payment_plan_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + due_date timestamp(6) NULL, + retention_date timestamp(6) NULL, + amount numeric NULL, + flag_final_payment varchar(1) NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + metadata varchar(3000) NULL, + fk_position_service numeric NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT ppp_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX cred_fiscal_code_parted_idx ON ${schema}.position_payment_plan_parted USING btree (creditor_reference_id, pa_fiscal_code); CREATE INDEX i_06b1nax785kuu_parted_idx ON ${schema}.position_payment_plan_parted USING btree (creditor_reference_id, notice_id, pa_fiscal_code); @@ -668,18 +668,18 @@ CREATE INDEX position_payment_plan_parted_idx ON ${schema}.position_payment_plan --- CREATE TABLE ${schema}.position_payment_status_snapshot_parted ( - id numeric DEFAULT nextval('${schema}.position_payment_status_snapshot_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - fk_position_payment numeric NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT position_payment_status_snapshot_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_payment_status_snapshot_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + fk_position_payment numeric NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT position_payment_status_snapshot_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_payment_status_parted_idx ON ${schema}.position_payment_status_snapshot_parted USING btree (status); CREATE INDEX position_payment_status_snapshot_parted_idx ON ${schema}.position_payment_status_snapshot_parted USING btree (fk_position_payment); @@ -693,64 +693,64 @@ CREATE INDEX ppss_2qupz9mdtj4b6_parted_idx ON ${schema}.position_payment_status_ --- CREATE TABLE ${schema}.position_receipt_parted ( - id numeric DEFAULT nextval('${schema}.position_receipt_seq'::regclass) NOT NULL, - receipt_id varchar(50) NULL, - notice_id varchar(50) NULL, - pa_fiscal_code varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - outcome varchar(50) NULL, - payment_amount numeric NULL, - description varchar(140) NULL, - company_name varchar(140) NULL, - office_name varchar(140) NULL, - debtor_id numeric NULL, - psp_id varchar(50) NULL, - psp_fiscal_code varchar(50) NULL, - psp_vat_number varchar(50) NULL, - psp_company_name varchar(70) NULL, - channel_id varchar(50) NULL, - channel_description varchar(50) NULL, - payer_id numeric NULL, - payment_method varchar(50) NULL, - fee numeric NULL, - payment_date_time timestamp(6) NULL, - application_date date NULL, - transfer_date date NULL, - metadata varchar(3000) NULL, - rt_id numeric NULL, - fk_position_payment numeric NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - fee_pa numeric NULL, - bundle_id varchar(70) NULL, - bundle_pa_id varchar(70) NULL, - flag_standin bpchar(1) NULL, - CONSTRAINT position_receipt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_receipt_seq'::regclass) NOT NULL, + receipt_id varchar(50) NULL, + notice_id varchar(50) NULL, + pa_fiscal_code varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + outcome varchar(50) NULL, + payment_amount numeric NULL, + description varchar(140) NULL, + company_name varchar(140) NULL, + office_name varchar(140) NULL, + debtor_id numeric NULL, + psp_id varchar(50) NULL, + psp_fiscal_code varchar(50) NULL, + psp_vat_number varchar(50) NULL, + psp_company_name varchar(70) NULL, + channel_id varchar(50) NULL, + channel_description varchar(50) NULL, + payer_id numeric NULL, + payment_method varchar(50) NULL, + fee numeric NULL, + payment_date_time timestamp(6) NULL, + application_date date NULL, + transfer_date date NULL, + metadata varchar(3000) NULL, + rt_id numeric NULL, + fk_position_payment numeric NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + fee_pa numeric NULL, + bundle_id varchar(70) NULL, + bundle_pa_id varchar(70) NULL, + flag_standin bpchar(1) NULL, + CONSTRAINT position_receipt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_receipt_payment_date_time_parted ON ${schema}.position_receipt_parted USING btree (payment_date_time); --- CREATE TABLE ${schema}.position_receipt_recipient_parted ( - id numeric DEFAULT nextval('${schema}.position_receipt_recipient_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - recipient_pa_fiscal_code varchar(50) NULL, - recipient_broker_pa_id varchar(50) NULL, - recipient_station_id varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - fk_position_receipt numeric NOT NULL, - fk_receipt_xml numeric NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT position_receipt_recipient_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_receipt_recipient_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + recipient_pa_fiscal_code varchar(50) NULL, + recipient_broker_pa_id varchar(50) NULL, + recipient_station_id varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + fk_position_receipt numeric NOT NULL, + fk_receipt_xml numeric NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT position_receipt_recipient_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_receipt_recipient_inserted_timestamp_parted ON ${schema}.position_receipt_recipient_parted USING btree (inserted_timestamp); CREATE INDEX position_receipt_recipient_pa_no_to_parted ON ${schema}.position_receipt_recipient_parted USING btree (pa_fiscal_code, notice_id, payment_token); @@ -758,92 +758,92 @@ CREATE INDEX position_receipt_recipient_pa_no_to_parted ON ${schema}.position_re --- CREATE TABLE ${schema}.position_receipt_recipient_status_parted ( - id numeric DEFAULT nextval('${schema}.position_receipt_recipient_status_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - recipient_pa_fiscal_code varchar(50) NULL, - recipient_broker_pa_id varchar(50) NULL, - recipient_station_id varchar(50) NULL, - status varchar(50) NULL, - inserted_timestamp timestamp(6) NULL, - fk_position_receipt_recipient numeric NOT NULL, - inserted_by varchar(100) NULL, - CONSTRAINT position_receipt_recipient_status_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_receipt_recipient_status_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + recipient_pa_fiscal_code varchar(50) NULL, + recipient_broker_pa_id varchar(50) NULL, + recipient_station_id varchar(50) NULL, + status varchar(50) NULL, + inserted_timestamp timestamp(6) NULL, + fk_position_receipt_recipient numeric NOT NULL, + inserted_by varchar(100) NULL, + CONSTRAINT position_receipt_recipient_status_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_receipt_transfer_parted ( - fk_position_receipt numeric NOT NULL, - fk_position_transfer numeric NOT NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL + fk_position_receipt numeric NOT NULL, + fk_position_transfer numeric NOT NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_receipt_xml_parted ( - id numeric DEFAULT nextval('${schema}.position_receipt_xml_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - payment_token varchar(50) NULL, - "xml" bytea NULL, - inserted_timestamp timestamp(6) NULL, - fk_position_receipt numeric NOT NULL, - recipient_pa_fiscal_code varchar(50) NULL, - recipient_broker_pa_id varchar(50) NULL, - recipient_station_id varchar(50) NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - CONSTRAINT position_receipt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_receipt_xml_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + payment_token varchar(50) NULL, + "xml" bytea NULL, + inserted_timestamp timestamp(6) NULL, + fk_position_receipt numeric NOT NULL, + recipient_pa_fiscal_code varchar(50) NULL, + recipient_broker_pa_id varchar(50) NULL, + recipient_station_id varchar(50) NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + CONSTRAINT position_receipt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_retry_pa_send_rt_parted ( - id numeric DEFAULT nextval('${schema}.position_retry_pa_send_rt_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NOT NULL, - notice_id varchar(50) NULL, - "token" varchar(50) NOT NULL, - fk_recipient numeric NULL, - retry numeric(19) NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT position_retry_pa_send_rt_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_retry_pa_send_rt_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NOT NULL, + notice_id varchar(50) NULL, + "token" varchar(50) NOT NULL, + fk_recipient numeric NULL, + retry numeric(19) NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT position_retry_pa_send_rt_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); --- CREATE TABLE ${schema}.position_transfer_parted ( - id numeric DEFAULT nextval('${schema}.position_transfer_seq'::regclass) NOT NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - pa_fiscal_code varchar(50) NULL, - pa_fiscal_code_secondary varchar(50) NULL, - iban varchar(50) NULL, - amount float4 NULL, - remittance_information varchar(512) NULL, - transfer_category varchar(140) NULL, - transfer_identifier varchar(50) NULL, - "valid" varchar(1) NULL, - inserted_timestamp timestamp(6) NULL, - updated_timestamp timestamp(6) NULL, - fk_payment_plan numeric NULL, - fk_position_payment numeric NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - metadata varchar(3000) NULL, - req_tipo_bollo varchar(2) NULL, - req_hash_documento varchar(72) NULL, - req_provincia_residenza varchar(2) NULL, - company_name_secondary varchar(140) NULL, - CONSTRAINT position_transfer_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.position_transfer_seq'::regclass) NOT NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + pa_fiscal_code varchar(50) NULL, + pa_fiscal_code_secondary varchar(50) NULL, + iban varchar(50) NULL, + amount float4 NULL, + remittance_information varchar(512) NULL, + transfer_category varchar(140) NULL, + transfer_identifier varchar(50) NULL, + "valid" varchar(1) NULL, + inserted_timestamp timestamp(6) NULL, + updated_timestamp timestamp(6) NULL, + fk_payment_plan numeric NULL, + fk_position_payment numeric NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + metadata varchar(3000) NULL, + req_tipo_bollo varchar(2) NULL, + req_hash_documento varchar(72) NULL, + req_provincia_residenza varchar(2) NULL, + company_name_secondary varchar(140) NULL, + CONSTRAINT position_transfer_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX position_transfer_fk_position_payment_parted ON ${schema}.position_transfer_parted USING btree (fk_position_payment); CREATE INDEX position_transfer_parted_idx1 ON ${schema}.position_transfer_parted USING btree (fk_payment_plan); @@ -851,22 +851,22 @@ CREATE INDEX position_transfer_parted_idx1 ON ${schema}.position_transfer_parted --- CREATE TABLE ${schema}.rt_versamenti_bollo_parted ( - id numeric DEFAULT nextval('${schema}.rt_versamenti_bollo_seq'::regclass) NOT NULL, - progressivo numeric(19) NOT NULL, - tipo_bollo varchar(2) NOT NULL, - tipo_allegato_ricevuta varchar(2) NOT NULL, - iubd varchar(255) NOT NULL, - stato varchar(35) NOT NULL, - importo numeric(19) NOT NULL, - ora_acquisto timestamp(6) NOT NULL, - fk_rt_versamenti numeric(19) NOT NULL, - ack_impronta numeric(19) NULL, - ack_iudb numeric(19) NULL, - ack_codice_fiscale numeric(19) NULL, - ack_denominazione numeric(19) NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - CONSTRAINT rt_versamenti_bollo_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rt_versamenti_bollo_seq'::regclass) NOT NULL, + progressivo numeric(19) NOT NULL, + tipo_bollo varchar(2) NOT NULL, + tipo_allegato_ricevuta varchar(2) NOT NULL, + iubd varchar(255) NOT NULL, + stato varchar(35) NOT NULL, + importo numeric(19) NOT NULL, + ora_acquisto timestamp(6) NOT NULL, + fk_rt_versamenti numeric(19) NOT NULL, + ack_impronta numeric(19) NULL, + ack_iudb numeric(19) NULL, + ack_codice_fiscale numeric(19) NULL, + ack_denominazione numeric(19) NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + CONSTRAINT rt_versamenti_bollo_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rt_versamenti_bollo_fk_rt_versamenti_parted_idx ON ${schema}.rt_versamenti_bollo_parted USING btree (fk_rt_versamenti); CREATE INDEX rt_versamenti_bollo_iubd_parted ON ${schema}.rt_versamenti_bollo_parted USING btree (iubd); @@ -874,17 +874,17 @@ CREATE INDEX rt_versamenti_bollo_iubd_parted ON ${schema}.rt_versamenti_bollo_pa --- CREATE TABLE ${schema}.rt_xml_parted ( - id numeric DEFAULT nextval('${schema}.rt_xml_seq'::regclass) NOT NULL, - ccp varchar(35) NOT NULL, - ident_dominio varchar(35) NOT NULL, - iuv varchar(35) NOT NULL, - fk_rt numeric(19) NOT NULL, - tipo_firma varchar(255) NULL, - xml_content text NOT NULL, - inserted_timestamp timestamp(6) NOT NULL, - updated_timestamp timestamp(6) NOT NULL, - id_sessione varchar(50) NULL, - CONSTRAINT rt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.rt_xml_seq'::regclass) NOT NULL, + ccp varchar(35) NOT NULL, + ident_dominio varchar(35) NOT NULL, + iuv varchar(35) NOT NULL, + fk_rt numeric(19) NOT NULL, + tipo_firma varchar(255) NULL, + xml_content text NOT NULL, + inserted_timestamp timestamp(6) NOT NULL, + updated_timestamp timestamp(6) NOT NULL, + id_sessione varchar(50) NULL, + CONSTRAINT rt_xml_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX rt_xml_fk_rt_parted_idx ON ${schema}.rt_xml_parted USING btree (fk_rt); CREATE INDEX rt_xml_parted_idx1 ON ${schema}.rt_xml_parted USING btree (ccp, iuv); @@ -892,29 +892,21 @@ CREATE INDEX rt_xml_parted_idx1 ON ${schema}.rt_xml_parted USING btree (ccp, iuv --- CREATE TABLE ${schema}.token_utility_parted ( - id numeric DEFAULT nextval('${schema}.token_utility_seq'::regclass) NOT NULL, - pa_fiscal_code varchar(50) NULL, - notice_id varchar(50) NULL, - creditor_reference_id varchar(50) NULL, - token1 varchar(50) NULL, - token2 varchar(50) NULL, - fk_payment1 numeric NULL, - fk_payment2 numeric NULL, - fk_rpt1 numeric NULL, - fk_rpt2 numeric NULL, - updated_timestamp timestamp(6) NULL, - inserted_by varchar(100) NULL, - updated_by varchar(100) NULL, - inserted_timestamp timestamp(6) NULL, - CONSTRAINT token_utility_parted_pk PRIMARY KEY (id, inserted_timestamp) + id numeric DEFAULT nextval('${schema}.token_utility_seq'::regclass) NOT NULL, + pa_fiscal_code varchar(50) NULL, + notice_id varchar(50) NULL, + creditor_reference_id varchar(50) NULL, + token1 varchar(50) NULL, + token2 varchar(50) NULL, + fk_payment1 numeric NULL, + fk_payment2 numeric NULL, + fk_rpt1 numeric NULL, + fk_rpt2 numeric NULL, + updated_timestamp timestamp(6) NULL, + inserted_by varchar(100) NULL, + updated_by varchar(100) NULL, + inserted_timestamp timestamp(6) NULL, + CONSTRAINT token_utility_parted_pk PRIMARY KEY (id, inserted_timestamp) ) partition by range ("inserted_timestamp"); CREATE INDEX i_fk_rpt_1_parted ON ${schema}.token_utility_parted USING btree (fk_rpt1); CREATE INDEX i_fk_rpt_2_parted ON ${schema}.token_utility_parted USING btree (fk_rpt2); - --- - -CREATE TABLE IF NOT EXISTS ${schema}.tab_part -( - tabella character varying(100) COLLATE pg_catalog."default", - schema character varying(100) COLLATE pg_catalog."default" -); diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_DML_TABLE_PART.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_DML_TABLE_PART.sql deleted file mode 100644 index 14beeb401e..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_DML_TABLE_PART.sql +++ /dev/null @@ -1,42 +0,0 @@ -insert into ${schema}.tab_part(tabella,schema)values ('carrello','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('cd_info_pagamento','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('idempotency_cache','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('messaggi','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('pm_metadata','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('pm_session_data','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_activate','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_payment','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_payment_plan','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_payment_status','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_payment_status_snapshot','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_receipt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_receipt_recipient','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_receipt_recipient_status','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_receipt_transfer','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_receipt_xml','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_retry_pa_send_rt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_retry_sendpaymentresult','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_service','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_status','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_status_snapshot','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_subject','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('position_transfer','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('retry_pa_attiva_rpt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('retry_pa_invia_rt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('retry_rpt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt_activations','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt_soggetti','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt_versamenti','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt_versamenti_bollo','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt_xml','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rt_versamenti','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rt_versamenti_bollo','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rt_xml','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('stati_carrello','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('stati_carrello_snapshot','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('stati_rpt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('stati_rpt_snapshot','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('token_utility','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('verifica_bollettino','${schema}'); diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_RENAME_TABLE.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_RENAME_TABLE.sql new file mode 100644 index 0000000000..0d544ed1f2 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/2_RENAME_TABLE.sql @@ -0,0 +1,125 @@ +ALTER TABLE ${schema}.carrello rename TO carrello_old; +ALTER TABLE ${schema}.carrello_parted rename TO carrello; + +ALTER TABLE ${schema}.cd_info_pagamento rename TO cd_info_pagamento_old; +ALTER TABLE ${schema}.cd_info_pagamento_parted rename TO cd_info_pagamento; + +ALTER TABLE ${schema}.idempotency_cache rename TO idempotency_cache_old; +ALTER TABLE ${schema}.idempotency_cache_parted rename TO idempotency_cache; + +ALTER TABLE ${schema}.messaggi rename TO messaggi_old; +ALTER TABLE ${schema}.messaggi_parted rename TO messaggi; + +ALTER TABLE ${schema}.pm_metadata rename TO pm_metadata_old; +ALTER TABLE ${schema}.pm_metadata_parted rename TO pm_metadata; + +ALTER TABLE ${schema}.pm_session_data rename TO pm_session_data_old; +ALTER TABLE ${schema}.pm_session_data_parted rename TO pm_session_data; + +ALTER TABLE ${schema}.position_activate rename TO position_activate_old; +ALTER TABLE ${schema}.position_activate_parted rename TO position_activate; + +ALTER TABLE ${schema}.position_payment rename TO position_payment_old; +ALTER TABLE ${schema}.position_payment_parted rename TO position_payment; + +ALTER TABLE ${schema}.position_payment_plan rename TO position_payment_plan_old; +ALTER TABLE ${schema}.position_payment_plan_parted rename TO position_payment_plan; + +ALTER TABLE ${schema}.position_payment_status rename TO position_payment_status_old; +ALTER TABLE ${schema}.position_payment_status_parted rename TO position_payment_status; + +ALTER TABLE ${schema}.position_payment_status_snapshot rename TO position_payment_status_snapshot_old; +ALTER TABLE ${schema}.position_payment_status_snapshot_parted rename TO position_payment_status_snapshot; + +ALTER TABLE ${schema}.position_receipt rename TO position_receipt_old; +ALTER TABLE ${schema}.position_receipt_parted rename TO position_receipt; + +ALTER TABLE ${schema}.position_receipt_recipient rename TO position_receipt_recipient_old; +ALTER TABLE ${schema}.position_receipt_recipient_parted rename TO position_receipt_recipient; + +ALTER TABLE ${schema}.position_receipt_recipient_status rename TO position_receipt_recipient_status_old; +ALTER TABLE ${schema}.position_receipt_recipient_status_parted rename TO position_receipt_recipient_status; + +ALTER TABLE ${schema}.position_receipt_transfer rename TO position_receipt_transfer_old; +ALTER TABLE ${schema}.position_receipt_transfer_parted rename TO position_receipt_transfer; + +ALTER TABLE ${schema}.position_receipt_xml rename TO position_receipt_xml_old; +ALTER TABLE ${schema}.position_receipt_xml_parted rename TO position_receipt_xml; + +ALTER TABLE ${schema}.position_retry_pa_send_rt rename TO position_retry_pa_send_rt_old; +ALTER TABLE ${schema}.position_retry_pa_send_rt_parted rename TO position_retry_pa_send_rt; + +ALTER TABLE ${schema}.position_retry_sendpaymentresult rename TO position_retry_sendpaymentresult_old; +ALTER TABLE ${schema}.position_retry_sendpaymentresult_parted rename TO position_retry_sendpaymentresult; + +ALTER TABLE ${schema}.position_service rename TO position_service_old; +ALTER TABLE ${schema}.position_service_parted rename TO position_service; + +ALTER TABLE ${schema}.position_status rename TO position_status_old; +ALTER TABLE ${schema}.position_status_parted rename TO position_status; + +ALTER TABLE ${schema}.position_status_snapshot rename TO position_status_snapshot_old; +ALTER TABLE ${schema}.position_status_snapshot_parted rename TO position_status_snapshot; + +ALTER TABLE ${schema}.position_subject rename TO position_subject_old; +ALTER TABLE ${schema}.position_subject_parted rename TO position_subject; + +ALTER TABLE ${schema}.position_transfer rename TO position_transfer_old; +ALTER TABLE ${schema}.position_transfer_parted rename TO position_transfer; + +ALTER TABLE ${schema}.retry_pa_attiva_rpt rename TO retry_pa_attiva_rpt_old; +ALTER TABLE ${schema}.retry_pa_attiva_rpt_parted rename TO retry_pa_attiva_rpt; + +ALTER TABLE ${schema}.retry_pa_invia_rt rename TO retry_pa_invia_rt_old; +ALTER TABLE ${schema}.retry_pa_invia_rt_parted rename TO retry_pa_invia_rt; + +ALTER TABLE ${schema}.retry_rpt rename TO retry_rpt_old; +ALTER TABLE ${schema}.retry_rpt_parted rename TO retry_rpt; + +ALTER TABLE ${schema}.rpt rename TO rpt_old; +ALTER TABLE ${schema}.rpt_parted rename TO rpt; + +ALTER TABLE ${schema}.rpt_activations rename TO rpt_activations_old; +ALTER TABLE ${schema}.rpt_activations_parted rename TO rpt_activations; + +ALTER TABLE ${schema}.rpt_soggetti rename TO rpt_soggetti_old; +ALTER TABLE ${schema}.rpt_soggetti_parted rename TO rpt_soggetti; + +ALTER TABLE ${schema}.rpt_versamenti rename TO rpt_versamenti_old; +ALTER TABLE ${schema}.rpt_versamenti_parted rename TO rpt_versamenti; + +ALTER TABLE ${schema}.rpt_versamenti_bollo rename TO rpt_versamenti_bollo_old; +ALTER TABLE ${schema}.rpt_versamenti_bollo_parted rename TO rpt_versamenti_bollo; + +ALTER TABLE ${schema}.rpt_xml rename TO rpt_xml_old; +ALTER TABLE ${schema}.rpt_xml_parted rename TO rpt_xml; + +ALTER TABLE ${schema}.rt rename TO rt_old; +ALTER TABLE ${schema}.rt_parted rename TO rt; + +ALTER TABLE ${schema}.rt_versamenti rename TO rt_versamenti_old; +ALTER TABLE ${schema}.rt_versamenti_parted rename TO rt_versamenti; + +ALTER TABLE ${schema}.rt_versamenti_bollo rename TO rt_versamenti_bollo_old; +ALTER TABLE ${schema}.rt_versamenti_bollo_parted rename TO rt_versamenti_bollo; + +ALTER TABLE ${schema}.rt_xml rename TO rt_xml_old; +ALTER TABLE ${schema}.rt_xml_parted rename TO rt_xml; + +ALTER TABLE ${schema}.stati_carrello rename TO stati_carrello_old; +ALTER TABLE ${schema}.stati_carrello_parted rename TO stati_carrello; + +ALTER TABLE ${schema}.stati_carrello_snapshot rename TO stati_carrello_snapshot_old; +ALTER TABLE ${schema}.stati_carrello_snapshot_parted rename TO stati_carrello_snapshot; + +ALTER TABLE ${schema}.stati_rpt rename TO stati_rpt_old; +ALTER TABLE ${schema}.stati_rpt_parted rename TO stati_rpt; + +ALTER TABLE ${schema}.stati_rpt_snapshot rename TO stati_rpt_snapshot_old; +ALTER TABLE ${schema}.stati_rpt_snapshot_parted rename TO stati_rpt_snapshot; + +ALTER TABLE ${schema}.token_utility rename TO token_utility_old; +ALTER TABLE ${schema}.token_utility_parted rename TO token_utility; + +ALTER TABLE ${schema}.verifica_bollettino rename TO verifica_bollettino_old; +ALTER TABLE ${schema}.verifica_bollettino_parted rename TO verifica_bollettino; diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_GRANT.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_GRANT.sql new file mode 100644 index 0000000000..821f678f91 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_GRANT.sql @@ -0,0 +1,87 @@ +------------------------------------------------------------------- +GRANT ALL ON TABLE ${schema}.carrello TO ${schema}; +GRANT ALL ON TABLE ${schema}.cd_info_pagamento TO ${schema}; +GRANT ALL ON TABLE ${schema}.idempotency_cache TO ${schema}; +GRANT ALL ON TABLE ${schema}.messaggi TO ${schema}; +GRANT ALL ON TABLE ${schema}.pm_metadata TO ${schema}; +GRANT ALL ON TABLE ${schema}.pm_session_data TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_activate TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_payment TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_payment_plan TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_payment_status TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_payment_status_snapshot TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_receipt TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_receipt_recipient TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_receipt_recipient_status TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_receipt_transfer TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_receipt_xml TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_retry_pa_send_rt TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_retry_sendpaymentresult TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_service TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_status TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_status_snapshot TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_subject TO ${schema}; +GRANT ALL ON TABLE ${schema}.position_transfer TO ${schema}; +GRANT ALL ON TABLE ${schema}.retry_pa_attiva_rpt TO ${schema}; +GRANT ALL ON TABLE ${schema}.retry_pa_invia_rt TO ${schema}; +GRANT ALL ON TABLE ${schema}.retry_rpt TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt_activations TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt_soggetti TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt_versamenti TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt_versamenti_bollo TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt_xml TO ${schema}; +GRANT ALL ON TABLE ${schema}.rt TO ${schema}; +GRANT ALL ON TABLE ${schema}.rt_versamenti TO ${schema}; +GRANT ALL ON TABLE ${schema}.rt_versamenti_bollo TO ${schema}; +GRANT ALL ON TABLE ${schema}.rt_xml TO ${schema}; +GRANT ALL ON TABLE ${schema}.stati_carrello TO ${schema}; +GRANT ALL ON TABLE ${schema}.stati_carrello_snapshot TO ${schema}; +GRANT ALL ON TABLE ${schema}.stati_rpt TO ${schema}; +GRANT ALL ON TABLE ${schema}.stati_rpt_snapshot TO ${schema}; +GRANT ALL ON TABLE ${schema}.token_utility TO ${schema}; +GRANT ALL ON TABLE ${schema}.verifica_bollettino TO ${schema}; +------------------------------------------------------------------- +ALTER TABLE IF EXISTS ${schema}.carrello OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.cd_info_pagamento OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.idempotency_cache OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.messaggi OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.pm_metadata OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.pm_session_data OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_activate OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_payment OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_payment_plan OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_payment_status OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_payment_status_snapshot OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_receipt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_receipt_recipient OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_receipt_recipient_status OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_receipt_transfer OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_receipt_xml OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_retry_pa_send_rt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_retry_sendpaymentresult OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_service OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_status OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_status_snapshot OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_subject OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.position_transfer OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.retry_pa_attiva_rpt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.retry_pa_invia_rt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.retry_rpt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt_activations OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt_soggetti OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt_versamenti OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt_versamenti_bollo OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt_xml OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rt_versamenti OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rt_versamenti_bollo OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rt_xml OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.stati_carrello OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.stati_carrello_snapshot OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.stati_rpt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.stati_rpt_snapshot OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.token_utility OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.verifica_bollettino OWNER to ${schema}; +------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_RENAME_OLD_PART.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_RENAME_OLD_PART.sql deleted file mode 100644 index 913ec8b3b1..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/3_RENAME_OLD_PART.sql +++ /dev/null @@ -1,125 +0,0 @@ -alter table ${schema}.carrello rename to carrello_old; -alter table ${schema}.carrello_parted rename to carrello; - -alter table ${schema}.cd_info_pagamento rename to cd_info_pagamento_old; -alter table ${schema}.cd_info_pagamento_parted rename to cd_info_pagamento; - -alter table ${schema}.idempotency_cache rename to idempotency_cache_old; -alter table ${schema}.idempotency_cache_parted rename to idempotency_cache; - -alter table ${schema}.messaggi rename to messaggi_old; -alter table ${schema}.messaggi_parted rename to messaggi; - -alter table ${schema}.pm_metadata rename to pm_metadata_old; -alter table ${schema}.pm_metadata_parted rename to pm_metadata; - -alter table ${schema}.pm_session_data rename to pm_session_data_old; -alter table ${schema}.pm_session_data_parted rename to pm_session_data; - -alter table ${schema}.position_activate rename to position_activate_old; -alter table ${schema}.position_activate_parted rename to position_activate; - -alter table ${schema}.position_payment rename to position_payment_old; -alter table ${schema}.position_payment_parted rename to position_payment; - -alter table ${schema}.position_payment_plan rename to position_payment_plan_old; -alter table ${schema}.position_payment_plan_parted rename to position_payment_plan; - -alter table ${schema}.position_payment_status rename to position_payment_status_old; -alter table ${schema}.position_payment_status_parted rename to position_payment_status; - -alter table ${schema}.position_payment_status_snapshot rename to position_payment_status_snapshot_old; -alter table ${schema}.position_payment_status_snapshot_parted rename to position_payment_status_snapshot; - -alter table ${schema}.position_receipt rename to position_receipt_old; -alter table ${schema}.position_receipt_parted rename to position_receipt; - -alter table ${schema}.position_receipt_recipient rename to position_receipt_recipient_old; -alter table ${schema}.position_receipt_recipient_parted rename to position_receipt_recipient; - -alter table ${schema}.position_receipt_recipient_status rename to position_receipt_recipient_status_old; -alter table ${schema}.position_receipt_recipient_status_parted rename to position_receipt_recipient_status; - -alter table ${schema}.position_receipt_transfer rename to position_receipt_transfer_old; -alter table ${schema}.position_receipt_transfer_parted rename to position_receipt_transfer; - -alter table ${schema}.position_receipt_xml rename to position_receipt_xml_old; -alter table ${schema}.position_receipt_xml_parted rename to position_receipt_xml; - -alter table ${schema}.position_retry_pa_send_rt rename to position_retry_pa_send_rt_old; -alter table ${schema}.position_retry_pa_send_rt_parted rename to position_retry_pa_send_rt; - -alter table ${schema}.position_retry_sendpaymentresult rename to position_retry_sendpaymentresult_old; -alter table ${schema}.position_retry_sendpaymentresult_parted rename to position_retry_sendpaymentresult; - -alter table ${schema}.position_service rename to position_service_old; -alter table ${schema}.position_service_parted rename to position_service; - -alter table ${schema}.position_status rename to position_status_old; -alter table ${schema}.position_status_parted rename to position_status; - -alter table ${schema}.position_status_snapshot rename to position_status_snapshot_old; -alter table ${schema}.position_status_snapshot_parted rename to position_status_snapshot; - -alter table ${schema}.position_subject rename to position_subject_old; -alter table ${schema}.position_subject_parted rename to position_subject; - -alter table ${schema}.position_transfer rename to position_transfer_old; -alter table ${schema}.position_transfer_parted rename to position_transfer; - -alter table ${schema}.retry_pa_attiva_rpt rename to retry_pa_attiva_rpt_old; -alter table ${schema}.retry_pa_attiva_rpt_parted rename to retry_pa_attiva_rpt; - -alter table ${schema}.retry_pa_invia_rt rename to retry_pa_invia_rt_old; -alter table ${schema}.retry_pa_invia_rt_parted rename to retry_pa_invia_rt; - -alter table ${schema}.retry_rpt rename to retry_rpt_old; -alter table ${schema}.retry_rpt_parted rename to retry_rpt; - -alter table ${schema}.rpt rename to rpt_old; -alter table ${schema}.rpt_parted rename to rpt; - -alter table ${schema}.rpt_activations rename to rpt_activations_old; -alter table ${schema}.rpt_activations_parted rename to rpt_activations; - -alter table ${schema}.rpt_soggetti rename to rpt_soggetti_old; -alter table ${schema}.rpt_soggetti_parted rename to rpt_soggetti; - -alter table ${schema}.rpt_versamenti rename to rpt_versamenti_old; -alter table ${schema}.rpt_versamenti_parted rename to rpt_versamenti; - -alter table ${schema}.rpt_versamenti_bollo rename to rpt_versamenti_bollo_old; -alter table ${schema}.rpt_versamenti_bollo_parted rename to rpt_versamenti_bollo; - -alter table ${schema}.rpt_xml rename to rpt_xml_old; -alter table ${schema}.rpt_xml_parted rename to rpt_xml; - -alter table ${schema}.rt rename to rt_old; -alter table ${schema}.rt_parted rename to rt; - -alter table ${schema}.rt_versamenti rename to rt_versamenti_old; -alter table ${schema}.rt_versamenti_parted rename to rt_versamenti; - -alter table ${schema}.rt_versamenti_bollo rename to rt_versamenti_bollo_old; -alter table ${schema}.rt_versamenti_bollo_parted rename to rt_versamenti_bollo; - -alter table ${schema}.rt_xml rename to rt_xml_old; -alter table ${schema}.rt_xml_parted rename to rt_xml; - -alter table ${schema}.stati_carrello rename to stati_carrello_old; -alter table ${schema}.stati_carrello_parted rename to stati_carrello; - -alter table ${schema}.stati_carrello_snapshot rename to stati_carrello_snapshot_old; -alter table ${schema}.stati_carrello_snapshot_parted rename to stati_carrello_snapshot; - -alter table ${schema}.stati_rpt rename to stati_rpt_old; -alter table ${schema}.stati_rpt_parted rename to stati_rpt; - -alter table ${schema}.stati_rpt_snapshot rename to stati_rpt_snapshot_old; -alter table ${schema}.stati_rpt_snapshot_parted rename to stati_rpt_snapshot; - -alter table ${schema}.token_utility rename to token_utility_old; -alter table ${schema}.token_utility_parted rename to token_utility; - -alter table ${schema}.verifica_bollettino rename to verifica_bollettino_old; -alter table ${schema}.verifica_bollettino_parted rename to verifica_bollettino; diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/4_PROCEDURE_modify_partition.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/4_PROCEDURE_modify_partition.sql deleted file mode 100644 index de7165d4dc..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/4_PROCEDURE_modify_partition.sql +++ /dev/null @@ -1,210 +0,0 @@ --- PROCEDURE: online.modify_partition() - --- DROP PROCEDURE IF EXISTS online.modify_partition(); - - -CREATE OR REPLACE PROCEDURE ${schema}.modify_partition( - ) -LANGUAGE 'plpgsql' -AS $BODY$ - -DECLARE - -l_partname0 TEXT; -l_partname1 TEXT; -l_partname2 TEXT; -l_partname3 TEXT; -l_partname4 TEXT; -l_partname5 TEXT; -l_partname6 TEXT; -l_partname7 TEXT; -l_part_list0 date; -l_part_list1 date; -l_part_list2 date; -l_part_list3 date; -l_part_list4 date; -l_part_list5 date; -l_part_list6 date; -l_part_list7 date; -l_part_listb0 date; -l_part_listb1 date; -l_part_listb2 date; -l_part_listb3 date; -l_part_listb4 date; -l_part_listb5 date; -l_part_listb6 date; -l_part_listb7 date; -l_partab TEXT; -l_sql0 text; -l_sql1 text; -l_sql2 text; -l_sql3 text; -l_sql4 text; -l_sql5 text; -l_sql6 text; -l_sql7 text; -l_exist text; -l_var_exist integer; - - tab_cursor CURSOR FOR - SELECT lower(tabella) as tabella, lower(schema) as schema - FROM ${schema}.TAB_PART; - tab_record TEXT; - tab_schema TEXT; - -BEGIN - - OPEN tab_cursor; - - - - LOOP - FETCH NEXT FROM tab_cursor INTO tab_record, tab_schema; - EXIT WHEN NOT FOUND; - - - ------------------------------------------------------------------------------------------------------- - - l_part_list0 = date_trunc('day', CURRENT_DATE-1500)::date; - l_part_listb0 = date_trunc('day', CURRENT_DATE+1)::date; - l_partname0 := tab_record||'_PMINVALUE'; - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname0 and table_schema=tab_schema) - THEN - - l_sql0 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname0, tab_schema, tab_record, l_part_list0, l_part_listb0); - execute l_sql0; - END IF; - - ------------------------------------------------------------------------------------------------------- - - l_part_list1 = date_trunc('day', CURRENT_DATE+1)::date; - l_part_listb1 = date_trunc('day', CURRENT_DATE+2)::date; - l_partname1 := tab_record||'_P'||to_char(CURRENT_DATE+1, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname1 and table_schema=tab_schema) - THEN - - l_sql1 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname1, tab_schema, tab_record, l_part_list1, l_part_listb1); - execute l_sql1; - END IF; ------------------------------------------------------------------------------------------------------- - - l_part_list2 = date_trunc('day', CURRENT_DATE+2)::date; - l_part_listb2 = date_trunc('day', CURRENT_DATE+3)::date; - l_partname2 := tab_record||'_P'||to_char(CURRENT_DATE+2, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname2 and table_schema=tab_schema) - THEN - - l_sql2 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname2, tab_schema, tab_record, l_part_list2, l_part_listb2); - execute l_sql2; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list3 = date_trunc('day', CURRENT_DATE+3)::date; - l_part_listb3 = date_trunc('day', CURRENT_DATE+4)::date; - l_partname3 := tab_record||'_P'||to_char(CURRENT_DATE+3, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname3 and table_schema=tab_schema) - THEN - - l_sql3 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname3, tab_schema, tab_record, l_part_list3, l_part_listb3); - execute l_sql3; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list4 = date_trunc('day', CURRENT_DATE+4)::date; - l_part_listb4 = date_trunc('day', CURRENT_DATE+5)::date; - l_partname4 := tab_record||'_P'||to_char(CURRENT_DATE+4, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname4 and table_schema=tab_schema) - THEN - - l_sql4 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname4, tab_schema, tab_record, l_part_list4, l_part_listb4); - execute l_sql4; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list5 = date_trunc('day', CURRENT_DATE+5)::date; - l_part_listb5 = date_trunc('day', CURRENT_DATE+6)::date; - l_partname5 := tab_record||'_P'||to_char(CURRENT_DATE+5, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname5 and table_schema=tab_schema) - THEN - - l_sql5 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname5, tab_schema, tab_record, l_part_list5, l_part_listb5); - execute l_sql5; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list6 = date_trunc('day', CURRENT_DATE+6)::date; - l_part_listb6 = date_trunc('day', CURRENT_DATE+7)::date; - l_partname6 := tab_record||'_P'||to_char(CURRENT_DATE+6, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname6 and table_schema=tab_schema) - THEN - - l_sql6 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname6, tab_schema, tab_record, l_part_list6, l_part_listb6); - execute l_sql6; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list7 = date_trunc('day', CURRENT_DATE+7)::date; - l_part_listb7 = date_trunc('day', CURRENT_DATE+8)::date; - l_partname7 := tab_record||'_P'||to_char(CURRENT_DATE+7, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname7 and table_schema=tab_schema) - THEN - - l_sql7 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname7, tab_schema, tab_record, l_part_list7, l_part_listb7); - execute l_sql7; - END IF; - ---------------------------------------------------------------------------------------------------------------------- - - - - END LOOP; - - CLOSE tab_cursor; - -END; -$BODY$; - -ALTER PROCEDURE ${schema}.modify_partition() - OWNER TO ${schema}; diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/5_exec_PROCEDURE.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/5_exec_PROCEDURE.sql deleted file mode 100644 index 53934df218..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/5_exec_PROCEDURE.sql +++ /dev/null @@ -1 +0,0 @@ -CALL ${schema}.modify_partition(); diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/6_POPOLA_TABLE.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/6_POPOLA_TABLE.sql deleted file mode 100644 index cf544edcb8..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/6_POPOLA_TABLE.sql +++ /dev/null @@ -1,167 +0,0 @@ -INSERT INTO ${schema}.carrello -SELECT * -FROM ${schema}.carrello_old; - -INSERT INTO ${schema}.cd_info_pagamento -SELECT * -FROM ${schema}.cd_info_pagamento_old; - -INSERT INTO ${schema}.idempotency_cache -SELECT * -FROM ${schema}.idempotency_cache_old; - -INSERT INTO ${schema}.messaggi -SELECT * -FROM ${schema}.messaggi_old; - -INSERT INTO ${schema}.pm_metadata -SELECT * -FROM ${schema}.pm_metadata_old; - -INSERT INTO ${schema}.pm_session_data -SELECT * -FROM ${schema}.pm_session_data_old; - -INSERT INTO ${schema}.position_activate -SELECT * -FROM ${schema}.position_activate_old; - -INSERT INTO ${schema}.position_payment -SELECT * -FROM ${schema}.position_payment_old; - -INSERT INTO ${schema}.position_payment_plan -SELECT * -FROM ${schema}.position_payment_plan_old; - -INSERT INTO ${schema}.position_payment_status -SELECT * -FROM ${schema}.position_payment_status_old; - -INSERT INTO ${schema}.position_payment_status_snapshot -SELECT * -FROM ${schema}.position_payment_status_snapshot_old; - -INSERT INTO ${schema}.position_receipt -SELECT * -FROM ${schema}.position_receipt_old; - -INSERT INTO ${schema}.position_receipt_recipient -SELECT * -FROM ${schema}.position_receipt_recipient_old; - -INSERT INTO ${schema}.position_receipt_recipient_status -SELECT * -FROM ${schema}.position_receipt_recipient_status_old; - -INSERT INTO ${schema}.position_receipt_transfer -SELECT * -FROM ${schema}.position_receipt_transfer_old; - -INSERT INTO ${schema}.position_receipt_xml -SELECT * -FROM ${schema}.position_receipt_xml_old; - -INSERT INTO ${schema}.position_retry_pa_send_rt -SELECT * -FROM ${schema}.position_retry_pa_send_rt_old; - -INSERT INTO ${schema}.position_retry_sendpaymentresult -SELECT * -FROM ${schema}.position_retry_sendpaymentresult_old; - -INSERT INTO ${schema}.position_service -SELECT * -FROM ${schema}.position_service_old; - -INSERT INTO ${schema}.position_status -SELECT * -FROM ${schema}.position_status_old; - -INSERT INTO ${schema}.position_status_snapshot -SELECT * -FROM ${schema}.position_status_snapshot_old; - -INSERT INTO ${schema}.position_subject -SELECT * -FROM ${schema}.position_subject_old; - -INSERT INTO ${schema}.position_transfer -SELECT * -FROM ${schema}.position_transfer_old; - -INSERT INTO ${schema}.retry_pa_attiva_rpt -SELECT * -FROM ${schema}.retry_pa_attiva_rpt_old; - -INSERT INTO ${schema}.retry_pa_invia_rt -SELECT * -FROM ${schema}.retry_pa_invia_rt_old; - -INSERT INTO ${schema}.retry_rpt -SELECT * -FROM ${schema}.retry_rpt_old; - -INSERT INTO ${schema}.rpt -SELECT * -FROM ${schema}.rpt_old; - -INSERT INTO ${schema}.rpt_activations -SELECT * -FROM ${schema}.rpt_activations_old; - -INSERT INTO ${schema}.rpt_soggetti -SELECT * -FROM ${schema}.rpt_soggetti_old; - -INSERT INTO ${schema}.rpt_versamenti -SELECT * -FROM ${schema}.rpt_versamenti_old; - -INSERT INTO ${schema}.rpt_versamenti_bollo -SELECT * -FROM ${schema}.rpt_versamenti_bollo_old; - -INSERT INTO ${schema}.rpt_xml -SELECT * -FROM ${schema}.rpt_xml_old; - -INSERT INTO ${schema}.rt -SELECT * -FROM ${schema}.rt_old; - -INSERT INTO ${schema}.rt_versamenti -SELECT * -FROM ${schema}.rt_versamenti_old; - -INSERT INTO ${schema}.rt_versamenti_bollo -SELECT * -FROM ${schema}.rt_versamenti_bollo_old; - -INSERT INTO ${schema}.rt_xml -SELECT * -FROM ${schema}.rt_xml_old; - -INSERT INTO ${schema}.stati_carrello -SELECT * -FROM ${schema}.stati_carrello_old; - -INSERT INTO ${schema}.stati_carrello_snapshot -SELECT * -FROM ${schema}.stati_carrello_snapshot_old; - -INSERT INTO ${schema}.stati_rpt -SELECT * -FROM ${schema}.stati_rpt_old; - -INSERT INTO ${schema}.stati_rpt_snapshot -SELECT * -FROM ${schema}.stati_rpt_snapshot_old; - -INSERT INTO ${schema}.token_utility -SELECT * -FROM ${schema}.token_utility_old; - -INSERT INTO ${schema}.verifica_bollettino -SELECT * -FROM ${schema}.verifica_bollettino_old; diff --git a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/7_GRANT.sql b/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/7_GRANT.sql deleted file mode 100644 index c975d0dbe7..0000000000 --- a/src/psql/nodo/liquibase/changelog/online/3.26.0/sql/7_GRANT.sql +++ /dev/null @@ -1,172 +0,0 @@ - REVOKE ALL ON TABLE ${schema}.carrello FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.cd_info_pagamento FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.idempotency_cache FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.messaggi FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.pm_metadata FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.pm_session_data FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_activate FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_payment FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_payment_plan FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_payment_status FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_payment_status_snapshot FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_receipt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_receipt_recipient FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_receipt_recipient_status FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_receipt_transfer FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_receipt_xml FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_retry_pa_send_rt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_retry_sendpaymentresult FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_service FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_status FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_status_snapshot FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_subject FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.position_transfer FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.retry_pa_attiva_rpt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.retry_pa_invia_rt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.retry_rpt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt_activations FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt_soggetti FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt_versamenti FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt_versamenti_bollo FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rpt_xml FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rt_versamenti FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rt_versamenti_bollo FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.rt_xml FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.stati_carrello FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.stati_carrello_snapshot FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.stati_rpt FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.stati_rpt_snapshot FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.token_utility FROM ${schemaOffline}; - REVOKE ALL ON TABLE ${schema}.verifica_bollettino FROM ${schemaOffline}; - ------------------------------------------------------------------- - GRANT SELECT ON TABLE ${schema}.carrello TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.cd_info_pagamento TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.idempotency_cache TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.messaggi TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.pm_metadata TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.pm_session_data TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_activate TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_payment TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_payment_plan TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_payment_status TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_payment_status_snapshot TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_receipt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_receipt_recipient TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_receipt_recipient_status TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_receipt_transfer TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_receipt_xml TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_retry_pa_send_rt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_retry_sendpaymentresult TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_service TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_status TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_status_snapshot TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_subject TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.position_transfer TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.retry_pa_attiva_rpt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.retry_pa_invia_rt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.retry_rpt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt_activations TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt_soggetti TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt_versamenti TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt_versamenti_bollo TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rpt_xml TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rt_versamenti TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rt_versamenti_bollo TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.rt_xml TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.stati_carrello TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.stati_carrello_snapshot TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.stati_rpt TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.stati_rpt_snapshot TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.token_utility TO ${schemaOffline}; - GRANT SELECT ON TABLE ${schema}.verifica_bollettino TO ${schemaOffline}; - ------------------------------------------------------------------- - GRANT ALL ON TABLE ${schema}.carrello TO ${schema}; - GRANT ALL ON TABLE ${schema}.cd_info_pagamento TO ${schema}; - GRANT ALL ON TABLE ${schema}.idempotency_cache TO ${schema}; - GRANT ALL ON TABLE ${schema}.messaggi TO ${schema}; - GRANT ALL ON TABLE ${schema}.pm_metadata TO ${schema}; - GRANT ALL ON TABLE ${schema}.pm_session_data TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_activate TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_payment TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_payment_plan TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_payment_status TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_payment_status_snapshot TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_receipt TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_receipt_recipient TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_receipt_recipient_status TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_receipt_transfer TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_receipt_xml TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_retry_pa_send_rt TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_retry_sendpaymentresult TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_service TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_status TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_status_snapshot TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_subject TO ${schema}; - GRANT ALL ON TABLE ${schema}.position_transfer TO ${schema}; - GRANT ALL ON TABLE ${schema}.retry_pa_attiva_rpt TO ${schema}; - GRANT ALL ON TABLE ${schema}.retry_pa_invia_rt TO ${schema}; - GRANT ALL ON TABLE ${schema}.retry_rpt TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt_activations TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt_soggetti TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt_versamenti TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt_versamenti_bollo TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt_xml TO ${schema}; - GRANT ALL ON TABLE ${schema}.rt TO ${schema}; - GRANT ALL ON TABLE ${schema}.rt_versamenti TO ${schema}; - GRANT ALL ON TABLE ${schema}.rt_versamenti_bollo TO ${schema}; - GRANT ALL ON TABLE ${schema}.rt_xml TO ${schema}; - GRANT ALL ON TABLE ${schema}.stati_carrello TO ${schema}; - GRANT ALL ON TABLE ${schema}.stati_carrello_snapshot TO ${schema}; - GRANT ALL ON TABLE ${schema}.stati_rpt TO ${schema}; - GRANT ALL ON TABLE ${schema}.stati_rpt_snapshot TO ${schema}; - GRANT ALL ON TABLE ${schema}.token_utility TO ${schema}; - GRANT ALL ON TABLE ${schema}.verifica_bollettino TO ${schema}; - ------------------------------------------------------------------- - ALTER TABLE IF EXISTS ${schema}.carrello OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.cd_info_pagamento OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.idempotency_cache OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.messaggi OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.pm_metadata OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.pm_session_data OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_activate OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_payment OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_payment_plan OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_payment_status OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_payment_status_snapshot OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_receipt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_receipt_recipient OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_receipt_recipient_status OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_receipt_transfer OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_receipt_xml OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_retry_pa_send_rt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_retry_sendpaymentresult OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_service OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_status OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_status_snapshot OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_subject OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.position_transfer OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.retry_pa_attiva_rpt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.retry_pa_invia_rt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.retry_rpt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt_activations OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt_soggetti OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt_versamenti OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt_versamenti_bollo OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt_xml OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rt_versamenti OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rt_versamenti_bollo OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rt_xml OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.stati_carrello OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.stati_carrello_snapshot OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.stati_rpt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.stati_rpt_snapshot OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.token_utility OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.verifica_bollettino OWNER to ${schema}; - ------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/partition/3.26.0/db.changelog-20240518000000_insert_tab_part.xml b/src/psql/nodo/liquibase/changelog/partition/3.26.0/db.changelog-20240518000000_insert_tab_part.xml new file mode 100644 index 0000000000..291d798bee --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/3.26.0/db.changelog-20240518000000_insert_tab_part.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/3.26.0/sql/insert_tab_part.sql b/src/psql/nodo/liquibase/changelog/partition/3.26.0/sql/insert_tab_part.sql new file mode 100644 index 0000000000..b6266a91ed --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/3.26.0/sql/insert_tab_part.sql @@ -0,0 +1,55 @@ +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('carrello', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('cd_info_pagamento', 'online', 'idx_unique', 'OBJ_ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('idempotency_cache', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('messaggi', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('pm_metadata', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('pm_session_data', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_activate', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_payment', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_payment_plan', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_payment_status', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_payment_status_snapshot', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_receipt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_receipt_recipient', 'online', NULL,NULL) ; +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_receipt_recipient_status', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_receipt_transfer', 'online', NULL,NULL) ; +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_receipt_xml', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_retry_pa_send_rt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_retry_sendpaymentresult', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_service', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_status', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_status_snapshot', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_subject', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_transfer', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('retry_pa_attiva_rpt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('retry_pa_invia_rt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('retry_rpt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt_activations', 'online', NULL,NULL) ; +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt_soggetti', 'online', 'idx_unique', 'RPT_ID, TIPO_SOGGETTO'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt_versamenti', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt_versamenti_bollo', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt_xml', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rt_versamenti', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rt_versamenti_bollo', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rt_xml', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('stati_carrello', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('stati_carrello_snapshot', 'online', 'idx_unique', 'ID_CARRELLO'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('stati_rpt', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('stati_rpt_snapshot', 'online', 'idx_unique', 'ID_DOMINIO, IUV, CCP'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('token_utility', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('verifica_bollettino', 'online', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rendicontazione_sftp_receive_queue', 'offline', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rendicontazione_sftp_send_queue', 'offline', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('re', 're', 'idx_unique', 'ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('carrello_rpt', 'wfesp', 'idx_unique', 'OBJ_ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('redirect_my_bank', 'wfesp', 'idx_unique', 'OBJ_ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt', 'wfesp', 'idx_unique', 'OBJ_ID'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('position_service', 'online', 'pfc_ni_unique', 'pa_fiscal_code,notice_id'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('retry_pa_invia_rt', 'online', 'i_c_id_unique', 'iuv,ccp,id_dominio'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt', 'online', 'id_i_c_unique', 'ident_dominio,iuv,ccp'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rt', 'online', 'id_i_c_unique', 'ident_dominio,iuv,ccp'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('verifica_bollettino', 'online', 'ni_pfc_unique', 'notice_id,pa_fiscal_code'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('carrello_rpt', 'wfesp', 'ppi_psp_cc_unique', 'parametri_pagamento_immediato,psp,codice_carrello'); +INSERT INTO tab_part(tabella, schema, prefisso_nome_indice, campi_indice) VALUES ('rpt', 'wfesp', 'ppi_psp_cc_unique', 'parametri_pagamento_immediato,psp,codice_carrello'); diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.10.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.10.0.xml new file mode 100644 index 0000000000..6bc0a8a73d --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.10.0.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.14.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.14.0.xml new file mode 100644 index 0000000000..7a7c193225 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.14.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.15.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.15.0.xml new file mode 100644 index 0000000000..22d5d83bb7 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.15.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.18.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.18.0.xml new file mode 100644 index 0000000000..a8406be37d --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.18.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.19.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.19.0.xml new file mode 100644 index 0000000000..37f712bea3 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.19.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.20.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.20.0.xml new file mode 100644 index 0000000000..5d617df116 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.20.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.21.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.21.0.xml new file mode 100644 index 0000000000..b5cf836787 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.21.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.22.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.22.0.xml new file mode 100644 index 0000000000..35cf58fb21 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.22.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.23.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.23.0.xml new file mode 100644 index 0000000000..851bf19410 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.23.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.24.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.24.0.xml new file mode 100644 index 0000000000..ad885f6914 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.24.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.25.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.25.0.xml new file mode 100644 index 0000000000..7e08f1fdda --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.25.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.26.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.26.0.xml new file mode 100644 index 0000000000..affc6e073a --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.26.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.27.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.27.0.xml new file mode 100644 index 0000000000..3f2a892886 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.27.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.28.0.xml b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.28.0.xml new file mode 100644 index 0000000000..b32344c5a4 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/partition/db.changelog-master-3.28.0.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/db.changelog-20240318000000_partizionamento.xml b/src/psql/nodo/liquibase/changelog/re/3.26.0/db.changelog-20240318000000_partizionamento.xml index c55782e9fe..8a9430528a 100644 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/db.changelog-20240318000000_partizionamento.xml +++ b/src/psql/nodo/liquibase/changelog/re/3.26.0/db.changelog-20240318000000_partizionamento.xml @@ -1,55 +1,32 @@ - - - - - - - + + + diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/1_DDL_TABLE.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/1_DDL_TABLE.sql index d2dd78e621..ffc7ba5247 100644 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/1_DDL_TABLE.sql +++ b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/1_DDL_TABLE.sql @@ -1,43 +1,35 @@ CREATE TABLE IF NOT EXISTS ${schema}.re_parted ( - id numeric DEFAULT nextval('${schema}.re_seq'::regclass), - data_ora_evento character varying(23) COLLATE pg_catalog."default" NOT NULL, - identificativo_dominio character varying(35) COLLATE pg_catalog."default", - identificativo_univoco_versamento character varying(35) COLLATE pg_catalog."default", - codice_contesto_pagamento character varying(35) COLLATE pg_catalog."default", - identificativo_prestatore_servizi_pagamento character varying(35) COLLATE pg_catalog."default", - tipo_versamento character varying(35) COLLATE pg_catalog."default", - componente character varying(35) COLLATE pg_catalog."default" NOT NULL, - categoria_evento character varying(35) COLLATE pg_catalog."default" NOT NULL, - tipo_evento character varying(35) COLLATE pg_catalog."default", - sotto_tipo_evento character varying(35) COLLATE pg_catalog."default" NOT NULL, - identificativo_fruitore character varying(35) COLLATE pg_catalog."default", - identificativo_erogatore character varying(35) COLLATE pg_catalog."default", - identificativo_stazione_intermediario_pa character varying(35) COLLATE pg_catalog."default", - canale_pagamento character varying(35) COLLATE pg_catalog."default", - parametri_specifici_interfaccia character varying(512) COLLATE pg_catalog."default", - esito character varying(30) COLLATE pg_catalog."default", - id_sessione character varying(36) COLLATE pg_catalog."default", - status character varying(35) COLLATE pg_catalog."default", - payload bytea, - info character varying(255) COLLATE pg_catalog."default", - inserted_timestamp timestamp(6) without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, - business_process character varying(255) COLLATE pg_catalog."default", - fruitore_descr character varying(255) COLLATE pg_catalog."default", - erogatore_descr character varying(255) COLLATE pg_catalog."default", - psp_descr character varying(255) COLLATE pg_catalog."default", - notice_id character varying(100) COLLATE pg_catalog."default", - creditor_reference_id character varying(100) COLLATE pg_catalog."default", - payment_token character varying(100) COLLATE pg_catalog."default", - id_sessione_originale character varying(36) COLLATE pg_catalog."default", - id_eventhub character varying(36) COLLATE pg_catalog."default", - flag_standin character(1) COLLATE pg_catalog."default" -) partition by range ("inserted_timestamp"); - --- - -CREATE TABLE IF NOT EXISTS ${schema}.tab_part -( - tabella character varying(100) COLLATE pg_catalog."default", - schema character varying(100) COLLATE pg_catalog."default" -); + id numeric DEFAULT nextval('${schema}.re_seq'::regclass), + data_ora_evento character varying(23) COLLATE pg_catalog."default" NOT NULL, + identificativo_dominio character varying(35) COLLATE pg_catalog."default", + identificativo_univoco_versamento character varying(35) COLLATE pg_catalog."default", + codice_contesto_pagamento character varying(35) COLLATE pg_catalog."default", + identificativo_prestatore_servizi_pagamento character varying(35) COLLATE pg_catalog."default", + tipo_versamento character varying(35) COLLATE pg_catalog."default", + componente character varying(35) COLLATE pg_catalog."default" NOT NULL, + categoria_evento character varying(35) COLLATE pg_catalog."default" NOT NULL, + tipo_evento character varying(35) COLLATE pg_catalog."default", + sotto_tipo_evento character varying(35) COLLATE pg_catalog."default" NOT NULL, + identificativo_fruitore character varying(35) COLLATE pg_catalog."default", + identificativo_erogatore character varying(35) COLLATE pg_catalog."default", + identificativo_stazione_intermediario_pa character varying(35) COLLATE pg_catalog."default", + canale_pagamento character varying(35) COLLATE pg_catalog."default", + parametri_specifici_interfaccia character varying(512) COLLATE pg_catalog."default", + esito character varying(30) COLLATE pg_catalog."default", + id_sessione character varying(36) COLLATE pg_catalog."default", + status character varying(35) COLLATE pg_catalog."default", + payload bytea, + info character varying(255) COLLATE pg_catalog."default", + inserted_timestamp timestamp(6) without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, + business_process character varying(255) COLLATE pg_catalog."default", + fruitore_descr character varying(255) COLLATE pg_catalog."default", + erogatore_descr character varying(255) COLLATE pg_catalog."default", + psp_descr character varying(255) COLLATE pg_catalog."default", + notice_id character varying(100) COLLATE pg_catalog."default", + creditor_reference_id character varying(100) COLLATE pg_catalog."default", + payment_token character varying(100) COLLATE pg_catalog."default", + id_sessione_originale character varying(36) COLLATE pg_catalog."default", + id_eventhub character varying(36) COLLATE pg_catalog."default", + flag_standin character(1) COLLATE pg_catalog."default" + ) partition by range ("inserted_timestamp"); diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_DML_TABLE_PART.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_DML_TABLE_PART.sql deleted file mode 100644 index 5b78a44475..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_DML_TABLE_PART.sql +++ /dev/null @@ -1 +0,0 @@ -insert into ${schema}.tab_part(tabella,schema)values ('re','${schema}'); diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_RENAME_TABLE.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_RENAME_TABLE.sql new file mode 100644 index 0000000000..81b655d04f --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/2_RENAME_TABLE.sql @@ -0,0 +1,2 @@ +ALTER TABLE ${schema}.re rename TO re_old; +ALTER TABLE ${schema}.re_parted rename TO re; diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_GRANT.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_GRANT.sql new file mode 100644 index 0000000000..cea7d40b14 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_GRANT.sql @@ -0,0 +1,5 @@ +------------------------------------------------------------------- +GRANT ALL ON TABLE ${schema}.re TO ${schema}; +------------------------------------------------------------------- +ALTER TABLE IF EXISTS ${schema}.re OWNER to ${schema}; +------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_RENAME_OLD_PART.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_RENAME_OLD_PART.sql deleted file mode 100644 index 6c825eeb60..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/3_RENAME_OLD_PART.sql +++ /dev/null @@ -1,3 +0,0 @@ - -alter table ${schema}.re rename to re_old; -alter table ${schema}.re_parted rename to re; diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/4_PROCEDURE_modify_partition.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/4_PROCEDURE_modify_partition.sql deleted file mode 100644 index 3c2706fee6..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/4_PROCEDURE_modify_partition.sql +++ /dev/null @@ -1,210 +0,0 @@ --- PROCEDURE: ${schema}.modify_partition() - --- DROP PROCEDURE IF EXISTS ${schema}.modify_partition(); - - -CREATE OR REPLACE PROCEDURE ${schema}.modify_partition( - ) -LANGUAGE 'plpgsql' -AS $BODY$ - -DECLARE - -l_partname0 TEXT; -l_partname1 TEXT; -l_partname2 TEXT; -l_partname3 TEXT; -l_partname4 TEXT; -l_partname5 TEXT; -l_partname6 TEXT; -l_partname7 TEXT; -l_part_list0 date; -l_part_list1 date; -l_part_list2 date; -l_part_list3 date; -l_part_list4 date; -l_part_list5 date; -l_part_list6 date; -l_part_list7 date; -l_part_listb0 date; -l_part_listb1 date; -l_part_listb2 date; -l_part_listb3 date; -l_part_listb4 date; -l_part_listb5 date; -l_part_listb6 date; -l_part_listb7 date; -l_partab TEXT; -l_sql0 text; -l_sql1 text; -l_sql2 text; -l_sql3 text; -l_sql4 text; -l_sql5 text; -l_sql6 text; -l_sql7 text; -l_exist text; -l_var_exist integer; - - tab_cursor CURSOR FOR - SELECT lower(tabella) as tabella, lower(schema) as schema - FROM ${schema}.TAB_PART; - tab_record TEXT; - tab_schema TEXT; - -BEGIN - - OPEN tab_cursor; - - - - LOOP - FETCH NEXT FROM tab_cursor INTO tab_record, tab_schema; - EXIT WHEN NOT FOUND; - - - ------------------------------------------------------------------------------------------------------- - - l_part_list0 = date_trunc('day', CURRENT_DATE-1500)::date; - l_part_listb0 = date_trunc('day', CURRENT_DATE+1)::date; - l_partname0 := tab_record||'_PMINVALUE'; - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname0 and table_schema=tab_schema) - THEN - - l_sql0 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname0, tab_schema, tab_record, l_part_list0, l_part_listb0); - execute l_sql0; - END IF; - - ------------------------------------------------------------------------------------------------------- - - l_part_list1 = date_trunc('day', CURRENT_DATE+1)::date; - l_part_listb1 = date_trunc('day', CURRENT_DATE+2)::date; - l_partname1 := tab_record||'_P'||to_char(CURRENT_DATE+1, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname1 and table_schema=tab_schema) - THEN - - l_sql1 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname1, tab_schema, tab_record, l_part_list1, l_part_listb1); - execute l_sql1; - END IF; ------------------------------------------------------------------------------------------------------- - - l_part_list2 = date_trunc('day', CURRENT_DATE+2)::date; - l_part_listb2 = date_trunc('day', CURRENT_DATE+3)::date; - l_partname2 := tab_record||'_P'||to_char(CURRENT_DATE+2, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname2 and table_schema=tab_schema) - THEN - - l_sql2 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname2, tab_schema, tab_record, l_part_list2, l_part_listb2); - execute l_sql2; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list3 = date_trunc('day', CURRENT_DATE+3)::date; - l_part_listb3 = date_trunc('day', CURRENT_DATE+4)::date; - l_partname3 := tab_record||'_P'||to_char(CURRENT_DATE+3, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname3 and table_schema=tab_schema) - THEN - - l_sql3 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname3, tab_schema, tab_record, l_part_list3, l_part_listb3); - execute l_sql3; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list4 = date_trunc('day', CURRENT_DATE+4)::date; - l_part_listb4 = date_trunc('day', CURRENT_DATE+5)::date; - l_partname4 := tab_record||'_P'||to_char(CURRENT_DATE+4, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname4 and table_schema=tab_schema) - THEN - - l_sql4 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname4, tab_schema, tab_record, l_part_list4, l_part_listb4); - execute l_sql4; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list5 = date_trunc('day', CURRENT_DATE+5)::date; - l_part_listb5 = date_trunc('day', CURRENT_DATE+6)::date; - l_partname5 := tab_record||'_P'||to_char(CURRENT_DATE+5, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname5 and table_schema=tab_schema) - THEN - - l_sql5 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname5, tab_schema, tab_record, l_part_list5, l_part_listb5); - execute l_sql5; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list6 = date_trunc('day', CURRENT_DATE+6)::date; - l_part_listb6 = date_trunc('day', CURRENT_DATE+7)::date; - l_partname6 := tab_record||'_P'||to_char(CURRENT_DATE+6, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname6 and table_schema=tab_schema) - THEN - - l_sql6 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname6, tab_schema, tab_record, l_part_list6, l_part_listb6); - execute l_sql6; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list7 = date_trunc('day', CURRENT_DATE+7)::date; - l_part_listb7 = date_trunc('day', CURRENT_DATE+8)::date; - l_partname7 := tab_record||'_P'||to_char(CURRENT_DATE+7, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname7 and table_schema=tab_schema) - THEN - - l_sql7 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname7, tab_schema, tab_record, l_part_list7, l_part_listb7); - execute l_sql7; - END IF; - ---------------------------------------------------------------------------------------------------------------------- - - - - END LOOP; - - CLOSE tab_cursor; - -END; -$BODY$; - -ALTER PROCEDURE ${schema}.modify_partition() - OWNER TO ${schema}; diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/5_exec_PROCEDURE.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/5_exec_PROCEDURE.sql deleted file mode 100644 index 53934df218..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/5_exec_PROCEDURE.sql +++ /dev/null @@ -1 +0,0 @@ -CALL ${schema}.modify_partition(); diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/6_POPOLA_TABLE.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/6_POPOLA_TABLE.sql deleted file mode 100644 index 2c9e91982e..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/6_POPOLA_TABLE.sql +++ /dev/null @@ -1,4 +0,0 @@ - -INSERT INTO ${schema}.re -SELECT * -FROM ${schema}.re_old; diff --git a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/7_GRANT.sql b/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/7_GRANT.sql deleted file mode 100644 index 2e98bbe80c..0000000000 --- a/src/psql/nodo/liquibase/changelog/re/3.26.0/sql/7_GRANT.sql +++ /dev/null @@ -1,5 +0,0 @@ - - GRANT ALL ON TABLE ${schema}.re TO ${schema}; - ------------------------------------------------------------------- - ALTER TABLE IF EXISTS ${schema}.re OWNER to ${schema}; - ------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/db.changelog-20240318000000_partizionamento.xml b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/db.changelog-20240318000000_partizionamento.xml index 37d38e3c06..8a9430528a 100644 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/db.changelog-20240318000000_partizionamento.xml +++ b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/db.changelog-20240318000000_partizionamento.xml @@ -1,48 +1,32 @@ - - - - - - - + + + diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/1_DDL_TABLE.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/1_DDL_TABLE.sql index bc154815cf..0dfa3a8f5d 100644 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/1_DDL_TABLE.sql +++ b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/1_DDL_TABLE.sql @@ -1,35 +1,35 @@ CREATE TABLE IF NOT EXISTS ${schema}.carrello_rpt_parted ( - obj_id numeric NOT NULL DEFAULT nextval('${schema}.carrello_rpt_seq'::regclass), - id_carrello character varying(35) COLLATE pg_catalog."default", - codice_carrello character varying(128) COLLATE pg_catalog."default", - staz_intermediariopa character varying(35) COLLATE pg_catalog."default", - intermediariopa character varying(35) COLLATE pg_catalog."default", - canale character varying(35) COLLATE pg_catalog."default", - intermediariopsp character varying(35) COLLATE pg_catalog."default", - psp character varying(35) COLLATE pg_catalog."default", - id_sessione character varying(100) COLLATE pg_catalog."default" NOT NULL, - parametri_pagamento_immediato character varying(255) COLLATE pg_catalog."default", - parametri_profilo_pagamento character varying(255) COLLATE pg_catalog."default", - url_redirezione_pa character varying(255) COLLATE pg_catalog."default", - url_redirezione_psp character varying(255) COLLATE pg_catalog."default", - stato character varying(20) COLLATE pg_catalog."default" NOT NULL, - return_code character varying(10) COLLATE pg_catalog."default", - esito_redirect character varying(50) COLLATE pg_catalog."default", - tipo_interazione character varying(255) COLLATE pg_catalog."default", - mobile_token character varying(255) COLLATE pg_catalog."default", - rrn character varying(255) COLLATE pg_catalog."default", - esito_transazione_carta character varying(35) COLLATE pg_catalog."default", - codice_autorizzativo character varying(6) COLLATE pg_catalog."default", - parametri_pm character varying(255) COLLATE pg_catalog."default", - timestamp_operazione timestamp(6) without time zone, - importo_totale_pagato numeric(19,0), - inserted_timestamp timestamp(6) without time zone NOT NULL, - inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'INSERTED_BY'::character varying, - updated_timestamp timestamp(6) without time zone NOT NULL, - updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'UPDATED_BY'::character varying, - CONSTRAINT carrello_rpt_parted_pk PRIMARY KEY (obj_id,inserted_timestamp) - ) partition by range ("inserted_timestamp"); + obj_id numeric NOT NULL DEFAULT nextval('${schema}.carrello_rpt_seq'::regclass), + id_carrello character varying(35) COLLATE pg_catalog."default", + codice_carrello character varying(128) COLLATE pg_catalog."default", + staz_intermediariopa character varying(35) COLLATE pg_catalog."default", + intermediariopa character varying(35) COLLATE pg_catalog."default", + canale character varying(35) COLLATE pg_catalog."default", + intermediariopsp character varying(35) COLLATE pg_catalog."default", + psp character varying(35) COLLATE pg_catalog."default", + id_sessione character varying(100) COLLATE pg_catalog."default" NOT NULL, + parametri_pagamento_immediato character varying(255) COLLATE pg_catalog."default", + parametri_profilo_pagamento character varying(255) COLLATE pg_catalog."default", + url_redirezione_pa character varying(255) COLLATE pg_catalog."default", + url_redirezione_psp character varying(255) COLLATE pg_catalog."default", + stato character varying(20) COLLATE pg_catalog."default" NOT NULL, + return_code character varying(10) COLLATE pg_catalog."default", + esito_redirect character varying(50) COLLATE pg_catalog."default", + tipo_interazione character varying(255) COLLATE pg_catalog."default", + mobile_token character varying(255) COLLATE pg_catalog."default", + rrn character varying(255) COLLATE pg_catalog."default", + esito_transazione_carta character varying(35) COLLATE pg_catalog."default", + codice_autorizzativo character varying(6) COLLATE pg_catalog."default", + parametri_pm character varying(255) COLLATE pg_catalog."default", + timestamp_operazione timestamp(6) without time zone, + importo_totale_pagato numeric(19,0), + inserted_timestamp timestamp(6) without time zone NOT NULL, + inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'INSERTED_BY'::character varying, + updated_timestamp timestamp(6) without time zone NOT NULL, + updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'UPDATED_BY'::character varying, + CONSTRAINT carrello_rpt_parted_pk PRIMARY KEY (obj_id,inserted_timestamp) + ) partition by range ("inserted_timestamp"); CREATE UNIQUE INDEX nodo_online_carrello_parted_idx1_uni ON ${schema}.carrello_rpt_parted USING btree(parametri_pagamento_immediato, psp, codice_carrello,inserted_timestamp); @@ -38,117 +38,117 @@ CREATE UNIQUE INDEX nodo_online_carrello_parted_idx1_uni ON ${schema}.carrello_r -- DROP INDEX IF EXISTS ${schema}.carrello_rpt_idx01; CREATE INDEX IF NOT EXISTS carrello_rpt_parted_idx01 - ON ${schema}.carrello_rpt_parted USING btree - (id_sessione COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.carrello_rpt_parted USING btree + (id_sessione COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: carrello_rpt_idx02 -- DROP INDEX IF EXISTS ${schema}.carrello_rpt_idx02; CREATE INDEX IF NOT EXISTS carrello_rpt_parted_idx02 - ON ${schema}.carrello_rpt_parted USING btree - (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.carrello_rpt_parted USING btree + (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: carrello_rpt_idx03 -- DROP INDEX IF EXISTS ${schema}.carrello_rpt_idx03; CREATE INDEX IF NOT EXISTS carrello_rpt_parted_idx03 - ON ${schema}.carrello_rpt_parted USING btree - (codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.carrello_rpt_parted USING btree + (codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: carrello_rpt_idx04 -- DROP INDEX IF EXISTS ${schema}.carrello_rpt_idx04; CREATE INDEX IF NOT EXISTS carrello_rpt_parted_idx04 - ON ${schema}.carrello_rpt_parted USING btree - (id_carrello COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.carrello_rpt_parted USING btree + (id_carrello COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: nodo_online_carrello_idx1 -- DROP INDEX IF EXISTS ${schema}.nodo_online_carrello_idx1; CREATE UNIQUE INDEX IF NOT EXISTS nodo_online_carrello_parted_idx1 - ON ${schema}.carrello_rpt_parted USING btree - (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST, codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST,inserted_timestamp); + ON ${schema}.carrello_rpt_parted USING btree + (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST, codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST,inserted_timestamp); -- CREATE TABLE IF NOT EXISTS ${schema}.redirect_my_bank_parted ( - obj_id numeric NOT NULL DEFAULT nextval('${schema}.redirect_my_bank_seq'::regclass), - id_dominio character varying(35) COLLATE pg_catalog."default", - iuv character varying(35) COLLATE pg_catalog."default", - ccp character varying(35) COLLATE pg_catalog."default", - numero_ordine character varying(50) COLLATE pg_catalog."default", - descr_ordine character varying(140) COLLATE pg_catalog."default", - codice_mybank character varying(35) COLLATE pg_catalog."default", - id_negozio character varying(15) COLLATE pg_catalog."default", - importo numeric(10,0), - chiave_avvio character varying(255) COLLATE pg_catalog."default", - chiave_esito character varying(255) COLLATE pg_catalog."default", - mac_richiesta character varying(100) COLLATE pg_catalog."default", - mac_esito character varying(100) COLLATE pg_catalog."default", - esito_ms character varying(255) COLLATE pg_catalog."default", - aut character varying(35) COLLATE pg_catalog."default", - bpw_tipo_transazione character varying(255) COLLATE pg_catalog."default", - id_trans character varying(25) COLLATE pg_catalog."default", - stato_sitord character varying(255) COLLATE pg_catalog."default", - esito_sitord character varying(255) COLLATE pg_catalog."default", - reqrefnum character varying(32) COLLATE pg_catalog."default", - stato_pagamento character varying(100) COLLATE pg_catalog."default", - url_situazione_ordine character varying(255) COLLATE pg_catalog."default", - redirect_rpt numeric, - redirect_carrello numeric, - timestamp_esito timestamp(6) without time zone, - inserted_timestamp timestamp(6) without time zone NOT NULL, - inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - updated_timestamp timestamp(6) without time zone NOT NULL, - updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT redirect_my_bank_parted_pk PRIMARY KEY (obj_id,inserted_timestamp), - CONSTRAINT redirect_my_bank_fk_carrello_rpt_parted FOREIGN KEY (redirect_carrello) - REFERENCES ${schema}.carrello_rpt (obj_id) MATCH SIMPLE - ON UPDATE RESTRICT - ON DELETE RESTRICT, - CONSTRAINT redirect_mybank_fk_rpt_parted FOREIGN KEY (redirect_rpt) - REFERENCES ${schema}.rpt (obj_id) MATCH SIMPLE - ON UPDATE RESTRICT - ON DELETE RESTRICT -) partition by range ("inserted_timestamp"); + obj_id numeric NOT NULL DEFAULT nextval('${schema}.redirect_my_bank_seq'::regclass), + id_dominio character varying(35) COLLATE pg_catalog."default", + iuv character varying(35) COLLATE pg_catalog."default", + ccp character varying(35) COLLATE pg_catalog."default", + numero_ordine character varying(50) COLLATE pg_catalog."default", + descr_ordine character varying(140) COLLATE pg_catalog."default", + codice_mybank character varying(35) COLLATE pg_catalog."default", + id_negozio character varying(15) COLLATE pg_catalog."default", + importo numeric(10,0), + chiave_avvio character varying(255) COLLATE pg_catalog."default", + chiave_esito character varying(255) COLLATE pg_catalog."default", + mac_richiesta character varying(100) COLLATE pg_catalog."default", + mac_esito character varying(100) COLLATE pg_catalog."default", + esito_ms character varying(255) COLLATE pg_catalog."default", + aut character varying(35) COLLATE pg_catalog."default", + bpw_tipo_transazione character varying(255) COLLATE pg_catalog."default", + id_trans character varying(25) COLLATE pg_catalog."default", + stato_sitord character varying(255) COLLATE pg_catalog."default", + esito_sitord character varying(255) COLLATE pg_catalog."default", + reqrefnum character varying(32) COLLATE pg_catalog."default", + stato_pagamento character varying(100) COLLATE pg_catalog."default", + url_situazione_ordine character varying(255) COLLATE pg_catalog."default", + redirect_rpt numeric, + redirect_carrello numeric, + timestamp_esito timestamp(6) without time zone, + inserted_timestamp timestamp(6) without time zone NOT NULL, + inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + updated_timestamp timestamp(6) without time zone NOT NULL, + updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL, + CONSTRAINT redirect_my_bank_parted_pk PRIMARY KEY (obj_id,inserted_timestamp), + CONSTRAINT redirect_my_bank_fk_carrello_rpt_parted FOREIGN KEY (redirect_carrello) + REFERENCES ${schema}.carrello_rpt (obj_id) MATCH SIMPLE + ON UPDATE RESTRICT + ON DELETE RESTRICT, + CONSTRAINT redirect_mybank_fk_rpt_parted FOREIGN KEY (redirect_rpt) + REFERENCES ${schema}.rpt (obj_id) MATCH SIMPLE + ON UPDATE RESTRICT + ON DELETE RESTRICT + ) partition by range ("inserted_timestamp"); -- CREATE TABLE IF NOT EXISTS ${schema}.rpt_parted ( - obj_id numeric NOT NULL DEFAULT nextval('${schema}.rpt_seq'::regclass), - id_dominio character varying(35) COLLATE pg_catalog."default" NOT NULL, - iuv character varying(35) COLLATE pg_catalog."default" NOT NULL, - ccp character varying(35) COLLATE pg_catalog."default" NOT NULL, - codice_carrello character varying(128) COLLATE pg_catalog."default", - staz_intermediariopa character varying(35) COLLATE pg_catalog."default", - intermediariopa character varying(35) COLLATE pg_catalog."default", - canale character varying(35) COLLATE pg_catalog."default", - intermediariopsp character varying(35) COLLATE pg_catalog."default", - psp character varying(35) COLLATE pg_catalog."default", - id_sessione character varying(100) COLLATE pg_catalog."default" NOT NULL, - parametri_pagamento_immediato character varying(255) COLLATE pg_catalog."default", - parametri_profilo_pagamento character varying(255) COLLATE pg_catalog."default", - url_redirezione_pa character varying(255) COLLATE pg_catalog."default", - url_redirezione_psp character varying(255) COLLATE pg_catalog."default", - stato character varying(20) COLLATE pg_catalog."default" NOT NULL, - return_code character varying(10) COLLATE pg_catalog."default", - esito_redirect character varying(50) COLLATE pg_catalog."default", - tipo_interazione character varying(255) COLLATE pg_catalog."default", - mobile_token character varying(255) COLLATE pg_catalog."default", - rrn character varying(255) COLLATE pg_catalog."default", - esito_transazione_carta character varying(35) COLLATE pg_catalog."default", - codice_autorizzativo character varying(6) COLLATE pg_catalog."default", - parametri_pm character varying(255) COLLATE pg_catalog."default", - timestamp_operazione timestamp(6) without time zone, - importo_totale_pagato numeric(19,0), - inserted_timestamp timestamp(6) without time zone NOT NULL, - inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'INSERTED_BY'::character varying, - updated_timestamp timestamp(6) without time zone NOT NULL, - updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'UPDATED_BY'::character varying, - CONSTRAINT rpt_parted_pk PRIMARY KEY (obj_id,inserted_timestamp) -) partition by range ("inserted_timestamp"); + obj_id numeric NOT NULL DEFAULT nextval('${schema}.rpt_seq'::regclass), + id_dominio character varying(35) COLLATE pg_catalog."default" NOT NULL, + iuv character varying(35) COLLATE pg_catalog."default" NOT NULL, + ccp character varying(35) COLLATE pg_catalog."default" NOT NULL, + codice_carrello character varying(128) COLLATE pg_catalog."default", + staz_intermediariopa character varying(35) COLLATE pg_catalog."default", + intermediariopa character varying(35) COLLATE pg_catalog."default", + canale character varying(35) COLLATE pg_catalog."default", + intermediariopsp character varying(35) COLLATE pg_catalog."default", + psp character varying(35) COLLATE pg_catalog."default", + id_sessione character varying(100) COLLATE pg_catalog."default" NOT NULL, + parametri_pagamento_immediato character varying(255) COLLATE pg_catalog."default", + parametri_profilo_pagamento character varying(255) COLLATE pg_catalog."default", + url_redirezione_pa character varying(255) COLLATE pg_catalog."default", + url_redirezione_psp character varying(255) COLLATE pg_catalog."default", + stato character varying(20) COLLATE pg_catalog."default" NOT NULL, + return_code character varying(10) COLLATE pg_catalog."default", + esito_redirect character varying(50) COLLATE pg_catalog."default", + tipo_interazione character varying(255) COLLATE pg_catalog."default", + mobile_token character varying(255) COLLATE pg_catalog."default", + rrn character varying(255) COLLATE pg_catalog."default", + esito_transazione_carta character varying(35) COLLATE pg_catalog."default", + codice_autorizzativo character varying(6) COLLATE pg_catalog."default", + parametri_pm character varying(255) COLLATE pg_catalog."default", + timestamp_operazione timestamp(6) without time zone, + importo_totale_pagato numeric(19,0), + inserted_timestamp timestamp(6) without time zone NOT NULL, + inserted_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'INSERTED_BY'::character varying, + updated_timestamp timestamp(6) without time zone NOT NULL, + updated_by character varying(35) COLLATE pg_catalog."default" NOT NULL DEFAULT 'UPDATED_BY'::character varying, + CONSTRAINT rpt_parted_pk PRIMARY KEY (obj_id,inserted_timestamp) + ) partition by range ("inserted_timestamp"); CREATE UNIQUE INDEX nodo_online_rpt_parted_idx1_uni ON ${schema}.rpt_parted USING btree(parametri_pagamento_immediato, psp, codice_carrello,inserted_timestamp); @@ -157,34 +157,34 @@ CREATE UNIQUE INDEX nodo_online_rpt_parted_idx1_uni ON ${schema}.rpt_parted USIN -- DROP INDEX IF EXISTS ${schema}.nodo_online_rpt_idx1; CREATE UNIQUE INDEX IF NOT EXISTS nodo_online_rpt_parted_idx1 - ON ${schema}.rpt_parted USING btree - (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST, codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST,inserted_timestamp); + ON ${schema}.rpt_parted USING btree + (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST, codice_carrello COLLATE pg_catalog."default" ASC NULLS LAST,inserted_timestamp); -- Index: rpt_idx01 -- DROP INDEX IF EXISTS ${schema}.rpt_idx01; CREATE INDEX IF NOT EXISTS rpt_parted_idx01 - ON ${schema}.rpt_parted USING btree - (id_sessione COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.rpt_parted USING btree + (id_sessione COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: rpt_idx02 -- DROP INDEX IF EXISTS ${schema}.rpt_idx02; CREATE INDEX IF NOT EXISTS rpt_parted_idx02 - ON ${schema}.rpt_parted USING btree - (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.rpt_parted USING btree + (parametri_pagamento_immediato COLLATE pg_catalog."default" ASC NULLS LAST, psp COLLATE pg_catalog."default" ASC NULLS LAST); -- Index: rpt_idx03 -- DROP INDEX IF EXISTS ${schema}.rpt_idx03; CREATE INDEX IF NOT EXISTS rpt_parted_idx03 - ON ${schema}.rpt_parted USING btree - (iuv COLLATE pg_catalog."default" ASC NULLS LAST, ccp COLLATE pg_catalog."default" ASC NULLS LAST); + ON ${schema}.rpt_parted USING btree + (iuv COLLATE pg_catalog."default" ASC NULLS LAST, ccp COLLATE pg_catalog."default" ASC NULLS LAST); -- CREATE TABLE IF NOT EXISTS ${schema}.tab_part ( - tabella character varying(100) COLLATE pg_catalog."default", - schema character varying(100) COLLATE pg_catalog."default" -); + tabella character varying(100) COLLATE pg_catalog."default", + schema character varying(100) COLLATE pg_catalog."default" + ); diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_DML_TABLE_PART.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_DML_TABLE_PART.sql deleted file mode 100644 index d7fefe8bd6..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_DML_TABLE_PART.sql +++ /dev/null @@ -1,3 +0,0 @@ -insert into ${schema}.tab_part(tabella,schema)values ('carrello_rpt','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('redirect_my_bank','${schema}'); -insert into ${schema}.tab_part(tabella,schema)values ('rpt','${schema}'); diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_RENAME_TABLE.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_RENAME_TABLE.sql new file mode 100644 index 0000000000..8973046ec4 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/2_RENAME_TABLE.sql @@ -0,0 +1,8 @@ +ALTER TABLE ${schema}.carrello_rpt rename TO carrello_rpt_old; +ALTER TABLE ${schema}.carrello_rpt_parted rename TO carrello_rpt; + +ALTER TABLE ${schema}.redirect_my_bank rename TO redirect_my_bank_old; +ALTER TABLE ${schema}.redirect_my_bank_parted rename TO redirect_my_bank; + +ALTER TABLE ${schema}.rpt rename TO rpt_old; +ALTER TABLE ${schema}.rpt_parted rename TO rpt; diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_GRANT.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_GRANT.sql new file mode 100644 index 0000000000..28f69fb032 --- /dev/null +++ b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_GRANT.sql @@ -0,0 +1,9 @@ +------------------------------------------------------------------- +GRANT ALL ON TABLE ${schema}.carrello_rpt TO ${schema}; +GRANT ALL ON TABLE ${schema}.redirect_my_bank TO ${schema}; +GRANT ALL ON TABLE ${schema}.rpt TO ${schema}; +------------------------------------------------------------------- +ALTER TABLE IF EXISTS ${schema}.carrello_rpt OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.redirect_my_bank OWNER to ${schema}; +ALTER TABLE IF EXISTS ${schema}.rpt OWNER to ${schema}; +------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_RENAME_OLD_PART.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_RENAME_OLD_PART.sql deleted file mode 100644 index 7af42683b7..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/3_RENAME_OLD_PART.sql +++ /dev/null @@ -1,9 +0,0 @@ - -alter table ${schema}.carrello_rpt rename to carrello_rpt_old; -alter table ${schema}.carrello_rpt_parted rename to carrello_rpt; - -alter table ${schema}.redirect_my_bank rename to redirect_my_bank_old; -alter table ${schema}.redirect_my_bank_parted rename to redirect_my_bank; - -alter table ${schema}.rpt rename to rpt_old; -alter table ${schema}.rpt_parted rename to rpt; diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/4_PROCEDURE_modify_partition.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/4_PROCEDURE_modify_partition.sql deleted file mode 100644 index 3c2706fee6..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/4_PROCEDURE_modify_partition.sql +++ /dev/null @@ -1,210 +0,0 @@ --- PROCEDURE: ${schema}.modify_partition() - --- DROP PROCEDURE IF EXISTS ${schema}.modify_partition(); - - -CREATE OR REPLACE PROCEDURE ${schema}.modify_partition( - ) -LANGUAGE 'plpgsql' -AS $BODY$ - -DECLARE - -l_partname0 TEXT; -l_partname1 TEXT; -l_partname2 TEXT; -l_partname3 TEXT; -l_partname4 TEXT; -l_partname5 TEXT; -l_partname6 TEXT; -l_partname7 TEXT; -l_part_list0 date; -l_part_list1 date; -l_part_list2 date; -l_part_list3 date; -l_part_list4 date; -l_part_list5 date; -l_part_list6 date; -l_part_list7 date; -l_part_listb0 date; -l_part_listb1 date; -l_part_listb2 date; -l_part_listb3 date; -l_part_listb4 date; -l_part_listb5 date; -l_part_listb6 date; -l_part_listb7 date; -l_partab TEXT; -l_sql0 text; -l_sql1 text; -l_sql2 text; -l_sql3 text; -l_sql4 text; -l_sql5 text; -l_sql6 text; -l_sql7 text; -l_exist text; -l_var_exist integer; - - tab_cursor CURSOR FOR - SELECT lower(tabella) as tabella, lower(schema) as schema - FROM ${schema}.TAB_PART; - tab_record TEXT; - tab_schema TEXT; - -BEGIN - - OPEN tab_cursor; - - - - LOOP - FETCH NEXT FROM tab_cursor INTO tab_record, tab_schema; - EXIT WHEN NOT FOUND; - - - ------------------------------------------------------------------------------------------------------- - - l_part_list0 = date_trunc('day', CURRENT_DATE-1500)::date; - l_part_listb0 = date_trunc('day', CURRENT_DATE+1)::date; - l_partname0 := tab_record||'_PMINVALUE'; - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname0 and table_schema=tab_schema) - THEN - - l_sql0 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname0, tab_schema, tab_record, l_part_list0, l_part_listb0); - execute l_sql0; - END IF; - - ------------------------------------------------------------------------------------------------------- - - l_part_list1 = date_trunc('day', CURRENT_DATE+1)::date; - l_part_listb1 = date_trunc('day', CURRENT_DATE+2)::date; - l_partname1 := tab_record||'_P'||to_char(CURRENT_DATE+1, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname1 and table_schema=tab_schema) - THEN - - l_sql1 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname1, tab_schema, tab_record, l_part_list1, l_part_listb1); - execute l_sql1; - END IF; ------------------------------------------------------------------------------------------------------- - - l_part_list2 = date_trunc('day', CURRENT_DATE+2)::date; - l_part_listb2 = date_trunc('day', CURRENT_DATE+3)::date; - l_partname2 := tab_record||'_P'||to_char(CURRENT_DATE+2, 'yyyymmdd'); - - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname2 and table_schema=tab_schema) - THEN - - l_sql2 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname2, tab_schema, tab_record, l_part_list2, l_part_listb2); - execute l_sql2; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list3 = date_trunc('day', CURRENT_DATE+3)::date; - l_part_listb3 = date_trunc('day', CURRENT_DATE+4)::date; - l_partname3 := tab_record||'_P'||to_char(CURRENT_DATE+3, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname3 and table_schema=tab_schema) - THEN - - l_sql3 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname3, tab_schema, tab_record, l_part_list3, l_part_listb3); - execute l_sql3; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list4 = date_trunc('day', CURRENT_DATE+4)::date; - l_part_listb4 = date_trunc('day', CURRENT_DATE+5)::date; - l_partname4 := tab_record||'_P'||to_char(CURRENT_DATE+4, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname4 and table_schema=tab_schema) - THEN - - l_sql4 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname4, tab_schema, tab_record, l_part_list4, l_part_listb4); - execute l_sql4; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list5 = date_trunc('day', CURRENT_DATE+5)::date; - l_part_listb5 = date_trunc('day', CURRENT_DATE+6)::date; - l_partname5 := tab_record||'_P'||to_char(CURRENT_DATE+5, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname5 and table_schema=tab_schema) - THEN - - l_sql5 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname5, tab_schema, tab_record, l_part_list5, l_part_listb5); - execute l_sql5; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list6 = date_trunc('day', CURRENT_DATE+6)::date; - l_part_listb6 = date_trunc('day', CURRENT_DATE+7)::date; - l_partname6 := tab_record||'_P'||to_char(CURRENT_DATE+6, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname6 and table_schema=tab_schema) - THEN - - l_sql6 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname6, tab_schema, tab_record, l_part_list6, l_part_listb6); - execute l_sql6; - END IF; - ------------------------------------------------------------------------------------------------------- - - l_part_list7 = date_trunc('day', CURRENT_DATE+7)::date; - l_part_listb7 = date_trunc('day', CURRENT_DATE+8)::date; - l_partname7 := tab_record||'_P'||to_char(CURRENT_DATE+7, 'yyyymmdd'); - - IF NOT EXISTS - (SELECT * - FROM information_schema.tables - WHERE table_name=l_partname7 and table_schema=tab_schema) - THEN - - l_sql7 := format('CREATE TABLE %I.%I PARTITION OF %I.%I FOR VALUES FROM (%L) TO (%L)', tab_schema, l_partname7, tab_schema, tab_record, l_part_list7, l_part_listb7); - execute l_sql7; - END IF; - ---------------------------------------------------------------------------------------------------------------------- - - - - END LOOP; - - CLOSE tab_cursor; - -END; -$BODY$; - -ALTER PROCEDURE ${schema}.modify_partition() - OWNER TO ${schema}; diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/5_exec_PROCEDURE.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/5_exec_PROCEDURE.sql deleted file mode 100644 index 53934df218..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/5_exec_PROCEDURE.sql +++ /dev/null @@ -1 +0,0 @@ -CALL ${schema}.modify_partition(); diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/6_POPOLA_TABLE.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/6_POPOLA_TABLE.sql deleted file mode 100644 index e08b89561d..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/6_POPOLA_TABLE.sql +++ /dev/null @@ -1,11 +0,0 @@ -INSERT INTO ${schema}.carrello_rpt -SELECT * -FROM ${schema}.carrello_rpt_old; - -INSERT INTO ${schema}.redirect_my_bank -SELECT * -FROM ${schema}.redirect_my_bank_old; - -INSERT INTO ${schema}.rpt -SELECT * -FROM ${schema}.rpt_old; diff --git a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/7_GRANT.sql b/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/7_GRANT.sql deleted file mode 100644 index a971d31a06..0000000000 --- a/src/psql/nodo/liquibase/changelog/wfesp/3.26.0/sql/7_GRANT.sql +++ /dev/null @@ -1,8 +0,0 @@ - GRANT ALL ON TABLE ${schema}.carrello_rpt TO ${schema}; - GRANT ALL ON TABLE ${schema}.redirect_my_bank TO ${schema}; - GRANT ALL ON TABLE ${schema}.rpt TO ${schema}; - ------------------------------------------------------------------- - ALTER TABLE IF EXISTS ${schema}.carrello_rpt OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.redirect_my_bank OWNER to ${schema}; - ALTER TABLE IF EXISTS ${schema}.rpt OWNER to ${schema}; - ------------------------------------------------------------------- diff --git a/src/psql/nodo/liquibase/run.sh b/src/psql/nodo/liquibase/run.sh index b9bc4ded9e..354c3d4c89 100755 --- a/src/psql/nodo/liquibase/run.sh +++ b/src/psql/nodo/liquibase/run.sh @@ -20,6 +20,7 @@ if [[ "${TIPO}" == 'dev' ]]; then export NODO_OFFLINE_SCHEMA='offline' export NODO_RE_SCHEMA='re' export NODO_WFESP_SCHEMA='wfesp' + export NODO_PARTITION_SCHEMA='partition' export LQB_CONTEXTS="dev" export NODO_CFG_USERNAME=$SCHEMA export NODO_CFG_PASSWORD="password" @@ -36,6 +37,7 @@ elif [[ "${TIPO}" == 'it' ]]; then export NODO_OFFLINE_SCHEMA='offline' export NODO_RE_SCHEMA='re' export NODO_WFESP_SCHEMA='wfesp' + export NODO_PARTITION_SCHEMA='partition' export LQB_CONTEXTS="it" export NODO_CFG_USERNAME=$SCHEMA export NODO_CFG_PASSWORD="password" @@ -111,6 +113,7 @@ parameter.schemaOnline: ${NODO_ONLINE_SCHEMA} parameter.schemaOffline: ${NODO_OFFLINE_SCHEMA} parameter.schemaRe: ${NODO_RE_SCHEMA} parameter.schemaWfesp: ${NODO_WFESP_SCHEMA} +parameter.schemaPartition: ${NODO_PARTITION_SCHEMA} parameter.usernameOffline: offline liquibase.hub.mode: OFF log-level: INFO