diff --git a/src/dockerl_utils.erl b/src/dockerl_utils.erl index 935d312eef0d9229a17f486e68d3c37e1bb88f43..661c33928f07ccbb598491aa25fd9c91388d9fca 100644 --- a/src/dockerl_utils.erl +++ b/src/dockerl_utils.erl @@ -1,7 +1,29 @@ -module(dockerl_utils). +-export([get_gateway/2]). +-export([get_ip_address/2]). -export([get_ports/2]). +get_gateway(ServerRef, Id) -> + case dockerl:inspect_container(ServerRef, Id) of + {ok, #{<<"NetworkSettings">> := #{<<"Gateway">> := Gateway}}} -> + inet:parse_address(binary_to_list(Gateway)); + {ok, _} -> + {error, no_ip_address}; + Error -> + Error + end. + +get_ip_address(ServerRef, Id) -> + case dockerl:inspect_container(ServerRef, Id) of + {ok, #{<<"NetworkSettings">> := #{<<"IPAddress">> := IPAddress}}} -> + inet:parse_address(binary_to_list(IPAddress)); + {ok, _} -> + {error, no_ip_address}; + Error -> + Error + end. + get_ports(ServerRef, Id) -> case dockerl:inspect_container(ServerRef, Id) of {ok, #{<<"NetworkSettings">> := #{<<"Ports">> := Ports}}} -> @@ -25,4 +47,3 @@ get_ports(ServerRef, Id) -> Error -> Error end. - diff --git a/test/dockerl_test.erl b/test/dockerl_test.erl index 4a8bf6d213e9f75b299f3ea014f7d0d09b081788..02f3f9e59292707391e85ce6d93b74a1598fb10e 100644 --- a/test/dockerl_test.erl +++ b/test/dockerl_test.erl @@ -63,8 +63,9 @@ start_container(Pid, Name) -> query_container(Pid, Id) -> fun() -> timer:sleep(3000), - {ok, #{<<"80/tcp">> := [{Address, Port}]}} = dockerl_utils:get_ports(Pid, Id), - lager:debug("Using port: ~p", [Port]), + {ok, Address} = dockerl_utils:get_ip_address(Pid, Id), + {ok, #{<<"80/tcp">> := [{_, Port}]}} = dockerl_utils:get_ports(Pid, Id), + lager:debug("Using port ~p:~p", [Address, Port]), spawn(fun() -> send_request(Address, Port) end), {ok, Stream} = dockerl:container_logs(Pid, Id), ?assertEqual(ok, match_logs(Stream, <<"eunit">>, 1))