diff --git a/daemons/ganeti-rapi b/daemons/ganeti-rapi
index 88686db1cf8cbaeab17f93c0a0db65b6d1f40d7e..d11fefd5809d9e1a965118dbee6282c0506753fb 100755
--- a/daemons/ganeti-rapi
+++ b/daemons/ganeti-rapi
@@ -61,6 +61,9 @@ class RemoteApiHttpServer(http.HttpServer):
 
     try:
       result = fn()
+      sn = handler.getSerialNumber()
+      if sn:
+        req.response_headers[http.HTTP_ETAG] = str(sn)
     except:
       logging.exception("Error while handling the %s request", method)
       raise
diff --git a/lib/http.py b/lib/http.py
index 12418826fca6cc9bc6640044077a9d9878b7599c..7a6c0db9edb5646208415d0d2ade844495a44e5d 100644
--- a/lib/http.py
+++ b/lib/http.py
@@ -65,6 +65,7 @@ HTTP_1_1 = "HTTP/1.1"
 
 HTTP_GET = "GET"
 HTTP_HEAD = "HEAD"
+HTTP_ETAG = "ETag"
 
 
 class SocketClosed(socket.error):
@@ -372,6 +373,7 @@ class _HttpConnectionHandler(object):
     self.response_body = None
     self.response_code = HTTP_OK
     self.response_content_type = None
+    self.response_headers = {}
 
     self.should_fork = False
 
@@ -484,6 +486,9 @@ class _HttpConnectionHandler(object):
       self._SendHeader("Date", self._DateTimeHeader())
       self._SendHeader("Content-Type", self.response_content_type)
       self._SendHeader("Content-Length", str(len(self.response_body)))
+      for key, val in self.response_headers.iteritems():
+        self._SendHeader(key, val)
+
       # We don't support keep-alive at this time
       self._SendHeader("Connection", "close")
       self.wfile.write("\r\n")
diff --git a/lib/rapi/baserlib.py b/lib/rapi/baserlib.py
index fde62c8386c1305af9083eb0f534f7baccfca4f6..872b71a6eb6e0abe6ade623f95b5871e30cca039 100644
--- a/lib/rapi/baserlib.py
+++ b/lib/rapi/baserlib.py
@@ -137,3 +137,10 @@ class R_Generic(object):
     self.items = items
     self.queryargs = queryargs
     self.post_data = post_data
+    self.sn = None
+
+  def getSerialNumber(self):
+    """Get Serial Number.
+
+    """
+    return self.sn