Commit d53926f3 authored by Mohammad Ismaeel's avatar Mohammad Ismaeel
Browse files

Tapi delete service , get list of services

parent 29e2897e
Loading
Loading
Loading
Loading
+95 −11
Original line number Diff line number Diff line
@@ -13,13 +13,9 @@
# limitations under the License.

import base64, json, logging , os  , requests#, re
from flask import jsonify, Blueprint, flash, session, url_for, request , make_response
from common.proto.context_pb2 import (ContextList, Empty, Service, TopologyList, Topology)
from common.tools.descriptor.Loader import DescriptorLoader, compose_notifications
from common.tools.grpc.Tools import grpc_message_to_json_string
from common.tools.object_factory.Context import json_context_id
from common.tools.object_factory.Topology import json_topology_id 
from common.tools.context_queries.Topology import create_topology
from flask import  Blueprint, request , make_response
from common.proto.context_pb2 import ( ServiceId, Service)

from common.tools.descriptor.Tools import get_descriptors_add_services
from google.protobuf.json_format import MessageToDict , ParseDict
from context.client.ContextClient import ContextClient
@@ -50,14 +46,13 @@ def set_service () :
        for service in _add_services: 
            try : 
                service_client.connect()
                service_id = service_client.CreateService(service)
                service = ParseDict(service, Service())
                service_client.CreateService(service)
                
            except Exception as e : 
                logging.info(f"error in creating service {e}") 
                return make_response(f'error !! {e}' ,400)  
        for service in _services : 
           
            
            try : 
                service = ParseDict(service, Service())
                service_id = service_client.UpdateService(service)
@@ -133,3 +128,92 @@ def create_service ():
            return make_response('Service Created Successfully !!' , 200)
        else : 
            return make_response(response.text,400)
        
@service.route('/delete_service',methods= ['POST'])
def delete_service (): 
    data = request.json
    service_uuid = data.get('service_uuid',None)
    service_id = ServiceId()
    if isinstance(service_uuid, str):
        service_id.service_uuid.uuid = service_uuid
    else:
        return make_response("service_uuid must be a string", 400)
    if not service_uuid:
        return make_response("service_uuid is required", 400)
    try : 
        service_client.connect()
        service_client.DeleteService(service_id)
        return make_response(f"Service {service_uuid} deleted successfully !!", 200)
    except Exception as e : 
        logging.info(f"error in deleting service {e}") 
        return make_response(f'Error !! {e}' ,400) 
    finally : 
        if service_client: 
            service_client.close()         
            
@service.route('/delete_child_service',methods= ['POST'])    
def delete_child_service (): 
    data = request.json
    service_uuid = data.get('service_uuid',None)
    port = data.get('port',8008)
    host = data.get('host',None)
    if not host:    
        return make_response("host is required", 400)
    if not service_uuid:
        return make_response("service_uuid is required", 400)
    
    url = ('http://{}:{}/service/delete_service').format(host,port)
    try : 
        response = requests.post(url,json={'service_uuid': service_uuid})
        if response.status_code != 200:
            return make_response(f"Failed to delete child service: {response.text}", response.status_code)
        
        return make_response(f"Child Service {service_uuid} deleted successfully !!", 200)
    except Exception as e : 
        logging.info(f"error in deleting child service {e}") 
        return make_response(f'Error !! {e}' ,400) 
    
@service.route('/get_list_service', methods=['GET'])
def get_list_service():
   

    try:
        context_client.connect()
        list_services = context_client.ListServices()
        if not list_services:
            return make_response("No services found", 404)
        services_list = []
        for service in list_services:
            service_dict = MessageToDict(service, preserving_proto_field_name=True)
            services_list.append(service_dict)
        return make_response(json.dumps(services_list), 200)
    except Exception as e:
        logging.error(f"Error retrieving services: {e}")
        return make_response(f"Error retrieving services: {e}", 500)
    finally:
        if context_client:
            context_client.close()

@service.route('/get_child_services', methods=['POST'])
def get_child_services():
    data = request.json
   
    port = data.get('port', 8008)
    host = data.get('host', None)

    if not host:
        return make_response("host is required", 400)
    

    url = ('http://{}:{}/service/get_list_service').format(host, port)
    
    try:
        response = requests.get(url)
        if response.status_code != 200:
            return make_response(f"Failed to retrieve child services: {response.text}", response.status_code)
        
        child_services = response.json()
        return make_response(json.dumps(child_services), 200)
    except Exception as e:
        logging.error(f"Error retrieving child services: {e}")
        return make_response(f"Error retrieving child services: {e}", 500)
 No newline at end of file
+2 −1
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ def add_children () :
    children= request.json
    endpoints=[]
    child_topo = ChildTopology()
    response=None
    if children and 'topology' in children : 
        for child in children["topology"]:
            context_uuid = child.get('context_uuid',None)
@@ -117,7 +118,7 @@ def add_children () :
                        context_client.connect()
                        context_client.SetChildTopology(child_topo)
                       
                        return make_response("Topology Added Successfully !", 200)
                        return make_response( response.json, 200)
                    except Exception as e : 
                        logging.info(f'error {e}') 
                      
+3 −1
Original line number Diff line number Diff line
@@ -31,3 +31,5 @@ def services_builder (services):
    for service in services:
        built_services['services'].append(service_builder(service))
    return built_services    

+1 −10
Original line number Diff line number Diff line
@@ -23,16 +23,7 @@
        <div class="col-12 my-2">
          <div class="row">

            <!-- <div class="col-12">
         
              <h5 style="font-weight: bold;">TAPI : </h5>
            </div>
             <div class="col-12">
                <a href="{{ url_for('tapi.home') }}" class="btn btn-primary" style="margin-bottom: 10px;">
                  
                     Connect To Remote 
              </a>
          </div> -->
          </div>
        <div class="col-12 my-2">
          <h5 style="font-weight: bold;">Optical Configuration : </h5>