You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by tn...@apache.org on 2015/11/06 03:22:23 UTC
[4/6] mesos git commit: Moved ProvisionerProcess to header for
testing.
Moved ProvisionerProcess to header for testing.
Review: https://reviews.apache.org/r/39868
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/ecc28e12
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/ecc28e12
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/ecc28e12
Branch: refs/heads/master
Commit: ecc28e12e04e4eb1b8ff76b577746281c35f6b20
Parents: 782292d
Author: Timothy Chen <tn...@gmail.com>
Authored: Tue Oct 27 09:32:41 2015 +0000
Committer: Timothy Chen <tn...@apache.org>
Committed: Thu Nov 5 18:16:08 2015 -0800
----------------------------------------------------------------------
.../mesos/provisioner/provisioner.cpp | 59 -----------------
.../mesos/provisioner/provisioner.hpp | 67 +++++++++++++++++++-
2 files changed, 65 insertions(+), 61 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/ecc28e12/src/slave/containerizer/mesos/provisioner/provisioner.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/provisioner.cpp b/src/slave/containerizer/mesos/provisioner/provisioner.cpp
index e99c1c9..74e05ce 100644
--- a/src/slave/containerizer/mesos/provisioner/provisioner.cpp
+++ b/src/slave/containerizer/mesos/provisioner/provisioner.cpp
@@ -23,9 +23,6 @@
#include <process/dispatch.hpp>
#include <process/process.hpp>
-#include <process/metrics/counter.hpp>
-#include <process/metrics/metrics.hpp>
-
#include <stout/foreach.hpp>
#include <stout/hashmap.hpp>
#include <stout/hashset.hpp>
@@ -52,62 +49,6 @@ namespace mesos {
namespace internal {
namespace slave {
-class ProvisionerProcess : public Process<ProvisionerProcess>
-{
-public:
- ProvisionerProcess(
- const Flags& flags,
- const string& rootDir,
- const hashmap<Image::Type, Owned<Store>>& stores,
- const hashmap<string, Owned<Backend>>& backends);
-
- Future<Nothing> recover(
- const list<ContainerState>& states,
- const hashset<ContainerID>& orphans);
-
- Future<string> provision(
- const ContainerID& containerId,
- const Image& image);
-
- Future<bool> destroy(const ContainerID& containerId);
-
-private:
- Future<string> _provision(
- const ContainerID& containerId,
- const vector<string>& layers);
-
- Future<bool> _destroy(const ContainerID& containerId);
-
- const Flags flags;
-
- // Absolute path to the provisioner root directory. It can be
- // derived from '--work_dir' but we keep a separate copy here
- // because we converted it into an absolute path so managed rootfs
- // paths match the ones in 'mountinfo' (important if mount-based
- // backends are used).
- const string rootDir;
-
- const hashmap<Image::Type, Owned<Store>> stores;
- const hashmap<string, Owned<Backend>> backends;
-
- struct Info
- {
- // Mappings: backend -> {rootfsId, ...}
- hashmap<string, hashset<string>> rootfses;
- };
-
- hashmap<ContainerID, Owned<Info>> infos;
-
- struct Metrics
- {
- Metrics();
- ~Metrics();
-
- process::metrics::Counter remove_container_errors;
- } metrics;
-};
-
-
Try<Owned<Provisioner>> Provisioner::create(
const Flags& flags,
Fetcher* fetcher)
http://git-wip-us.apache.org/repos/asf/mesos/blob/ecc28e12/src/slave/containerizer/mesos/provisioner/provisioner.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/mesos/provisioner/provisioner.hpp b/src/slave/containerizer/mesos/provisioner/provisioner.hpp
index 912fc5a..e64d69a 100644
--- a/src/slave/containerizer/mesos/provisioner/provisioner.hpp
+++ b/src/slave/containerizer/mesos/provisioner/provisioner.hpp
@@ -31,6 +31,9 @@
#include <process/future.hpp>
#include <process/owned.hpp>
+#include <process/metrics/counter.hpp>
+#include <process/metrics/metrics.hpp>
+
#include "slave/flags.hpp"
#include "slave/containerizer/fetcher.hpp"
@@ -40,7 +43,9 @@ namespace internal {
namespace slave {
// Forward declaration.
+class Backend;
class ProvisionerProcess;
+class Store;
class Provisioner
@@ -51,6 +56,9 @@ public:
const Flags& flags,
Fetcher* fetcher);
+ // Available only for testing.
+ explicit Provisioner(process::Owned<ProvisionerProcess> process);
+
// NOTE: Made 'virtual' for mocking and testing.
virtual ~Provisioner();
@@ -79,14 +87,69 @@ protected:
Provisioner() {} // For creating mock object.
private:
- explicit Provisioner(process::Owned<ProvisionerProcess> process);
-
Provisioner(const Provisioner&) = delete; // Not copyable.
Provisioner& operator=(const Provisioner&) = delete; // Not assignable.
process::Owned<ProvisionerProcess> process;
};
+
+// Expose this class for testing only.
+class ProvisionerProcess : public process::Process<ProvisionerProcess>
+{
+public:
+ ProvisionerProcess(
+ const Flags& flags,
+ const std::string& rootDir,
+ const hashmap<Image::Type, process::Owned<Store>>& stores,
+ const hashmap<std::string, process::Owned<Backend>>& backends);
+
+ process::Future<Nothing> recover(
+ const std::list<mesos::slave::ContainerState>& states,
+ const hashset<ContainerID>& orphans);
+
+ process::Future<std::string> provision(
+ const ContainerID& containerId,
+ const Image& image);
+
+ process::Future<bool> destroy(const ContainerID& containerId);
+
+private:
+ process::Future<std::string> _provision(
+ const ContainerID& containerId,
+ const std::vector<std::string>& layers);
+
+ process::Future<bool> _destroy(const ContainerID& containerId);
+
+ const Flags flags;
+
+ // Absolute path to the provisioner root directory. It can be
+ // derived from '--work_dir' but we keep a separate copy here
+ // because we converted it into an absolute path so managed rootfs
+ // paths match the ones in 'mountinfo' (important if mount-based
+ // backends are used).
+ const std::string rootDir;
+
+ const hashmap<Image::Type, process::Owned<Store>> stores;
+ const hashmap<std::string, process::Owned<Backend>> backends;
+
+ struct Info
+ {
+ // Mappings: backend -> {rootfsId, ...}
+ hashmap<std::string, hashset<std::string>> rootfses;
+ };
+
+ hashmap<ContainerID, process::Owned<Info>> infos;
+
+ struct Metrics
+ {
+ Metrics();
+ ~Metrics();
+
+ process::metrics::Counter remove_container_errors;
+ } metrics;
+};
+
} // namespace slave {
} // namespace internal {
} // namespace mesos {