From ce83df290692a5d3ceead75cbe584dfb257168e8 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 12:26:53 +0100 Subject: [PATCH 1/7] lint: api --- apps/io-lollipop/api/external.yaml | 4 +--- apps/io-lollipop/api/internal.yaml | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/apps/io-lollipop/api/external.yaml b/apps/io-lollipop/api/external.yaml index 7691399b9..3d93655e4 100644 --- a/apps/io-lollipop/api/external.yaml +++ b/apps/io-lollipop/api/external.yaml @@ -90,9 +90,7 @@ components: format: int32 description: >- The HTTP status code generated by the origin server for this - occurrence - - of the problem. + occurrence of the problem. minimum: 100 maximum: 600 exclusiveMaximum: true diff --git a/apps/io-lollipop/api/internal.yaml b/apps/io-lollipop/api/internal.yaml index bcc0fc5d3..4c1e76815 100644 --- a/apps/io-lollipop/api/internal.yaml +++ b/apps/io-lollipop/api/internal.yaml @@ -183,9 +183,7 @@ components: format: int32 description: >- The HTTP status code generated by the origin server for this - occurrence - - of the problem. + occurrence of the problem. minimum: 100 maximum: 600 exclusiveMaximum: true From 979636ffe4772da8b479b593b84b9f26a2c50d51 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 12:27:32 +0100 Subject: [PATCH 2/7] aligned env variable name according to docs --- apps/io-lollipop/src/ActivatePubKey/index.ts | 2 +- apps/io-lollipop/src/GenerateLCParams/index.ts | 2 +- apps/io-lollipop/src/GetAssertion/index.ts | 2 +- apps/io-lollipop/src/HandlePubKeyRevoke/index.ts | 2 +- apps/io-lollipop/src/ReservePubKey/index.ts | 2 +- apps/io-lollipop/src/utils/config.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/io-lollipop/src/ActivatePubKey/index.ts b/apps/io-lollipop/src/ActivatePubKey/index.ts index d48d81335..d77a0bdd0 100644 --- a/apps/io-lollipop/src/ActivatePubKey/index.ts +++ b/apps/io-lollipop/src/ActivatePubKey/index.ts @@ -35,7 +35,7 @@ const assertionBlobService = createBlobService( ); const telemetryClient = initTelemetryClient( - config.APPINSIGHTS_INSTRUMENTATIONKEY + config.APPLICATIONINSIGHTS_CONNECTION_STRING ); // eslint-disable-next-line functional/no-let diff --git a/apps/io-lollipop/src/GenerateLCParams/index.ts b/apps/io-lollipop/src/GenerateLCParams/index.ts index 4fe0abae7..1855096d2 100644 --- a/apps/io-lollipop/src/GenerateLCParams/index.ts +++ b/apps/io-lollipop/src/GenerateLCParams/index.ts @@ -27,7 +27,7 @@ import { GenerateLCParams } from "./handler"; const config = getConfigOrThrow(); const telemetryClient = initTelemetryClient( - config.APPINSIGHTS_INSTRUMENTATIONKEY + config.APPLICATIONINSIGHTS_CONNECTION_STRING ); // eslint-disable-next-line functional/no-let diff --git a/apps/io-lollipop/src/GetAssertion/index.ts b/apps/io-lollipop/src/GetAssertion/index.ts index 717e13d50..dfe62dd14 100644 --- a/apps/io-lollipop/src/GetAssertion/index.ts +++ b/apps/io-lollipop/src/GetAssertion/index.ts @@ -29,7 +29,7 @@ import { GetAssertion } from "./handler"; const config = getConfigOrThrow(); const telemetryClient = initTelemetryClient( - config.APPINSIGHTS_INSTRUMENTATIONKEY + config.APPLICATIONINSIGHTS_CONNECTION_STRING ); const lollipopKeysModel = new LolliPOPKeysModel( diff --git a/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts b/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts index e5e33d420..4636b4eb2 100644 --- a/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts +++ b/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts @@ -17,7 +17,7 @@ const lollipopKeysModel = new LolliPOPKeysModel( ); const telemetryClient = initTelemetryClient( - config.APPINSIGHTS_INSTRUMENTATIONKEY + config.APPLICATIONINSIGHTS_CONNECTION_STRING ); export const index: AzureFunction = ( diff --git a/apps/io-lollipop/src/ReservePubKey/index.ts b/apps/io-lollipop/src/ReservePubKey/index.ts index 23ee988bc..4bc0faa17 100644 --- a/apps/io-lollipop/src/ReservePubKey/index.ts +++ b/apps/io-lollipop/src/ReservePubKey/index.ts @@ -28,7 +28,7 @@ const lollipopPubkeysModel = new LolliPOPKeysModel( ); const telemetryClient = initTelemetryClient( - config.APPINSIGHTS_INSTRUMENTATIONKEY + config.APPLICATIONINSIGHTS_CONNECTION_STRING ); // eslint-disable-next-line functional/no-let diff --git a/apps/io-lollipop/src/utils/config.ts b/apps/io-lollipop/src/utils/config.ts index 72f0d66a4..4c5787a25 100644 --- a/apps/io-lollipop/src/utils/config.ts +++ b/apps/io-lollipop/src/utils/config.ts @@ -72,7 +72,7 @@ export type IConfig = t.TypeOf; // eslint-disable-next-line @typescript-eslint/ban-types export const IConfig = t.intersection([ t.interface({ - APPINSIGHTS_INSTRUMENTATIONKEY: NonEmptyString, + APPLICATIONINSIGHTS_CONNECTION_STRING: NonEmptyString, COSMOSDB_KEY: NonEmptyString, COSMOSDB_NAME: NonEmptyString, From e60b33664f3d5f5754cb4e2a529352e59dfc825b Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 12:29:34 +0100 Subject: [PATCH 3/7] aligned container env var --- docker/.env.common | 4 +++- docker/io-lollipop/env-dev | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docker/.env.common b/docker/.env.common index 70ad79e73..8a3b65e45 100644 --- a/docker/.env.common +++ b/docker/.env.common @@ -3,7 +3,9 @@ API_GATEWAY_PORT=80 FUNCTION_LOLLIPOP_PORT=7071 FUNCTION_WEB_PROFILE_PORT=7072 FUNCTION_PUBLIC_PORT=7073 -APPINSIGHTS_INSTRUMENTATIONKEY=foo +APPLICATIONINSIGHTS_CONNECTION_STRING="aConnectionString" +APPINSIGHTS_DISABLE=false +APPINSIGHTS_SAMPLING_PERCENTAGE=100 # -------- # Cosmos diff --git a/docker/io-lollipop/env-dev b/docker/io-lollipop/env-dev index d9932820f..6f5375bab 100644 --- a/docker/io-lollipop/env-dev +++ b/docker/io-lollipop/env-dev @@ -1,3 +1,4 @@ +DOTNET_EnableWriteXorExecute=0 FUNCTION_LOLLIPOP_PORT=${FUNCTION_LOLLIPOP_PORT} # ------------------- @@ -8,13 +9,14 @@ FUNCTIONS_WORKER_RUNTIME=node WEBSITE_NODE_DEFAULT_VERSION=20.12.0 AZURE_ENABLE_STRICT_SSL=false -NODE_TLS_REJECT_UNAUTHORIZED=0 +NODE_TLS_REJECT_UNAUTHORIZED=0 # ------------------- # appinsight infos # ------------------- -APPINSIGHTS_INSTRUMENTATIONKEY=${APPINSIGHTS_INSTRUMENTATIONKEY} APPINSIGHTS_DISABLE=${APPINSIGHTS_DISABLE} +APPLICATIONINSIGHTS_CONNECTION_STRING=${APPLICATIONINSIGHTS_CONNECTION_STRING} +APPINSIGHTS_SAMPLING_PERCENTAGE=${APPINSIGHTS_SAMPLING_PERCENTAGE} # -------- # Storage @@ -56,4 +58,4 @@ DOTNET_EnableWriteXorExecute=0 # Test Data # ---------- BEARER_AUTH_HEADER=x-pagopa-lollipop-auth -A_WRONG_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAkz9DugFKbN3mLZbKmVB+Ltf+0AHhUQgVh0nBF8bDbLOxOpR0\nxchiWrw4/GnlLAhorszTRAjn9//AHsn2HiZIFVrD9AnPJkgh0koilBOrh6WAmYI2\neXRCvdrTeA6zcz+0Cam3qN5VHudubSXUNzI6y7UWTW2ZNGTjXMA2zQ9g4w/daXwW\n2YuRBWstEUxKKzF4S69W2T8SGwzfB4tPWcPHU7+t+wTW2yiBLbjvuyCzU14cvWxS\nZMqwsbJvmOl5YzcHmrPsqAMv99bqgnZSt1FG5YVYQI+eluQHD2PptVoAIl12o6Rp\nnrVJYqvKbS6Hg9uUmRWtDhc7h4RSCc09131AnQIDAQABAoIBAEIP4Tfjelurlqif\nfZgZZ/NmTtlN7qPnR5lh+rLLJ0RuvjX1Awr1Y0MoLTz52arOvwClvqdIg6JdaPmn\nTLesHy0NgtrLR9f6BsqNHkRnKs757t9wbzZAde0t7zBvEA3F5+Vp8o9d6LyrwnxP\nu41kCML6JN5qLJE4LlWfmzaXDrXv6pwST9PhmewfpBaMwamqD+ruKm3z2BWFDfEQ\nCN7rWGhO/8bLxFGVVfvWPCt+FsA3krXrX5gPheA6/WD8YTh5j8aHs0zHDBf251q4\nKNsus7lkdBcnD7iAQe+SICbMIthmgQR/wZuaWNy3B1wkuZsNTLGomxJ1x5wh9D8o\n3S9h+cECgYEAz+ZLjqpA7T5yx/3IXShowEiHvCLbc5jP3NK9j07wxHsyks87sxBC\nd7jDo8UhjCYtcypV6FcKAAZ7rvYY77QfNh25rCN2aBmLmHSe9LBaUZs7d01QiZvP\n7TMuiHenMYphnGbShmfGDL0uOjPMC8Z1hlVg12HT0976MTCapCzGs/ECgYEAtVCU\nLgjz45Klv/9en/rfRcOzR/bFo0Ar5WmcAo1nZQ8ueTIBlWtWh6hOyrASYATrVRlQ\n/xkfW4MCC9FRkVjWtU3crV0Lion6xeYJ+UWCC/zKJhV/MJEr9ApM+iWa1QgqTGyu\nlxBHEtzq6KoMG3/D9552GOeXYSERmYDggvDD020CgYBrtRMWAWyLvNu4cul4IfRL\nEgiIVsK828Fs1R1x/mLMWEs2Nfjm5xiYb/ejhADCXBEV5iwFp/o9Ux6G4Wa/4OB+\np93GqcSxX/KrdFfZyvev6a1gPITqFfgeGnMULnFHQDsbzUVqbp7zgJtPegBPZW0D\nwH3geAVHcfDKxTSIs83p8QKBgFVE+PsRYMmEvQina3PnQruHhrfwWRAmbL5uRV15\n7Mc9NYjvuIjxuvb/c1alKW8YwSf7SPk/clzSJtMx9J9bXVZUsNSjLntP2qzZO5WM\nV9WVY+g3MeLAUyBo+7yklMVdGq9oaU9H63T2ik8zMZB5LMs2LaoWuD2IlMNRNcS+\nwAmdAoGBAJn1Yf61I6w3rT476R0tDALJGDrlPkl8yi/Xijfe5yUGgcCRBoP7+oQA\nrhstkNTD7WZCCiNug6sk8SkL0rqIFL2GZzUL60ctFJBciOvR4Y5Y8gLeFqchVX53\nywY9wBNThoZrL8JJXT32w8y35UU0OgGC/h6+lBVB88ezdPnkAF6E\n-----END RSA PRIVATE KEY-----" \ No newline at end of file +A_WRONG_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAkz9DugFKbN3mLZbKmVB+Ltf+0AHhUQgVh0nBF8bDbLOxOpR0\nxchiWrw4/GnlLAhorszTRAjn9//AHsn2HiZIFVrD9AnPJkgh0koilBOrh6WAmYI2\neXRCvdrTeA6zcz+0Cam3qN5VHudubSXUNzI6y7UWTW2ZNGTjXMA2zQ9g4w/daXwW\n2YuRBWstEUxKKzF4S69W2T8SGwzfB4tPWcPHU7+t+wTW2yiBLbjvuyCzU14cvWxS\nZMqwsbJvmOl5YzcHmrPsqAMv99bqgnZSt1FG5YVYQI+eluQHD2PptVoAIl12o6Rp\nnrVJYqvKbS6Hg9uUmRWtDhc7h4RSCc09131AnQIDAQABAoIBAEIP4Tfjelurlqif\nfZgZZ/NmTtlN7qPnR5lh+rLLJ0RuvjX1Awr1Y0MoLTz52arOvwClvqdIg6JdaPmn\nTLesHy0NgtrLR9f6BsqNHkRnKs757t9wbzZAde0t7zBvEA3F5+Vp8o9d6LyrwnxP\nu41kCML6JN5qLJE4LlWfmzaXDrXv6pwST9PhmewfpBaMwamqD+ruKm3z2BWFDfEQ\nCN7rWGhO/8bLxFGVVfvWPCt+FsA3krXrX5gPheA6/WD8YTh5j8aHs0zHDBf251q4\nKNsus7lkdBcnD7iAQe+SICbMIthmgQR/wZuaWNy3B1wkuZsNTLGomxJ1x5wh9D8o\n3S9h+cECgYEAz+ZLjqpA7T5yx/3IXShowEiHvCLbc5jP3NK9j07wxHsyks87sxBC\nd7jDo8UhjCYtcypV6FcKAAZ7rvYY77QfNh25rCN2aBmLmHSe9LBaUZs7d01QiZvP\n7TMuiHenMYphnGbShmfGDL0uOjPMC8Z1hlVg12HT0976MTCapCzGs/ECgYEAtVCU\nLgjz45Klv/9en/rfRcOzR/bFo0Ar5WmcAo1nZQ8ueTIBlWtWh6hOyrASYATrVRlQ\n/xkfW4MCC9FRkVjWtU3crV0Lion6xeYJ+UWCC/zKJhV/MJEr9ApM+iWa1QgqTGyu\nlxBHEtzq6KoMG3/D9552GOeXYSERmYDggvDD020CgYBrtRMWAWyLvNu4cul4IfRL\nEgiIVsK828Fs1R1x/mLMWEs2Nfjm5xiYb/ejhADCXBEV5iwFp/o9Ux6G4Wa/4OB+\np93GqcSxX/KrdFfZyvev6a1gPITqFfgeGnMULnFHQDsbzUVqbp7zgJtPegBPZW0D\nwH3geAVHcfDKxTSIs83p8QKBgFVE+PsRYMmEvQina3PnQruHhrfwWRAmbL5uRV15\n7Mc9NYjvuIjxuvb/c1alKW8YwSf7SPk/clzSJtMx9J9bXVZUsNSjLntP2qzZO5WM\nV9WVY+g3MeLAUyBo+7yklMVdGq9oaU9H63T2ik8zMZB5LMs2LaoWuD2IlMNRNcS+\nwAmdAoGBAJn1Yf61I6w3rT476R0tDALJGDrlPkl8yi/Xijfe5yUGgcCRBoP7+oQA\nrhstkNTD7WZCCiNug6sk8SkL0rqIFL2GZzUL60ctFJBciOvR4Y5Y8gLeFqchVX53\nywY9wBNThoZrL8JJXT32w8y35UU0OgGC/h6+lBVB88ezdPnkAF6E\n-----END RSA PRIVATE KEY-----" From 2b6bff95eb75374ca5288e109fca0f20ca67f0fc Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 12:31:15 +0100 Subject: [PATCH 4/7] updated common dependencies to support applicationinsights upgrade --- apps/io-lollipop/package.json | 8 +-- yarn.lock | 113 +++------------------------------- 2 files changed, 11 insertions(+), 110 deletions(-) diff --git a/apps/io-lollipop/package.json b/apps/io-lollipop/package.json index 51d6e63ae..ac5fe0db7 100644 --- a/apps/io-lollipop/package.json +++ b/apps/io-lollipop/package.json @@ -52,15 +52,15 @@ "vitest": "~1.5.0" }, "dependencies": { - "@azure/cosmos": "^3.17.2", + "@azure/cosmos": "^4.0.0", "@mattrglobal/http-signatures": "^4.0.1", "@pagopa/express-azure-functions": "^2.0.0", - "@pagopa/io-functions-commons": "28.1.0", + "@pagopa/io-functions-commons": "^29.3.0", "@pagopa/openapi-codegen-ts": "^12.2.0", - "@pagopa/ts-commons": "^11.0.0", + "@pagopa/ts-commons": "^13.1.2", "@pagopa/winston-ts": "^2.2.0", "@xmldom/xmldom": "^0.8.10", - "applicationinsights": "1.8.10", + "applicationinsights": "^2.9.5", "azure-storage": "^2.10.3", "date-fns": "^2.29.3", "express": "^4.15.3", diff --git a/yarn.lock b/yarn.lock index 415aca325..eb7657030 100644 --- a/yarn.lock +++ b/yarn.lock @@ -363,7 +363,7 @@ __metadata: languageName: node linkType: hard -"@azure/cosmos@npm:^3.11.5, @azure/cosmos@npm:^3.17.1, @azure/cosmos@npm:^3.17.2, @azure/cosmos@npm:^3.17.3": +"@azure/cosmos@npm:^3.11.5, @azure/cosmos@npm:^3.17.1, @azure/cosmos@npm:^3.17.3": version: 3.17.3 resolution: "@azure/cosmos@npm:3.17.3" dependencies: @@ -1752,38 +1752,6 @@ __metadata: languageName: node linkType: hard -"@pagopa/io-functions-commons@npm:28.1.0": - version: 28.1.0 - resolution: "@pagopa/io-functions-commons@npm:28.1.0" - dependencies: - "@azure/cosmos": "npm:^3.17.1" - "@pagopa/ts-commons": "npm:^11.0.0" - applicationinsights: "npm:^1.8.10" - azure-storage: "npm:^2.10.5" - cidr-matcher: "npm:^2.1.1" - fp-ts: "npm:^2.10.5" - helmet: "npm:^4.6.0" - helmet-csp: "npm:^2.5.1" - io-ts: "npm:^2.2.16" - node-fetch: "npm:^2.6.1" - nodemailer: "npm:^6.6.1" - nodemailer-sendgrid: "npm:^1.0.3" - referrer-policy: "npm:^1.1.0" - rehype-stringify: "npm:^3.0.0" - remark-frontmatter: "npm:^2.0.0" - remark-parse: "npm:^5.0.0" - remark-rehype: "npm:^3.0.0" - request-ip: "npm:^3.3.0" - ulid: "npm:^2.3.0" - unified: "npm:^9.2.2" - winston: "npm:^3.1.0" - peerDependencies: - "@azure/functions": ^3.2.0 - express: ^4.15.3 - checksum: 10c0/50e6fa6206e7529efb456f88537c19e5893d30246b007784a6e1499365816131ba4111f88bb6bcecfa23d71d3bd6d857a95a4f7904dac9a38b2df8f51745637b - languageName: node - linkType: hard - "@pagopa/io-functions-commons@npm:^28.0.0, @pagopa/io-functions-commons@npm:^28.2.0": version: 28.22.0 resolution: "@pagopa/io-functions-commons@npm:28.22.0" @@ -2027,24 +1995,6 @@ __metadata: languageName: node linkType: hard -"@pagopa/ts-commons@npm:^11.0.0": - version: 11.0.0 - resolution: "@pagopa/ts-commons@npm:11.0.0" - dependencies: - abort-controller: "npm:^3.0.0" - agentkeepalive: "npm:^4.1.4" - applicationinsights: "npm:^1.8.10" - fp-ts: "npm:^2.11.0" - io-ts: "npm:^2.2.16" - jose: "npm:^4.11.2" - json-set-map: "npm:^1.1.2" - node-fetch: "npm:^2.6.0" - semver: "npm:^7.3.7" - validator: "npm:^13.7.0" - checksum: 10c0/5bfe912a3844bf6f9cca48ddce70b2c9b4cb96e93d205cee9bf93f31d2c432b1c98cdd7ae2b9c58f23a520ad6def91536cd230902d1aeed87f1d9f01a9afddb9 - languageName: node - linkType: hard - "@pagopa/ts-commons@npm:^12.0.0, @pagopa/ts-commons@npm:^12.5.0, @pagopa/ts-commons@npm:^12.6.0": version: 12.6.0 resolution: "@pagopa/ts-commons@npm:12.6.0" @@ -2066,49 +2016,7 @@ __metadata: languageName: node linkType: hard -"@pagopa/ts-commons@npm:^13.1.0": - version: 13.1.0 - resolution: "@pagopa/ts-commons@npm:13.1.0" - dependencies: - abort-controller: "npm:^3.0.0" - agentkeepalive: "npm:^4.1.4" - applicationinsights: "npm:^2.9.5" - jose: "npm:^4.15.5" - json-set-map: "npm:^1.1.2" - jsonwebtoken: "npm:^9.0.1" - node-fetch: "npm:^2.6.0" - semver: "npm:^7.5.2" - ulid: "npm:^2.3.0" - validator: "npm:^13.7.0" - peerDependencies: - fp-ts: ^2.16.5 - io-ts: ^2.2.21 - checksum: 10c0/a473ddcf7a2692adf284c76af717777cc78fc28e55576a56985142568a2a930302109fdd1ca2cf98dc4334755cd94a7d18dcf7816d5ed67e632db877c6315fd7 - languageName: node - linkType: hard - -"@pagopa/ts-commons@npm:^13.1.1": - version: 13.1.1 - resolution: "@pagopa/ts-commons@npm:13.1.1" - dependencies: - abort-controller: "npm:^3.0.0" - agentkeepalive: "npm:^4.1.4" - applicationinsights: "npm:^2.9.5" - jose: "npm:^4.15.5" - json-set-map: "npm:^1.1.2" - jsonwebtoken: "npm:^9.0.1" - node-fetch: "npm:^2.6.0" - semver: "npm:^7.5.2" - ulid: "npm:^2.3.0" - validator: "npm:^13.7.0" - peerDependencies: - fp-ts: ^2.16.5 - io-ts: ^2.2.21 - checksum: 10c0/9c00dde0b03f18aa743c4010104a5cb63d01b176bfbe8873e0292ca3540f0b7bcef207df952ffe08a0943b19cf3541572032926e81db98092a5096923babba9f - languageName: node - linkType: hard - -"@pagopa/ts-commons@npm:^13.1.2": +"@pagopa/ts-commons@npm:^13.1.0, @pagopa/ts-commons@npm:^13.1.1, @pagopa/ts-commons@npm:^13.1.2": version: 13.1.2 resolution: "@pagopa/ts-commons@npm:13.1.2" dependencies: @@ -3634,7 +3542,7 @@ __metadata: languageName: node linkType: hard -"applicationinsights@npm:1.8.10, applicationinsights@npm:^1.8.10": +"applicationinsights@npm:^1.8.10": version: 1.8.10 resolution: "applicationinsights@npm:1.8.10" dependencies: @@ -7606,14 +7514,14 @@ __metadata: version: 0.0.0-use.local resolution: "io-lollipop@workspace:apps/io-lollipop" dependencies: - "@azure/cosmos": "npm:^3.17.2" + "@azure/cosmos": "npm:^4.0.0" "@azure/functions": "npm:^3.2.0" "@mattrglobal/http-signatures": "npm:^4.0.1" "@pagopa/eslint-config": "npm:^3.0.0" "@pagopa/express-azure-functions": "npm:^2.0.0" - "@pagopa/io-functions-commons": "npm:28.1.0" + "@pagopa/io-functions-commons": "npm:^29.3.0" "@pagopa/openapi-codegen-ts": "npm:^12.2.0" - "@pagopa/ts-commons": "npm:^11.0.0" + "@pagopa/ts-commons": "npm:^13.1.2" "@pagopa/winston-ts": "npm:^2.2.0" "@types/express": "npm:^4.17.12" "@types/jsonwebtoken": "npm:^9.0.1" @@ -7623,7 +7531,7 @@ __metadata: "@types/xml-crypto": "npm:^1.4.2" "@vitest/coverage-v8": "npm:~1.5.0" "@xmldom/xmldom": "npm:^0.8.10" - applicationinsights: "npm:1.8.10" + applicationinsights: "npm:^2.9.5" azure-storage: "npm:^2.10.3" date-fns: "npm:^2.29.3" dependency-check: "npm:^4.1.0" @@ -9773,13 +9681,6 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:^6.6.1": - version: 6.9.16 - resolution: "nodemailer@npm:6.9.16" - checksum: 10c0/9fd73ab4ab5b81544c3c9820afbe386369aba442f997b2f58d171222a898a7aed580fc100bfe6eebc194f18ba6e169d67ee40ca64d32d69022d89e575cef97a4 - languageName: node - linkType: hard - "nodemailer@npm:^6.9.13": version: 6.9.13 resolution: "nodemailer@npm:6.9.13" From 5d16ab4ed0313aec5b0c711c1aa9d771cfe70fac Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 13:06:15 +0100 Subject: [PATCH 5/7] fix: function container startup --- docker/.env.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/.env.common b/docker/.env.common index 8a3b65e45..6a6fa508d 100644 --- a/docker/.env.common +++ b/docker/.env.common @@ -3,7 +3,7 @@ API_GATEWAY_PORT=80 FUNCTION_LOLLIPOP_PORT=7071 FUNCTION_WEB_PROFILE_PORT=7072 FUNCTION_PUBLIC_PORT=7073 -APPLICATIONINSIGHTS_CONNECTION_STRING="aConnectionString" +APPLICATIONINSIGHTS_CONNECTION_STRING="InstrumentationKey=foo;IngestionEndpoint=https://localhost;LiveEndpoint=https://localhost;ApplicationId=Bar" APPINSIGHTS_DISABLE=false APPINSIGHTS_SAMPLING_PERCENTAGE=100 From cae236bb38df22d260fc450067754711b7f4de5f Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 13:30:47 +0100 Subject: [PATCH 6/7] fix: integration tests run --- apps/io-lollipop/src/ActivatePubKey/index.ts | 4 +- .../io-lollipop/src/GenerateLCParams/index.ts | 4 +- apps/io-lollipop/src/GetAssertion/index.ts | 4 +- .../src/HandlePubKeyRevoke/index.ts | 4 +- apps/io-lollipop/src/ReservePubKey/index.ts | 4 +- apps/io-lollipop/src/utils/appinsights.ts | 39 +++++++++++-------- apps/io-lollipop/src/utils/config.ts | 23 +++++++++-- docker/.env.common | 1 + docker/io-lollipop/env-dev | 1 + 9 files changed, 50 insertions(+), 34 deletions(-) diff --git a/apps/io-lollipop/src/ActivatePubKey/index.ts b/apps/io-lollipop/src/ActivatePubKey/index.ts index d77a0bdd0..ee41772e7 100644 --- a/apps/io-lollipop/src/ActivatePubKey/index.ts +++ b/apps/io-lollipop/src/ActivatePubKey/index.ts @@ -34,9 +34,7 @@ const assertionBlobService = createBlobService( config.LOLLIPOP_ASSERTION_STORAGE_CONNECTION_STRING ); -const telemetryClient = initTelemetryClient( - config.APPLICATIONINSIGHTS_CONNECTION_STRING -); +const telemetryClient = initTelemetryClient(config); // eslint-disable-next-line functional/no-let let logger: Context["log"]; diff --git a/apps/io-lollipop/src/GenerateLCParams/index.ts b/apps/io-lollipop/src/GenerateLCParams/index.ts index 1855096d2..a4e2ae99d 100644 --- a/apps/io-lollipop/src/GenerateLCParams/index.ts +++ b/apps/io-lollipop/src/GenerateLCParams/index.ts @@ -26,9 +26,7 @@ import { GenerateLCParams } from "./handler"; const config = getConfigOrThrow(); -const telemetryClient = initTelemetryClient( - config.APPLICATIONINSIGHTS_CONNECTION_STRING -); +const telemetryClient = initTelemetryClient(config); // eslint-disable-next-line functional/no-let let logger: Context["log"]; diff --git a/apps/io-lollipop/src/GetAssertion/index.ts b/apps/io-lollipop/src/GetAssertion/index.ts index dfe62dd14..24f2ee633 100644 --- a/apps/io-lollipop/src/GetAssertion/index.ts +++ b/apps/io-lollipop/src/GetAssertion/index.ts @@ -28,9 +28,7 @@ import { GetAssertion } from "./handler"; const config = getConfigOrThrow(); -const telemetryClient = initTelemetryClient( - config.APPLICATIONINSIGHTS_CONNECTION_STRING -); +const telemetryClient = initTelemetryClient(config); const lollipopKeysModel = new LolliPOPKeysModel( cosmosdbInstance.container(LOLLIPOPKEYS_COLLECTION_NAME) diff --git a/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts b/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts index 4636b4eb2..9dcc87781 100644 --- a/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts +++ b/apps/io-lollipop/src/HandlePubKeyRevoke/index.ts @@ -16,9 +16,7 @@ const lollipopKeysModel = new LolliPOPKeysModel( cosmosdbInstance.container(LOLLIPOPKEYS_COLLECTION_NAME) ); -const telemetryClient = initTelemetryClient( - config.APPLICATIONINSIGHTS_CONNECTION_STRING -); +const telemetryClient = initTelemetryClient(config); export const index: AzureFunction = ( context: Context, diff --git a/apps/io-lollipop/src/ReservePubKey/index.ts b/apps/io-lollipop/src/ReservePubKey/index.ts index 4bc0faa17..9501cbb74 100644 --- a/apps/io-lollipop/src/ReservePubKey/index.ts +++ b/apps/io-lollipop/src/ReservePubKey/index.ts @@ -27,9 +27,7 @@ const lollipopPubkeysModel = new LolliPOPKeysModel( cosmosdbInstance.container(LOLLIPOPKEYS_COLLECTION_NAME) ); -const telemetryClient = initTelemetryClient( - config.APPLICATIONINSIGHTS_CONNECTION_STRING -); +const telemetryClient = initTelemetryClient(config); // eslint-disable-next-line functional/no-let let logger: Context["log"]; diff --git a/apps/io-lollipop/src/utils/appinsights.ts b/apps/io-lollipop/src/utils/appinsights.ts index be52695c8..3680ca248 100644 --- a/apps/io-lollipop/src/utils/appinsights.ts +++ b/apps/io-lollipop/src/utils/appinsights.ts @@ -1,14 +1,12 @@ import * as ai from "applicationinsights"; import { initAppInsights } from "@pagopa/ts-commons/lib/appinsights"; -import { IntegerFromString } from "@pagopa/ts-commons/lib/numbers"; -import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; -import * as E from "fp-ts/lib/Either"; import * as O from "fp-ts/lib/Option"; import { pipe } from "fp-ts/lib/function"; import { EventTelemetry, ExceptionTelemetry } from "applicationinsights/out/Declarations/Contracts"; +import { AppInsightsConfig } from "./config"; // the internal function runtime has MaxTelemetryItem per second set to 20 by default // @see https://github.com/Azure/azure-functions-host/blob/master/src/WebJobs.Script/Config/ApplicationInsightsLoggerOptionsSetup.cs#L29 @@ -16,19 +14,28 @@ const DEFAULT_SAMPLING_PERCENTAGE = 5; // Avoid to initialize Application Insights more than once // eslint-disable-next-line @typescript-eslint/explicit-function-return-type -export const initTelemetryClient = ( - intrumentationKey: NonEmptyString, - env = process.env -) => - ai.defaultClient - ? ai.defaultClient - : initAppInsights(intrumentationKey, { - disableAppInsights: env.APPINSIGHTS_DISABLE === "true", - samplingPercentage: pipe( - IntegerFromString.decode(env.APPINSIGHTS_SAMPLING_PERCENTAGE), - E.getOrElse(() => DEFAULT_SAMPLING_PERCENTAGE) - ) - }); +export const initTelemetryClient = (config: AppInsightsConfig) => + pipe( + ai.defaultClient, + O.fromNullable, + O.getOrElse(() => { + const client = initAppInsights( + config.APPLICATIONINSIGHTS_CONNECTION_STRING, + { + disableAppInsights: config.APPINSIGHTS_DISABLE === "true", + samplingPercentage: pipe( + config.APPINSIGHTS_SAMPLING_PERCENTAGE, + O.fromNullable, + O.getOrElse(() => DEFAULT_SAMPLING_PERCENTAGE) + ) + } + ); + // eslint-disable-next-line functional/immutable-data + client.config.correlationHeaderExcludedDomains = + config.APPINSIGHTS_EXCLUDED_DOMAINS || []; + return client; + }) + ); export type TelemetryClient = ReturnType; diff --git a/apps/io-lollipop/src/utils/config.ts b/apps/io-lollipop/src/utils/config.ts index 4c5787a25..c366e433e 100644 --- a/apps/io-lollipop/src/utils/config.ts +++ b/apps/io-lollipop/src/utils/config.ts @@ -12,7 +12,9 @@ import { pipe } from "fp-ts/lib/function"; import * as reporters from "@pagopa/ts-commons/lib/reporters"; import { NonEmptyString } from "@pagopa/ts-commons/lib/strings"; +import { CommaSeparatedListOf } from "@pagopa/ts-commons/lib/comma-separated-list"; import { + IntegerFromString, NonNegativeInteger, NonNegativeIntegerFromString } from "@pagopa/ts-commons/lib/numbers"; @@ -68,12 +70,26 @@ export const JWTConfig = t.intersection([ // ---------------------------- // Global app configuration // ---------------------------- +export type AppInsightsConfig = t.TypeOf; +export const AppInsightsConfig = t.intersection([ + t.type({ + // required for both appinsights sdk and azure function runtime + // changing the name of this variable would cause data loss on app insights + // source-> https://learn.microsoft.com/en-us/azure/azure-functions/configure-monitoring?tabs=v2#enable-application-insights-integration + APPLICATIONINSIGHTS_CONNECTION_STRING: NonEmptyString + }), + t.partial({ + APPINSIGHTS_DISABLE: NonEmptyString, + APPINSIGHTS_EXCLUDED_DOMAINS: CommaSeparatedListOf(t.string).pipe( + t.array(NonEmptyString) + ), + APPINSIGHTS_SAMPLING_PERCENTAGE: IntegerFromString + }) +]); + export type IConfig = t.TypeOf; -// eslint-disable-next-line @typescript-eslint/ban-types export const IConfig = t.intersection([ t.interface({ - APPLICATIONINSIGHTS_CONNECTION_STRING: NonEmptyString, - COSMOSDB_KEY: NonEmptyString, COSMOSDB_NAME: NonEmptyString, COSMOSDB_URI: NonEmptyString, @@ -89,6 +105,7 @@ export const IConfig = t.intersection([ isProduction: t.boolean }), + AppInsightsConfig, JWTConfig, FirstLcAssertionClientConfig ]); diff --git a/docker/.env.common b/docker/.env.common index 6a6fa508d..0be75ed3e 100644 --- a/docker/.env.common +++ b/docker/.env.common @@ -6,6 +6,7 @@ FUNCTION_PUBLIC_PORT=7073 APPLICATIONINSIGHTS_CONNECTION_STRING="InstrumentationKey=foo;IngestionEndpoint=https://localhost;LiveEndpoint=https://localhost;ApplicationId=Bar" APPINSIGHTS_DISABLE=false APPINSIGHTS_SAMPLING_PERCENTAGE=100 +APPINSIGHTS_EXCLUDED_DOMAINS="127.0.0.1,localhost,storage-account" # -------- # Cosmos diff --git a/docker/io-lollipop/env-dev b/docker/io-lollipop/env-dev index 6f5375bab..6fa017260 100644 --- a/docker/io-lollipop/env-dev +++ b/docker/io-lollipop/env-dev @@ -17,6 +17,7 @@ NODE_TLS_REJECT_UNAUTHORIZED=0 APPINSIGHTS_DISABLE=${APPINSIGHTS_DISABLE} APPLICATIONINSIGHTS_CONNECTION_STRING=${APPLICATIONINSIGHTS_CONNECTION_STRING} APPINSIGHTS_SAMPLING_PERCENTAGE=${APPINSIGHTS_SAMPLING_PERCENTAGE} +APPINSIGHTS_EXCLUDED_DOMAINS=${APPINSIGHTS_EXCLUDED_DOMAINS} # -------- # Storage From ee533f41bdf5b9080fb13dc4eec5741ee8d366b0 Mon Sep 17 00:00:00 2001 From: arcogabbo Date: Mon, 27 Jan 2025 16:01:19 +0100 Subject: [PATCH 7/7] added missing domain filter --- docker/.env.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/.env.common b/docker/.env.common index 0be75ed3e..646f2ae86 100644 --- a/docker/.env.common +++ b/docker/.env.common @@ -6,7 +6,7 @@ FUNCTION_PUBLIC_PORT=7073 APPLICATIONINSIGHTS_CONNECTION_STRING="InstrumentationKey=foo;IngestionEndpoint=https://localhost;LiveEndpoint=https://localhost;ApplicationId=Bar" APPINSIGHTS_DISABLE=false APPINSIGHTS_SAMPLING_PERCENTAGE=100 -APPINSIGHTS_EXCLUDED_DOMAINS="127.0.0.1,localhost,storage-account" +APPINSIGHTS_EXCLUDED_DOMAINS="127.0.0.1,localhost,storage-account,azurite" # -------- # Cosmos