async def get_service(cls, request): """ Returns a list of all services or as per name &|| type filter :Example: curl -X GET http://localhost:<core mgt port>/foglamp/service curl -X GET http://localhost:<core mgt port>/foglamp/service?name=X&type=Storage """ service_name = request.query[ 'name'] if 'name' in request.query else None service_type = request.query[ 'type'] if 'type' in request.query else None try: if not service_name and not service_type: services_list = ServiceRegistry.all() elif service_name and not service_type: services_list = ServiceRegistry.get(name=service_name) elif not service_name and service_type: services_list = ServiceRegistry.get(s_type=service_type) else: services_list = ServiceRegistry.filter_by_name_and_type( name=service_name, s_type=service_type) except service_registry_exceptions.DoesNotExist as ex: if not service_name and not service_type: msg = 'No service found' elif service_name and not service_type: msg = 'Service with name {} does not exist'.format( service_name) elif not service_name and service_type: msg = 'Service with type {} does not exist'.format( service_type) else: msg = 'Service with name {} and type {} does not exist'.format( service_name, service_type) raise web.HTTPNotFound(reason=msg) services = [] for service in services_list: svc = dict() svc["id"] = service._id svc["name"] = service._name svc["type"] = service._type svc["address"] = service._address svc["management_port"] = service._management_port svc["protocol"] = service._protocol svc["status"] = ServiceRecord.Status(int( service._status)).name.lower() if service._port: svc["service_port"] = service._port services.append(svc) return web.json_response({"services": services})
async def get_service(cls, request): """ Returns a list of all services or of the selected service :Example: curl -X GET http://localhost:8082/foglamp/service :Example: curl -X GET http://localhost:8082/foglamp/service?name=X&type=Storage """ service_name = request.query[ 'name'] if 'name' in request.query else None service_type = request.query[ 'type'] if 'type' in request.query else None try: if not service_name and not service_type: services_list = ServiceRegistry.all() elif service_name and not service_type: services_list = ServiceRegistry.get(name=service_name) elif not service_name and service_type: services_list = ServiceRegistry.get(s_type=service_type) else: services_list = ServiceRegistry.filter_by_name_and_type( name=service_name, s_type=service_type) except service_registry_exceptions.DoesNotExist as ex: raise web.HTTPBadRequest( reason="Invalid service name and/or type provided" + str(ex)) services = [] for service in services_list: svc = dict() svc["id"] = service._id svc["name"] = service._name svc["type"] = service._type svc["address"] = service._address svc["management_port"] = service._management_port svc["protocol"] = service._protocol svc["status"] = service._status if service._port: svc["service_port"] = service._port services.append(svc) return web.json_response({"services": services})