From d9a202667b02e8f2c79b2e41e3fa5a15991149c7 Mon Sep 17 00:00:00 2001 From: Simone infante <52280205+infantesimone@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:47:27 +0100 Subject: [PATCH 01/11] chore: bye bye PM alerts :-) delete pm alerting (#2688) * chore: delete pm alerting * chore: update readme --- src/core/README.md | 13 +-- src/core/payment_manager_monitor.tf | 154 ---------------------------- 2 files changed, 4 insertions(+), 163 deletions(-) delete mode 100644 src/core/payment_manager_monitor.tf diff --git a/src/core/README.md b/src/core/README.md index ce1b40f1b9..29fa1c1ed5 100644 --- a/src/core/README.md +++ b/src/core/README.md @@ -245,14 +245,9 @@ | [azurerm_key_vault_certificate.buyerbanks_cert](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/key_vault_certificate) | resource | | [azurerm_monitor_autoscale_setting.buyerbanks_function](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_autoscale_setting) | resource | | [azurerm_monitor_scheduled_query_rules_alert.buyerbanks_update_alert](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | -| [azurerm_monitor_scheduled_query_rules_alert.pm_payment_gateway_availability](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | -| [azurerm_monitor_scheduled_query_rules_alert.pm_restapi_availability](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | -| [azurerm_monitor_scheduled_query_rules_alert.pm_restapi_cd_availability](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | -| [azurerm_monitor_scheduled_query_rules_alert.pm_wallet_availability](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/monitor_scheduled_query_rules_alert) | resource | | [azurerm_private_dns_zone.privatelink_postgres_database_azure_com](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/private_dns_zone) | resource | | [azurerm_private_dns_zone_virtual_network_link.privatelink_postgres_database_azure_com_vnet](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/private_dns_zone_virtual_network_link) | resource | | [azurerm_resource_group.buyerbanks_rg](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/resource_group) | resource | -| [azurerm_resource_group.payment_manager_monitor_rg](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/resource_group) | resource | | [azurerm_storage_container.banks](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/storage_container) | resource | | [azurerm_storage_management_policy.buyerbanks_storage_lifeclycle_policies](https://registry.terraform.io/providers/hashicorp/azurerm/2.99.0/docs/resources/storage_management_policy) | resource | | [null_resource.decoupler_configuration_from_json_2_xml](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource | @@ -322,7 +317,7 @@ | [apim\_logger\_resource\_id](#input\_apim\_logger\_resource\_id) | Resource id for the APIM logger | `string` | `null` | no | | [apim\_nodo\_auth\_decoupler\_enable](#input\_apim\_nodo\_auth\_decoupler\_enable) | Apply decoupler to nodo-auth product apim policy | `bool` | `false` | no | | [apim\_nodo\_decoupler\_enable](#input\_apim\_nodo\_decoupler\_enable) | Apply decoupler to nodo product apim policy | `bool` | `false` | no | -| [app\_gateway\_allowed\_paths\_pagopa\_onprem\_only](#input\_app\_gateway\_allowed\_paths\_pagopa\_onprem\_only) | Allowed paths from pagopa onprem only |
object({
paths = list(string)
ips = list(string)
})
| n/a | yes | +| [app\_gateway\_allowed\_paths\_pagopa\_onprem\_only](#input\_app\_gateway\_allowed\_paths\_pagopa\_onprem\_only) | Allowed paths from pagopa onprem only |
object({
paths = list(string)
ips = list(string)
})
| n/a | yes | | [bpd\_hostname](#input\_bpd\_hostname) | BPD hostname | `string` | `""` | no | | [buyer\_banks\_storage\_account\_replication\_type](#input\_buyer\_banks\_storage\_account\_replication\_type) | (Optional) Buyer banks storage account replication type | `string` | `"LRS"` | no | | [buyerbanks\_advanced\_threat\_protection](#input\_buyerbanks\_advanced\_threat\_protection) | Enable contract threat advanced protection | `bool` | `false` | no | @@ -345,12 +340,12 @@ | [dns\_zone\_prefix](#input\_dns\_zone\_prefix) | The dns subdomain. | `string` | `null` | no | | [dns\_zone\_prefix\_prf](#input\_dns\_zone\_prefix\_prf) | The dns subdomain. | `string` | `""` | no | | [ecommerce\_ingress\_hostname](#input\_ecommerce\_ingress\_hostname) | ecommerce ingress hostname | `string` | `null` | no | -| [enabled\_features](#input\_enabled\_features) | Features enabled in this domain |
object({
vnet_ita = bool
node_forwarder_ha = optional(bool, false)
})
|
{
"vnet_ita": false
}
| no | +| [enabled\_features](#input\_enabled\_features) | Features enabled in this domain |
object({
vnet_ita = bool
node_forwarder_ha = optional(bool, false)
})
|
{
"vnet_ita": false
}
| no | | [env](#input\_env) | Contains env description in extend format (dev,uat,prod) | `string` | n/a | yes | | [env\_short](#input\_env\_short) | Environment shot version | `string` | n/a | yes | | [external\_domain](#input\_external\_domain) | Domain for delegation | `string` | `null` | no | | [fesp\_hostname](#input\_fesp\_hostname) | Fesp hostname | `string` | `""` | no | -| [function\_app\_storage\_account\_info](#input\_function\_app\_storage\_account\_info) | n/a |
object({
account_kind = optional(string, "StorageV2")
account_tier = optional(string, "Standard")
account_replication_type = optional(string, "LRS")
access_tier = optional(string, "Hot")
advanced_threat_protection_enable = optional(bool, true)
})
|
{
"access_tier": "Hot",
"account_kind": "StorageV2",
"account_replication_type": "LRS",
"account_tier": "Standard",
"advanced_threat_protection_enable": true
}
| no | +| [function\_app\_storage\_account\_info](#input\_function\_app\_storage\_account\_info) | n/a |
object({
account_kind = optional(string, "StorageV2")
account_tier = optional(string, "Standard")
account_replication_type = optional(string, "LRS")
access_tier = optional(string, "Hot")
advanced_threat_protection_enable = optional(bool, true)
})
|
{
"access_tier": "Hot",
"account_kind": "StorageV2",
"account_replication_type": "LRS",
"account_tier": "Standard",
"advanced_threat_protection_enable": true
}
| no | | [io\_bpd\_hostname](#input\_io\_bpd\_hostname) | IO BPD hostname | `string` | `""` | no | | [location](#input\_location) | Main location | `string` | `"westeurope"` | no | | [location\_ita](#input\_location\_ita) | Main location | `string` | `"italynorth"` | no | @@ -364,7 +359,7 @@ | [postgres\_private\_endpoint\_enabled](#input\_postgres\_private\_endpoint\_enabled) | Private endpoint database enable? | `bool` | `false` | no | | [prefix](#input\_prefix) | n/a | `string` | `"pagopa"` | no | | [satispay\_hostname](#input\_satispay\_hostname) | Satispay hostname | `string` | `""` | no | -| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | | [xpay\_hostname](#input\_xpay\_hostname) | Nexi xpay hostname | `string` | `""` | no | ## Outputs diff --git a/src/core/payment_manager_monitor.tf b/src/core/payment_manager_monitor.tf deleted file mode 100644 index 5383e0a53a..0000000000 --- a/src/core/payment_manager_monitor.tf +++ /dev/null @@ -1,154 +0,0 @@ -resource "azurerm_resource_group" "payment_manager_monitor_rg" { - count = var.env_short == "p" ? 1 : 0 - name = format("%s-payment-manager-monitor-rg", local.project) - location = var.location - tags = var.tags -} - -# Availability: Payment Manager - pp-restapi - only for checkout -resource "azurerm_monitor_scheduled_query_rules_alert" "pm_restapi_availability" { - count = var.env_short == "p" ? 1 : 0 - name = "${local.project}-pm-restapi-availability-alert" - resource_group_name = azurerm_resource_group.payment_manager_monitor_rg[0].name - location = var.location - - action { - action_group = [data.azurerm_monitor_action_group.email.id, data.azurerm_monitor_action_group.slack.id, data.azurerm_monitor_action_group.mo_email.id, data.azurerm_monitor_action_group.pm_opsgenie[0].id] - email_subject = "Email Header" - custom_webhook_payload = "{}" - } - data_source_id = data.azurerm_application_gateway.app_gw.id - description = "Availability pm-restapi (for pagopa - checkout) greater than or equal 99%" - enabled = true - query = (<<-QUERY -AzureDiagnostics -| where ResourceType == 'APPLICATIONGATEWAYS' - and OperationName == 'ApplicationGatewayAccess' - and requestUri_s startswith "/payment-manager/pp-restapi/" -| summarize - Total=count(), - Success=count((toint(httpStatus_d) >= 200 and toint(httpStatus_d) < 500 and timeTaken_d < 2)) - by Time=bin(TimeGenerated, 15m) -| extend Availability=((Success * 1.0) / Total) * 100 -| where toint(Availability) < 99 - QUERY - ) - severity = 1 - frequency = 30 - time_window = 30 - trigger { - operator = "GreaterThanOrEqual" - threshold = 2 - } -} - -# Availability: Payment Manager - pp-restapi-CD -resource "azurerm_monitor_scheduled_query_rules_alert" "pm_restapi_cd_availability" { - count = var.env_short == "p" ? 1 : 0 - name = "${local.project}-pm-restapi-cd-availability-alert" - resource_group_name = azurerm_resource_group.payment_manager_monitor_rg[0].name - location = var.location - - action { - action_group = [data.azurerm_monitor_action_group.email.id, data.azurerm_monitor_action_group.slack.id, data.azurerm_monitor_action_group.mo_email.id, data.azurerm_monitor_action_group.pm_opsgenie[0].id] - email_subject = "Email Header" - custom_webhook_payload = "{}" - } - data_source_id = data.azurerm_application_gateway.app_gw.id - description = "Availability pm-restapi-cd greater than or equal 99%" - enabled = true - query = (<<-QUERY -AzureDiagnostics -| where ResourceType == 'APPLICATIONGATEWAYS' - and OperationName == 'ApplicationGatewayAccess' - and requestUri_s startswith '/pp-restapi-CD' -| summarize - Total=count(), - Success=count((toint(httpStatus_d) >= 200 and toint(httpStatus_d) < 500 and timeTaken_d < 2)) - by Time=bin(TimeGenerated, 15m) -| extend Availability=((Success * 1.0) / Total) * 100 -| where toint(Availability) < 90 - QUERY - ) - severity = 1 - frequency = 30 - time_window = 30 - trigger { - operator = "GreaterThanOrEqual" - threshold = 2 - } -} - - -# Availability: Payment Manager - pp-wallet -resource "azurerm_monitor_scheduled_query_rules_alert" "pm_wallet_availability" { - count = var.env_short == "p" ? 1 : 0 - name = "${local.project}-pm-restapi-wallet-availability-alert" - resource_group_name = azurerm_resource_group.payment_manager_monitor_rg[0].name - location = var.location - - action { - action_group = [data.azurerm_monitor_action_group.email.id, data.azurerm_monitor_action_group.slack.id, data.azurerm_monitor_action_group.mo_email.id, data.azurerm_monitor_action_group.pm_opsgenie[0].id] - email_subject = "Email Header" - custom_webhook_payload = "{}" - } - data_source_id = data.azurerm_application_gateway.app_gw.id - description = "Availability pm-wallet greater than or equal 99%" - enabled = true - query = (<<-QUERY -AzureDiagnostics -| where ResourceType == "APPLICATIONGATEWAYS" - and OperationName == "ApplicationGatewayAccess" - and requestUri_s startswith "/wallet" -| summarize - Total=count(), - Success=count((toint(httpStatus_d) >= 200 and toint(httpStatus_d) < 500 and timeTaken_d < 3)) - by Time=bin(TimeGenerated, 15m) -| extend Availability=((Success * 1.0) / Total) * 100 -| where toint(Availability) < 99 - QUERY - ) - severity = 1 - frequency = 30 - time_window = 30 - trigger { - operator = "GreaterThanOrEqual" - threshold = 2 - } -} - -# Availability: Payment Manager - payment-gateway -resource "azurerm_monitor_scheduled_query_rules_alert" "pm_payment_gateway_availability" { - count = var.env_short == "p" ? 1 : 0 - name = "${local.project}-pm-payment-gateway-availability-alert" - resource_group_name = azurerm_resource_group.payment_manager_monitor_rg[0].name - location = var.location - - action { - action_group = [data.azurerm_monitor_action_group.email.id, data.azurerm_monitor_action_group.slack.id] - email_subject = "Email Header" - custom_webhook_payload = "{}" - } - data_source_id = data.azurerm_application_insights.application_insights.id - description = "Availability pm-payment-gateway greater than or equal 99%" - enabled = true - query = (<<-QUERY -requests -| where url startswith 'https://api.platform.pagopa.it/payment-manager/payment-gateway/' -| summarize - Total=count(), - Success=count(toint(resultCode) >= 200 and toint(resultCode) < 500) - by Time=bin(timestamp, 15m) -| extend Availability=((Success * 1.0) / Total) * 100 -| extend Watermark=99 -| where toint(Availability) < 99 - QUERY - ) - severity = 1 - frequency = 30 - time_window = 30 - trigger { - operator = "GreaterThanOrEqual" - threshold = 2 - } -} From ff82265ed6bcb5faa127c7d55f0f19bb9a3e7920 Mon Sep 17 00:00:00 2001 From: Simone infante <52280205+infantesimone@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:02:22 +0100 Subject: [PATCH 02/11] feat(frd-kpi): PPABV-98 add authorizer check for fdr kpi (#2675) * feat(frd-kpi): add authorizer check for fdr kpi * feat: add new psps id as query param * chore: check for brokerId * chore: brokerFiscalCode as query param * fix: update broker as query param * fix: typo * chore: check brokerFiscalCode as first --- .../qi-fdr-kpi-api/v1/_base_policy.xml.tpl | 20 ++++++++ .../api/qi-fdr-kpi-api/v1/_openapi.json.tpl | 50 +++++++------------ 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_base_policy.xml.tpl b/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_base_policy.xml.tpl index 0706e600dc..b9fbd5fafa 100644 --- a/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_base_policy.xml.tpl +++ b/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_base_policy.xml.tpl @@ -1,6 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_openapi.json.tpl b/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_openapi.json.tpl index 1d1aef470a..77c6a4ddee 100644 --- a/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_openapi.json.tpl +++ b/src/domains/qi-app/api/qi-fdr-kpi-api/v1/_openapi.json.tpl @@ -17,7 +17,7 @@ } ], "paths": { - "/fdr-kpi/{kpiType}/{period}": { + "/fdr-kpi/{kpiType}": { "get": { "tags": [ "qiFdr" @@ -39,9 +39,18 @@ }, "description": "The type of KPI to calculate\n" }, + { + "name": "brokerFiscalCode", + "in": "query", + "required": false, + "schema": { + "type": "string" + }, + "description": "Broker fiscal code \n" + }, { "name": "period", - "in": "path", + "in": "query", "required": true, "schema": { "type": "string", @@ -62,6 +71,14 @@ "example": "2024-09" }, "description": "For daily KPIs: Specify the full date (YYYY-MM-DD). Must be at least 10 days before current date.\nFor monthly KPIs: Specify year and month (YYYY-MM).\n" + }, + { + "name": "pspId", + "in": "query", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -177,35 +194,6 @@ } ] }, - "PSPIdentifier": { - "type": "object", - "required": [ - "idPsp" - ], - "properties": { - "idPsp": { - "type": "string", - "example": "CIPBITMM" - } - } - }, - "BrokerIdentifier": { - "type": "object", - "required": [ - "idBrokerPsp", - "idPsp" - ], - "properties": { - "idBrokerPsp": { - "type": "string", - "example": "02654890025" - }, - "idPsp": { - "type": "string", - "example": "CIPBITMM" - } - } - }, "DailyKPIBase": { "type": "object", "required": [ From 3a45494daf53431775e54975e1bf334c3aaea5e1 Mon Sep 17 00:00:00 2001 From: Pasquale Spica <36746022+pasqualespica@users.noreply.github.com> Date: Fri, 20 Dec 2024 15:31:15 +0100 Subject: [PATCH 03/11] feat: Enabled debezium-conn gpd prod (#2690) feat enabled debezium-conn gpd prod --- src/domains/gps-app/env/weu-prod/terraform.tfvars | 4 ++-- src/domains/observability/gpd_evh_create__az.sh | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/domains/gps-app/env/weu-prod/terraform.tfvars b/src/domains/gps-app/env/weu-prod/terraform.tfvars index 331a089fee..1ab727facb 100644 --- a/src/domains/gps-app/env/weu-prod/terraform.tfvars +++ b/src/domains/gps-app/env/weu-prod/terraform.tfvars @@ -125,7 +125,7 @@ zookeeper_jvm_xmx = "1024m" zookeeper_storage_size = "100Gi" ### debezium kafka_connect_yaml -replicas = 2 +replicas = 1 # set 2 in PROD iif want a new istance replicate request_cpu = 0.5 limits_cpu = 2 request_memory = "512Mi" @@ -134,4 +134,4 @@ postgres_db_name = "apd" tasks_max = "1" container_registry = "pagopapcommonacr.azurecr.io" max_threads = 10 -gpd_cdc_enabled = false +gpd_cdc_enabled = true diff --git a/src/domains/observability/gpd_evh_create__az.sh b/src/domains/observability/gpd_evh_create__az.sh index 7005d08b47..7a644c6ab4 100644 --- a/src/domains/observability/gpd_evh_create__az.sh +++ b/src/domains/observability/gpd_evh_create__az.sh @@ -22,13 +22,15 @@ echo "retentiontime >> ${retentiontime}" echo ">>>>>> 1" +# org.apache.kafka.common.config.ConfigException: Topic 'connect-cluster-configs' supplied via the 'config.storage.topic' property is required to have a single partition in order to guarantee consistency of connector configurations + az eventhubs eventhub create \ -g pagopa-$env-itn-observ-evh-rg \ -n "connect-cluster-offsets" \ --namespace-name pagopa-$env-itn-observ-gpd-evh \ --cleanup-policy "Compact" \ --status "Active" \ ---partition-count ${partitioncount} \ +--partition-count 1 \ --retention-time ${retentiontime} echo ">>>>>> 2" @@ -39,7 +41,7 @@ az eventhubs eventhub create \ --namespace-name pagopa-$env-itn-observ-gpd-evh \ --cleanup-policy "Compact" \ --status "Active" \ ---partition-count ${partitioncount} \ +--partition-count 1 \ --retention-time ${retentiontime} echo ">>>>>> 3" @@ -50,7 +52,7 @@ az eventhubs eventhub create \ --namespace-name pagopa-$env-itn-observ-gpd-evh \ --cleanup-policy "Compact" \ --status "Active" \ ---partition-count ${partitioncount} \ +--partition-count 1 \ --retention-time ${retentiontime} # ============================================================== From ca9816fc4d988988cbe5dfe6ba4ad190f8983049 Mon Sep 17 00:00:00 2001 From: Marco Mari <130982006+mamari90@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:05:34 +0100 Subject: [PATCH 04/11] feat: Paymcloud 33 sonde ndp (#2689) --- src/synthetic-monitoring/.terraform.lock.hcl | 44 +- src/synthetic-monitoring/00_data.tf | 10 + src/synthetic-monitoring/00_secrets.tf | 10 + .../01_analytics_workspace.tf | 13 +- src/synthetic-monitoring/02_monitoring.tf | 24 +- src/synthetic-monitoring/99_locals.tf | 11 +- src/synthetic-monitoring/99_main.tf | 6 +- src/synthetic-monitoring/99_variables.tf | 17 + src/synthetic-monitoring/README.md | 11 +- .../env/weu-dev/terraform.tfvars | 9 + .../env/weu-prod/terraform.tfvars | 13 +- .../env/weu-uat/terraform.tfvars | 9 + .../monitoring_configuration.json | 79 --- .../monitoring_configuration.json.tpl | 498 +++++++++--------- .../monitoring_configuration.json.tpl.bk | 187 +++++++ 15 files changed, 558 insertions(+), 383 deletions(-) create mode 100644 src/synthetic-monitoring/00_secrets.tf delete mode 100644 src/synthetic-monitoring/monitoring_configuration.json create mode 100644 src/synthetic-monitoring/monitoring_configuration.json.tpl.bk diff --git a/src/synthetic-monitoring/.terraform.lock.hcl b/src/synthetic-monitoring/.terraform.lock.hcl index 546970ef91..4b311abb5a 100644 --- a/src/synthetic-monitoring/.terraform.lock.hcl +++ b/src/synthetic-monitoring/.terraform.lock.hcl @@ -3,11 +3,8 @@ provider "registry.terraform.io/azure/azapi" { version = "1.11.0" - constraints = "<= 1.11.0" + constraints = "~> 1.11.0, <= 1.11.0" hashes = [ - "h1:8pru4tJQouV7lc+fVH9jnhxxOPu8O7VQU4wuiySdl5Q=", - "h1:PQmjPwDURyBD1CZDl/3Nv9oK3AXD6JUbRLITqRFdMP4=", - "h1:nxSbPf052jbk91vEmlJ6JxV7AhJzyxRclLQAiDXORek=", "h1:pAmiyTB57yTBpZHofES31WD35Z/lyKAuXbTWarpNDYU=", "zh:240ba0f3d87f8faf3171e1dd0ec74bffc868bde84db7fb2c89913c787b11ef07", "zh:422cfbe039f6041525d55aa0641dfed014d970b516d8de058a1869736682b9d3", @@ -28,10 +25,7 @@ provider "registry.terraform.io/hashicorp/azuread" { version = "2.21.0" constraints = "<= 2.21.0" hashes = [ - "h1:9gG6SWoUZZmmXbYBv6ra2RF5NYpamB9tGjsuBxrasFQ=", "h1:KbY8dRdbfTwTzEBcdOFdD50JX8CUG5Mni25D2+k1rGc=", - "h1:akcofWscEl0ecIbf7lyEqRvPfOdA5q75EZvK8uSum1c=", - "h1:qHYbB6LJsYPVUcd7QkZ5tU+IX+10VcUG4NzsmIuWdlE=", "zh:18c56e0478e8b3849f6d52f7e0ee495538e7fce66f22fc84a79599615e50ad1c", "zh:1b95ba8dddc46c744b2d2be7da6fafaa8ebd8368d46ff77416a95cb7d622251e", "zh:1c3e89cf19118fc07d7b04257251fc9897e722c16e0a0df7b07fcd261f8c12e7", @@ -48,35 +42,29 @@ provider "registry.terraform.io/hashicorp/azuread" { } provider "registry.terraform.io/hashicorp/azurerm" { - version = "3.85.0" - constraints = ">= 3.30.0, <= 3.85.0" + version = "3.117.0" + constraints = "~> 3.30, ~> 3.76, <= 4.0.0" hashes = [ - "h1:BX6+m8KJATrpqlwBSyA63Fmwjvgwcs/v1qwB7B5GLCU=", - "h1:UW2HuNrkVexKwNYbkI1Xr/B3ip/cCgizIjfKN+ulpPs=", - "h1:vPlaTsywMaTyPPYPy0t8twBwrYOGckDFg4kQ5yyJG0U=", - "h1:wcPRNQKHyR5boMFYQblUqVCbPyxuLlXpVgzMK3cLAPo=", - "zh:1ae6c0d82b5801641a17094b84f2ec1dcac699c1c4e40669a267511061414a34", - "zh:259e9386a43aabecb1205b0ceea2d205223637c09b66d806a89fed04f3343253", - "zh:4d940f9c14fece4f1d9219ac9d104202e5561bddc5024e5ac97f3f93eea20110", - "zh:530bca70b950e835f63c796c694106d701e5de0e2cf096fa35f08afd5c254594", - "zh:69e6b7f44ffbe0383b6485bb9db26781eb7869503889303e202967900a6b35ed", - "zh:8528e7d054254daae06eeb2bf343d566d3908a024fdfb5e515fbdbe0669c15eb", - "zh:98d66edfa89ed9a431ca37be384e5dfe7fa20bdc732c6e7d30f3f922ca3b29dc", - "zh:b8d37cedeffeb6bd37d4ec79fc2da19ed6b57d1ac08d835395dfa4fb3cfdf447", - "zh:bbc94e89cd6c0d59c2e5ed0bce852cac8435b6dc2e979691ee84af4c8b2c9bb8", - "zh:ceb4c624e8bb56bbcfe53e3c4ed4b4d27c3a5b62e5f4890b32c98b60b83c7827", - "zh:f08c5bf19eb25f668633964c6bfa823aa0ead785824082533c4a6cff3959e3d0", + "h1:pAXy9cKU+bX1rvWog4YWeLbg7VFHqRTAFKbjayIXK1k=", + "zh:2e25f47492366821a786762369f0e0921cc9452d64bfd5075f6fdfcf1a9c6d70", + "zh:41eb34f2f7469bf3eb1019dfb0e7fc28256f809824016f4f8b9d691bf473b2ac", + "zh:48bb9c87b3d928da1abc1d3db75453c9725de4674c612daf3800160cc7145d30", + "zh:5d6b0de0bbd78943fcc65c53944ef4496329e247f434c6eab86ed051c5cea67b", + "zh:78c9f6fdb1206a89cf0e6706b4f46178169a93b6c964a4cad8a321058ccbd9b4", + "zh:793b702c352589d4360b580d4a1cf654a7439d2ad6bdb7bfea91de07bc4b0fac", + "zh:7ed687ff0a5509463a592f97431863574fe5cc80a34e395be06766215b8c6285", + "zh:955ba18789bd15592824eb426a8d0f38595bd09fffc6939c1c58933489c1a71e", + "zh:bf5949a55be0714cd9c8815d472eae4baa48ba06d0f6bf2b96775869acda8a54", + "zh:da5d31f635abd2c645ffc76d6176d73f646128e73720cc368247cc424975c127", + "zh:eed5a66d59883c9c56729b0a964a2b60d758ea7489ef3e920a6fbd48518ce5f5", "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", ] } provider "registry.terraform.io/hashicorp/null" { version = "3.2.1" - constraints = "<= 3.2.1" + constraints = "~> 3.2, <= 3.2.1" hashes = [ - "h1:FbGfc+muBsC17Ohy5g806iuI1hQc4SIexpYCrQHQd8w=", - "h1:tSj1mL6OQ8ILGqR2mDu7OYYYWf+hoir0pf9KAQ8IzO8=", - "h1:vUW21lLLsKlxtBf0QF7LKJreKxs0CM7YXGzqW1N/ODY=", "h1:ydA0/SNRVB1o95btfshvYsmxA+jZFRZcvKzZSB+4S1M=", "zh:58ed64389620cc7b82f01332e27723856422820cfd302e304b5f6c3436fb9840", "zh:62a5cc82c3b2ddef7ef3a6f2fedb7b9b3deff4ab7b414938b08e51d6e8be87cb", diff --git a/src/synthetic-monitoring/00_data.tf b/src/synthetic-monitoring/00_data.tf index e4b807302c..993f2476ca 100644 --- a/src/synthetic-monitoring/00_data.tf +++ b/src/synthetic-monitoring/00_data.tf @@ -16,6 +16,12 @@ data "azurerm_monitor_action_group" "slack" { name = local.monitor_action_group_slack_name } +data "azurerm_monitor_action_group" "infra_opsgenie" { + count = var.env_short == "p" ? 1 : 0 + resource_group_name = local.monitor_resource_group_name + name = local.monitor_action_group_infra_opsgenie_name +} + data "azurerm_monitor_action_group" "email" { resource_group_name = local.monitor_resource_group_name name = local.monitor_action_group_email_name @@ -43,3 +49,7 @@ data "azurerm_subnet" "private_endpoint_subnet" { virtual_network_name = data.azurerm_virtual_network.vnet_core.name } +data "azurerm_public_ip" "appgateway_public_ip" { + name = format("%s-appgateway-pip", local.product) + resource_group_name = data.azurerm_resource_group.rg_vnet_core.name +} diff --git a/src/synthetic-monitoring/00_secrets.tf b/src/synthetic-monitoring/00_secrets.tf new file mode 100644 index 0000000000..fb2f25b249 --- /dev/null +++ b/src/synthetic-monitoring/00_secrets.tf @@ -0,0 +1,10 @@ +module "secret_core" { + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//key_vault_secrets_query?ref=v8.54.0" + + resource_group = local.key_vault_rg_name + key_vault_name = local.key_vault_name + + secrets = [ + "synthetic-monitoring-nodo-subscription-key" + ] +} diff --git a/src/synthetic-monitoring/01_analytics_workspace.tf b/src/synthetic-monitoring/01_analytics_workspace.tf index 602382f1d6..b79bb5bb9a 100644 --- a/src/synthetic-monitoring/01_analytics_workspace.tf +++ b/src/synthetic-monitoring/01_analytics_workspace.tf @@ -5,12 +5,13 @@ resource "azurerm_resource_group" "synthetic_rg" { resource "azurerm_log_analytics_workspace" "log_analytics_workspace" { - name = "${local.project}-law" - location = azurerm_resource_group.synthetic_rg.location - resource_group_name = azurerm_resource_group.synthetic_rg.name - sku = var.law_sku - retention_in_days = var.law_retention_in_days - daily_quota_gb = var.law_daily_quota_gb + name = "${local.project}-law" + location = azurerm_resource_group.synthetic_rg.location + resource_group_name = azurerm_resource_group.synthetic_rg.name + sku = var.law_sku + retention_in_days = var.law_retention_in_days + daily_quota_gb = var.law_daily_quota_gb + reservation_capacity_in_gb_per_day = var.env_short == "p" ? 100 : null tags = var.tags } diff --git a/src/synthetic-monitoring/02_monitoring.tf b/src/synthetic-monitoring/02_monitoring.tf index bd6806efa9..ce26d3125a 100644 --- a/src/synthetic-monitoring/02_monitoring.tf +++ b/src/synthetic-monitoring/02_monitoring.tf @@ -1,8 +1,7 @@ module "monitoring_function" { - depends_on = [azurerm_application_insights.application_insights] - - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//monitoring_function?ref=v7.60.0" + source = "./.terraform/modules/__v3__/monitoring_function" + legacy = false location = var.location prefix = "${local.product}-${var.location_short}" @@ -10,10 +9,10 @@ module "monitoring_function" { application_insight_name = azurerm_application_insights.application_insights.name application_insight_rg_name = azurerm_application_insights.application_insights.resource_group_name - application_insights_action_group_ids = [data.azurerm_monitor_action_group.slack.id] + application_insights_action_group_ids = var.env_short == "p" ? [data.azurerm_monitor_action_group.infra_opsgenie[0].id] : [data.azurerm_monitor_action_group.slack.id] docker_settings = { - image_tag = "v1.7.0@sha256:08b88e12aa79b423a96a96274786b4d1ad5a2a4cf6c72fcd1a52b570ba034b18" + image_tag = "v1.10.0@sha256:1686c4a719dc1a3c270f98f527ebc34179764ddf53ee3089febcb26df7a2d71d" } job_settings = { @@ -36,10 +35,15 @@ module "monitoring_function" { enabled = var.self_alert_enabled } monitoring_configuration_encoded = templatefile("${path.module}/monitoring_configuration.json.tpl", { - env_name = var.env, - env_short = var.env_short, - api_dot_env_name = var.env == "prod" ? "api" : "api.${var.env}" - internal_api_domain_prefix = "weu${var.env}" - internal_api_domain_suffix = var.env == "prod" ? "internal.platform.pagopa.it" : "internal.${var.env}.platform.pagopa.it" + env_name = var.env, + env_short = var.env_short, + api_dot_env_name = var.env == "prod" ? "api" : "api.${var.env}" + internal_api_domain_prefix = "weu${var.env}" + internal_api_domain_suffix = var.env == "prod" ? "internal.platform.pagopa.it" : "internal.${var.env}.platform.pagopa.it" + nodo_subscription_key = nonsensitive(module.secret_core.values["synthetic-monitoring-nodo-subscription-key"].value) + appgw_public_ip = data.azurerm_public_ip.appgateway_public_ip.ip_address + check_position_body = var.check_position_body + alert_enabled = var.synthetic_alerts_enabled + verify_payment_internal_expected_outcome = var.verify_payment_internal_expected_outcome }) } diff --git a/src/synthetic-monitoring/99_locals.tf b/src/synthetic-monitoring/99_locals.tf index c6cffd8a06..6b41aeab9b 100644 --- a/src/synthetic-monitoring/99_locals.tf +++ b/src/synthetic-monitoring/99_locals.tf @@ -4,15 +4,18 @@ locals { project = "${local.product}-${var.location_short}-${local.domain}" - monitor_appinsights_name = "${local.product}-appinsights" - monitor_action_group_slack_name = "SlackPagoPA" - monitor_action_group_email_name = "PagoPA" - monitor_resource_group_name = "${local.product}-monitor-rg" + monitor_appinsights_name = "${local.product}-appinsights" + monitor_action_group_slack_name = "SlackPagoPA" + monitor_action_group_email_name = "PagoPA" + monitor_action_group_infra_opsgenie_name = "InfraOpsgenie" + monitor_resource_group_name = "${local.product}-monitor-rg" vnet_core_resource_group_name = "${local.product}-vnet-rg" vnet_core_name = "${local.product}-vnet" log_analytics_workspace_name = "${local.product}-law" log_analytics_workspace_resource_group_name = "${local.product}-monitor-rg" + key_vault_name = "pagopa-${var.env_short}-kv" + key_vault_rg_name = "pagopa-${var.env_short}-sec-rg" } diff --git a/src/synthetic-monitoring/99_main.tf b/src/synthetic-monitoring/99_main.tf index 816c0a28cb..acf8010b4e 100644 --- a/src/synthetic-monitoring/99_main.tf +++ b/src/synthetic-monitoring/99_main.tf @@ -10,7 +10,7 @@ terraform { } azurerm = { source = "hashicorp/azurerm" - version = "<= 3.85.0" + version = "<= 4.0.0" } null = { source = "hashicorp/null" @@ -33,3 +33,7 @@ data "azurerm_subscription" "current" {} data "azurerm_client_config" "current" {} +module "__v3__" { + # v8.64.0 + source = "git::https://github.com/pagopa/terraform-azurerm-v3?ref=ff49c94c7bfb8f2867e550483d8acc125bf516a7" +} diff --git a/src/synthetic-monitoring/99_variables.tf b/src/synthetic-monitoring/99_variables.tf index 8ba70f0ad2..5657e7cf84 100644 --- a/src/synthetic-monitoring/99_variables.tf +++ b/src/synthetic-monitoring/99_variables.tf @@ -95,4 +95,21 @@ variable "self_alert_enabled" { } +variable "check_position_body" { + type = object({ + fiscal_code = string + notice_number = string + }) + description = "(Required) fiscal code and notice number to be used in synthetic checkposition request body" +} + +variable "synthetic_alerts_enabled" { + type = bool + default = false + description = "(Optional) Enables alerts generated by the synthetic monitoring probe" +} +variable "verify_payment_internal_expected_outcome" { + type = string + description = "(Required) Expected outcome for verify payment notice internal" +} diff --git a/src/synthetic-monitoring/README.md b/src/synthetic-monitoring/README.md index 3be7974b19..b5c7e55b84 100644 --- a/src/synthetic-monitoring/README.md +++ b/src/synthetic-monitoring/README.md @@ -7,14 +7,16 @@ |------|---------| | [azapi](#requirement\_azapi) | <= 1.11.0 | | [azuread](#requirement\_azuread) | <= 2.21.0 | -| [azurerm](#requirement\_azurerm) | <= 3.85.0 | +| [azurerm](#requirement\_azurerm) | <= 4.0.0 | | [null](#requirement\_null) | <= 3.2.1 | ## Modules | Name | Source | Version | |------|--------|---------| -| [monitoring\_function](#module\_monitoring\_function) | git::https://github.com/pagopa/terraform-azurerm-v3.git//monitoring_function | v7.60.0 | +| [\_\_v3\_\_](#module\_\_\_v3\_\_) | git::https://github.com/pagopa/terraform-azurerm-v3 | ff49c94c7bfb8f2867e550483d8acc125bf516a7 | +| [monitoring\_function](#module\_monitoring\_function) | ./.terraform/modules/__v3__/monitoring_function | n/a | +| [secret\_core](#module\_secret\_core) | git::https://github.com/pagopa/terraform-azurerm-v3.git//key_vault_secrets_query | v8.54.0 | ## Resources @@ -26,8 +28,10 @@ | [azurerm_client_config.current](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/client_config) | data source | | [azurerm_container_app_environment.tools_cae](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/container_app_environment) | 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.infra_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_private_dns_zone.storage_account_table](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/private_dns_zone) | data source | +| [azurerm_public_ip.appgateway_public_ip](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/public_ip) | data source | | [azurerm_resource_group.rg_vnet_core](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | | [azurerm_resource_group.tools_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) | data source | | [azurerm_subnet.private_endpoint_subnet](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/subnet) | data source | @@ -38,6 +42,7 @@ | Name | Description | Type | Default | Required | |------|-------------|------|---------|:--------:| +| [check\_position\_body](#input\_check\_position\_body) | (Required) fiscal code and notice number to be used in synthetic checkposition request body |
object({
fiscal_code = string
notice_number = string
})
| n/a | yes | | [enabled\_resource](#input\_enabled\_resource) | Feature flags |
object({
container_app_tools_cae = optional(bool, false),
})
| n/a | yes | | [env](#input\_env) | n/a | `string` | n/a | yes | | [env\_short](#input\_env\_short) | n/a | `string` | n/a | yes | @@ -49,8 +54,10 @@ | [prefix](#input\_prefix) | n/a | `string` | n/a | yes | | [self\_alert\_enabled](#input\_self\_alert\_enabled) | (Optional) enables the alert on the function itself | `bool` | `true` | no | | [storage\_account\_replication\_type](#input\_storage\_account\_replication\_type) | (Required) table storage replication type | `string` | n/a | yes | +| [synthetic\_alerts\_enabled](#input\_synthetic\_alerts\_enabled) | (Optional) Enables alerts generated by the synthetic monitoring probe | `bool` | `false` | no | | [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | | [use\_private\_endpoint](#input\_use\_private\_endpoint) | (Required) if true enables the usage of private endpoint | `bool` | n/a | yes | +| [verify\_payment\_internal\_expected\_outcome](#input\_verify\_payment\_internal\_expected\_outcome) | (Required) Expected outcome for verify payment notice internal | `string` | n/a | yes | ## Outputs diff --git a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars index 0f50d4a773..58f63a14f0 100644 --- a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars @@ -30,3 +30,12 @@ law_daily_quota_gb = 10 self_alert_enabled = false force = "v1" + +# +# monitoring template variables +# +check_position_body = { + fiscal_code = "66666666666" + notice_number = "310115803416020234" +} +verify_payment_internal_expected_outcome = "KO" diff --git a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars index 96792b02af..438e57f768 100644 --- a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars @@ -21,8 +21,19 @@ tags = { enabled_resource = { container_app_tools_cae = true } - +synthetic_alerts_enabled = true law_sku = "CapacityReservation" # TODO verify why it is changed from PerGB2018 to CapacityReservation law_retention_in_days = 30 law_daily_quota_gb = -1 + +# +# monitoring template variables +# +check_position_body = { + fiscal_code = "00876220633" + notice_number = "001000000136265862" +} +verify_payment_internal_expected_outcome = "OK" + + diff --git a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars index c5fa75b086..283d8731e5 100644 --- a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars @@ -26,3 +26,12 @@ enabled_resource = { law_sku = "PerGB2018" law_retention_in_days = 30 law_daily_quota_gb = 10 + +# +# monitoring template variables +# +check_position_body = { + fiscal_code = "15376371009" + notice_number = "351173232582781477" +} +verify_payment_internal_expected_outcome = "KO" diff --git a/src/synthetic-monitoring/monitoring_configuration.json b/src/synthetic-monitoring/monitoring_configuration.json deleted file mode 100644 index 5b7f5fb916..0000000000 --- a/src/synthetic-monitoring/monitoring_configuration.json +++ /dev/null @@ -1,79 +0,0 @@ -[ - { - "apiName" : "root", - "appName" : "root", - "url" : "https://api.dev.platform.pagopa.it/", - "type" : "public", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa dev context root" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "status", - "appName" : "fdr-org", - "url" : "https://api.dev.platform.pagopa.it/fdr-org/service/v1/info", - "type" : "public", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "headers": { - "Ocp-Apim-Subscription-Key": "b9461d7ae36746309752298df93934da" - }, - "tags" : { - "description" : "pagopa fdr status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "request-flow", - "appName" : "fdr", - "url" : "https://api.dev.platform.pagopa.it/fdr-psp/service/v1/psps/60000000001/fdrs/2024-02-0860000000001-17074057078", - "type" : "public", - "checkCertificate" : true, - "method" : "POST", - "expectedCodes" : ["200", "400"], - "body": { - "fdr": "2024-02-0860000000001-17074057078", - "fdrDate": "2024-02-08T15:21:47.834Z", - "sender": { - "type": "LEGAL_PERSON", - "id": "SELBIT2B", - "pspId": "60000000001", - "pspName": "Bank", - "pspBrokerId": "60000000001", - "channelId": "15376371009_04" - ,"password": "PLACEHOLDER" - }, - "receiver": { - "id": "APPBIT2B", - "organizationId": "15376371009", - "organizationName": "Comune di xyz" - }, - "regulation": "SEPA - Bonifico xzy", - "regulationDate": "2024-02-08T15:21:47.834Z", - "bicCodePouringBank": "UNCRITMMXXX", - "totPayments": 3, - "sumPayments": 0.03 - }, - "headers": { - "Ocp-Apim-Subscription-Key": "e879a6b70e2241898d0b8b5b9d647df0" - }, - "tags" : { - "description" : "pagopa fdr uat status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - } -] diff --git a/src/synthetic-monitoring/monitoring_configuration.json.tpl b/src/synthetic-monitoring/monitoring_configuration.json.tpl index 40a8dfa991..2654461720 100644 --- a/src/synthetic-monitoring/monitoring_configuration.json.tpl +++ b/src/synthetic-monitoring/monitoring_configuration.json.tpl @@ -3,7 +3,7 @@ "apiName" : "root", "appName" : "pagopa", "url" : "https://${api_dot_env_name}.platform.pagopa.it/", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -12,14 +12,33 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "root", + "appName" : "pagopa", + "url" : "https://${appgw_public_ip}/", + "type" : "appgw", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "headers": { + "Host": "${api_dot_env_name}.platform.pagopa.it" + }, + "tags" : { + "description" : "pagopa ${env_name} context root" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmcalculator", + "appName" : "afmCalculator", "url" : "https://${internal_api_domain_prefix}.afm.${internal_api_domain_suffix}/pagopa-afm-calculator-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -28,14 +47,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmcalculator", + "appName" : "afmCalculator", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=afmcalculator", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -44,15 +63,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmmarketplace", + "appName" : "afmMarketplace", "url" : "https://${internal_api_domain_prefix}.afm.${internal_api_domain_suffix}/pagopa-afm-marketplace-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -61,14 +80,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmmarketplace", + "appName" : "afmMarketplace", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=afmmarketplace", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -77,15 +96,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmutils", + "appName" : "afmUtils", "url" : "https://${internal_api_domain_prefix}.afm.${internal_api_domain_suffix}/pagopa-afm-utils-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -94,14 +113,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "afmutils", + "appName" : "afmUtils", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=afmutils", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -110,15 +129,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "apiconfig", + "appName" : "apiConfig", "url" : "https://${internal_api_domain_prefix}.apiconfig.${internal_api_domain_suffix}/pagopa-api-config-core-service/o/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -127,14 +146,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "apiconfig", + "appName" : "apiConfig", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=apiconfig", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -143,15 +162,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "authorizer", + "appName" : "authorizerConfig", "url" : "https://${internal_api_domain_prefix}.shared.${internal_api_domain_suffix}/authorizer-config/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -160,14 +179,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "authorizer", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=authorizer", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -176,15 +195,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, - - { + { "apiName" : "status", "appName" : "bizevents", "url" : "https://${internal_api_domain_prefix}.bizevents.${internal_api_domain_suffix}/pagopa-biz-events-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -193,14 +211,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "bizevents", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=bizevents", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -209,15 +227,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "bizevents-neg", + "appName" : "bizeventsNeg", "url" : "https://${internal_api_domain_prefix}.bizevents.${internal_api_domain_suffix}/pagopa-negative-biz-events-datastore-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -226,14 +244,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "bizevents-neg", + "appName" : "bizeventsNeg", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=bizeventsdatastoreneg", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -242,15 +260,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "bizevents-ds", + "appName" : "bizeventsDs", "url" : "https://${internal_api_domain_prefix}.bizevents.${internal_api_domain_suffix}/pagopa-biz-events-datastore-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -259,14 +277,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "bizevents-ds", + "appName" : "bizeventsDs", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=bizeventsdatastorepos", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -275,7 +293,7 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, @@ -283,7 +301,7 @@ "apiName" : "status", "appName" : "selfcare", "url" : "https://${internal_api_domain_prefix}.selfcare.${internal_api_domain_suffix}/selfcare/pagopa/v1/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -292,7 +310,7 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, @@ -300,7 +318,7 @@ "apiName" : "status", "appName" : "fdr", "url" : "https://${internal_api_domain_prefix}.fdr.${internal_api_domain_suffix}/pagopa-fdr-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -309,14 +327,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "fdr", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=fdrndpnew", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -325,7 +343,7 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, @@ -333,7 +351,7 @@ "apiName" : "status", "appName" : "gpd", "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gpd-core/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -342,14 +360,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "gpd", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpd", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -358,15 +376,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "gpd-payments", + "appName" : "gpdPayments", "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gpd-payments/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -375,14 +393,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "gpd-payments", + "appName" : "gpdPayments", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdpayments", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -391,14 +409,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "gpd-payments-pull", + "appName" : "gpdPaymentsPull", "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gpd-payments-pull/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -407,14 +425,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "gpd-enrollment", + "appName" : "gpdEnrollment", "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gpd-reporting-orgs-enrollment/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -423,14 +441,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "gpd-enrollment", + "appName" : "gpdEnrollment", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdenrollment", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -439,7 +457,7 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, @@ -447,7 +465,7 @@ "apiName" : "status", "appName" : "gps", "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-spontaneous-payments-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -456,14 +474,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "gps", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gps", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -472,15 +490,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-datastore", + "appName" : "receiptsDatastore", "url" : "https://${internal_api_domain_prefix}.receipts.${internal_api_domain_suffix}/pagopa-receipt-pdf-datastore/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -489,14 +507,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-datastore", + "appName" : "receiptsDatastore", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=receiptpdfdatastore", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -505,15 +523,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-generator", + "appName" : "receiptsGenerator", "url" : "https://${internal_api_domain_prefix}.receipts.${internal_api_domain_suffix}/pagopa-receipt-pdf-generator/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -522,14 +540,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-generator", + "appName" : "receiptsGenerator", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=receiptpdfgenerator", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -538,15 +556,15 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-notifier", + "appName" : "receiptsNotifier", "url" : "https://${internal_api_domain_prefix}.receipts.${internal_api_domain_suffix}/pagopa-receipt-pdf-notifier/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -555,14 +573,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", - "appName" : "receipts-notifier", + "appName" : "receiptsNotifier", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=receiptpdfnotifier", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -571,7 +589,7 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, @@ -579,7 +597,7 @@ "apiName" : "status", "appName" : "receipts", "url" : "https://${internal_api_domain_prefix}.receipts.${internal_api_domain_suffix}/pagopa-receipt-pdf-service/info", - "type" : "private", + "type" : "aks", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -588,14 +606,14 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { "apiName" : "status", "appName" : "receipts", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=receiptpdfservice", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -604,97 +622,20 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, - { - "apiName" : "status", - "appName" : "authorizer", - "url" : "https://pagopa-${env_short}-weu-shared-authorizer-fn.azurewebsites.net/info", - "type" : "private", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa ${env_name} authorizer status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "status", - "appName" : "authorizer", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=authorizer", - "type" : "public", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa ${env_name} authorizer status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "status", - "appName" : "canoneunico", - "url" : "https://pagopa-${env_short}-fn-canoneunico.azurewebsites.net/info", - "type" : "private", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa ${env_name} canoneunico status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "status", - "appName" : "canoneunico", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=canoneunico", - "type" : "public", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa ${env_name} canoneunico status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, + + + { "apiName" : "status", - "appName" : "gpd-analysis", - "url" : "https://pagopa-${env_short}-weu-fn-gpd-analysis.azurewebsites.net/info", - "type" : "private", - "checkCertificate" : true, - "method" : "GET", - "expectedCodes" : ["200"], - "tags" : { - "description" : "pagopa ${env_name} gpd-analysis status endpoint" - }, - "durationLimit" : 10000, - "alertConfiguration" : { - "enabled" : false - } - }, - { - "apiName" : "status", - "appName" : "gpd-analysis", + "appName" : "gpdAnalysis", "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdreportinganalysis", - "type" : "public", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -703,15 +644,16 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, + { "apiName" : "status", - "appName" : "gpd-batch", - "url" : "https://pagopa-${env_short}-weu-fn-gpd-batch.azurewebsites.net/api/info", - "type" : "private", + "appName" : "gpdBatch", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdreportingbatch", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], @@ -720,132 +662,184 @@ }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, + + { "apiName" : "status", - "appName" : "gpd-batch", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdreportingbatch", - "type" : "public", + "appName" : "gpdReporting", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdreportingservice", + "type" : "apim", "checkCertificate" : true, "method" : "GET", "expectedCodes" : ["200"], "tags" : { - "description" : "pagopa ${env_name} gpd-batch status endpoint" + "description" : "pagopa ${env_name} gpd-reporting status endpoint" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, + + + + { - "apiName" : "status", - "appName" : "gpd-reporting", - "url" : "https://pagopa-${env_short}-weu-fn-gpd-service.azurewebsites.net/api/info", - "type" : "private", + "apiName" : "checkPosition", + "appName" : "nodo", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/nodo/nodo-per-pm/v1/checkPosition", + "type" : "apim", "checkCertificate" : true, - "method" : "GET", + "method" : "POST", "expectedCodes" : ["200"], + "body": {"positionslist": [{"fiscalCode": "${check_position_body.fiscal_code}", "noticeNumber": "${check_position_body.notice_number}"}]}, + "expectedBody": {"outcome":"OK"}, + "bodyCompareStrategy": "contains", + "headers": { + "Content-Type": "application/json" + }, "tags" : { - "description" : "pagopa ${env_name} gpd-reporting status endpoint" + "description" : "pagopa nodo ${env_name} check position" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { - "apiName" : "status", - "appName" : "gpd-reporting", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=gpdreportingservice", - "type" : "public", + "apiName" : "verifyPaymentNoticeExternal", + "appName" : "nodo", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/nodo-auth/node-for-psp/v1", + "type" : "apim", "checkCertificate" : true, - "method" : "GET", + "method" : "POST", "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "KO" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": "ABI181640265489002502654890025_01PLACEHOLDER97532760580302704889233205169", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", + "Content-Type": "application/xml" + }, "tags" : { - "description" : "pagopa ${env_name} gpd-reporting status endpoint" + "description" : "pagopa nodo ${env_name} verify payment notice to external service" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, - { - "apiName" : "status", - "appName" : "gps-donations", - "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gps-donation-service/info", - "type" : "private", + "apiName" : "verifyPaymentNoticeInternal", + "appName" : "nodo", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/nodo-auth/node-for-psp/v1", + "type" : "apim", "checkCertificate" : true, - "method" : "GET", + "method" : "POST", "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "${verify_payment_internal_expected_outcome}" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": " CIPBITMM 13212880150 13212880150_10 PLACEHOLDER 83000970612 302000000014360604 ", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", + "Content-Type": "application/xml" + }, "tags" : { - "description" : "pagopa ${env_name} gps donations status endpoint" + "description" : "pagopa nodo ${env_name} verify payment notice to internal service" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { - "apiName" : "status", - "appName" : "fdr-org", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/fdr-org/service/v1/info", - "type" : "public", + "apiName" : "verifyPaymentNoticeExternal", + "appName" : "nodo", + "url" : "https://${appgw_public_ip}/nodo-auth/node-for-psp/v1", + "type" : "appgw", "checkCertificate" : true, - "method" : "GET", + "method" : "POST", "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "KO" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": "ABI181640265489002502654890025_01PLACEHOLDER97532760580302704889233205169", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", + "Content-Type": "application/xml", + "Host": "${api_dot_env_name}.platform.pagopa.it" + }, "tags" : { - "description" : "pagopa ${env_name} fdr status endpoint" + "description" : "pagopa nodo ${env_name} verify payment notice to external service" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } }, { - "apiName" : "request-flow", - "appName" : "fdr", - "url" : "https://${api_dot_env_name}.platform.pagopa.it/fdr-psp/service/v1/psps/60000000001/fdrs/2024-02-0860000000001-17074057078", - "type" : "public", + "apiName" : "verifyPaymentNoticeInternal", + "appName" : "nodo", + "url" : "https://${appgw_public_ip}/nodo-auth/node-for-psp/v1", + "type" : "appgw", "checkCertificate" : true, "method" : "POST", - "expectedCodes" : ["200", "400"], - "body": { - "fdr": "2024-02-0860000000001-17074057078", - "fdrDate": "2024-02-08T15:21:47.834Z", - "sender": { - "type": "LEGAL_PERSON", - "id": "SELBIT2B", - "pspId": "60000000001", - "pspName": "Bank", - "pspBrokerId": "60000000001", - "channelId": "15376371009_04" - ,"password": "PLACEHOLDER" - }, - "receiver": { - "id": "APPBIT2B", - "organizationId": "15376371009", - "organizationName": "Comune di xyz" - }, - "regulation": "SEPA - Bonifico xzy", - "regulationDate": "2024-02-08T15:21:47.834Z", - "bicCodePouringBank": "UNCRITMMXXX", - "totPayments": 3, - "sumPayments": 0.03 - }, + "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "${verify_payment_internal_expected_outcome}" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": " CIPBITMM 13212880150 13212880150_10 PLACEHOLDER 83000970612 302000000014360604 ", "headers": { - "Ocp-Apim-Subscription-Key": "e879a6b70e2241898d0b8b5b9d647df0" + "SOAPAction": "verifyPaymentNotice", + "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", + "Content-Type": "application/xml", + "Host": "${api_dot_env_name}.platform.pagopa.it" }, "tags" : { - "description" : "pagopa fdr ${env_name} status endpoint" + "description" : "pagopa nodo ${env_name} verify payment notice to internal service" }, "durationLimit" : 10000, "alertConfiguration" : { - "enabled" : false + "enabled" : ${alert_enabled} } } + ] diff --git a/src/synthetic-monitoring/monitoring_configuration.json.tpl.bk b/src/synthetic-monitoring/monitoring_configuration.json.tpl.bk new file mode 100644 index 0000000000..b89896f363 --- /dev/null +++ b/src/synthetic-monitoring/monitoring_configuration.json.tpl.bk @@ -0,0 +1,187 @@ +[ + { + "apiName" : "status", + "appName" : "canoneunico", + "url" : "https://pagopa-${env_short}-fn-canoneunico.azurewebsites.net/info", + "type" : "private", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} canoneunico status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "status", + "appName" : "canoneunico", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=canoneunico", + "type" : "public", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} canoneunico status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "status", + "appName" : "fdr-org", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/fdr-org/service/v1/info", + "type" : "public", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} fdr status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "requestFlow", + "appName" : "fdr", + "url" : "https://${api_dot_env_name}.platform.pagopa.it/fdr-psp/service/v1/psps/60000000001/fdrs/2024-02-0860000000001-17074057078", + "type" : "public", + "checkCertificate" : true, + "method" : "POST", + "expectedCodes" : ["200", "400"], + "body": { + "fdr": "2024-02-0860000000001-17074057078", + "fdrDate": "2024-02-08T15:21:47.834Z", + "sender": { + "type": "LEGAL_PERSON", + "id": "SELBIT2B", + "pspId": "60000000001", + "pspName": "Bank", + "pspBrokerId": "60000000001", + "channelId": "15376371009_04" + ,"password": "PLACEHOLDER" + }, + "receiver": { + "id": "APPBIT2B", + "organizationId": "15376371009", + "organizationName": "Comune di xyz" + }, + "regulation": "SEPA - Bonifico xzy", + "regulationDate": "2024-02-08T15:21:47.834Z", + "bicCodePouringBank": "UNCRITMMXXX", + "totPayments": 3, + "sumPayments": 0.03 + }, + "headers": { + "Ocp-Apim-Subscription-Key": "e879a6b70e2241898d0b8b5b9d647df0" + }, + "tags" : { + "description" : "pagopa fdr ${env_name} status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + },{ + "apiName" : "status", + "appName" : "gpd-analysis", + "url" : "https://pagopa-${env_short}-weu-fn-gpd-analysis.azurewebsites.net/info", + "type" : "private", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} gpd-analysis status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "status", + "appName" : "gpd-batch", + "url" : "https://pagopa-${env_short}-weu-fn-gpd-batch.azurewebsites.net/api/info", + "type" : "private", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} gpd-batch status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "status", + "appName" : "gpd-reporting", + "url" : "https://pagopa-${env_short}-weu-fn-gpd-service.azurewebsites.net/api/info", + "type" : "private", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} gpd-reporting status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "status", + "appName" : "gps-donations", + "url" : "https://${internal_api_domain_prefix}.gps.${internal_api_domain_suffix}/pagopa-gps-donation-service/info", + "type" : "private", + "checkCertificate" : true, + "method" : "GET", + "expectedCodes" : ["200"], + "tags" : { + "description" : "pagopa ${env_name} gps donations status endpoint" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "verifyPaymentNoticeInternal", + "appName" : "nodo", + "url": "https://${internal_api_domain_prefix}.nodo.${internal_api_domain_suffix}/nodo/webservices/input", + "type" : "direct", + "checkCertificate" : true, + "method" : "POST", + "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "KO" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": " CIPBITMM 13212880150 13212880150_10 PLACEHOLDER 83000970612 302000000014360604 ", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", + "Content-Type": "application/xml" + }, + "tags" : { + "description" : "pagopa nodo ${env_name} verify payment notice to internal service directly to aks hostname" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + } +] From 464c3df9502846b7f80d9f5a9f81eea9ab236724 Mon Sep 17 00:00:00 2001 From: Pasquale Spica <36746022+pasqualespica@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:45:51 +0100 Subject: [PATCH 05/11] feat: Add qi smo jira tickets (#2687) * add qi smo jira tickets * openapi created --------- Co-authored-by: Simone Esposito --- .../qi-app/04_apim_qi_smo_jira_tickets.tf | 70 +++ .../v1/_base_policy.xml.tpl | 15 + .../v1/_openapi.json.tpl | 434 ++++++++++++++++++ 3 files changed, 519 insertions(+) create mode 100644 src/domains/qi-app/04_apim_qi_smo_jira_tickets.tf create mode 100644 src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_base_policy.xml.tpl create mode 100644 src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_openapi.json.tpl diff --git a/src/domains/qi-app/04_apim_qi_smo_jira_tickets.tf b/src/domains/qi-app/04_apim_qi_smo_jira_tickets.tf new file mode 100644 index 0000000000..84a3c3a179 --- /dev/null +++ b/src/domains/qi-app/04_apim_qi_smo_jira_tickets.tf @@ -0,0 +1,70 @@ +############## +## Products ## +############## + +module "apim_qi_smo_jira_tickets_product" { + source = "./.terraform/modules/__v3__/api_management_product" + + product_id = "qi-smo-jira-tickets" + display_name = "QI SMO JIRA TICKETS pagoPA" + description = "Product for QI SMO JIRA TICKETS pagoPA" + + api_management_name = local.pagopa_apim_name + resource_group_name = local.pagopa_apim_rg + + published = true + subscription_required = true + approval_required = true + subscriptions_limit = 100 + + policy_xml = file("./api_product/_base_policy.xml") +} + +############################ +## API qi fdr kpi service ## +############################ +locals { + apim_pagopa_qi_smo_jira_tickets_service_api = { + display_name = "pagoPA QI SMO JIRA TICKETS pagoPA" + description = "API for QI SMO JIRA TICKETS pagoPA." + path = "qi/smo/jiraticket" + subscription_required = true + service_url = null + } +} + +# qi fdr kpi service APIs +resource "azurerm_api_management_api_version_set" "pagopa_qi_smo_jira_tickets_service_api" { + name = "${local.project}-smo-jira-tickets-api" + resource_group_name = local.pagopa_apim_rg + api_management_name = local.pagopa_apim_name + display_name = local.apim_pagopa_qi_smo_jira_tickets_service_api.display_name + versioning_scheme = "Segment" +} + +module "apim_pagopa_qi_smo_jira_tickets_service_api" { + source = "./.terraform/modules/__v3__/api_management_api" + + name = "${local.project}-smo-jira-tickets-api" + api_management_name = local.pagopa_apim_name + resource_group_name = local.pagopa_apim_rg + product_ids = [module.apim_qi_smo_jira_tickets_product.product_id] + subscription_required = local.apim_pagopa_qi_smo_jira_tickets_service_api.subscription_required + version_set_id = azurerm_api_management_api_version_set.pagopa_qi_smo_jira_tickets_service_api.id + api_version = "v1" + + description = local.apim_pagopa_qi_smo_jira_tickets_service_api.description + display_name = local.apim_pagopa_qi_smo_jira_tickets_service_api.display_name + path = local.apim_pagopa_qi_smo_jira_tickets_service_api.path + protocols = ["https"] + service_url = local.apim_pagopa_qi_smo_jira_tickets_service_api.service_url + + content_format = "openapi" + content_value = templatefile("./api/qi-smo-jira-tickets-api/v1/_openapi.json.tpl", { + hostname = local.apim_hostname + }) + + xml_content = templatefile("./api/qi-smo-jira-tickets-api/v1/_base_policy.xml.tpl", { + hostname = local.qi_hostname + }) +} diff --git a/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_base_policy.xml.tpl b/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_base_policy.xml.tpl new file mode 100644 index 0000000000..42a5247afb --- /dev/null +++ b/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_base_policy.xml.tpl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_openapi.json.tpl b/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_openapi.json.tpl new file mode 100644 index 0000000000..5825d22946 --- /dev/null +++ b/src/domains/qi-app/api/qi-smo-jira-tickets-api/v1/_openapi.json.tpl @@ -0,0 +1,434 @@ +{ + "openapi": "3.0.1", + "info": { + "version": "1.0.0", + "title": "qi-smo-jira-tickets-api", + "description": "Api for QI SMO JIRA TICKETS pagoPA" + }, + "servers": [ + { + "url": "https://${hostname}" + } + ], + "tags": [ + { + "name": "Ticket", + "description": "Api's for ticket on Service Now" + } + ], + "paths": { + "/create": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Create a new ticket on Service Now", + "description": "Create a new ticket on Service Now", + "operationId": "create", + "requestBody": { + "description": "Create a new ticket on Service Now retrieving information from Jira Ticket ID", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/create" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + }, + "/assign": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Assign a ticket to Service Now Team", + "description": "Assign a ticket to Service Now Team", + "operationId": "assign", + "requestBody": { + "description": "Assign a ticket to a Service Now Team", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/assign" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + }, + "/comment": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Send a new comment on a Service Now Ticket", + "description": "Send a new comment on a Service Now Ticket", + "operationId": "comment", + "requestBody": { + "description": "Send a new comment on a Service Now Ticket", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/comment" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + }, + "/close": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Close a ticket on Service Now", + "description": "Close a ticket on Service Now", + "operationId": "close", + "requestBody": { + "description": "Send a new comment on a Service Now Ticket", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/close" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + }, + "/cancel": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Cancel a ticket on Service Now", + "description": "Cancel a ticket on Service Now", + "operationId": "cancel", + "requestBody": { + "description": "Cancel a ticket on Service Now", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/cancel" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + }, + "/sync": { + "post": { + "tags": [ + "Ticket" + ], + "summary": "Sync attach between Jira Service Management and Service Now", + "description": "Sync attach between Jira Service Management and Service Now", + "operationId": "sync", + "requestBody": { + "description": "Sync attach between Jira Service Management and Service Now", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/sync" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIOK" + } + } + } + }, + "500": { + "description": "Error from API", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ResponseAPIKO" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "create": { + "required": [ + "action", + "jira_ticket" + ], + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "Action to be performed", + "enum": [ + "create", + "createByTicket" + ] + }, + "jira_ticket": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + } + } + }, + "assign": { + "required": [ + "ticket_id" + ], + "type": "object", + "properties": { + "ticket_id": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + } + } + }, + "comment": { + "required": [ + "ticket_id", + "comment" + ], + "type": "object", + "properties": { + "ticket_id": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + }, + "comment": { + "type": "string", + "example": "This is a new comment", + "description": "Comment to send" + } + } + }, + "close": { + "required": [ + "ticket_id" + ], + "type": "object", + "properties": { + "ticket_id": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + } + } + }, + "cancel": { + "required": [ + "ticket_id" + ], + "type": "object", + "properties": { + "ticket_id": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + } + } + }, + "sync": { + "required": [ + "ticket_id" + ], + "type": "object", + "properties": { + "ticket_id": { + "type": "string", + "example": "PPIT-100", + "description": "Jira Service Management Ticket to send to Service Now" + } + } + }, + "ResponseAPIOK": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Response Status of API call (OK, KO))", + "example": "OK", + "enum": [ + "OK", + "KO" + ] + }, + "code": { + "type": "integer", + "description": "Application code from Service Now API", + "example": 200 + }, + "jira_ticket_id": { + "type": "string", + "description": "Jira Ticket used for operation on Service Now Ticket", + "example": "PPIT-100" + }, + "ticket_id": { + "type": "string", + "description": "Ticket id opened on Service Now (uuid form)", + "example": "a984ea7749ae0abc77ec624167aefc91" + }, + "ticket_cs": { + "type": "string", + "description": "Ticket id opened on Service Now (CS* form)", + "example": "CS123456" + } + } + }, + "ResponseAPIKO": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Response Status of API call (OK, KO))", + "example": "KO", + "enum": [ + "OK", + "KO" + ] + }, + "code": { + "type": "integer", + "description": "Application code from Service Now API", + "example": 702 + }, + "msg": { + "type": "string", + "description": "Error message generated by API or application", + "example": "An error has occured" + } + } + } + } + } +} \ No newline at end of file From 032220ba21a4978449207bf1f7a9bfdda98c7fee Mon Sep 17 00:00:00 2001 From: Simone infante <52280205+infantesimone@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:50:33 +0100 Subject: [PATCH 06/11] feat: PPABV-106 add secret for fdr-kpi (#2691) feat: add secret for fdr-kpi --- src/domains/qi-app/README.md | 3 +++ src/domains/qi-common/02_security.tf | 28 ++++++++++++++++++++++++++++ src/domains/qi-common/README.md | 2 ++ 3 files changed, 33 insertions(+) diff --git a/src/domains/qi-app/README.md b/src/domains/qi-app/README.md index 207cb88214..3afe6b10d8 100644 --- a/src/domains/qi-app/README.md +++ b/src/domains/qi-app/README.md @@ -18,8 +18,10 @@ |------|--------|---------| | [\_\_v3\_\_](#module\_\_\_v3\_\_) | git::https://github.com/pagopa/terraform-azurerm-v3 | 3fc1dafaf4354e24ca8673005ec0caf4106343a3 | | [apim\_pagopa\_qi\_fdr\_kpi\_service\_api](#module\_apim\_pagopa\_qi\_fdr\_kpi\_service\_api) | ./.terraform/modules/__v3__/api_management_api | n/a | +| [apim\_pagopa\_qi\_smo\_jira\_tickets\_service\_api](#module\_apim\_pagopa\_qi\_smo\_jira\_tickets\_service\_api) | ./.terraform/modules/__v3__/api_management_api | n/a | | [apim\_qi\_fdr\_product](#module\_apim\_qi\_fdr\_product) | ./.terraform/modules/__v3__/api_management_product | n/a | | [apim\_qi\_product](#module\_apim\_qi\_product) | ./.terraform/modules/__v3__/api_management_product | n/a | +| [apim\_qi\_smo\_jira\_tickets\_product](#module\_apim\_qi\_smo\_jira\_tickets\_product) | ./.terraform/modules/__v3__/api_management_product | n/a | | [pod\_identity](#module\_pod\_identity) | ./.terraform/modules/__v3__/kubernetes_pod_identity | n/a | | [tls\_checker](#module\_tls\_checker) | ./.terraform/modules/__v3__/tls_checker | n/a | @@ -28,6 +30,7 @@ | Name | Type | |------|------| | [azurerm_api_management_api_version_set.pagopa_qi_fdr_kpi_service_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | resource | +| [azurerm_api_management_api_version_set.pagopa_qi_smo_jira_tickets_service_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | 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 | diff --git a/src/domains/qi-common/02_security.tf b/src/domains/qi-common/02_security.tf index 62aa1ef5d9..39c5dbd39b 100644 --- a/src/domains/qi-common/02_security.tf +++ b/src/domains/qi-common/02_security.tf @@ -170,3 +170,31 @@ module "letsencrypt_qi" { key_vault_name = "${local.product}-${var.domain}-kv" subscription_name = local.subscription_name } + +### TODO migrate in SOPS +resource "azurerm_key_vault_secret" "azure_data_explorer_re_client_id" { + name = "azure-data-explorer-re-client-id" + value = "" + content_type = "text/plain" + key_vault_id = module.key_vault.id + + lifecycle { + ignore_changes = [ + value, + ] + } +} + +### TODO migrate in SOPS +resource "azurerm_key_vault_secret" "azure_data_explorer_re_application_key" { + name = "azure-data-explorer-re-application-key" + value = "" + content_type = "text/plain" + key_vault_id = module.key_vault.id + + lifecycle { + ignore_changes = [ + value, + ] + } +} diff --git a/src/domains/qi-common/README.md b/src/domains/qi-common/README.md index 005bc3cefc..4b73f15e72 100644 --- a/src/domains/qi-common/README.md +++ b/src/domains/qi-common/README.md @@ -27,6 +27,8 @@ | [azurerm_key_vault_access_policy.azdevops_iac_managed_identities](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | | [azurerm_key_vault_access_policy.azdevops_iac_policy](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_access_policy) | resource | | [azurerm_key_vault_secret.ai_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.azure_data_explorer_re_application_key](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.azure_data_explorer_re_client_id](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_alert_qi_rx_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_alert_qi_rx_debug_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_alert_qi_rx_pdnd_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | From 1b97b96ce39726cee3729df7e277018777f64f33 Mon Sep 17 00:00:00 2001 From: Simone infante <52280205+infantesimone@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:08:41 +0100 Subject: [PATCH 07/11] chore(secret-fdr-kpi-elk): PPABV-106 add secret for elk integration - qi domain (#2692) * feat: add new secret for elk * chore: update docs --- src/domains/ecommerce-app/README.md | 10 +++++----- src/domains/ecommerce-common/README.md | 14 +++++++------- src/domains/qi-common/02_security.tf | 13 +++++++++++++ src/domains/qi-common/README.md | 1 + 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/domains/ecommerce-app/README.md b/src/domains/ecommerce-app/README.md index 7045d5b712..8a2798a451 100644 --- a/src/domains/ecommerce-app/README.md +++ b/src/domains/ecommerce-app/README.md @@ -201,13 +201,13 @@ | [log\_analytics\_workspace\_name](#input\_log\_analytics\_workspace\_name) | Specifies the name of the Log Analytics Workspace. | `string` | n/a | yes | | [log\_analytics\_workspace\_resource\_group\_name](#input\_log\_analytics\_workspace\_resource\_group\_name) | The name of the resource group in which the Log Analytics workspace is located in. | `string` | n/a | yes | | [monitor\_resource\_group\_name](#input\_monitor\_resource\_group\_name) | Monitor resource group name | `string` | n/a | yes | -| [pagopa\_vpn](#input\_pagopa\_vpn) | pagoPA on prem VPN |
object({
ips = list(string)
})
| n/a | yes | -| [pagopa\_vpn\_dr](#input\_pagopa\_vpn\_dr) | pagoPA on prem VPN DR |
object({
ips = list(string)
})
| n/a | yes | +| [pagopa\_vpn](#input\_pagopa\_vpn) | pagoPA on prem VPN |
object({
ips = list(string)
})
| n/a | yes | +| [pagopa\_vpn\_dr](#input\_pagopa\_vpn\_dr) | pagoPA on prem VPN DR |
object({
ips = list(string)
})
| n/a | yes | | [pdv\_api\_base\_path](#input\_pdv\_api\_base\_path) | Personal data vault api base path | `string` | `null` | no | -| [pod\_disruption\_budgets](#input\_pod\_disruption\_budgets) | Pod disruption budget for domain namespace |
map(object({
name = optional(string, null)
minAvailable = optional(number, null)
matchLabels = optional(map(any), {})
}))
| `{}` | no | +| [pod\_disruption\_budgets](#input\_pod\_disruption\_budgets) | Pod disruption budget for domain namespace |
map(object({
name = optional(string, null)
minAvailable = optional(number, null)
matchLabels = optional(map(any), {})
}))
| `{}` | no | | [prefix](#input\_prefix) | n/a | `string` | n/a | yes | -| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | -| [tls\_cert\_check\_helm](#input\_tls\_cert\_check\_helm) | tls cert helm chart configuration |
object({
chart_version = string,
image_name = string,
image_tag = string
})
| n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | +| [tls\_cert\_check\_helm](#input\_tls\_cert\_check\_helm) | tls cert helm chart configuration |
object({
chart_version = string,
image_name = string,
image_tag = string
})
| n/a | yes | ## Outputs diff --git a/src/domains/ecommerce-common/README.md b/src/domains/ecommerce-common/README.md index 2f2e98d435..badaaf8f69 100644 --- a/src/domains/ecommerce-common/README.md +++ b/src/domains/ecommerce-common/README.md @@ -158,13 +158,13 @@ | [cidr\_subnet\_cosmosdb\_ecommerce](#input\_cidr\_subnet\_cosmosdb\_ecommerce) | Cosmos DB address space for ecommerce. | `list(string)` | n/a | yes | | [cidr\_subnet\_redis\_ecommerce](#input\_cidr\_subnet\_redis\_ecommerce) | Redis DB address space for ecommerce. | `list(string)` | n/a | yes | | [cidr\_subnet\_storage\_ecommerce](#input\_cidr\_subnet\_storage\_ecommerce) | Azure storage DB address space for ecommerce. | `list(string)` | n/a | yes | -| [cosmos\_mongo\_db\_ecommerce\_history\_params](#input\_cosmos\_mongo\_db\_ecommerce\_history\_params) | n/a |
object({
enable_serverless = bool
enable_autoscaling = bool
throughput = number
max_throughput = number
})
| n/a | yes | -| [cosmos\_mongo\_db\_ecommerce\_params](#input\_cosmos\_mongo\_db\_ecommerce\_params) | n/a |
object({
enable_serverless = bool
enable_autoscaling = bool
throughput = number
max_throughput = number
})
| n/a | yes | -| [cosmos\_mongo\_db\_params](#input\_cosmos\_mongo\_db\_params) | n/a |
object({
enabled = bool
capabilities = list(string)
offer_type = string
server_version = string
kind = string
consistency_policy = object({
consistency_level = string
max_interval_in_seconds = number
max_staleness_prefix = number
})
enable_free_tier = bool
main_geo_location_zone_redundant = bool
additional_geo_locations = list(object({
location = string
failover_priority = number
zone_redundant = bool
}))
private_endpoint_enabled = bool
public_network_access_enabled = bool
is_virtual_network_filter_enabled = bool
backup_continuous_enabled = bool
enable_provisioned_throughput_exceeded_alert = bool
})
| n/a | yes | +| [cosmos\_mongo\_db\_ecommerce\_history\_params](#input\_cosmos\_mongo\_db\_ecommerce\_history\_params) | n/a |
object({
enable_serverless = bool
enable_autoscaling = bool
throughput = number
max_throughput = number
})
| n/a | yes | +| [cosmos\_mongo\_db\_ecommerce\_params](#input\_cosmos\_mongo\_db\_ecommerce\_params) | n/a |
object({
enable_serverless = bool
enable_autoscaling = bool
throughput = number
max_throughput = number
})
| n/a | yes | +| [cosmos\_mongo\_db\_params](#input\_cosmos\_mongo\_db\_params) | n/a |
object({
enabled = bool
capabilities = list(string)
offer_type = string
server_version = string
kind = string
consistency_policy = object({
consistency_level = string
max_interval_in_seconds = number
max_staleness_prefix = number
})
enable_free_tier = bool
main_geo_location_zone_redundant = bool
additional_geo_locations = list(object({
location = string
failover_priority = number
zone_redundant = bool
}))
private_endpoint_enabled = bool
public_network_access_enabled = bool
is_virtual_network_filter_enabled = bool
backup_continuous_enabled = bool
enable_provisioned_throughput_exceeded_alert = bool
})
| n/a | yes | | [dns\_zone\_internal\_prefix](#input\_dns\_zone\_internal\_prefix) | The dns subdomain. | `string` | `null` | no | | [domain](#input\_domain) | n/a | `string` | n/a | yes | -| [ecommerce\_storage\_deadletter\_params](#input\_ecommerce\_storage\_deadletter\_params) | Azure storage DB params for ecommerce deadletter resources. |
object({
enabled = bool,
kind = string,
tier = string,
account_replication_type = string,
advanced_threat_protection = bool,
retention_days = number,
public_network_access_enabled = bool,
})
|
{
"account_replication_type": "LRS",
"advanced_threat_protection": true,
"enabled": false,
"kind": "StorageV2",
"public_network_access_enabled": false,
"retention_days": 7,
"tier": "Standard"
}
| no | -| [ecommerce\_storage\_transient\_params](#input\_ecommerce\_storage\_transient\_params) | Azure storage DB params for ecommerce transient resources. |
object({
enabled = bool,
kind = string,
tier = string,
account_replication_type = string,
advanced_threat_protection = bool,
retention_days = number,
public_network_access_enabled = bool,
})
|
{
"account_replication_type": "LRS",
"advanced_threat_protection": true,
"enabled": false,
"kind": "StorageV2",
"public_network_access_enabled": false,
"retention_days": 7,
"tier": "Standard"
}
| no | +| [ecommerce\_storage\_deadletter\_params](#input\_ecommerce\_storage\_deadletter\_params) | Azure storage DB params for ecommerce deadletter resources. |
object({
enabled = bool,
kind = string,
tier = string,
account_replication_type = string,
advanced_threat_protection = bool,
retention_days = number,
public_network_access_enabled = bool,
})
|
{
"account_replication_type": "LRS",
"advanced_threat_protection": true,
"enabled": false,
"kind": "StorageV2",
"public_network_access_enabled": false,
"retention_days": 7,
"tier": "Standard"
}
| no | +| [ecommerce\_storage\_transient\_params](#input\_ecommerce\_storage\_transient\_params) | Azure storage DB params for ecommerce transient resources. |
object({
enabled = bool,
kind = string,
tier = string,
account_replication_type = string,
advanced_threat_protection = bool,
retention_days = number,
public_network_access_enabled = bool,
})
|
{
"account_replication_type": "LRS",
"advanced_threat_protection": true,
"enabled": false,
"kind": "StorageV2",
"public_network_access_enabled": false,
"retention_days": 7,
"tier": "Standard"
}
| no | | [enable\_iac\_pipeline](#input\_enable\_iac\_pipeline) | If true create the key vault policy to allow used by azure devops iac pipelines. | `bool` | `false` | no | | [env](#input\_env) | n/a | `string` | n/a | yes | | [env\_short](#input\_env\_short) | n/a | `string` | n/a | yes | @@ -177,8 +177,8 @@ | [log\_analytics\_workspace\_resource\_group\_name](#input\_log\_analytics\_workspace\_resource\_group\_name) | The name of the resource group in which the Log Analytics workspace is located in. | `string` | n/a | yes | | [monitor\_resource\_group\_name](#input\_monitor\_resource\_group\_name) | Monitor resource group name | `string` | n/a | yes | | [prefix](#input\_prefix) | n/a | `string` | n/a | yes | -| [redis\_ecommerce\_params](#input\_redis\_ecommerce\_params) | n/a |
object({
capacity = number
sku_name = string
family = string
version = string
ha_enabled = bool
zones = list(number)
})
| n/a | yes | -| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | +| [redis\_ecommerce\_params](#input\_redis\_ecommerce\_params) | n/a |
object({
capacity = number
sku_name = string
family = string
version = string
ha_enabled = bool
zones = list(number)
})
| n/a | yes | +| [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | ## Outputs diff --git a/src/domains/qi-common/02_security.tf b/src/domains/qi-common/02_security.tf index 39c5dbd39b..b4d8050b2b 100644 --- a/src/domains/qi-common/02_security.tf +++ b/src/domains/qi-common/02_security.tf @@ -198,3 +198,16 @@ resource "azurerm_key_vault_secret" "azure_data_explorer_re_application_key" { ] } } + +### TODO migrate in SOPS +resource "azurerm_key_vault_secret" "elastic_otel_token_header" { + name = "elastic-otel-token-header" + value = "" + key_vault_id = module.key_vault.id + + lifecycle { + ignore_changes = [ + value, + ] + } +} \ No newline at end of file diff --git a/src/domains/qi-common/README.md b/src/domains/qi-common/README.md index 4b73f15e72..ae5b26fd98 100644 --- a/src/domains/qi-common/README.md +++ b/src/domains/qi-common/README.md @@ -33,6 +33,7 @@ | [azurerm_key_vault_secret.ehub_alert_qi_rx_debug_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_alert_qi_rx_pdnd_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.ehub_alert_qi_tx_connection_string](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | +| [azurerm_key_vault_secret.elastic_otel_token_header](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/key_vault_secret) | resource | | [azurerm_key_vault_secret.qi_azurewebjobsstorage](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_resource_group.qi_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource | From 6babcaf88b075930ff2f748e63d0f8f457206841 Mon Sep 17 00:00:00 2001 From: ffppa Date: Mon, 23 Dec 2024 12:11:35 +0100 Subject: [PATCH 08/11] feat: [PAYMCLOUD-191] Upgrade aks platform module to v8.66.1 (#2693) Update AKS module version to v8.66.1 to enanche default metrics alerts. Upgraded the Terraform module for the Kubernetes cluster from v8.58.0 to v8.66.1. This ensures the use of the latest features, bug fixes, and improvements from the module. Signed-off-by: Fabio Felici --- src/aks-platform/02_aks.tf | 2 +- src/aks-platform/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/aks-platform/02_aks.tf b/src/aks-platform/02_aks.tf index 8094c2ff90..43e4c17330 100644 --- a/src/aks-platform/02_aks.tf +++ b/src/aks-platform/02_aks.tf @@ -7,7 +7,7 @@ resource "azurerm_resource_group" "aks_rg" { module "aks" { - source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_cluster?ref=v8.58.0" + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_cluster?ref=v8.66.1" name = local.aks_name location = var.location diff --git a/src/aks-platform/README.md b/src/aks-platform/README.md index a2101f84cc..ccde185147 100644 --- a/src/aks-platform/README.md +++ b/src/aks-platform/README.md @@ -15,7 +15,7 @@ | Name | Source | Version | |------|--------|---------| -| [aks](#module\_aks) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_cluster | v8.58.0 | +| [aks](#module\_aks) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_cluster | v8.66.1 | | [aks\_snet](#module\_aks\_snet) | git::https://github.com/pagopa/terraform-azurerm-v3.git//subnet | v8.53.0 | | [keda\_pod\_identity](#module\_keda\_pod\_identity) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity | v8.53.0 | | [monitoring\_pod\_identity](#module\_monitoring\_pod\_identity) | git::https://github.com/pagopa/terraform-azurerm-v3.git//kubernetes_pod_identity | v8.53.0 | From f37375819680f84ca106b980f37082b170b6ce15 Mon Sep 17 00:00:00 2001 From: Marco Mari <130982006+mamari90@users.noreply.github.com> Date: Mon, 23 Dec 2024 18:32:16 +0100 Subject: [PATCH 09/11] feat: Added nexi sysntetic tests (#2696) added nexi sysntetic tests --- src/next-core/03_tools_cae.tf | 16 +++ src/next-core/99_variables.tf | 10 ++ src/next-core/README.md | 2 + src/next-core/env/dev/terraform.tfvars | 9 ++ src/next-core/env/prod/terraform.tfvars | 9 ++ src/next-core/env/uat/terraform.tfvars | 11 ++ src/synthetic-monitoring/02_monitoring.tf | 1 + src/synthetic-monitoring/99_variables.tf | 5 + src/synthetic-monitoring/README.md | 1 + .../env/weu-dev/terraform.tfvars | 1 + .../env/weu-prod/terraform.tfvars | 2 +- .../env/weu-uat/terraform.tfvars | 2 + .../monitoring_configuration.json.tpl | 107 ++++++++++++++++-- 13 files changed, 167 insertions(+), 9 deletions(-) diff --git a/src/next-core/03_tools_cae.tf b/src/next-core/03_tools_cae.tf index f60af24dd7..6285f51368 100644 --- a/src/next-core/03_tools_cae.tf +++ b/src/next-core/03_tools_cae.tf @@ -23,3 +23,19 @@ resource "azurerm_container_app_environment" "tools_cae" { log_analytics_workspace_id = azurerm_log_analytics_workspace.log_analytics_workspace.id infrastructure_subnet_id = azurerm_subnet.tools_cae_subnet.id } + + +module "route_table_peering_nexi" { + source = "git::https://github.com/pagopa/terraform-azurerm-v3.git//route_table?ref=v8.33.0" + + name = format("%s-tools-to-nexi-rt", local.product) + location = var.location + resource_group_name = module.vnet.resource_group_name + disable_bgp_route_propagation = false + + subnet_ids = [azurerm_subnet.tools_cae_subnet.id] + + routes = var.route_tools + + tags = var.tags +} diff --git a/src/next-core/99_variables.tf b/src/next-core/99_variables.tf index 9eb81a424b..7d63227192 100644 --- a/src/next-core/99_variables.tf +++ b/src/next-core/99_variables.tf @@ -1116,3 +1116,13 @@ variable "enable_node_forwarder_debug_instance" { default = false description = "Enable the creation of a separate 'debug' instance of node forwarder" } + +variable "route_tools" { + type = list(object({ + name = string + address_prefix = string + next_hop_type = string + next_hop_in_ip_address = string + })) + description = "AKS routing table" +} diff --git a/src/next-core/README.md b/src/next-core/README.md index a7bf553441..14ded2b70b 100644 --- a/src/next-core/README.md +++ b/src/next-core/README.md @@ -50,6 +50,7 @@ | [node\_forwarder\_snet](#module\_node\_forwarder\_snet) | git::https://github.com/pagopa/terraform-azurerm-v3.git//subnet | v7.69.1 | | [redis](#module\_redis) | git::https://github.com/pagopa/terraform-azurerm-v3.git//redis_cache | v7.50.0 | | [redis\_snet](#module\_redis\_snet) | git::https://github.com/pagopa/terraform-azurerm-v3.git//subnet | v7.50.0 | +| [route\_table\_peering\_nexi](#module\_route\_table\_peering\_nexi) | git::https://github.com/pagopa/terraform-azurerm-v3.git//route_table | v8.33.0 | | [route\_table\_peering\_sia](#module\_route\_table\_peering\_sia) | git::https://github.com/pagopa/terraform-azurerm-v3.git//route_table | v7.62.0 | | [vnet](#module\_vnet) | git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network | v7.62.0 | | [vnet\_core\_peering](#module\_vnet\_core\_peering) | git::https://github.com/pagopa/terraform-azurerm-v3.git//virtual_network_peering | v8.32.0 | @@ -492,6 +493,7 @@ | [redis\_version](#input\_redis\_version) | The version of Redis to use: 4 (deprecated) or 6 | `string` | `"6"` | no | | [redis\_zones](#input\_redis\_zones) | (Optional) Zone list where redis will be deployed | `list(string)` |
[
"1"
]
| no | | [route\_table\_peering\_sia\_additional\_routes](#input\_route\_table\_peering\_sia\_additional\_routes) | (Optional) additional routes for route table peering sia |
list(object({
address_prefix = string
name = string
next_hop_in_ip_address = string
next_hop_type = string
}
))
| `[]` | no | +| [route\_tools](#input\_route\_tools) | AKS routing table |
list(object({
name = string
address_prefix = string
next_hop_type = string
next_hop_in_ip_address = string
}))
| n/a | yes | | [schema\_ip\_nexi](#input\_schema\_ip\_nexi) | Nodo Pagamenti Nexi schema://ip | `string` | n/a | yes | | [storage\_queue\_private\_endpoint\_enabled](#input\_storage\_queue\_private\_endpoint\_enabled) | Whether private endpoint for Azure Storage Queues is enabled | `bool` | `true` | no | | [tags](#input\_tags) | n/a | `map(any)` |
{
"CreatedBy": "Terraform"
}
| no | diff --git a/src/next-core/env/dev/terraform.tfvars b/src/next-core/env/dev/terraform.tfvars index 5ec39f48b8..aae225e02e 100644 --- a/src/next-core/env/dev/terraform.tfvars +++ b/src/next-core/env/dev/terraform.tfvars @@ -750,3 +750,12 @@ apicfg_selfcare_integ_service_path_value = "pagopa-api-config-selfcare-integrati law_sku = "PerGB2018" law_retention_in_days = 30 law_daily_quota_gb = 10 +route_tools = [ + { + # dev aks nodo oncloud + name = "tools-outbound-to-nexy-nodo" + address_prefix = "10.70.66.200/32" + next_hop_type = "VirtualAppliance" + next_hop_in_ip_address = "10.230.8.150" + } +] diff --git a/src/next-core/env/prod/terraform.tfvars b/src/next-core/env/prod/terraform.tfvars index 430db73191..ca2f9d1e58 100644 --- a/src/next-core/env/prod/terraform.tfvars +++ b/src/next-core/env/prod/terraform.tfvars @@ -854,3 +854,12 @@ monitor_env_test_urls = [ ] enable_node_forwarder_debug_instance = false +route_tools = [ + { + # dev aks nodo oncloud + name = "tools-outbound-to-nexy-nodo" + address_prefix = "10.79.20.34/32" + next_hop_type = "VirtualAppliance" + next_hop_in_ip_address = "10.230.10.150" + } +] diff --git a/src/next-core/env/uat/terraform.tfvars b/src/next-core/env/uat/terraform.tfvars index cf2bff8b4f..898bbb60a3 100644 --- a/src/next-core/env/uat/terraform.tfvars +++ b/src/next-core/env/uat/terraform.tfvars @@ -801,3 +801,14 @@ app_gateway_allowed_paths_upload = [ "/fdr-legacy/nodo-per-pa/.*", "/fdr-psp/.*" # Added temporarily as workaround for bug https://pagopa.atlassian.net/browse/PAGOPA-2263 ] + + +route_tools = [ + { + # dev aks nodo oncloud + name = "tools-outbound-to-nexy-nodo" + address_prefix = "10.70.74.200/32" + next_hop_type = "VirtualAppliance" + next_hop_in_ip_address = "10.230.9.150" + } +] diff --git a/src/synthetic-monitoring/02_monitoring.tf b/src/synthetic-monitoring/02_monitoring.tf index ce26d3125a..347f4f4c2a 100644 --- a/src/synthetic-monitoring/02_monitoring.tf +++ b/src/synthetic-monitoring/02_monitoring.tf @@ -45,5 +45,6 @@ module "monitoring_function" { check_position_body = var.check_position_body alert_enabled = var.synthetic_alerts_enabled verify_payment_internal_expected_outcome = var.verify_payment_internal_expected_outcome + nexi_node_ip = var.nexi_node_ip }) } diff --git a/src/synthetic-monitoring/99_variables.tf b/src/synthetic-monitoring/99_variables.tf index 5657e7cf84..ca617aca1c 100644 --- a/src/synthetic-monitoring/99_variables.tf +++ b/src/synthetic-monitoring/99_variables.tf @@ -113,3 +113,8 @@ variable "verify_payment_internal_expected_outcome" { type = string description = "(Required) Expected outcome for verify payment notice internal" } + +variable "nexi_node_ip" { + type = string + description = "Nodo Pagamenti Nexi ip" +} diff --git a/src/synthetic-monitoring/README.md b/src/synthetic-monitoring/README.md index b5c7e55b84..51d153d11e 100644 --- a/src/synthetic-monitoring/README.md +++ b/src/synthetic-monitoring/README.md @@ -51,6 +51,7 @@ | [law\_sku](#input\_law\_sku) | Sku of the Log Analytics Workspace | `string` | `"PerGB2018"` | no | | [location](#input\_location) | One of westeurope, northeurope | `string` | n/a | yes | | [location\_short](#input\_location\_short) | One of wue, neu | `string` | n/a | yes | +| [nexi\_node\_ip](#input\_nexi\_node\_ip) | Nodo Pagamenti Nexi ip | `string` | n/a | yes | | [prefix](#input\_prefix) | n/a | `string` | n/a | yes | | [self\_alert\_enabled](#input\_self\_alert\_enabled) | (Optional) enables the alert on the function itself | `bool` | `true` | no | | [storage\_account\_replication\_type](#input\_storage\_account\_replication\_type) | (Required) table storage replication type | `string` | n/a | yes | diff --git a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars index 58f63a14f0..0a281018dd 100644 --- a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars @@ -39,3 +39,4 @@ check_position_body = { notice_number = "310115803416020234" } verify_payment_internal_expected_outcome = "KO" +nexi_node_ip = "10.70.66.200" diff --git a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars index 438e57f768..0d854b3e54 100644 --- a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars @@ -35,5 +35,5 @@ check_position_body = { notice_number = "001000000136265862" } verify_payment_internal_expected_outcome = "OK" - +nexi_node_ip = "10.79.20.34" diff --git a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars index 283d8731e5..ad29c361f9 100644 --- a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars @@ -35,3 +35,5 @@ check_position_body = { notice_number = "351173232582781477" } verify_payment_internal_expected_outcome = "KO" +nexi_node_ip = "10.70.74.200" + diff --git a/src/synthetic-monitoring/monitoring_configuration.json.tpl b/src/synthetic-monitoring/monitoring_configuration.json.tpl index 2654461720..36e8bee9d5 100644 --- a/src/synthetic-monitoring/monitoring_configuration.json.tpl +++ b/src/synthetic-monitoring/monitoring_configuration.json.tpl @@ -710,6 +710,30 @@ "enabled" : ${alert_enabled} } }, + { + "apiName" : "checkPosition", + "appName" : "nodo", + "url" : "https://${nexi_node_ip}/checkPosition", + "type" : "nexi", + "checkCertificate" : true, + "method" : "POST", + "expectedCodes" : ["200"], + "body": {"positionslist": [{"fiscalCode": "${check_position_body.fiscal_code}", "noticeNumber": "${check_position_body.notice_number}"}]}, + "expectedBody": {"outcome":"OK"}, + "bodyCompareStrategy": "contains", + "headers": { + "Content-Type": "application/json", + "ndphost": "nodo-${env_short}.nexigroup.com", + "Host": "nodo-dei-pagamenti.npc.sia.eu" + }, + "tags" : { + "description" : "pagopa nodo ${env_name} check position" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, { "apiName" : "verifyPaymentNoticeExternal", "appName" : "nodo", @@ -774,9 +798,8 @@ "enabled" : ${alert_enabled} } }, - { - "apiName" : "verifyPaymentNoticeExternal", + "apiName" : "verifyPaymentNoticeInternal", "appName" : "nodo", "url" : "https://${appgw_public_ip}/nodo-auth/node-for-psp/v1", "type" : "appgw", @@ -787,13 +810,13 @@ "soapenv:Envelope": { "soapenv:Body": { "nfp:verifyPaymentNoticeRes": { - "outcome": "KO" + "outcome": "${verify_payment_internal_expected_outcome}" } } } }, "bodyCompareStrategy": "xmlContains", - "body": "ABI181640265489002502654890025_01PLACEHOLDER97532760580302704889233205169", + "body": " CIPBITMM 13212880150 13212880150_10 PLACEHOLDER 83000970612 302000000014360604 ", "headers": { "SOAPAction": "verifyPaymentNotice", "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", @@ -801,7 +824,7 @@ "Host": "${api_dot_env_name}.platform.pagopa.it" }, "tags" : { - "description" : "pagopa nodo ${env_name} verify payment notice to external service" + "description" : "pagopa nodo ${env_name} verify payment notice to internal service" }, "durationLimit" : 10000, "alertConfiguration" : { @@ -811,8 +834,8 @@ { "apiName" : "verifyPaymentNoticeInternal", "appName" : "nodo", - "url" : "https://${appgw_public_ip}/nodo-auth/node-for-psp/v1", - "type" : "appgw", + "url" : "https://${nexi_node_ip}/webservices/input", + "type" : "nexi", "checkCertificate" : true, "method" : "POST", "expectedCodes" : ["200"], @@ -827,6 +850,39 @@ }, "bodyCompareStrategy": "xmlContains", "body": " CIPBITMM 13212880150 13212880150_10 PLACEHOLDER 83000970612 302000000014360604 ", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Content-Type": "application/xml", + "ndphost": "nodo-${env_short}.nexigroup.com", + "Host": "nodo-dei-pagamenti.npc.sia.eu" + }, + "tags" : { + "description" : "pagopa nodo ${env_name} verify payment notice to internal service" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "verifyPaymentNoticeExternal", + "appName" : "nodo", + "url" : "https://${appgw_public_ip}/nodo-auth/node-for-psp/v1", + "type" : "appgw", + "checkCertificate" : true, + "method" : "POST", + "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "KO" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": "ABI181640265489002502654890025_01PLACEHOLDER97532760580302704889233205169", "headers": { "SOAPAction": "verifyPaymentNotice", "Ocp-Apim-Subscription-Key": "${nodo_subscription_key}", @@ -834,7 +890,40 @@ "Host": "${api_dot_env_name}.platform.pagopa.it" }, "tags" : { - "description" : "pagopa nodo ${env_name} verify payment notice to internal service" + "description" : "pagopa nodo ${env_name} verify payment notice to external service" + }, + "durationLimit" : 10000, + "alertConfiguration" : { + "enabled" : ${alert_enabled} + } + }, + { + "apiName" : "verifyPaymentNoticeExternal", + "appName" : "nodo", + "url" : "https://${nexi_node_ip}/webservices/input", + "type" : "nexi", + "checkCertificate" : true, + "method" : "POST", + "expectedCodes" : ["200"], + "expectedBody": { + "soapenv:Envelope": { + "soapenv:Body": { + "nfp:verifyPaymentNoticeRes": { + "outcome": "KO" + } + } + } + }, + "bodyCompareStrategy": "xmlContains", + "body": "ABI181640265489002502654890025_01PLACEHOLDER97532760580302704889233205169", + "headers": { + "SOAPAction": "verifyPaymentNotice", + "Content-Type": "application/xml", + "ndphost": "nodo-${env_short}.nexigroup.com", + "Host": "nodo-dei-pagamenti.npc.sia.eu" + }, + "tags" : { + "description" : "pagopa nodo ${env_name} verify payment notice to external service trough nexi" }, "durationLimit" : 10000, "alertConfiguration" : { @@ -842,4 +931,6 @@ } } + + ] From 7ce59917994635359c33b78bafb0df5b17984e00 Mon Sep 17 00:00:00 2001 From: Alessio Cialini <63233981+alessio-cialini@users.noreply.github.com> Date: Tue, 24 Dec 2024 08:34:04 +0100 Subject: [PATCH 10/11] fix: 00_alert_gpd_ingestion.tf (#2694) * fix: 00_alert_gpd_ingestion.tf * fix: 00_alert_gpd_ingestion.tf * fix --------- Co-authored-by: pasqualespica --- src/domains/gps-app/00_alert_gpd_ingestion.tf | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/domains/gps-app/00_alert_gpd_ingestion.tf b/src/domains/gps-app/00_alert_gpd_ingestion.tf index bb9c31de11..06811cbc74 100644 --- a/src/domains/gps-app/00_alert_gpd_ingestion.tf +++ b/src/domains/gps-app/00_alert_gpd_ingestion.tf @@ -2,16 +2,16 @@ locals { fn_name_for_alerts_exceptions = var.env_short != "p" ? [] : [ { - id : "paymentoptionprocessor" - name : "PaymentOptionProcessor" + id : "cdc-raw-auto.apd.payment_option" + name : "cdc-raw-auto.apd.payment_option" }, { - id : "paymentpositionprocessor" - name : "PaymentPositionProcessor" + id : "cdc-raw-auto.apd.payment_position" + name : "cdc-raw-auto.apd.payment_position" }, { - id : "transferprocessor" - name : "TransferProcessor" + id : "cdc-raw-auto.apd.transfer" + name : "cdc-raw-auto.apd.transfer" } ] @@ -41,7 +41,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-av query = format(<<-QUERY let threshold = 0.99; union traces, exceptions -| where cloud_RoleName == "pagopa-gpd-ingestion-manager" +| where cloud_RoleName == "pagopagpdingestionmanager" | where operation_Name == "%s" //| summarize count() by operation_Name, itemType | summarize @@ -75,15 +75,15 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-er custom_webhook_payload = "{}" } data_source_id = data.azurerm_application_insights.application_insights.id - description = "Error on JsonProcessing gpd-ingestion ${each.value.name}" + description = "${each.value.name} ingestion error JsonProcessingException" enabled = true query = format(<<-QUERY traces | where cloud_RoleName == "%s" | order by timestamp desc - | where message contains "function error JsonProcessingException" + | where message contains "${each.value.name} ingestion error JsonProcessingException" QUERY - , "pagopa-gpd-ingestion-manager" + , "pagopagpdingestionmanager" ) severity = 2 // Sev 2 Warning frequency = 15 @@ -115,7 +115,7 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-er | order by timestamp desc | where message contains "function error Generic exception at" QUERY - , "pagopa-gpd-ingestion-manager" + , "pagopagpdingestionmanager" ) severity = 2 // Sev 2 Warning frequency = 15 @@ -139,15 +139,15 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-er custom_webhook_payload = "{}" } data_source_id = data.azurerm_application_insights.application_insights.id - description = "Error on PDVTokenizerException gpd-ingestion ${each.value.name}" + description = "${each.value.name} ingestion error PDVTokenizerException" enabled = true query = format(<<-QUERY traces | where cloud_RoleName == "%s" | order by timestamp desc - | where message contains "function error PDVTokenizerException exception at" + | where message contains "${each.value.name} ingestion error PDVTokenizerException" QUERY - , "pagopa-gpd-ingestion-manager" + , "pagopagpdingestionmanager" ) severity = 2 // Sev 2 Warning frequency = 15 @@ -171,15 +171,15 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-er custom_webhook_payload = "{}" } data_source_id = data.azurerm_application_insights.application_insights.id - description = "Error on PDVTokenizerUnexpectedException gpd-ingestion ${each.value.name}" + description = "${each.value.name} ingestion error PDVTokenizerUnexpectedException" enabled = true query = format(<<-QUERY traces | where cloud_RoleName == "%s" | order by timestamp desc - | where message contains "function error PDVTokenizerUnexpectedException exception at" + | where message contains "${each.value.name} ingestion error PDVTokenizerUnexpectedException" QUERY - , "pagopa-gpd-ingestion-manager" + , "pagopagpdingestionmanager" ) severity = 2 // Sev 2 Warning frequency = 15 @@ -209,17 +209,18 @@ resource "azurerm_monitor_scheduled_query_rules_alert" "gpd-ingestion-manager-er query = format(<<-QUERY exceptions | where cloud_RoleName == "%s" - | where outerMessage contains "Exception while executing function: Functions.${each.value.name}" + //| where outerMessage contains "${each.value.name} ingestion error Generic exception" + | where operation_Name startswith "${each.value.name}" | order by timestamp desc QUERY - , "pagopa-gpd-ingestion-manager" # from HELM's parameter WEBSITE_SITE_NAME + , "pagopagpdingestionmanager" # from HELM's parameter WEBSITE_SITE_NAME ) severity = 2 // Sev 2 Warning frequency = 15 time_window = 15 trigger { operator = "GreaterThanOrEqual" - threshold = 20 + threshold = 30 } } From 3d8de49773993d7abcb3178a9469a7ad62cc6691 Mon Sep 17 00:00:00 2001 From: Marco Mari <130982006+mamari90@users.noreply.github.com> Date: Tue, 24 Dec 2024 16:19:17 +0100 Subject: [PATCH 11/11] feat: Upgraded synthetic module, disabled fdr and customized nexi tests (#2697) upgraded synthetic module, disabled fdr and customized nexi tests --- src/synthetic-monitoring/02_monitoring.tf | 2 ++ src/synthetic-monitoring/99_main.tf | 4 ++-- src/synthetic-monitoring/99_variables.tf | 4 ++++ src/synthetic-monitoring/README.md | 3 ++- src/synthetic-monitoring/env/weu-dev/terraform.tfvars | 1 + src/synthetic-monitoring/env/weu-prod/terraform.tfvars | 3 ++- src/synthetic-monitoring/env/weu-uat/terraform.tfvars | 2 +- .../monitoring_configuration.json.tpl | 8 +++++--- 8 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/synthetic-monitoring/02_monitoring.tf b/src/synthetic-monitoring/02_monitoring.tf index 347f4f4c2a..0346312638 100644 --- a/src/synthetic-monitoring/02_monitoring.tf +++ b/src/synthetic-monitoring/02_monitoring.tf @@ -46,5 +46,7 @@ module "monitoring_function" { alert_enabled = var.synthetic_alerts_enabled verify_payment_internal_expected_outcome = var.verify_payment_internal_expected_outcome nexi_node_ip = var.nexi_node_ip + fdr_enabled = var.env == "prod" ? false : true + nexi_ndp_host = var.nexi_ndp_host }) } diff --git a/src/synthetic-monitoring/99_main.tf b/src/synthetic-monitoring/99_main.tf index acf8010b4e..519d7a62bd 100644 --- a/src/synthetic-monitoring/99_main.tf +++ b/src/synthetic-monitoring/99_main.tf @@ -34,6 +34,6 @@ data "azurerm_subscription" "current" {} data "azurerm_client_config" "current" {} module "__v3__" { - # v8.64.0 - source = "git::https://github.com/pagopa/terraform-azurerm-v3?ref=ff49c94c7bfb8f2867e550483d8acc125bf516a7" + # v8.67.0 + source = "git::https://github.com/pagopa/terraform-azurerm-v3?ref=bfddd6f7c18b5bd1aa1b367cefed6b5dc6f1242d" } diff --git a/src/synthetic-monitoring/99_variables.tf b/src/synthetic-monitoring/99_variables.tf index ca617aca1c..777ea85206 100644 --- a/src/synthetic-monitoring/99_variables.tf +++ b/src/synthetic-monitoring/99_variables.tf @@ -118,3 +118,7 @@ variable "nexi_node_ip" { type = string description = "Nodo Pagamenti Nexi ip" } +variable "nexi_ndp_host" { + type = string + description = "Nodo Pagamenti Nexi ip" +} diff --git a/src/synthetic-monitoring/README.md b/src/synthetic-monitoring/README.md index 51d153d11e..1e7bde0b84 100644 --- a/src/synthetic-monitoring/README.md +++ b/src/synthetic-monitoring/README.md @@ -14,7 +14,7 @@ | Name | Source | Version | |------|--------|---------| -| [\_\_v3\_\_](#module\_\_\_v3\_\_) | git::https://github.com/pagopa/terraform-azurerm-v3 | ff49c94c7bfb8f2867e550483d8acc125bf516a7 | +| [\_\_v3\_\_](#module\_\_\_v3\_\_) | git::https://github.com/pagopa/terraform-azurerm-v3 | bfddd6f7c18b5bd1aa1b367cefed6b5dc6f1242d | | [monitoring\_function](#module\_monitoring\_function) | ./.terraform/modules/__v3__/monitoring_function | n/a | | [secret\_core](#module\_secret\_core) | git::https://github.com/pagopa/terraform-azurerm-v3.git//key_vault_secrets_query | v8.54.0 | @@ -51,6 +51,7 @@ | [law\_sku](#input\_law\_sku) | Sku of the Log Analytics Workspace | `string` | `"PerGB2018"` | no | | [location](#input\_location) | One of westeurope, northeurope | `string` | n/a | yes | | [location\_short](#input\_location\_short) | One of wue, neu | `string` | n/a | yes | +| [nexi\_ndp\_host](#input\_nexi\_ndp\_host) | Nodo Pagamenti Nexi ip | `string` | n/a | yes | | [nexi\_node\_ip](#input\_nexi\_node\_ip) | Nodo Pagamenti Nexi ip | `string` | n/a | yes | | [prefix](#input\_prefix) | n/a | `string` | n/a | yes | | [self\_alert\_enabled](#input\_self\_alert\_enabled) | (Optional) enables the alert on the function itself | `bool` | `true` | no | diff --git a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars index 0a281018dd..c5ed32702c 100644 --- a/src/synthetic-monitoring/env/weu-dev/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-dev/terraform.tfvars @@ -40,3 +40,4 @@ check_position_body = { } verify_payment_internal_expected_outcome = "KO" nexi_node_ip = "10.70.66.200" +nexi_ndp_host = "nodo-p-sit.tst-npc.sia.eu" diff --git a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars index 0d854b3e54..070177fd6b 100644 --- a/src/synthetic-monitoring/env/weu-prod/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-prod/terraform.tfvars @@ -36,4 +36,5 @@ check_position_body = { } verify_payment_internal_expected_outcome = "OK" nexi_node_ip = "10.79.20.34" - +nexi_ndp_host = "nodo-p.npc.sia.eu" +nexi_ndp_host_2 = "nodo-dei-pagamenti.npc.sia.eu" diff --git a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars index ad29c361f9..b14614f6f5 100644 --- a/src/synthetic-monitoring/env/weu-uat/terraform.tfvars +++ b/src/synthetic-monitoring/env/weu-uat/terraform.tfvars @@ -36,4 +36,4 @@ check_position_body = { } verify_payment_internal_expected_outcome = "KO" nexi_node_ip = "10.70.74.200" - +nexi_ndp_host = "nodo-p-uat.tst-npc.sia.eu" diff --git a/src/synthetic-monitoring/monitoring_configuration.json.tpl b/src/synthetic-monitoring/monitoring_configuration.json.tpl index 36e8bee9d5..b0da5afe5e 100644 --- a/src/synthetic-monitoring/monitoring_configuration.json.tpl +++ b/src/synthetic-monitoring/monitoring_configuration.json.tpl @@ -317,6 +317,7 @@ { "apiName" : "status", "appName" : "fdr", + "enabled" : ${fdr_enabled}, "url" : "https://${internal_api_domain_prefix}.fdr.${internal_api_domain_suffix}/pagopa-fdr-service/info", "type" : "aks", "checkCertificate" : true, @@ -333,6 +334,7 @@ { "apiName" : "status", "appName" : "fdr", + "enabled" : ${fdr_enabled}, "url" : "https://${api_dot_env_name}.platform.pagopa.it/shared/statuspage/v1/info?product=fdrndpnew", "type" : "apim", "checkCertificate" : true, @@ -724,7 +726,7 @@ "headers": { "Content-Type": "application/json", "ndphost": "nodo-${env_short}.nexigroup.com", - "Host": "nodo-dei-pagamenti.npc.sia.eu" + "Host": "${nexi_ndp_host}" }, "tags" : { "description" : "pagopa nodo ${env_name} check position" @@ -854,7 +856,7 @@ "SOAPAction": "verifyPaymentNotice", "Content-Type": "application/xml", "ndphost": "nodo-${env_short}.nexigroup.com", - "Host": "nodo-dei-pagamenti.npc.sia.eu" + "Host": "${nexi_ndp_host}" }, "tags" : { "description" : "pagopa nodo ${env_name} verify payment notice to internal service" @@ -920,7 +922,7 @@ "SOAPAction": "verifyPaymentNotice", "Content-Type": "application/xml", "ndphost": "nodo-${env_short}.nexigroup.com", - "Host": "nodo-dei-pagamenti.npc.sia.eu" + "Host": "${nexi_ndp_host}" }, "tags" : { "description" : "pagopa nodo ${env_name} verify payment notice to external service trough nexi"