You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2017/02/27 23:24:00 UTC

[2/6] mesos git commit: Added equality and output operators for agent capabilities.

Added equality and output operators for agent capabilities.


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/71201626
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/71201626
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/71201626

Branch: refs/heads/master
Commit: 71201626a98b02a2ad6bcf9209cea51c7be03eb9
Parents: 89080f7
Author: Benjamin Mahler <bm...@apache.org>
Authored: Mon Feb 27 14:59:01 2017 -0800
Committer: Benjamin Mahler <bm...@apache.org>
Committed: Mon Feb 27 15:09:43 2017 -0800

----------------------------------------------------------------------
 src/common/protobuf_utils.cpp | 30 ++++++++++++++++++++++++++++++
 src/common/protobuf_utils.hpp |  8 ++++++++
 2 files changed, 38 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/71201626/src/common/protobuf_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index 4421849..944263b 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -22,6 +22,8 @@
 #include <pwd.h>
 #endif // __WINDOWS__
 
+#include <ostream>
+
 #include <mesos/slave/isolator.hpp>
 
 #include <mesos/type_utils.hpp>
@@ -48,6 +50,7 @@
 
 #include "messages/messages.hpp"
 
+using std::ostream;
 using std::set;
 using std::string;
 
@@ -493,6 +496,33 @@ ContainerID getRootContainerId(const ContainerID& containerId)
 
 namespace slave {
 
+bool operator==(const Capabilities& left, const Capabilities& right)
+{
+  // TODO(bmahler): Use reflection-based equality to avoid breaking
+  // as new capabilities are added. Note that it needs to be set-based
+  // equality.
+  return left.multiRole == right.multiRole;
+}
+
+
+bool operator!=(const Capabilities& left, const Capabilities& right)
+{
+  return !(left == right);
+}
+
+
+ostream& operator<<(ostream& stream, const Capabilities& c)
+{
+  set<string> names;
+
+  foreach (const SlaveInfo::Capability& capability, c.toRepeatedPtrField()) {
+    names.insert(SlaveInfo::Capability::Type_Name(capability.type()));
+  }
+
+  return stream << stringify(names);
+}
+
+
 ContainerLimitation createContainerLimitation(
     const Resources& resources,
     const string& message,

http://git-wip-us.apache.org/repos/asf/mesos/blob/71201626/src/common/protobuf_utils.hpp
----------------------------------------------------------------------
diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp
index ae1467d..09e468c 100644
--- a/src/common/protobuf_utils.hpp
+++ b/src/common/protobuf_utils.hpp
@@ -18,6 +18,7 @@
 #define __PROTOBUF_UTILS_HPP__
 
 #include <initializer_list>
+#include <ostream>
 #include <set>
 #include <string>
 
@@ -155,6 +156,8 @@ struct Capabilities
         case SlaveInfo::Capability::MULTI_ROLE:
           multiRole = true;
           break;
+        // If adding another case here be sure to update the
+        // equality operator.
       }
     }
   }
@@ -175,6 +178,11 @@ struct Capabilities
 };
 
 
+bool operator==(const Capabilities& left, const Capabilities& right);
+bool operator!=(const Capabilities& left, const Capabilities& right);
+std::ostream& operator<<(std::ostream& stream, const Capabilities& c);
+
+
 mesos::slave::ContainerLimitation createContainerLimitation(
     const Resources& resources,
     const std::string& message,