From e546b9d3632cd71153868e6491bbc4abc6e65a82 Mon Sep 17 00:00:00 2001 From: Brujo Benavides Date: Mon, 27 May 2019 14:52:03 -0300 Subject: [PATCH] [RTI-5175] Remove discrepancies found by dialyzer on OTP21 --- src/erlcloud_aws.erl | 6 +++++ src/erlcloud_ddb_util.erl | 2 +- src/erlcloud_elb.erl | 33 ++++++++++------------------ src/erlcloud_guardduty.erl | 45 ++++++++++++++------------------------ src/erlcloud_iam.erl | 8 +++---- src/erlcloud_states.erl | 6 ++--- 6 files changed, 42 insertions(+), 58 deletions(-) diff --git a/src/erlcloud_aws.erl b/src/erlcloud_aws.erl index 38060f536..8897c6c68 100644 --- a/src/erlcloud_aws.erl +++ b/src/erlcloud_aws.erl @@ -27,6 +27,12 @@ profile/0, profile/1, profile/2 ]). +%% We're abusing application:get_env there +-dialyzer([{nowarn_function, [get_role_credentials/1, get_credentials_from_role/1, + clear_expired_configs/0, clear_config/1, + auto_config_task_metadata/0, auto_config_metadata/0 + ]}]). + -include("erlcloud.hrl"). -include("erlcloud_aws.hrl"). diff --git a/src/erlcloud_ddb_util.erl b/src/erlcloud_ddb_util.erl index 415e87eec..24a22da64 100644 --- a/src/erlcloud_ddb_util.erl +++ b/src/erlcloud_ddb_util.erl @@ -513,7 +513,7 @@ batch_write_retry(RequestItems, Config) -> %% @end %%------------------------------------------------------------------------------ --spec wait_for_table_active(table_name(), pos_integer() | infinity, non_neg_integer(), aws_config()) -> +-spec wait_for_table_active(table_name(), pos_integer() | infinity, non_neg_integer() | infinity, aws_config()) -> ok | {error, deleting | retry_threshold_exceeded | any()}. wait_for_table_active(Table, Interval, RetryTimes, Config) when is_binary(Table), Interval > 0, RetryTimes >= 0 -> case erlcloud_ddb2:describe_table(Table, [{out, record}], Config) of diff --git a/src/erlcloud_elb.erl b/src/erlcloud_elb.erl index 54a3568e0..ea5ab1d5e 100644 --- a/src/erlcloud_elb.erl +++ b/src/erlcloud_elb.erl @@ -254,14 +254,18 @@ describe_load_balancers_all(Names) -> -spec describe_load_balancers_all(list(string()), aws_config()) -> {ok, [term()]} | {error, term()}. describe_load_balancers_all(Names, Config) -> - describe_all( - fun(Marker, Cfg) -> - describe_load_balancers( - Names, ?DEFAULT_MAX_RECORDS, Marker, Cfg - ) - end, Config, none, []). - - + describe_load_balancers_all(Names, Config, none, []). + +describe_load_balancers_all(Names, AwsConfig, Marker, Acc) -> + case describe_load_balancers(Names, ?DEFAULT_MAX_RECORDS, Marker, AwsConfig) of + {ok, Res} -> + {ok, lists:append(Acc, Res)}; + {{paged, NewMarker}, Res} -> + describe_load_balancers_all(Names, AwsConfig, NewMarker, lists:append(Acc, Res)); + {error, Reason} -> + {error, Reason} + end. + extract_elb(Item) -> [ {load_balancer_name, get_text("LoadBalancerName", Item)}, @@ -541,19 +545,6 @@ delete_load_balancer_policy(LB, PolicyName, Config) when is_list(LB), member_params(Prefix, MemberIdentifiers) -> MemberKeys = [Prefix ++ integer_to_list(I) || I <- lists:seq(1, length(MemberIdentifiers))], [{K, V} || {K, V} <- lists:zip(MemberKeys, MemberIdentifiers)]. - - -describe_all(Fun, AwsConfig, Marker, Acc) -> - case Fun(Marker, AwsConfig) of - {ok, Res} -> - {ok, lists:append(Acc, Res)}; - {ok, Res, NewMarker} -> - describe_all(Fun, AwsConfig, NewMarker, lists:append(Acc, Res)); - {{paged, NewMarker}, Res} -> - describe_all(Fun, AwsConfig, NewMarker, lists:append(Acc, Res)); - {error, Reason} -> - {error, Reason} - end. elb_query(Config, Action, Params) -> diff --git a/src/erlcloud_guardduty.erl b/src/erlcloud_guardduty.erl index 3f5d8e602..6da2a4026 100644 --- a/src/erlcloud_guardduty.erl +++ b/src/erlcloud_guardduty.erl @@ -60,7 +60,7 @@ get_detector(DetectorId) -> Config :: aws_config()) -> gd_return(). get_detector(DetectorId, Config) -> Path = "/detector/" ++ binary_to_list(DetectorId), - guardduty_request(Config, get, Path, undefined). + guardduty_request(Config, get, Path). %%------------------------------------------------------------------------------ @@ -77,63 +77,50 @@ list_detectors() -> list_detectors(default_config()). list_detectors(Config) -> list_detectors(undefined, undefined, Config). --spec list_detectors(Marker :: binary(), - MaxItems :: integer()) -> gd_return(). +-spec list_detectors(Marker :: undefined | binary(), + MaxItems :: undefined | integer()) -> gd_return(). list_detectors(Marker, MaxItems) -> list_detectors(Marker, MaxItems, default_config()). --spec list_detectors(Marker :: binary(), - MaxItems :: integer(), +-spec list_detectors(Marker :: undefined | binary(), + MaxItems :: undefined | integer(), Config :: aws_config()) -> gd_return(). list_detectors(Marker, MaxItems, Config) -> Path = "/detector", QParams = filter_undef([{"Marker", Marker}, {"MaxItems", MaxItems}]), - guardduty_request(Config, get, Path, undefined, QParams). + guardduty_request(Config, get, Path, QParams). %%%------------------------------------------------------------------------------ %%% Internal Functions %%%------------------------------------------------------------------------------ -guardduty_request(Config, Method, Path, Body) -> - guardduty_request(Config, Method, Path, Body, []). +guardduty_request(Config, Method, Path) -> + guardduty_request(Config, Method, Path, []). -guardduty_request(Config, Method, Path, Body, QParam) -> +guardduty_request(Config, Method, Path, QParam) -> case erlcloud_aws:update_config(Config) of {ok, Config1} -> - guardduty_request_no_update(Config1, Method, Path, Body, QParam); + guardduty_request_no_update(Config1, Method, Path, QParam); {error, Reason} -> {error, Reason} end. -guardduty_request_no_update(Config, Method, Path, Body, QParam) -> - Form = case encode_body(Body) of - <<>> -> erlcloud_http:make_query_string(QParam); - Value -> Value - end, - Headers = headers(Method, Path, Config, encode_body(Body), QParam), +guardduty_request_no_update(Config, Method, Path, QParam) -> + Headers = headers(Method, Path, Config, QParam), case erlcloud_aws:aws_request_form_raw( Method, Config#aws_config.guardduty_scheme, Config#aws_config.guardduty_host, - Config#aws_config.guardduty_port, Path, Form, Headers, Config) of + Config#aws_config.guardduty_port, Path, <<>>, Headers, Config) of {ok, Data} -> {ok, jsx:decode(Data)}; E -> E end. -encode_body(undefined) -> - <<>>; -encode_body([]) -> - <<"{}">>; -encode_body(Body) -> - jsx:encode(Body). - -headers(Method, Uri, Config, Body, QParam) -> - Headers = [{"host", Config#aws_config.guardduty_host}, - {"content-type", "application/json"}], +headers(Method, Uri, Config, QParam) -> + Headers = [{"host", Config#aws_config.guardduty_host}, {"content-type", "application/json"}], Region = erlcloud_aws:aws_region_from_host(Config#aws_config.guardduty_host), - erlcloud_aws:sign_v4(Method, Uri, Config, - Headers, Body, Region, "guardduty", QParam). + erlcloud_aws:sign_v4(Method, Uri, Config, Headers, <<>>, Region, "guardduty", QParam). default_config() -> erlcloud_aws:default_config(). diff --git a/src/erlcloud_iam.erl b/src/erlcloud_iam.erl index cd0871743..25289d073 100644 --- a/src/erlcloud_iam.erl +++ b/src/erlcloud_iam.erl @@ -774,19 +774,19 @@ list_virtual_mfa_devices(#aws_config{} = Config) -> list_virtual_mfa_devices(AssignmentStatus) -> list_virtual_mfa_devices(AssignmentStatus, undefined, undefined, default_config()). --spec list_virtual_mfa_devices(string(), string() | aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. +-spec list_virtual_mfa_devices(undefined | string(), string() | aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. list_virtual_mfa_devices(AssignmentStatus, #aws_config{} = Config) -> list_virtual_mfa_devices(AssignmentStatus, undefined, undefined, Config); list_virtual_mfa_devices(AssignmentStatus, Marker) -> list_virtual_mfa_devices(AssignmentStatus, Marker, undefined, default_config()). --spec list_virtual_mfa_devices(string(), string(), string()| aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. +-spec list_virtual_mfa_devices(undefined | string(), undefined | string(), string()| aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. list_virtual_mfa_devices(AssignmentStatus, Marker, #aws_config{} = Config) -> list_virtual_mfa_devices(AssignmentStatus, Marker, undefined, Config); list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems) -> list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems, default_config()). --spec list_virtual_mfa_devices(string(), string(), string(), aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. +-spec list_virtual_mfa_devices(undefined | string(), undefined | string(), undefined | string(), aws_config()) -> {ok, proplist()} | {ok, proplist(), string()} | {error, any()}. list_virtual_mfa_devices(AssignmentStatus, Marker, MaxItems, #aws_config{} = Config) -> Params = make_list_virtual_mfa_devices_params(AssignmentStatus, Marker, MaxItems), ItemPath = "/ListVirtualMFADevicesResponse/ListVirtualMFADevicesResult/VirtualMFADevices/member", @@ -803,7 +803,7 @@ list_virtual_mfa_devices_all(#aws_config{} = Config) -> list_virtual_mfa_devices_all(AssignmentStatus) -> list_virtual_mfa_devices_all(AssignmentStatus, default_config()). --spec list_virtual_mfa_devices_all(string(), aws_config()) -> {ok, proplist()} | {error, any()}. +-spec list_virtual_mfa_devices_all(undefined | string(), aws_config()) -> {ok, proplist()} | {error, any()}. list_virtual_mfa_devices_all(AssignmentStatus, #aws_config{} = Config) -> Params = make_list_virtual_mfa_devices_params(AssignmentStatus, undefined, undefined), ItemPath = "/ListVirtualMFADevicesResponse/ListVirtualMFADevicesResult/VirtualMFADevices/member", diff --git a/src/erlcloud_states.erl b/src/erlcloud_states.erl index 908cbe279..a321067fb 100644 --- a/src/erlcloud_states.erl +++ b/src/erlcloud_states.erl @@ -539,7 +539,7 @@ start_execution(StateMachineArn, Options) -> start_execution(StateMachineArn, Options, default_config()). -spec start_execution(StateMachineArn :: binary(), - Options :: list(), + Options :: #{binary() => term()}, Config :: aws_config()) -> {ok, map()} | {error, any()}. start_execution(StateMachineArn, Options, Config) @@ -573,8 +573,8 @@ stop_execution(ExecutionArn, Options) -> stop_execution(ExecutionArn, Options, default_config()). -spec stop_execution(ExecutionArn :: binary(), - Options :: list(), - Config :: aws_config()) -> + Options :: #{binary() => term()}, + Config :: aws_config()) -> {ok, map()} | {error, any()}. stop_execution(ExecutionArn, Options, Config) when is_binary(ExecutionArn), is_map(Options) ->