Skip to content
Snippets Groups Projects
Commit d7e20401 authored by Sebastien Merle's avatar Sebastien Merle
Browse files

Fix some error handling

parent c79f932d
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!133Integration of TE component
...@@ -43,6 +43,8 @@ def main(): ...@@ -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)
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
%%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-define(LARGE_TIMEOUT, 20000). -define(LARGE_TIMEOUT, infinity).
%%% RECORDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% RECORDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
...@@ -138,22 +138,22 @@ do_request_lsp(#data{services = Services} = Data, ...@@ -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
...@@ -19,22 +19,32 @@ ...@@ -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.
...@@ -281,27 +281,20 @@ device_status(#{device_operational_status := 'DEVICEOPERATIONALSTATUS_ENABLED'}) ...@@ -281,27 +281,20 @@ 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; catch error:badarg -> undefined
LabelJson ->
try jsx:decode(LabelJson)
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 -> AddressBin ->
try jsx:decode(AddressJson) of case inet_parse:address(binary_to_list(AddressBin)) of
AddressBin -> {ok, Address} -> Address;
case inet_parse:address(binary_to_list(AddressBin)) of {error,einval} -> undefined
{ok, Address} -> Address;
{error,einval} -> undefined
end
catch
error:badarg -> undefined
end end
catch
error:badarg -> undefined
end. end.
device_config_value(Key, #{device_config := Config}) -> device_config_value(Key, #{device_config := Config}) ->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment