Commit 3a1cf47f authored by Sebastien Merle's avatar Sebastien Merle
Browse files

Fix some error handling

parent a01a91e5
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -43,6 +43,8 @@ def main():
        get_env_var_name(ServiceNameEnum.DEVICE,   ENVVAR_SUFIX_SERVICE_PORT_GRPC),
        get_env_var_name(ServiceNameEnum.DEVICE,   ENVVAR_SUFIX_SERVICE_PORT_GRPC),
        get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_HOST     ),
        get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_HOST     ),
        get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
        get_env_var_name(ServiceNameEnum.PATHCOMP, ENVVAR_SUFIX_SERVICE_PORT_GRPC),
        get_env_var_name(ServiceNameEnum.TE,       ENVVAR_SUFIX_SERVICE_HOST     ),
        get_env_var_name(ServiceNameEnum.TE,       ENVVAR_SUFIX_SERVICE_PORT_GRPC),
    ])
    ])


    signal.signal(signal.SIGINT,  signal_handler)
    signal.signal(signal.SIGINT,  signal_handler)
+1 −1
Original line number Original line Diff line number Diff line
@@ -36,7 +36,7 @@


%%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


-define(LARGE_TIMEOUT, 20000).
-define(LARGE_TIMEOUT, infinity).




%%% RECORDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% RECORDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+4 −4
Original line number Original line Diff line number Diff line
@@ -138,22 +138,22 @@ do_request_lsp(#data{services = Services} = Data,
        {error, Reason} ->
        {error, Reason} ->
            ?LOG_ERROR("Error while setting up service ~s forward LSP: ~p",
            ?LOG_ERROR("Error while setting up service ~s forward LSP: ~p",
                       [format_service_id(ServiceId), Reason]),
                       [format_service_id(ServiceId), Reason]),
            {'SERVICESTATUS_UNDEFINED', Data};
            {{error, Reason}, Data};
        {ok, ForwardFlow} ->
        {ok, ForwardFlow} ->
            case epce_server:initiate_flow(SymbolicName2, Id2, Id1, BindingLabel2) of
            case epce_server:initiate_flow(SymbolicName2, Id2, Id1, BindingLabel2) of
                {error, Reason} ->
                {error, Reason} ->
                    ?LOG_ERROR("Error while setting up service ~s backward LSP: ~p",
                    ?LOG_ERROR("Error while setting up service ~s backward LSP: ~p",
                               [format_service_id(ServiceId), Reason]),
                               [format_service_id(ServiceId), Reason]),
                    %TODO: Cleanup forward flow ?
                    %TODO: Cleanup forward flow ?
                    {'SERVICESTATUS_UNDEFINED', Data};
                    {{error, Reason}, Data};
                {ok, BackwardFlow} ->
                {ok, BackwardFlow} ->
                    ServiceData = {ServiceMap, ForwardFlow, BackwardFlow},
                    ServiceData = {ServiceMap, ForwardFlow, BackwardFlow},
                    Services2 = Services#{ServiceId => ServiceData},
                    Services2 = Services#{ServiceId => ServiceData},
                    Data2 = Data#data{services = Services2},
                    Data2 = Data#data{services = Services2},
                    {'SERVICESTATUS_ACTIVE', Data2}
                    {{ok, 'SERVICESTATUS_ACTIVE'}, Data2}
            end
            end
    end.
    end.


do_delete_lsp(Data, ServiceId) ->
do_delete_lsp(Data, ServiceId) ->
    ?LOG_INFO("LSP DELETION REQUESTED ~p", [ServiceId]),
    ?LOG_INFO("LSP DELETION REQUESTED ~p", [ServiceId]),
    {'SERVICESTATUS_UNDEFINED', Data}.
    {{error, not_implemented}, Data}.
 No newline at end of file
 No newline at end of file
+17 −7
Original line number Original line Diff line number Diff line
@@ -19,22 +19,32 @@


%%% BEHAVIOUR te_te_service_bhvr CALLBACK FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% BEHAVIOUR te_te_service_bhvr CALLBACK FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%


request_lsp(_Ctx, Service) ->
request_lsp(Ctx, Service) ->
    ?LOG_ERROR("Requesting LSP: ~p", [Service]),
    ?LOG_INFO("Requesting LSP: ~p", [Service]),
    try tfte_server:request_lsp(Service)
    try tfte_server:request_lsp(Service) of
        {ok, Status} ->
            {ok, Status, Ctx};
        {error, Reason} ->
            ?LOG_INFO("Error while requesting LSP: ~p", [Reason]),
            {ok, 'SERVICESTATUS_UNDEFINED', Ctx}
    catch E:R:S ->
    catch E:R:S ->
        ?LOG_ERROR("Error while requesting LSP: ~p:~p ~p", [E, R, S]),
        ?LOG_ERROR("Error while requesting LSP: ~p:~p ~p", [E, R, S]),
        'SERVICESTATUS_UNDEFINED'
        {ok, 'SERVICESTATUS_UNDEFINED', Ctx}
    end.
    end.


update_lsp(_Ctx, _ServiceId) ->
update_lsp(_Ctx, _ServiceId) ->
    {error, {?GRPC_STATUS_UNIMPLEMENTED, <<"Not yet implemented">>},
    {error, {?GRPC_STATUS_UNIMPLEMENTED, <<"Not yet implemented">>},
             #{headers => #{}, trailers => #{}}}.
             #{headers => #{}, trailers => #{}}}.


delete_lsp(_Ctx, ServiceId) ->
delete_lsp(Ctx, ServiceId) ->
    ?LOG_ERROR("Deleting LSP: ~p", [ServiceId]),
    ?LOG_ERROR("Deleting LSP: ~p", [ServiceId]),
    try tfte_server:delete_lsp(ServiceId)
    try tfte_server:delete_lsp(ServiceId) of
        {ok, Status} ->
            {ok, Status, Ctx};
        {error, Reason} ->
            ?LOG_INFO("Error while deleting LSP: ~p", [Reason]),
            {ok, 'SERVICESTATUS_UNDEFINED', Ctx}
    catch E:R:S ->
    catch E:R:S ->
        ?LOG_ERROR("Error while deleting LSP: ~p:~p ~p", [E, R, S]),
        ?LOG_ERROR("Error while deleting LSP: ~p:~p ~p", [E, R, S]),
        'SERVICESTATUS_UNDEFINED'
        {ok, 'SERVICESTATUS_UNDEFINED', Ctx}
    end.
    end.
+9 −16
Original line number Original line Diff line number Diff line
@@ -281,19 +281,13 @@ device_status(#{device_operational_status := 'DEVICEOPERATIONALSTATUS_ENABLED'})
    enabled.
    enabled.


device_mpls_label(Device) ->
device_mpls_label(Device) ->
    case device_config_value(<<"/te_data/mpls_label">>, Device) of
    try device_config_value(<<"/te_data/mpls_label">>, Device)
        undefined -> undefined;
        LabelJson ->
            try jsx:decode(LabelJson)
    catch error:badarg -> undefined
    catch error:badarg -> undefined
            end
    end.
    end.


device_pcc_address(Device) ->
device_pcc_address(Device) ->
    case device_config_value(<<"/te_data/pcc_address">>, Device) of
    try device_config_value(<<"/te_data/pcc_address">>, Device) of
        undefined -> undefined;
        undefined -> undefined;
        AddressJson ->
            try jsx:decode(AddressJson) of
        AddressBin ->
        AddressBin ->
            case inet_parse:address(binary_to_list(AddressBin)) of
            case inet_parse:address(binary_to_list(AddressBin)) of
                {ok, Address} -> Address;
                {ok, Address} -> Address;
@@ -301,7 +295,6 @@ device_pcc_address(Device) ->
            end
            end
    catch
    catch
        error:badarg -> undefined
        error:badarg -> undefined
            end
    end.
    end.


device_config_value(Key, #{device_config := Config}) ->
device_config_value(Key, #{device_config := Config}) ->