You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ya...@apache.org on 2015/08/14 00:18:47 UTC
[3/5] mesos git commit: Added app::paths which handles Appc related
path manipulation.
Added app::paths which handles Appc related path manipulation.
- Akin to slave::paths.
Review: https://reviews.apache.org/r/37309
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a070de31
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a070de31
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a070de31
Branch: refs/heads/master
Commit: a070de312ee0e6902c34407e306ccdc8eaa3d8e9
Parents: 28d3041
Author: Jiang Yan Xu <ya...@jxu.me>
Authored: Mon Aug 10 11:12:31 2015 -0700
Committer: Jiang Yan Xu <ya...@jxu.me>
Committed: Thu Aug 13 15:15:20 2015 -0700
----------------------------------------------------------------------
src/Makefile.am | 2 +
.../containerizer/provisioners/appc/paths.cpp | 80 +++++++++++++++++++
.../containerizer/provisioners/appc/paths.hpp | 81 ++++++++++++++++++++
3 files changed, 163 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/a070de31/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 111aed9..f8e54d2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -457,6 +457,7 @@ libmesos_no_3rdparty_la_SOURCES = \
slave/containerizer/mesos/containerizer.cpp \
slave/containerizer/mesos/launch.cpp \
slave/containerizer/provisioner.cpp \
+ slave/containerizer/provisioners/appc/paths.cpp \
slave/resource_estimators/noop.cpp \
usage/usage.cpp \
v1/attributes.cpp \
@@ -711,6 +712,7 @@ libmesos_no_3rdparty_la_SOURCES += \
slave/containerizer/launcher.hpp \
slave/containerizer/linux_launcher.hpp \
slave/containerizer/provisioner.hpp \
+ slave/containerizer/provisioners/appc/paths.hpp \
slave/containerizer/isolators/posix.hpp \
slave/containerizer/isolators/posix/disk.hpp \
slave/containerizer/isolators/cgroups/constants.hpp \
http://git-wip-us.apache.org/repos/asf/mesos/blob/a070de31/src/slave/containerizer/provisioners/appc/paths.cpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/provisioners/appc/paths.cpp b/src/slave/containerizer/provisioners/appc/paths.cpp
new file mode 100644
index 0000000..a244d9a
--- /dev/null
+++ b/src/slave/containerizer/provisioners/appc/paths.cpp
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stout/path.hpp>
+
+#include "slave/containerizer/provisioners/appc/paths.hpp"
+
+using std::string;
+
+namespace mesos {
+namespace internal {
+namespace slave {
+namespace appc {
+namespace paths {
+
+string getStagingDir(const string& storeDir)
+{
+ return path::join(storeDir, "staging");
+}
+
+
+string getImagesDir(const string& storeDir)
+{
+ return path::join(storeDir, "images");
+}
+
+
+string getImagePath(const string& storeDir, const string& imageId)
+{
+ return path::join(getImagesDir(storeDir), imageId);
+}
+
+
+string getImageRootfsPath(
+ const string& storeDir,
+ const string& imageId)
+{
+ return path::join(getImagePath(storeDir, imageId), "rootfs");
+}
+
+
+string getImageRootfsPath(const std::string& imagePath)
+{
+ return path::join(imagePath, "rootfs");
+}
+
+
+string getImageManifestPath(
+ const string& storeDir,
+ const string& imageId)
+{
+ return path::join(getImagePath(storeDir, imageId), "manifest");
+}
+
+
+string getImageManifestPath(const std::string& imagePath)
+{
+ return path::join(imagePath, "manifest");
+}
+
+} // namespace paths {
+} // namespace appc {
+} // namespace slave {
+} // namespace internal {
+} // namespace mesos {
http://git-wip-us.apache.org/repos/asf/mesos/blob/a070de31/src/slave/containerizer/provisioners/appc/paths.hpp
----------------------------------------------------------------------
diff --git a/src/slave/containerizer/provisioners/appc/paths.hpp b/src/slave/containerizer/provisioners/appc/paths.hpp
new file mode 100644
index 0000000..e358051
--- /dev/null
+++ b/src/slave/containerizer/provisioners/appc/paths.hpp
@@ -0,0 +1,81 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MESOS_APPC_PATHS__
+#define __MESOS_APPC_PATHS__
+
+#include <list>
+#include <string>
+
+#include <mesos/mesos.hpp>
+
+namespace mesos {
+namespace internal {
+namespace slave {
+namespace appc {
+namespace paths {
+
+// The appc store file system layout is as follows:
+//
+// <root> ('--appc_store_dir' flag)
+// |--staging (contains temp directories for staging downloads)
+// |
+// |--images (stores validated images)
+// |--<image_id> (in the form of "sha512-<128_character_hash_sum>")
+// |--manifest
+// |--rootfs
+// |--... (according to the ACI spec)
+//
+// TODO(xujyan): The staging directory is unused for now (it's
+// externally managed) but implemented to illustrate the need for a
+// separate 'images' directory. Complete the layout diagram when the
+// staging directory is utilized by the provisioner.
+
+std::string getStagingDir(const std::string& storeDir);
+
+
+std::string getImagesDir(const std::string& storeDir);
+
+
+std::string getImagePath(
+ const std::string& storeDir,
+ const std::string& imageId);
+
+
+std::string getImageRootfsPath(
+ const std::string& storeDir,
+ const std::string& imageId);
+
+
+std::string getImageRootfsPath(const std::string& imagePath);
+
+
+std::string getImageManifestPath(
+ const std::string& storeDir,
+ const std::string& imageId);
+
+
+std::string getImageManifestPath(const std::string& imagePath);
+
+} // namespace paths {
+} // namespace appc {
+} // namespace slave {
+} // namespace internal {
+} // namespace mesos {
+
+#endif // __MESOS_APPC_PATHS__