You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jp...@apache.org on 2019/07/21 08:06:46 UTC

[mesos] 01/03: Moved kernelVersion check to common code.

This is an automated email from the ASF dual-hosted git repository.

jpeach pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 4bd3e7023bcbe88c9ad1defdf9a138c8c78b377f
Author: Jacob Janco <jj...@gmail.com>
AuthorDate: Sat Jul 20 23:34:12 2019 -0700

    Moved kernelVersion check to common code.
    
    Review: https://reviews.apache.org/r/71106/
---
 src/CMakeLists.txt            |  1 +
 src/Makefile.am               |  2 ++
 src/common/kernel_version.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++
 src/common/kernel_version.hpp | 29 +++++++++++++++++++++++++
 src/linux/ns.cpp              | 23 ++------------------
 5 files changed, 84 insertions(+), 21 deletions(-)

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 99402cb..4a5eeb0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -237,6 +237,7 @@ set(COMMON_SRC
   common/build.cpp
   common/command_utils.cpp
   common/http.cpp
+  common/kernel_version.cpp
   common/protobuf_utils.cpp
   common/resources.cpp
   common/resource_quantities.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 3c600bd..7851aba 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1071,6 +1071,8 @@ libmesos_no_3rdparty_la_SOURCES +=					\
   common/heartbeater.hpp						\
   common/http.cpp							\
   common/http.hpp							\
+  common/kernel_version.cpp						\
+  common/kernel_version.hpp						\
   common/parse.hpp							\
   common/protobuf_utils.cpp						\
   common/protobuf_utils.hpp						\
diff --git a/src/common/kernel_version.cpp b/src/common/kernel_version.cpp
new file mode 100644
index 0000000..51882f9
--- /dev/null
+++ b/src/common/kernel_version.cpp
@@ -0,0 +1,50 @@
+// 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 <string>
+
+#include <stout/os.hpp>
+#include <stout/strings.hpp>
+#include <stout/try.hpp>
+#include <stout/version.hpp>
+
+#include <common/kernel_version.hpp>
+
+using std::string;
+using std::vector;
+
+namespace mesos {
+
+Try<Version> kernelVersion()
+{
+  Try<os::UTSInfo> uname = os::uname();
+  if (!uname.isSome()) {
+    return Error("Unable to determine kernel version: " + uname.error());
+  }
+
+  vector<string> parts = strings::split(uname->release, ".");
+  parts.resize(2);
+
+  Try<Version> version = Version::parse(strings::join(".", parts));
+  if (!version.isSome()) {
+    return Error("Failed to parse kernel version '" + uname->release +
+        "': " + version.error());
+  }
+
+  return version;
+}
+
+} // namespace mesos {
diff --git a/src/common/kernel_version.hpp b/src/common/kernel_version.hpp
new file mode 100644
index 0000000..e5f72bf
--- /dev/null
+++ b/src/common/kernel_version.hpp
@@ -0,0 +1,29 @@
+// 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 __KERNEL_VERSION_HPP__
+#define __KERNEL_VERSION_HPP__
+
+#include <stout/try.hpp>
+#include <stout/version.hpp>
+
+namespace mesos {
+
+Try<Version> kernelVersion();
+
+} // namespace mesos {
+
+#endif // __KERNEL_VERSION_HPP__
diff --git a/src/linux/ns.cpp b/src/linux/ns.cpp
index 2440bb2..32d3e05 100644
--- a/src/linux/ns.cpp
+++ b/src/linux/ns.cpp
@@ -46,6 +46,7 @@
 #include <stout/os/ls.hpp>
 #include <stout/os/socket.hpp>
 
+#include "common/kernel_version.hpp"
 #include "common/status_utils.hpp"
 
 using std::set;
@@ -54,26 +55,6 @@ using std::vector;
 
 namespace ns {
 
-static Try<Version> kernelVersion()
-{
-  Try<os::UTSInfo> uname = os::uname();
-  if (!uname.isSome()) {
-    return Error("Unable to determine kernel version: " + uname.error());
-  }
-
-  vector<string> parts = strings::split(uname->release, ".");
-  parts.resize(2);
-
-  Try<Version> version = Version::parse(strings::join(".", parts));
-  if (!version.isSome()) {
-    return Error("Failed to parse kernel version '" + uname->release +
-        "': " + version.error());
-  }
-
-  return version;
-}
-
-
 Try<int> nstype(const string& ns)
 {
   const hashmap<string, int> nstypes = {
@@ -166,7 +147,7 @@ Try<bool> supported(int nsTypes)
   }
 
   if ((nsTypes & CLONE_NEWUSER) && (supported & CLONE_NEWUSER)) {
-    Try<Version> version = kernelVersion();
+    Try<Version> version = mesos::kernelVersion();
 
     if (version.isError()) {
       return Error(version.error());