Commit 3b230044 authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

Harden FM partner deployment handling

parent 58bc2fcc
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -261,6 +261,8 @@ def remove_app(federation_context_id, app_id, app_instance_id, zone_id, bearer_t


def install_app_originating_op(federation_id, partner_federation_id, body, response_partner):
    zone_id = response_partner.get("zoneId") or response_partner.get("zoneID")

    # Convert the original model instance to the MongoEngine document
    deployment_data = {
        "orig_ad_federation_context_id": federation_id,
@@ -268,7 +270,7 @@ def install_app_originating_op(federation_id, partner_federation_id, body, respo
        "orig_ad_app_id": body.app_id,
        "orig_ad_app_version": body.app_version,
        "orig_ad_app_provider_id": body.app_provider_id,
        "orig_ad_zone_info_zone_id": response_partner.get("zoneId"),
        "orig_ad_zone_info_zone_id": zone_id,
        "orig_ad_zone_info_flavour_id": body.zone_info.flavour_id,
        "orig_ad_zone_info_resource_consumption": body.zone_info.resource_consumption,
        "orig_ad_zone_info_res_pool": body.zone_info.res_pool,
+12 −9
Original line number Diff line number Diff line
@@ -17,15 +17,18 @@ import requests
from urllib.parse import urlparse


def _gsma_payload(body):
    if hasattr(body, "to_gsma_input"):
        return body.to_gsma_input()
    return body


def check_url(api_root, path):

    url = f"{api_root}/operatorplatform/federation/v1/{path}"
    parsed_url = urlparse(url)
    try:
    if parsed_url.scheme and parsed_url.netloc:
            requests.head(url, timeout=5)
        return url
    except requests.RequestException:
    return None


@@ -260,7 +263,7 @@ def create_profile(federation_id, body, token, api_root):
    if not partner_op_url:
        return {"error": f"Invalid URL: {partner_op_url}"}

    json_payload = body.to_gsma_input()
    json_payload = _gsma_payload(body)

    response = requests.post(partner_op_url, headers=headers, json=json_payload)
    
@@ -305,7 +308,7 @@ def update_profile(federation_id, app_id, body, token, api_root):
    if not partner_op_url:
        return {"error": f"Invalid URL: {partner_op_url}"}

    json_payload = body.to_gsma_input()
    json_payload = _gsma_payload(body)

    response = requests.patch(partner_op_url, headers=headers, json=json_payload)
    
@@ -387,7 +390,7 @@ def install_app_deployment(federation_id, body, token, api_root):
    if not partner_op_url:
        return {"error": f"Invalid URL: {partner_op_url}"}

    json_payload = body.to_gsma_input()
    json_payload = _gsma_payload(body)

    response = requests.post(partner_op_url, headers=headers, json=json_payload)