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