You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by qi...@apache.org on 2017/08/03 07:49:48 UTC

[9/9] mesos git commit: Parsed DNS related info from the output of `docker inspect`.

Parsed DNS related info from the output of `docker inspect`.

Review: https://reviews.apache.org/r/60760


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/28faca0a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/28faca0a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/28faca0a

Branch: refs/heads/master
Commit: 28faca0ae2b3aeeddd078a978f4b7b2483d03c20
Parents: 30b4901
Author: Qian Zhang <zh...@gmail.com>
Authored: Tue Jul 11 14:41:17 2017 +0800
Committer: Qian Zhang <zh...@gmail.com>
Committed: Thu Aug 3 13:53:26 2017 +0800

----------------------------------------------------------------------
 src/docker/docker.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++++-
 src/docker/docker.hpp | 19 ++++++++++--
 2 files changed, 90 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/28faca0a/src/docker/docker.cpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.cpp b/src/docker/docker.cpp
index daa340f..df1490f 100755
--- a/src/docker/docker.cpp
+++ b/src/docker/docker.cpp
@@ -409,7 +409,79 @@ Try<Docker::Container> Docker::Container::create(const string& output)
     }
   }
 
-  return Container(output, id, name, optionalPid, started, ipAddress, devices);
+  vector<string> dns;
+
+  Result<JSON::Array> dnsArray =
+    json.find<JSON::Array>("HostConfig.Dns");
+
+  if (dnsArray.isError()) {
+    return Error("Failed to parse HostConfig.Dns: " + dnsArray.error());
+  }
+
+  if (dnsArray.isSome()) {
+    foreach (const JSON::Value& entry, dnsArray->values) {
+      if (!entry.is<JSON::String>()) {
+        return Error("Malformed HostConfig.Dns"
+                     " entry '" + stringify(entry) + "'");
+      }
+
+      dns.push_back(entry.as<JSON::String>().value);
+    }
+  }
+
+  vector<string> dnsOptions;
+
+  Result<JSON::Array> dnsOptionArray =
+    json.find<JSON::Array>("HostConfig.DnsOptions");
+
+  if (dnsOptionArray.isError()) {
+    return Error("Failed to parse HostConfig.DnsOptions: " +
+                 dnsOptionArray.error());
+  }
+
+  if (dnsOptionArray.isSome()) {
+    foreach (const JSON::Value& entry, dnsOptionArray->values) {
+      if (!entry.is<JSON::String>()) {
+        return Error("Malformed HostConfig.DnsOptions"
+                     " entry '" + stringify(entry) + "'");
+      }
+
+      dnsOptions.push_back(entry.as<JSON::String>().value);
+    }
+  }
+
+  vector<string> dnsSearch;
+
+  Result<JSON::Array> dnsSearchArray =
+    json.find<JSON::Array>("HostConfig.DnsSearch");
+
+  if (dnsSearchArray.isError()) {
+    return Error("Failed to parse HostConfig.DnsSearch: " +
+                 dnsSearchArray.error());
+  }
+
+  if (dnsSearchArray.isSome()) {
+    foreach (const JSON::Value& entry, dnsSearchArray->values) {
+      if (!entry.is<JSON::String>()) {
+        return Error("Malformed HostConfig.DnsSearch"
+                     " entry '" + stringify(entry) + "'");
+      }
+
+      dnsSearch.push_back(entry.as<JSON::String>().value);
+    }
+  }
+
+  return Container(
+      output,
+      id,
+      name,
+      optionalPid,
+      started,
+      ipAddress,
+      devices,
+      dns,
+      dnsOptions,
+      dnsSearch);
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/28faca0a/src/docker/docker.hpp
----------------------------------------------------------------------
diff --git a/src/docker/docker.hpp b/src/docker/docker.hpp
index 9581aa2..95e60a7 100644
--- a/src/docker/docker.hpp
+++ b/src/docker/docker.hpp
@@ -115,6 +115,15 @@ public:
 
     const std::vector<Device> devices;
 
+    // Returns the DNS nameservers set by "--dns" option.
+    const std::vector<std::string> dns;
+
+    // Returns the DNS options set by "--dns-option" option.
+    const std::vector<std::string> dnsOptions;
+
+    // Returns the DNS search domains set by "--dns-search" option.
+    const std::vector<std::string> dnsSearch;
+
   private:
     Container(
         const std::string& output,
@@ -123,14 +132,20 @@ public:
         const Option<pid_t>& pid,
         bool started,
         const Option<std::string>& ipAddress,
-        const std::vector<Device>& devices)
+        const std::vector<Device>& devices,
+        const std::vector<std::string>& dns,
+        const std::vector<std::string>& dnsOptions,
+        const std::vector<std::string>& dnsSearch)
       : output(output),
         id(id),
         name(name),
         pid(pid),
         started(started),
         ipAddress(ipAddress),
-        devices(devices) {}
+        devices(devices),
+        dns(dns),
+        dnsOptions(dnsOptions),
+        dnsSearch(dnsSearch) {}
   };
 
   class Image