From 7dbdae283d8da0167da55e349aa8b0659879918a Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Fri, 27 Jan 2023 16:10:30 +0100 Subject: [PATCH 1/4] feat(chalice): fixed delete MsTeams integration --- api/routers/core.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/api/routers/core.py b/api/routers/core.py index 53bbf54dd..6668f44a0 100644 --- a/api/routers/core.py +++ b/api/routers/core.py @@ -7,7 +7,7 @@ from starlette import status import schemas from chalicelib.core import log_tool_rollbar, sourcemaps, events, sessions_assignments, projects, \ - alerts, funnels, issues, integrations_manager, metadata, \ + alerts, issues, integrations_manager, metadata, \ log_tool_elasticsearch, log_tool_datadog, \ log_tool_stackdriver, reset_password, log_tool_cloudwatch, log_tool_sentry, log_tool_sumologic, log_tools, sessions, \ log_tool_newrelic, announcements, log_tool_bugsnag, weekly_report, integration_jira_cloud, integration_github, \ @@ -507,7 +507,7 @@ def edit_gdpr(projectId: int, data: schemas.GdprSchema = Body(...), def reset_password_handler(data: schemas.ForgetPasswordPayloadSchema = Body(...)): if len(data.email) < 5: return {"errors": ["please provide a valid email address"]} - return reset_password.reset(data) + return reset_password.reset(data=data) @app.get('/{projectId}/metadata', tags=["metadata"]) @@ -568,7 +568,7 @@ def update_capture_status(projectId: int, data: schemas.SampleRateSchema = Body( @app.get('/announcements', tags=["announcements"]) def get_all_announcements(context: schemas.CurrentContext = Depends(OR_context)): - return {"data": announcements.get_all(context.user_id)} + return {"data": announcements.get_all(user_id=context.user_id)} @app.get('/announcements/view', tags=["announcements"]) @@ -584,12 +584,12 @@ def errors_merge(context: schemas.CurrentContext = Depends(OR_context)): @app.post('/{projectId}/alerts', tags=["alerts"]) def create_alert(projectId: int, data: schemas.AlertSchema = Body(...), context: schemas.CurrentContext = Depends(OR_context)): - return alerts.create(projectId, data) + return alerts.create(project_id=projectId, data=data) @app.get('/{projectId}/alerts', tags=["alerts"]) def get_all_alerts(projectId: int, context: schemas.CurrentContext = Depends(OR_context)): - return {"data": alerts.get_all(projectId)} + return {"data": alerts.get_all(project_id=projectId)} @app.get('/{projectId}/alerts/triggers', tags=["alerts", "customMetrics"]) @@ -600,18 +600,18 @@ def get_alerts_triggers(projectId: int, context: schemas.CurrentContext = Depend @app.get('/{projectId}/alerts/{alertId}', tags=["alerts"]) def get_alert(projectId: int, alertId: int, context: schemas.CurrentContext = Depends(OR_context)): - return {"data": alerts.get(alertId)} + return {"data": alerts.get(id=alertId)} @app.post('/{projectId}/alerts/{alertId}', tags=["alerts"]) def update_alert(projectId: int, alertId: int, data: schemas.AlertSchema = Body(...), context: schemas.CurrentContext = Depends(OR_context)): - return alerts.update(alertId, data) + return alerts.update(id=alertId, data=data) @app.delete('/{projectId}/alerts/{alertId}', tags=["alerts"]) def delete_alert(projectId: int, alertId: int, context: schemas.CurrentContext = Depends(OR_context)): - return alerts.delete(projectId, alertId) + return alerts.delete(project_id=projectId, alert_id=alertId) @app_apikey.put('/{projectKey}/sourcemaps/', tags=["sourcemaps"]) @@ -773,7 +773,7 @@ def get_slack_webhook(webhookId: int, context: schemas.CurrentContext = Depends( @app.delete('/integrations/slack/{webhookId}', tags=["integrations"]) def delete_slack_integration(webhookId: int, context: schemas.CurrentContext = Depends(OR_context)): - return webhook.delete(context.tenant_id, webhookId) + return webhook.delete(tenant_id=context.tenant_id, webhook_id=webhookId) @app.put('/webhooks', tags=["webhooks"]) @@ -891,6 +891,11 @@ def edit_msteams_integration(webhookId: int, data: schemas.EditCollaborationSche changes={"name": data.name, "endpoint": data.url})} +@app.delete('/integrations/msteams/{webhookId}', tags=["integrations"]) +def delete_msteams_integration(webhookId: int, context: schemas.CurrentContext = Depends(OR_context)): + return webhook.delete(tenant_id=context.tenant_id, webhook_id=webhookId) + + @public_app.get('/general_stats', tags=["private"], include_in_schema=False) def get_general_stats(): return {"data": {"sessions:": sessions.count_all()}} From 603f8c30b154c4d6800387481c5b5b8aa689a64f Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Fri, 27 Jan 2023 15:18:18 +0100 Subject: [PATCH 2/4] feat(tracker):safe font node callback --- tracker/tracker/src/main/modules/fonts.ts | 34 ++++++++++++----------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/tracker/tracker/src/main/modules/fonts.ts b/tracker/tracker/src/main/modules/fonts.ts index 1dfb6069c..2b39db7e5 100644 --- a/tracker/tracker/src/main/modules/fonts.ts +++ b/tracker/tracker/src/main/modules/fonts.ts @@ -45,22 +45,24 @@ export default function (app: App) { app.observer.attachContextCallback(patchWindow) patchWindow(window) - app.nodes.attachNodeCallback((node) => { - if (!isDocument(node)) { - return - } - const ffDataArr = docFonts.get(node) - if (!ffDataArr) { - return - } + app.nodes.attachNodeCallback( + app.safe((node) => { + if (!isDocument(node)) { + return + } + const ffDataArr = docFonts.get(node) + if (!ffDataArr) { + return + } - const parentID = node.defaultView === window ? 0 : app.nodes.getID(node) - if (parentID === undefined) { - return - } + const parentID = node.defaultView === window ? 0 : app.nodes.getID(node) + if (parentID === undefined) { + return + } - ffDataArr.forEach((ffData) => { - app.send(LoadFontFace(parentID, ...ffData)) - }) - }) + ffDataArr.forEach((ffData) => { + app.send(LoadFontFace(parentID, ...ffData)) + }) + }), + ) } From c3531347fe5a4cc82d426db195026a5bdad15e7a Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 27 Jan 2023 15:27:47 +0100 Subject: [PATCH 3/4] ci(helm): Template using kube api version Signed-off-by: rjshrjndrn --- .github/workflows/api-ee.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/api-ee.yaml b/.github/workflows/api-ee.yaml index c014f34c5..2a12e0da5 100644 --- a/.github/workflows/api-ee.yaml +++ b/.github/workflows/api-ee.yaml @@ -8,7 +8,7 @@ on: default: 'false' push: branches: - - dev + - test_ci paths: - ee/api/** - api/** @@ -112,7 +112,8 @@ jobs: # Deploy command kubectl config set-context --namespace=app --current kubectl config get-contexts - helm template openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --set ingress-nginx.enabled=false --set skipMigration=true --no-hooks | kubectl apply -f - + k_version=$(kubectl version --short 2>/dev/null | awk '/Server/{print $NF}') + helm template openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --set ingress-nginx.enabled=false --set skipMigration=true --no-hooks --kube-version=$k_version | kubectl apply -f - env: DOCKER_REPO: ${{ secrets.EE_REGISTRY_URL }} # We're not passing -ee flag, because helm will add that. From e6d25e094fc3d0d0cbffe3e0fdb879bf12906e56 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 27 Jan 2023 16:06:57 +0100 Subject: [PATCH 4/4] fix(helm): Mount proper folder for chown Signed-off-by: rjshrjndrn --- scripts/helmcharts/openreplay/templates/job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/helmcharts/openreplay/templates/job.yaml b/scripts/helmcharts/openreplay/templates/job.yaml index 4f54e7ae8..e3fe08517 100644 --- a/scripts/helmcharts/openreplay/templates/job.yaml +++ b/scripts/helmcharts/openreplay/templates/job.yaml @@ -279,7 +279,7 @@ spec: - name: datadir hostPath: # Ensure the file directory is created. - path: /mnt/efs + path: /openreplay/storage/nfs type: DirectoryOrCreate {{- else }} - name: datadir