From 4aca28b580f9758be96efbeceead9e026470f3c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Erik=20Hedenstro=CC=88m?= <erik@hedenstroem.com>
Date: Mon, 26 Sep 2016 22:35:06 +0200
Subject: [PATCH] Using IPAddress

---
 src/dockerl_utils.erl | 23 ++++++++++++++++++++++-
 test/dockerl_test.erl |  5 +++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/src/dockerl_utils.erl b/src/dockerl_utils.erl
index 935d312..661c339 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 4a8bf6d..02f3f9e 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))
-- 
GitLab