Move function cleaning directory to module level
[ganeti-local] / lib / rapi / baserlib.py
index ee2e9b2..bb359af 100644 (file)
@@ -26,6 +26,8 @@
 import ganeti.cli
 import ganeti.opcodes
 
+from ganeti import luxi
+
 
 def BuildUriList(ids, uri_format, uri_fields=("name", "uri")):
   """Builds a URI list as used by index resources.
@@ -37,7 +39,7 @@ def BuildUriList(ids, uri_format, uri_fields=("name", "uri")):
 
   """
   (field_id, field_uri) = uri_fields
-  
+
   def _MapId(m_id):
     return { field_id: m_id, field_uri: uri_format % m_id, }
 
@@ -73,27 +75,58 @@ def MapFields(names, data):
   """
   if len(names) != len(data):
     raise AttributeError("Names and data must have the same length")
-  return dict([(names[i], data[i]) for i in range(len(names))])
+  return dict(zip(names, data))
 
 
-def _Tags_GET(kind, name=None):
+def _Tags_GET(kind, name=""):
   """Helper function to retrieve tags.
 
   """
-  if name is None:
-    # Do not cause "missing parameter" error, which happens if a parameter
-    # is None.
-    name = ""
   op = ganeti.opcodes.OpGetTags(kind=kind, name=name)
   tags = ganeti.cli.SubmitOpCode(op)
   return list(tags)
 
 
+def _Tags_POST(kind, tags, name=""):
+  """Helper function to set tags.
+
+  """
+  cl = luxi.Client()
+  return cl.SubmitJob([ganeti.opcodes.OpAddTags(kind=kind, name=name,
+                                                tags=tags)])
+
+
+def _Tags_DELETE(kind, tags, name=""):
+  """Helper function to delete tags.
+
+  """
+  cl = luxi.Client()
+  return cl.SubmitJob([ganeti.opcodes.OpDelTags(kind=kind, name=name,
+                                                tags=tags)])
+
+
+def MapBulkFields(itemslist, fields):
+  """Map value to field name in to one dictionary.
+
+  Args:
+  - itemslist: A list of items values
+  - instance: A list of items names
+
+  Returns:
+    A list of mapped dictionaries
+  """
+  items_details = []
+  for item in itemslist:
+    mapped = MapFields(fields, item)
+    items_details.append(mapped)
+  return items_details
+
+
 class R_Generic(object):
   """Generic class for resources.
 
   """
-  def __init__(self, request, items, queryargs):
+  def __init__(self, request, items, queryargs, post_data):
     """Generic resource constructor.
 
     Args:
@@ -105,3 +138,4 @@ class R_Generic(object):
     self.request = request
     self.items = items
     self.queryargs = queryargs
+    self.post_data = post_data