Commit 6e26b790 authored by Sebastien Merle's avatar Sebastien Merle
Browse files

Better handling of bad GRPC arguments

parent dc309938
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -96,9 +96,8 @@ handle_event(cast, {topology_event, _Event}, ready, _Data) ->
    ?LOG_DEBUG("Teraflow topology event: ~p", [_Event]),
    keep_state_and_data;
handle_event({call, From}, {request_lsp, ServiceMap}, ready, Data) ->
    #{service_id := ServiceId} = ServiceMap,
    ?LOG_DEBUG("Teraflow service ~s requested its LSPs",
               [format_service_id(ServiceId)]),
               [format_service_id(maps:get(service_id, ServiceMap, undefined))]),
    {Result, Data2} = do_request_lsp(Data, ServiceMap),
    {keep_state, Data2, [{reply, From, Result}]};
handle_event({call, From}, {delete_lsp, ServiceId}, ready, Data) ->
@@ -122,6 +121,7 @@ code_change(_OldVsn, OldState, OldData, _Extra) ->

%%% INTERNAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

format_service_id(undefined) -> <<"undefined">>;
format_service_id(#{context_id := #{context_uuid := #{uuid := ContextName}},
                    service_uuid := #{uuid := ServiceUUID}}) ->
    iolist_to_binary(io_lib:format("~s:~s", [ContextName, ServiceUUID])).
@@ -162,8 +162,11 @@ do_request_lsp(#data{services = Services} = Data,
    catch T:E:S ->
        ?LOG_ERROR("Error while requesintg LSP: ~p:~p", [T, E]),
        ?LOG_ERROR("Stacktrace: ~p", [S]),
        erlang:raise(T, E, S)
    end.
        {{error, internal_error}, Data}
    end;
do_request_lsp(Data, ServiceMap) ->
    ?LOG_ERROR("Invalid arguments to RequestLSP call: ~p", [ServiceMap]),
    {{error, badarg}, Data}.

do_delete_lsp(Data, ServiceId) ->
    ?LOG_INFO("LSP DELETION REQUESTED ~p", [ServiceId]),