Commit 58bc2fcc authored by Sergio Gimenez's avatar Sergio Gimenez
Browse files

Route FM southbound calls through SRM

parent 77bbc83e
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ from models.mongo_document import OriginatingOperatorPlatform
from models.mongo_document import OriginatingApplicationOnboardingManagement
from models.mongo_document import OriginatingApplicationDeploymentManagement
from adapters.error import APIError
from clients import tf_sdk
from clients import srm


def get_all_app_instances(federation_context_id, app_id, app_provider_id, bearer_token=None, partner_api_root=None):  # noqa: E501
@@ -131,9 +131,9 @@ def get_app_instance_details(federation_context_id, app_id, app_instance_id, zon

    # Check if exist instance id at Edge Cloud Platform
    try:
        response = tf_sdk.get_app_by_zone_app_instance_id(app_id, app_instance_id, zone_id)
        response = srm.get_app_by_zone_app_instance_id(app_id, app_instance_id, zone_id)
        if response.status_code != 200:
            raise APIError(500, f"Error: {response.status_code} from tf_sdk. {response.content}")
            raise APIError(500, f"Error: {response.status_code} from srm. {response.content}")
    except APIError:
        raise  # Re-raise APIError as-is
    except Exception as error:
@@ -141,7 +141,7 @@ def get_app_instance_details(federation_context_id, app_id, app_instance_id, zon

    # Check if exist zone id at Edge Cloud Platform
    try:
        if not tf_sdk.get_zone_by_zone_id(zone_id):
        if not srm.get_zone_by_zone_id(zone_id):
            raise APIError(422, "Zone Id not found at Edge Cloud Platform")
    except APIError:
        raise  # Re-raise APIError as-is
@@ -242,7 +242,7 @@ def install_app(federation_context_id, body, bearer_token=None, partner_api_root
    instance_id = ""
    instance_id_data = {}
    try:
        response = tf_sdk.post_app_command(body.to_gsma_input())
        response = srm.post_app_command(body.to_gsma_input())
        if response.status_code != 202:
            raise APIError(500, f"Error {response.status_code} - {response.content}")
        instance_id_data = response.json()
@@ -264,7 +264,7 @@ def install_app(federation_context_id, body, bearer_token=None, partner_api_root
    if originating_ad_objects:
        # if not is possible to create deployment in FM, delete the app command created
        try:
            response = tf_sdk.delete_app(body.app_id, instance_id, zone_id)
            response = srm.delete_app(body.app_id, instance_id, zone_id)
            if response.status_code != 200:
                raise APIError(500, f"Unable to delete app in tf_sdk when is not possible create deployment in FM. "
                               f"Error {response.status_code} - {response.content}")
@@ -341,11 +341,11 @@ def remove_app(federation_context_id, app_id, app_instance_id, zone_id, bearer_t
                       "appId, appInstanceId and zoneId")

    # Check if exist instance id at Edge Cloud Platform and delete
    response = tf_sdk.get_app_by_zone_app_instance_id(app_id, app_instance_id, zone_id)
    response = srm.get_app_by_zone_app_instance_id(app_id, app_instance_id, zone_id)
    if response.status_code == 200 or response.status_code == 503:
        # Delete Application command at Edge Cloud Platform
        try:
            response = tf_sdk.delete_app(app_id, app_instance_id, zone_id)
            response = srm.delete_app(app_id, app_instance_id, zone_id)
            if response.status_code == 200:
                # Delete Application Deployment
                originating_ad_objects.delete()
@@ -385,7 +385,7 @@ def fill_application_deployment_mongo_document(federation_context_id, instance_i
def check_zone_and_flavour(body):
    correct = True

    zone_data = tf_sdk.get_zone_by_zone_id(body.zone_info.zone_id)
    zone_data = srm.get_zone_by_zone_id(body.zone_info.zone_id)
    if not zone_data:
        return False

@@ -443,7 +443,7 @@ def get_list_zones_instances(instances_deployment):
def check_flavour_in_tf_sdk(flavour_id):
    exist = False

    zone_data = tf_sdk.get_zones()
    zone_data = srm.get_zones()
    if not zone_data:
        return False

@@ -465,7 +465,7 @@ def find_instance_state(app_id, instance_id, zone_id):
    instance_state = ""

    try:
        response = tf_sdk.get_app_by_zone_app_instance_id(app_id, instance_id, zone_id)
        response = srm.get_app_by_zone_app_instance_id(app_id, instance_id, zone_id)
        if response.status_code != 200:
            return f"Error {response.status_code} - {response.content}"
        data = response.json()
@@ -480,7 +480,7 @@ def create_response_instance_details(app_id, instance_id, zone_id):
    response_data = ""

    try:
        response = tf_sdk.get_app_by_zone_app_instance_id(app_id, instance_id, zone_id)
        response = srm.get_app_by_zone_app_instance_id(app_id, instance_id, zone_id)
        data = response.json()

        if isinstance(data, dict):
+5 −5
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ from models.mongo_document import OriginatingApplicationOnboardingManagementUpda
from models.mongo_document import OriginatingZoneInfo
from models.mongo_document import OriginatingApplicationDeploymentManagement
from adapters.error import APIError
from clients import tf_sdk
from clients import srm


def delete_app(federation_context_id, app_id, bearer_token=None, partner_api_root=None):  # noqa: E501
@@ -65,7 +65,7 @@ def delete_app(federation_context_id, app_id, bearer_token=None, partner_api_roo

    # Delete onboarding at edgecloud_client
    try:
        response = tf_sdk.delete_onboarding(app_id)
        response = srm.delete_onboarding(app_id)
        if response.status_code == 200:
            # Delete all the onboarding updates related to onboarding application
            obj_onboarding = originating_ao_objects.get()
@@ -142,7 +142,7 @@ def onboard_application(body, federation_context_id, bearer_token=None, partner_

    # Create onboarding at Edge Cloud Platform
    try:
        response = tf_sdk.post_onboarding(body.to_gsma_input())
        response = srm.post_onboarding(body.to_gsma_input())
        if response.status_code == 200:
            # Convert the original model instance to the MongoEngine document
            onboarding_data = fill_application_onboarding_mongo_document(federation_context_id, body)
@@ -206,7 +206,7 @@ def update_application(body, federation_context_id, app_id, bearer_token=None, p
    # Update onboarding at Edge Cloud Platform
    # Retrieve JSON
    try:
        response = tf_sdk.update_onboarding(app_id, body.to_gsma_input())
        response = srm.update_onboarding(app_id, body.to_gsma_input())
        if response.status_code == 200:
            # Update onboarding in FM
            # Convert the original model instance to the MongoEngine document
@@ -370,7 +370,7 @@ def check_deployment_zones(federation_context_id, body):
    # Check if exist deployment zones in Edge Cloud Platform
    for acs in body.app_deployment_zones:
        # Check if exist Zone Id in i2edge
        zone_data = tf_sdk.get_zone_by_zone_id(acs)
        zone_data = srm.get_zone_by_zone_id(acs)
        if not zone_data:
            return False

+3 −3
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ from models.mongo_document import OriginatingOperatorPlatform
from models.mongo_document import OriginatingArtefactManagement
from models.mongo_document import OriginatingApplicationOnboardingManagement
from clients import artefact_manager
from clients import tf_sdk
from clients import srm
from configparser import ConfigParser
import os

@@ -132,7 +132,7 @@ def remove_artefact(federation_context_id, artefact_id, bearer_token=None, partn
        raise APIError(409, "Unable to remove Artefact. There are application onboardings dependent. Remove it and try again ")

    try:
        response = tf_sdk.delete_artefact(artefact_id)
        response = srm.delete_artefact(artefact_id)
        if response.status_code != 200:
            raise APIError(422, f"Unable to delete artefact from Edge Cloud Platform. Response: {response.content}")
    except Exception as error:
@@ -272,7 +272,7 @@ def upload_artefact(body, federation_context_id, bearer_token=None, partner_api_

    # Onboarding artefact to Edge Cloud Platform
    try:
        response = tf_sdk.onboarding_artefact(body.to_gsma_input())
        response = srm.onboarding_artefact(body.to_gsma_input())
        print(f"DEBUG: ECP response status: {response.status_code}, body: {response.text}")
        if response.status_code not in [200, 201]:
            response_data = response.json()
+4 −4
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ from models.mongo_document import OriginatingOperatorPlatform
from models.mongo_document import OriginatingZoneInfo
from models.mongo_document import OriginatingApplicationOnboardingManagement
from adapters.error import APIError
from clients import tf_sdk
from clients import srm


def get_zone_data(federation_context_id, zone_id, bearer_token=None, partner_api_root=None):  # noqa: E501
@@ -57,7 +57,7 @@ def get_zone_data(federation_context_id, zone_id, bearer_token=None, partner_api

    # Check if exist Zone at Edge Cloud Platform
    try:
        response_data = tf_sdk.get_zone_by_zone_id(zone_id)
        response_data = srm.get_zone_by_zone_id(zone_id)
        resource = response_data.get("computeResourceQuotaLimits")
        for d in resource:
            huge = d.get("hugepages")
@@ -215,7 +215,7 @@ def zone_unsubscribe(federation_context_id, zone_id, bearer_token=None, partner_
def check_availability_zones(accepted_availability_zones):

    # Get the zones list from Edge Cloud Platform
    zones = tf_sdk.get_list_zones()
    zones = srm.get_list_zones()
    # Creates an array only with zone id from zones list
    zone_id_array = []
    # zones = zones.json()
@@ -240,7 +240,7 @@ def check_availability_zones(accepted_availability_zones):
def get_info_availability_zones_from_zones_edge_cloud_platform(availability_zones):

    # Retrieve zones from Edge Cloud Platform
    info_zones_list = tf_sdk.get_zones()
    info_zones_list = srm.get_zones()
    zones_for_federation = []

    # Loop zones assigned to our federation
+14 −10
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ from models.mongo_document import OriginatingOperatorPlatformUpdate
from models.mongo_document import OriginatingZoneInfo
from models.mongo_document import OriginatingArtefactManagement
from adapters.error import APIError
from clients import tf_sdk
from clients import srm

CONFIG = ConfigParser()
config_file = os.environ.get("FM_CONFIG_FILE", "conf/config.cfg")
@@ -363,11 +363,13 @@ def prepare_offered_availability_zones():
    offered_zones_array = []

    # Get the zones list from Edge Cloud Platform
    zones = tf_sdk.get_list_zones()
    zones = srm.get_list_zones()
    for zone in zones:
        # If the zone value is a dict, is a correct zone, else there is an issue and returns a str
        if isinstance(zone, dict):
            geolocation = zone.get("geolocation").replace("_", ",")
            geolocation = zone.get("geolocation")
            if geolocation:
                geolocation = geolocation.replace("_", ",")

                array_numbers = geolocation.split(",")
                numberone = float(array_numbers[0])
@@ -376,10 +378,12 @@ def prepare_offered_availability_zones():
                numbertwo_4 = f"{numbertwo:.4f}"

                geolocation = f"{numberone_4},{numbertwo_4}"  # 4 decimals
            else:
                geolocation = "0.0000,0.0000"

            zone_data = {
                "zoneId": zone.get("zoneId"),
                "geographyDetails": zone.get("geographyDetails"),
                "geographyDetails": zone.get("geographyDetails") or "unknown",
                "geolocation": geolocation
            }
            offered_zones_array.append(zone_data)
Loading