anchor.diff:                     KeyName     :: string() | binary()) ->
             elibcloud_func_result(no_such_key).
   get_key_pair({Provider, UserName, Password}, KeyName) ->
  -    JsonInput = [{<<"action">>,      <<"get_key_pair">>},
  -                 {<<"provider">>,    bin(Provider)},
  -                 {<<"userName">>,    bin(UserName)},
  -                 {<<"password">>,    bin(Password)},
  -                 {<<"keyName">>,     bin(KeyName)}],
  +    JsonInput = [{<<"action">>,   <<"get_key_pair">>},
  +                 {<<"provider">>, bin(Provider)},
  +                 {<<"userName">>, bin(UserName)},
  +                 {<<"password">>, bin(Password)},
  +                 {<<"keyName">>,  bin(KeyName)}],
   
       case libcloud_wrapper(JsonInput) of
           {ok, JsonRes} ->
  
positive.code: -type elibcloud_func_result(ErrorAtoms) ::
            {'ok', json_term()} |
            {error, {ErrorAtom :: ErrorAtoms,
                     Details :: json_term()}} |
            {'error', string()}.
  
  -type security_rule() :: {FromPort :: integer(),
                            ToPort :: integer(),
                            Port :: tcp | udp | icmp}.
  
  %% Supported provider: "EC2".
  -type credentials() :: {Provider   :: string() | binary(),
                          UserName   :: string() | binary(),
                          Password   :: string() | binary()}.
  
  -export_type([credentials/0]).
  
  
negative.code:     case list_nodes(Credentials) of
          {ok, Nodes} ->
              MatchingNodes =
                  [Node || Node <- Nodes,
                           lists:keyfind(<<"id">>, 1, Node) =:=
                               {<<"id">>, BinNodeId}],
  
              case MatchingNodes of
                  [] ->
  