You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2017/08/18 18:54:11 UTC

[4/9] mesos git commit: Added a URL parameter to the resource provider driver.

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 <ja...@mesosphere.io>
Authored: Fri Aug 18 09:59:19 2017 -0700
Committer: Jie Yu <yu...@gmail.com>
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)