[prev in list] [next in list] [prev in thread] [next in thread] 

List:       spacewalk-devel
Subject:    [Spacewalk-devel] [PATCH 05/10] Add abrt data handling functionality
From:       Richard Marko <rmarko () redhat ! com>
Date:       2012-07-18 13:38:13
Message-ID: 1342618698-18572-6-git-send-email-rmarko () redhat ! com
[Download RAW message or body]


Signed-off-by: Richard Marko <rmarko@redhat.com>
---
 backend/server/handlers/xmlrpc/__init__.py |    2 +
 backend/server/handlers/xmlrpc/abrt.py     |   59 ++++++++++++++++++++++++++++
 backend/server/rhnCapability.py            |    1 +
 3 files changed, 62 insertions(+)
 create mode 100644 backend/server/handlers/xmlrpc/abrt.py

diff --git a/backend/server/handlers/xmlrpc/__init__.py b/backend/server/handlers/xmlrpc/__init__.py
index 9287d6a..afe29d6 100644
--- a/backend/server/handlers/xmlrpc/__init__.py
+++ b/backend/server/handlers/xmlrpc/__init__.py
@@ -24,6 +24,7 @@ import queue
 import errata
 import proxy
 import get_handler
+import abrt
 
 rpcClasses = {
     "registration"      : registration.Registration,
@@ -32,6 +33,7 @@ rpcClasses = {
     "errata"            : errata.Errata,
     "proxy"             : proxy.Proxy,
     "servers"           : up2date.Servers,
+    "abrt"              : abrt.Abrt,
     }
 
 getHandler = get_handler.GetHandler
diff --git a/backend/server/handlers/xmlrpc/abrt.py b/backend/server/handlers/xmlrpc/abrt.py
new file mode 100644
index 0000000..dc3eaea
--- /dev/null
+++ b/backend/server/handlers/xmlrpc/abrt.py
@@ -0,0 +1,59 @@
+#
+# Copyright (c) 2012 Red Hat, Inc.
+#
+# This software is licensed to you under the GNU General Public License,
+# version 2 (GPLv2). There is NO WARRANTY for this software, express or
+# implied, including the implied warranties of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+# along with this software; if not, see
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+#
+# Red Hat trademarks are not licensed under GPLv2. No permission is
+# granted to use or replicate Red Hat trademarks that are incorporated
+# in this software or its documentation.
+#
+
+from spacewalk.server import rhnSQL
+from spacewalk.common.rhnLog import log_debug
+from spacewalk.server.rhnHandler import rhnHandler
+
+_query_delete_data = rhnSQL.Statement("""
+delete from rhnAbrtInfo where server_id = :server_id
+""")
+
+_query_store_data = rhnSQL.Statement("""
+insert into rhnAbrtInfo(
+    id,
+    server_id,
+    num_crashes,
+    created)
+values (
+    sequence_nextval('rhn_abrt_info_id_seq'),
+    :server_id,
+    :num_crashes,
+    current_timestamp
+    )
+""")
+
+class Abrt(rhnHandler):
+    def __init__(self):
+        rhnHandler.__init__(self)
+        self.functions.append('handle')
+
+    def handle(self, system_id, version, status, message, data):
+        self.auth_system(system_id)
+        log_debug(1, self.server_id, version, status, message, data)
+
+        if status == 0:
+            h = rhnSQL.prepare(_query_delete_data)
+            h.execute(server_id=self.server_id)
+
+            h = rhnSQL.prepare(_query_store_data)
+            h.execute(server_id=self.server_id,
+                num_crashes=data['num_crashes'])
+
+            rhnSQL.commit()
+
+            return True
+
+        return False
diff --git a/backend/server/rhnCapability.py b/backend/server/rhnCapability.py
index 4c54870..9f2a82f 100644
--- a/backend/server/rhnCapability.py
+++ b/backend/server/rhnCapability.py
@@ -166,6 +166,7 @@ def _set_server_capabilities():
         'xmlrpc.errata.patch_names'             : {'version' : 1, 'value' : 1},
         'staging_content'                       : {'version' : 1, 'value' : 1},
         'ipv6'                                  : {'version' : 1, 'value' : 1},
+        'abrt.handle'                           : {'version' : 1, 'value' : 1},
     }
     l = []
     for name, hashval in capabilities.items():
-- 
1.7.10.4

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic