diff --git a/lib/qlang.py b/lib/qlang.py
index ec4f41b96aa1b6644fd5eba13dcdb22ec528da80..3d8a806ac621fb8465eb485a63e3e8fb27ea601d 100644
--- a/lib/qlang.py
+++ b/lib/qlang.py
@@ -73,3 +73,16 @@ def ReadSimpleFilter(namefield, filter_):
     result.append(value)
 
   return result
+
+
+def MakeSimpleFilter(namefield, values):
+  """Builds a filter for use with L{ReadSimpleFilter}.
+
+  @param namefield: Name of field containing item name
+  @param values: List of names
+
+  """
+  if values:
+    return [OP_OR] + [[OP_EQUAL, namefield, i] for i in values]
+
+  return None
diff --git a/test/ganeti.qlang_unittest.py b/test/ganeti.qlang_unittest.py
index c0ab03d597f80a90f54b3a79c5d70b7e2732c9f1..72c5558bdacdd1f67a9f317d8a05829ce187c3ac 100755
--- a/test/ganeti.qlang_unittest.py
+++ b/test/ganeti.qlang_unittest.py
@@ -56,5 +56,23 @@ class TestReadSimpleFilter(unittest.TestCase):
                         "name", i)
 
 
+class TestMakeSimpleFilter(unittest.TestCase):
+  def _Test(self, field, names, expected, parse_exp=None):
+    if parse_exp is None:
+      parse_exp = names
+
+    filter_ = qlang.MakeSimpleFilter(field, names)
+    self.assertEqual(filter_, expected)
+    self.assertEqual(qlang.ReadSimpleFilter(field, filter_), parse_exp)
+
+  def test(self):
+    self._Test("name", None, None, parse_exp=[])
+    self._Test("name", [], None)
+    self._Test("name", ["node1.example.com"],
+               ["|", ["=", "name", "node1.example.com"]])
+    self._Test("xyz", ["a", "b", "c"],
+               ["|", ["=", "xyz", "a"], ["=", "xyz", "b"], ["=", "xyz", "c"]])
+
+
 if __name__ == "__main__":
   testutils.GanetiTestProgram()