Skip to content

Commit

Permalink
chore: CHK-3662 [Checkout-function] function checkout dismission (#2762)
Browse files Browse the repository at this point in the history
* remove alerts

* restore pagopa-proxy availability

* remove checkout function and variables

* remove checkout functions api

* chore(checkout-fn): pre-commit

* fix alert name

* fix pre-commit

* chore(routing-policy): README.md update

---------

Co-authored-by: Gianluca Ciuffa <[email protected]>
Co-authored-by: CianoDanilo <[email protected]>
Co-authored-by: Gianluca Ciuffa <[email protected]>
Co-authored-by: Simone infante <[email protected]>
  • Loading branch information
5 people authored Feb 13, 2025
1 parent 86ccc7c commit 4abe2ca
Show file tree
Hide file tree
Showing 9 changed files with 1 addition and 570 deletions.
53 changes: 0 additions & 53 deletions src/domains/checkout-app/04_apim_checkout.tf
Original file line number Diff line number Diff line change
Expand Up @@ -245,59 +245,6 @@ resource "azurerm_api_management_product_api" "apim_cd_info_wisp_product_v1_apim
resource_group_name = data.azurerm_resource_group.rg_api.name
}

######################################
## API checkout payment transaction ##
######################################
locals {
apim_checkout_transactions_api = {
# params for all api versions
display_name = "Checkout payment transaction API"
description = "API to support payment transaction"
path = "api/checkout/payment-transactions"
subscription_required = false
service_url = null
}
}

resource "azurerm_api_management_api_version_set" "checkout_transactions_api" {
count = var.checkout_enabled ? 1 : 0

name = format("%s-checkout-transactions-api", var.env_short)
resource_group_name = data.azurerm_resource_group.rg_api.name
api_management_name = data.azurerm_api_management.apim.name
display_name = local.apim_checkout_transactions_api.display_name
versioning_scheme = "Segment"
}

module "apim_checkout_transactions_api_v1" {
count = var.checkout_enabled ? 1 : 0

source = "./.terraform/modules/__v3__/api_management_api"

name = format("%s-checkout-transactions-api", var.env_short)
api_management_name = data.azurerm_api_management.apim.name
resource_group_name = data.azurerm_resource_group.rg_api.name
product_ids = [module.apim_checkout_product[0].product_id]
subscription_required = local.apim_checkout_transactions_api.subscription_required
version_set_id = azurerm_api_management_api_version_set.checkout_transactions_api[0].id
api_version = "v1"
service_url = local.apim_checkout_transactions_api.service_url

description = local.apim_checkout_transactions_api.description
display_name = local.apim_checkout_transactions_api.display_name
path = local.apim_checkout_transactions_api.path
protocols = ["https"]

content_format = "swagger-json"
content_value = templatefile("./api/checkout/checkout_transactions/v1/_swagger.json.tpl", {
host = local.apim_hostname
})

xml_content = templatefile("./api/checkout/checkout_transactions/v1/_base_policy.xml.tpl", {
origin = format("https://%s.%s/", var.dns_zone_checkout, var.external_domain)
})
}

# pagopa-ecommerce APIs for checkout
locals {
apim_checkout_ecommerce_api = {
Expand Down
182 changes: 1 addition & 181 deletions src/domains/checkout-app/05_checkout_function.tf
Original file line number Diff line number Diff line change
Expand Up @@ -6,164 +6,11 @@ resource "azurerm_resource_group" "checkout_be_rg" {
tags = var.tags
}

# Subnet to host checkout function
module "checkout_function_snet" {
count = var.checkout_enabled && var.cidr_subnet_checkout_be != null ? 1 : 0
source = "./.terraform/modules/__v3__/subnet"

name = format("%s-checkout-be-snet", local.parent_project)
address_prefixes = var.cidr_subnet_checkout_be
resource_group_name = data.azurerm_resource_group.rg_vnet.name
virtual_network_name = data.azurerm_virtual_network.vnet.name
private_endpoint_network_policies_enabled = false

service_endpoints = [
"Microsoft.Web",
]

delegation = {
name = "default"
service_delegation = {
name = "Microsoft.Web/serverFarms"
actions = ["Microsoft.Network/virtualNetworks/subnets/action"]
}
}
}



module "checkout_function" {
count = var.checkout_enabled ? 1 : 0
source = "./.terraform/modules/__v3__/function_app"

resource_group_name = azurerm_resource_group.checkout_be_rg[0].name
name = format("%s-fn-checkout", local.parent_project)
location = var.location
health_check_path = "/info"
subnet_id = module.checkout_function_snet[0].id
runtime_version = "~4"

always_on = var.checkout_function_always_on
application_insights_instrumentation_key = data.azurerm_application_insights.application_insights.instrumentation_key

app_service_plan_name = format("%s-plan-fncheckout", local.parent_project)
app_service_plan_info = {
kind = var.checkout_function_kind
sku_tier = var.checkout_function_sku_tier
sku_size = var.checkout_function_sku_size
maximum_elastic_worker_count = 0
zone_balancing_enabled = var.checkout_function_zone_balancing_enabled
worker_count = var.checkout_function_worker_count
}

node_version = "18"

storage_account_name = replace(format("%s-st-fncheckout", local.parent_project), "-", "")

app_settings = {
FUNCTIONS_WORKER_RUNTIME = "node"
WEBSITE_NODE_DEFAULT_VERSION = "18.16.0"
FUNCTIONS_WORKER_PROCESS_COUNT = 4
NODE_ENV = "production"

// Keepalive fields are all optionals
FETCH_KEEPALIVE_ENABLED = "true"
FETCH_KEEPALIVE_SOCKET_ACTIVE_TTL = "110000"
FETCH_KEEPALIVE_MAX_SOCKETS = "40"
FETCH_KEEPALIVE_MAX_FREE_SOCKETS = "10"
FETCH_KEEPALIVE_FREE_SOCKET_TIMEOUT = "30000"
FETCH_KEEPALIVE_TIMEOUT = "60000"

IO_PAGOPA_PROXY = var.checkout_pagopaproxy_host
PAGOPA_BASE_PATH = "/pagopa/api/v1"


IO_PAY_CHALLENGE_RESUME_URL = format("https://%s.%s/%s?id=idTransaction", var.dns_zone_checkout, var.external_domain, "esito")
IO_PAY_ORIGIN = format("https://%s.%s", var.dns_zone_checkout, var.external_domain)
IO_PAY_XPAY_REDIRECT = format("https://%s.%s/%s?id=_id_&resumeType=_resumeType_&_queryParams_", var.dns_zone_checkout, var.external_domain, "esito")

PAY_PORTAL_RECAPTCHA_SECRET = data.azurerm_key_vault_secret.google_recaptcha_secret.value
}

storage_account_info = var.function_app_storage_account_info

allowed_subnets = [data.azurerm_subnet.apim_snet.id]

ip_restriction_default_action = var.checkout_ip_restriction_default_action

allowed_ips = []

tags = var.tags
}

resource "azurerm_monitor_autoscale_setting" "checkout_function" {
count = var.checkout_enabled && var.env_short != "d" ? 1 : 0

name = format("%s-autoscale", module.checkout_function[0].name)
resource_group_name = azurerm_resource_group.checkout_be_rg[0].name
location = var.location
target_resource_id = module.checkout_function[0].app_service_plan_id

profile {
name = "default"

capacity {
default = var.checkout_function_autoscale_default
minimum = var.checkout_function_autoscale_minimum
maximum = var.checkout_function_autoscale_maximum
}

rule {
metric_trigger {
metric_name = "Requests"
metric_resource_id = module.checkout_function[0].id
metric_namespace = "microsoft.web/sites"
time_grain = "PT1M"
statistic = "Average"
time_window = "PT5M"
time_aggregation = "Average"
operator = "GreaterThan"
threshold = 4000
divide_by_instance_count = false
}

scale_action {
direction = "Increase"
type = "ChangeCount"
value = "2"
cooldown = "PT5M"
}
}

rule {
metric_trigger {
metric_name = "Requests"
metric_resource_id = module.checkout_function[0].id
metric_namespace = "microsoft.web/sites"
time_grain = "PT1M"
statistic = "Average"
time_window = "PT5M"
time_aggregation = "Average"
operator = "LessThan"
threshold = 3000
divide_by_instance_count = false
}

scale_action {
direction = "Decrease"
type = "ChangeCount"
value = "1"
cooldown = "PT20M"
}
}
}
}

# Availability: Checkout functions & pagopa-proxy
resource "azurerm_monitor_scheduled_query_rules_alert" "checkout_availability" {
count = var.checkout_enabled && var.env_short == "p" ? 1 : 0

name = "${module.checkout_function[0].name}-availability-alert"
name = format("%s-availability-alert", format("%s-fn-checkout", local.parent_project))
resource_group_name = azurerm_resource_group.checkout_be_rg[0].name
location = var.location

Expand Down Expand Up @@ -194,30 +41,3 @@ AzureDiagnostics
threshold = 2
}
}

resource "azurerm_monitor_metric_alert" "checkout_fn_5xx" {
count = var.checkout_enabled && var.env_short == "p" ? 1 : 0

name = format("%s-%s", module.checkout_function[0].name, "5xx")
resource_group_name = data.azurerm_resource_group.monitor_rg.name
scopes = [module.checkout_function[0].id]
severity = 1
frequency = "PT1M"
window_size = "PT5M"

enabled = false

action {
action_group_id = data.azurerm_monitor_action_group.slack.id
}

dynamic_criteria {
aggregation = "Total"
metric_namespace = "Microsoft.Web/sites"
metric_name = "Http5xx"
operator = "GreaterThan"
alert_sensitivity = "Low"
}

tags = var.tags
}
44 changes: 0 additions & 44 deletions src/domains/checkout-app/99_variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -152,50 +152,6 @@ variable "pagopa_proxy_autoscale_default" {
default = 5
}

# Checkout functions

variable "checkout_function_kind" {
type = string
description = "App service plan kind"
default = null
}

variable "checkout_function_sku_tier" {
type = string
description = "App service plan sku tier"
default = null
}

variable "checkout_function_sku_size" {
type = string
description = "App service plan sku size"
default = null
}

variable "checkout_function_autoscale_minimum" {
type = number
description = "The minimum number of instances for this resource."
default = 1
}

variable "checkout_function_autoscale_maximum" {
type = number
description = "The maximum number of instances for this resource."
default = 3
}

variable "checkout_function_autoscale_default" {
type = number
description = "The number of instances that are available for scaling if metrics are not available for evaluation."
default = 1
}

variable "checkout_function_always_on" {
type = bool
description = "Always on property"
default = false
}

# Checkout APIM

variable "ecommerce_ingress_hostname" {
Expand Down
10 changes: 0 additions & 10 deletions src/domains/checkout-app/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
| <a name="module_apim_checkout_payment_activations_api_auth_v2"></a> [apim\_checkout\_payment\_activations\_api\_auth\_v2](#module\_apim\_checkout\_payment\_activations\_api\_auth\_v2) | ./.terraform/modules/__v3__/api_management_api | n/a |
| <a name="module_apim_checkout_payment_activations_api_v1"></a> [apim\_checkout\_payment\_activations\_api\_v1](#module\_apim\_checkout\_payment\_activations\_api\_v1) | ./.terraform/modules/__v3__/api_management_api | n/a |
| <a name="module_apim_checkout_product"></a> [apim\_checkout\_product](#module\_apim\_checkout\_product) | ./.terraform/modules/__v3__/api_management_product | n/a |
| <a name="module_apim_checkout_transactions_api_v1"></a> [apim\_checkout\_transactions\_api\_v1](#module\_apim\_checkout\_transactions\_api\_v1) | ./.terraform/modules/__v3__/api_management_api | n/a |
| <a name="module_checkout_cdn"></a> [checkout\_cdn](#module\_checkout\_cdn) | ./.terraform/modules/__v3__/cdn | n/a |
| <a name="module_checkout_function"></a> [checkout\_function](#module\_checkout\_function) | ./.terraform/modules/__v3__/function_app | n/a |
| <a name="module_checkout_function_snet"></a> [checkout\_function\_snet](#module\_checkout\_function\_snet) | ./.terraform/modules/__v3__/subnet | n/a |
Expand Down Expand Up @@ -63,7 +62,6 @@
| [azurerm_api_management_api_version_set.checkout_ecommerce_api_v1](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | resource |
| [azurerm_api_management_api_version_set.checkout_payment_activations_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | resource |
| [azurerm_api_management_api_version_set.checkout_payment_activations_auth_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | resource |
| [azurerm_api_management_api_version_set.checkout_transactions_api](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_api_version_set) | resource |
| [azurerm_api_management_named_value.pagopa_appservice_proxy_url_value](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_named_value) | resource |
| [azurerm_api_management_product_api.apim_cd_info_wisp_product_v1](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_product_api) | resource |
| [azurerm_api_management_product_api.apim_cd_info_wisp_product_v1_apim_for_node](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/api_management_product_api) | resource |
Expand All @@ -74,7 +72,6 @@
| [azurerm_monitor_autoscale_setting.checkout_function](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_autoscale_setting) | resource |
| [azurerm_monitor_autoscale_setting.pagopa_proxy_app_service_autoscale](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_autoscale_setting) | resource |
| [azurerm_monitor_autoscale_setting.pagopa_proxy_app_service_autoscale_ha](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_autoscale_setting) | resource |
| [azurerm_monitor_metric_alert.checkout_fn_5xx](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_metric_alert) | resource |
| [azurerm_monitor_scheduled_query_rules_alert.checkout_availability](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/monitor_scheduled_query_rules_alert) | resource |
| [azurerm_resource_group.checkout_be_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource |
| [azurerm_resource_group.checkout_fe_rg](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) | resource |
Expand Down Expand Up @@ -132,13 +129,6 @@
| <a name="input_apim_logger_resource_id"></a> [apim\_logger\_resource\_id](#input\_apim\_logger\_resource\_id) | Resource id for the APIM logger | `string` | `null` | no |
| <a name="input_checkout_cdn_storage_replication_type"></a> [checkout\_cdn\_storage\_replication\_type](#input\_checkout\_cdn\_storage\_replication\_type) | (Optional) Checkout cnd storage replication type | `string` | `"GRS"` | no |
| <a name="input_checkout_enabled"></a> [checkout\_enabled](#input\_checkout\_enabled) | n/a | `bool` | `false` | no |
| <a name="input_checkout_function_always_on"></a> [checkout\_function\_always\_on](#input\_checkout\_function\_always\_on) | Always on property | `bool` | `false` | no |
| <a name="input_checkout_function_autoscale_default"></a> [checkout\_function\_autoscale\_default](#input\_checkout\_function\_autoscale\_default) | The number of instances that are available for scaling if metrics are not available for evaluation. | `number` | `1` | no |
| <a name="input_checkout_function_autoscale_maximum"></a> [checkout\_function\_autoscale\_maximum](#input\_checkout\_function\_autoscale\_maximum) | The maximum number of instances for this resource. | `number` | `3` | no |
| <a name="input_checkout_function_autoscale_minimum"></a> [checkout\_function\_autoscale\_minimum](#input\_checkout\_function\_autoscale\_minimum) | The minimum number of instances for this resource. | `number` | `1` | no |
| <a name="input_checkout_function_kind"></a> [checkout\_function\_kind](#input\_checkout\_function\_kind) | App service plan kind | `string` | `null` | no |
| <a name="input_checkout_function_sku_size"></a> [checkout\_function\_sku\_size](#input\_checkout\_function\_sku\_size) | App service plan sku size | `string` | `null` | no |
| <a name="input_checkout_function_sku_tier"></a> [checkout\_function\_sku\_tier](#input\_checkout\_function\_sku\_tier) | App service plan sku tier | `string` | `null` | no |
| <a name="input_checkout_function_worker_count"></a> [checkout\_function\_worker\_count](#input\_checkout\_function\_worker\_count) | (Optional) checkout function worker count number | `number` | `1` | no |
| <a name="input_checkout_function_zone_balancing_enabled"></a> [checkout\_function\_zone\_balancing\_enabled](#input\_checkout\_function\_zone\_balancing\_enabled) | (Optional) Enables zone balancing for checkout function | `bool` | `true` | no |
| <a name="input_checkout_pagopaproxy_host"></a> [checkout\_pagopaproxy\_host](#input\_checkout\_pagopaproxy\_host) | pagopaproxy host | `string` | `null` | no |
Expand Down

This file was deleted.

Loading

0 comments on commit 4abe2ca

Please sign in to comment.