Added a URL parameter to the resource provider driver. The URL will be used by the resource provider driver to determine the endpoint of the resource provider manager API.
Review: https://reviews.apache.org/r/61275/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9f39112b Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9f39112b Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9f39112b Branch: refs/heads/master Commit: 9f39112b4df3d56f905fdd457e7bfdf9e294a911 Parents: 4c71ba1 Author: Jan Schlicht <[email protected]> Authored: Fri Aug 18 09:59:19 2017 -0700 Committer: Jie Yu <[email protected]> Committed: Fri Aug 18 11:43:56 2017 -0700 ---------------------------------------------------------------------- include/mesos/v1/resource_provider.hpp | 5 ++++- src/resource_provider/daemon.cpp | 10 ++++++++-- src/resource_provider/daemon.hpp | 3 +++ src/resource_provider/driver.cpp | 1 + src/resource_provider/local.cpp | 3 ++- src/resource_provider/local.hpp | 2 ++ src/resource_provider/storage/provider.cpp | 10 ++++++++-- src/resource_provider/storage/provider.hpp | 3 +++ src/slave/slave.cpp | 18 +++++++++++++++++- 9 files changed, 48 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/include/mesos/v1/resource_provider.hpp ---------------------------------------------------------------------- diff --git a/include/mesos/v1/resource_provider.hpp b/include/mesos/v1/resource_provider.hpp index 88b6062..91946eb 100644 --- a/include/mesos/v1/resource_provider.hpp +++ b/include/mesos/v1/resource_provider.hpp @@ -20,6 +20,7 @@ #include <functional> #include <queue> +#include <process/http.hpp> #include <process/owned.hpp> #include <mesos/http.hpp> @@ -50,6 +51,7 @@ public: * the resource provider manager. Note that we drop events while * disconnected. * + * @param url the URL where the resource provider API is served. * @param contentType the content type expected by this driver. * @param connected a callback which will be invoked when the driver * is connected. @@ -58,7 +60,8 @@ public: * @param received a callback which will be invoked when the driver * receives resource provider Events. */ - Driver(ContentType contentType, + Driver(const process::http::URL& url, + ContentType contentType, const std::function<void(void)>& connected, const std::function<void(void)>& disconnected, const std::function<void(const std::queue<Event>&)>& received); http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/daemon.cpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/daemon.cpp b/src/resource_provider/daemon.cpp index adcb60a..d584eb9 100644 --- a/src/resource_provider/daemon.cpp +++ b/src/resource_provider/daemon.cpp @@ -55,9 +55,11 @@ class LocalResourceProviderDaemonProcess { public: LocalResourceProviderDaemonProcess( + const process::http::URL& _url, const string& _workDir, const Option<string>& _configDir) : ProcessBase(process::ID::generate("local-resource-provider-daemon")), + url(_url), workDir(_workDir), configDir(_configDir) {} @@ -78,6 +80,7 @@ private: Try<Nothing> load(const string& path); + const process::http::URL url; const string workDir; const Option<string> configDir; @@ -144,7 +147,7 @@ Try<Nothing> LocalResourceProviderDaemonProcess::load(const string& path) } Try<Owned<LocalResourceProvider>> provider = - LocalResourceProvider::create(info.get()); + LocalResourceProvider::create(url, info.get()); if (provider.isError()) { return Error( @@ -159,6 +162,7 @@ Try<Nothing> LocalResourceProviderDaemonProcess::load(const string& path) Try<Owned<LocalResourceProviderDaemon>> LocalResourceProviderDaemon::create( + const process::http::URL& url, const slave::Flags& flags) { // We require that the config directory exists to create a daemon. @@ -168,15 +172,17 @@ Try<Owned<LocalResourceProviderDaemon>> LocalResourceProviderDaemon::create( } return new LocalResourceProviderDaemon( + url, flags.work_dir, configDir); } LocalResourceProviderDaemon::LocalResourceProviderDaemon( + const process::http::URL& url, const string& workDir, const Option<string>& configDir) - : process(new LocalResourceProviderDaemonProcess(workDir, configDir)) + : process(new LocalResourceProviderDaemonProcess(url, workDir, configDir)) { spawn(CHECK_NOTNULL(process.get())); } http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/daemon.hpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/daemon.hpp b/src/resource_provider/daemon.hpp index 467a5d3..ef6c356 100644 --- a/src/resource_provider/daemon.hpp +++ b/src/resource_provider/daemon.hpp @@ -19,6 +19,7 @@ #include <string> +#include <process/http.hpp> #include <process/owned.hpp> #include <stout/option.hpp> @@ -40,6 +41,7 @@ class LocalResourceProviderDaemon { public: static Try<process::Owned<LocalResourceProviderDaemon>> create( + const process::http::URL& url, const slave::Flags& flags); ~LocalResourceProviderDaemon(); @@ -52,6 +54,7 @@ public: private: LocalResourceProviderDaemon( + const process::http::URL& url, const std::string& workDir, const Option<std::string>& configDir); http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/driver.cpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/driver.cpp b/src/resource_provider/driver.cpp index 6778ec9..2fc4e68 100644 --- a/src/resource_provider/driver.cpp +++ b/src/resource_provider/driver.cpp @@ -63,6 +63,7 @@ protected: Driver::Driver( + const process::http::URL& url, ContentType contentType, const function<void(void)>& connected, const function<void(void)>& disconnected, http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/local.cpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/local.cpp b/src/resource_provider/local.cpp index a57c7c9..ad98f33 100644 --- a/src/resource_provider/local.cpp +++ b/src/resource_provider/local.cpp @@ -24,12 +24,13 @@ namespace mesos { namespace internal { Try<Owned<LocalResourceProvider>> LocalResourceProvider::create( + const process::http::URL& url, const ResourceProviderInfo& info) { // TODO(jieyu): Document the built-in local resource providers. if (info.type() == "org.apache.mesos.rp.local.storage") { Try<Owned<LocalResourceProvider>> provider = - StorageLocalResourceProvider::create(info); + StorageLocalResourceProvider::create(url, info); if (provider.isError()) { return Error( http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/local.hpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/local.hpp b/src/resource_provider/local.hpp index 604c5d0..ebaa07d 100644 --- a/src/resource_provider/local.hpp +++ b/src/resource_provider/local.hpp @@ -17,6 +17,7 @@ #ifndef __RESOURCE_PROVIDER_LOCAL_HPP__ #define __RESOURCE_PROVIDER_LOCAL_HPP__ +#include <process/http.hpp> #include <process/owned.hpp> #include <stout/try.hpp> @@ -30,6 +31,7 @@ class LocalResourceProvider { public: static Try<process::Owned<LocalResourceProvider>> create( + const process::http::URL& url, const ResourceProviderInfo& info); virtual ~LocalResourceProvider() = default; http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/storage/provider.cpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/storage/provider.cpp b/src/resource_provider/storage/provider.cpp index 4c39312..0893ace 100644 --- a/src/resource_provider/storage/provider.cpp +++ b/src/resource_provider/storage/provider.cpp @@ -52,8 +52,10 @@ class StorageLocalResourceProviderProcess { public: explicit StorageLocalResourceProviderProcess( + const process::http::URL& _url, const ResourceProviderInfo& _info) : ProcessBase(process::ID::generate("storage-local-resource-provider")), + url(_url), contentType(ContentType::PROTOBUF), info(_info) {} @@ -70,6 +72,7 @@ public: private: void initialize() override; + const process::http::URL url; const ContentType contentType; ResourceProviderInfo info; Owned<v1::resource_provider::Driver> driver; @@ -110,6 +113,7 @@ void StorageLocalResourceProviderProcess::received(const Event& event) void StorageLocalResourceProviderProcess::initialize() { driver.reset(new Driver( + url, contentType, defer(self(), &Self::connected), defer(self(), &Self::disconnected), @@ -124,16 +128,18 @@ void StorageLocalResourceProviderProcess::initialize() Try<Owned<LocalResourceProvider>> StorageLocalResourceProvider::create( + const process::http::URL& url, const ResourceProviderInfo& info) { return Owned<LocalResourceProvider>( - new StorageLocalResourceProvider(info)); + new StorageLocalResourceProvider(url, info)); } StorageLocalResourceProvider::StorageLocalResourceProvider( + const process::http::URL& url, const ResourceProviderInfo& info) - : process(new StorageLocalResourceProviderProcess(info)) + : process(new StorageLocalResourceProviderProcess(url, info)) { spawn(CHECK_NOTNULL(process.get())); } http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/resource_provider/storage/provider.hpp ---------------------------------------------------------------------- diff --git a/src/resource_provider/storage/provider.hpp b/src/resource_provider/storage/provider.hpp index c6ea440..6de88c2 100644 --- a/src/resource_provider/storage/provider.hpp +++ b/src/resource_provider/storage/provider.hpp @@ -17,6 +17,7 @@ #ifndef __RESOURCE_PROVIDER_STORAGE_PROVIDER_HPP__ #define __RESOURCE_PROVIDER_STORAGE_PROVIDER_HPP__ +#include <process/http.hpp> #include <process/owned.hpp> #include <stout/try.hpp> @@ -36,6 +37,7 @@ class StorageLocalResourceProvider : public LocalResourceProvider { public: static Try<process::Owned<LocalResourceProvider>> create( + const process::http::URL& url, const mesos::ResourceProviderInfo& info); ~StorageLocalResourceProvider() override; @@ -48,6 +50,7 @@ public: private: explicit StorageLocalResourceProvider( + const process::http::URL& url, const mesos::ResourceProviderInfo& info); process::Owned<StorageLocalResourceProviderProcess> process; http://git-wip-us.apache.org/repos/asf/mesos/blob/9f39112b/src/slave/slave.cpp ---------------------------------------------------------------------- diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp index 5a45054..50d2a10 100644 --- a/src/slave/slave.cpp +++ b/src/slave/slave.cpp @@ -49,6 +49,8 @@ #include <process/reap.hpp> #include <process/time.hpp> +#include <process/ssl/flags.hpp> + #include <stout/bytes.hpp> #include <stout/check.hpp> #include <stout/duration.hpp> @@ -413,8 +415,22 @@ void Slave::initialize() << mkdir.error(); } + string scheme = "http"; + +#ifdef USE_SSL_SOCKET + if (process::network::openssl::flags().enabled) { + scheme = "https"; + } +#endif + + process::http::URL localResourceProviderURL( + scheme, + self().address.ip, + self().address.port, + self().id + "/api/v1/resource_provider"); + Try<Owned<LocalResourceProviderDaemon>> _localResourceProviderDaemon = - LocalResourceProviderDaemon::create(flags); + LocalResourceProviderDaemon::create(localResourceProviderURL, flags); if (_localResourceProviderDaemon.isError()) { EXIT(EXIT_FAILURE)
