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)