source: TI12-security/trunk/python/NDG/LogClient.py @ 1301

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/python/NDG/LogClient.py@1301
Revision 1301, 5.7 KB checked in by pjkersha, 13 years ago (diff)

setup.py, README: altered version info to post Alpha development
NDG/LogClient.py, SimpleCAClient.py and GatekeeperClient?.py: catch HTTPResponse error from ZSI ServiceProxy?. This
allows more error info for file not found type problems.

NDG/Session.py, NDG/CredWallet.py: use AttAuthorityClient? wrapper rather than direct calls to ZSI.

Line 
1#!/usr/bin/env python
2
3"""NDG Logging client - client interface class to NDG Logging WS
4
5NERC Data Grid Project
6
7P J Kershaw 12/05/06
8
9Copyright (C) 2006 CCLRC & NERC
10
11This software may be distributed under the terms of the Q Public License,
12version 1.0 or later.
13"""
14
15from ZSI import ServiceProxy
16from ZSI.wstools.Utility import HTTPResponse
17import sys
18import os
19
20from LogIO import *
21
22#_____________________________________________________________________________
23class LogClientError(Exception):
24    """Exception handling for Logging class"""
25    def __init__(self, msg):
26        self.__msg = msg
27         
28    def __str__(self):
29        return self.__msg
30
31
32#_____________________________________________________________________________
33class LogClient(object):
34   
35    #_________________________________________________________________________
36    def __init__(self, 
37                 wsdl=None,
38                 signingPubKeyFilePath=None,
39                 signingPriKeyFilePath=None,
40                 signingPriKeyPwd=None, 
41                 traceFile=None):
42        """
43        wsdl:                  WSDL URI for Logging WS.  Setting
44                               it will set the Service Proxy
45        traceFile:             set to file object such as sys.stderr to
46                               give extra WS debug information"""
47
48        self.__srvPx = None
49        self.__wsdl = None
50       
51       
52        if wsdl:
53            self.__setWSDL(wsdl)
54           
55        self.__traceFile = traceFile
56       
57        self.__signingPubKeyFilePath = signingPubKeyFilePath
58        self.__signingPriKeyFilePath = signingPriKeyFilePath
59        self.__signingPriKeyPwd = signingPriKeyPwd
60
61         
62        # Instantiate Logging WS proxy
63        if self.__wsdl:
64            self.serviceProxy()
65       
66
67    #_________________________________________________________________________
68    def __setWSDL(self, wsdl):
69       
70        if not isinstance(wsdl, basestring):
71            raise LogClientError, "Logging WSDL URI must be a valid string"
72       
73        self.__wsdl = wsdl
74       
75    wsdl = property(fset=__setWSDL,doc="Set Logging WSDL URI")
76   
77       
78    #_________________________________________________________________________
79    def serviceProxy(self, wsdl=None):
80        """Set the WS proxy for the Logging"""
81        if wsdl:
82            self.__setWSDL(wsdl)
83
84        try:
85            self.__srvPx = ServiceProxy(self.__wsdl, 
86                                        use_wsdl=True, 
87                                        tracefile=self.__traceFile)
88        except HTTPResponse, e:
89            raise LogClientError, \
90                "Error initialising WSDL Service Proxy for \"%s\": %s %s" % \
91                (self.__wsdl, e.status, e.reason)
92
93        except Exception, e:
94            raise LogClientError, \
95                    "Initialising WSDL Service Proxy: " + str(e)
96
97                                   
98    #_________________________________________________________________________
99    def debug(self, msg):
100        """Send a debug message to the log"""
101
102        try:
103            debugReq = DebugReq(msg=msg)                   
104            debugReq.sign(self.__signingPriKeyFilePath,
105                          self.__signingPriKeyPwd,
106                          self.__signingPubKeyFilePath)
107       
108            resp = self.__srvPx.debug(debugReq=debugReq())
109           
110        except Exception, e:
111            raise LogClientError("Error sending debug message: " + str(e))
112                             
113        if resp['debugResp']:
114            raise LogClientError(resp['debugResp'])
115
116                                   
117    #_________________________________________________________________________
118    def info(self, msg):
119        """Send a information message to the log"""
120
121        try:   
122            infoReq = InfoReq(msg=msg)                   
123            infoReq.sign(self.__signingPriKeyFilePath,
124                         self.__signingPriKeyPwd,
125                         self.__signingPubKeyFilePath)
126       
127            resp = self.__srvPx.info(infoReq=infoReq())
128           
129        except Exception, e:
130            raise LogClientError("Error sending info message: " + str(e))
131                             
132        if resp['infoResp']:
133            raise LogClientError(resp['infoResp'])
134
135                                   
136    #_________________________________________________________________________
137    def warning(self, msg):
138        """Send a warning message to the log"""
139
140        try:   
141            warningReq = WarningReq(msg=msg)                     
142            warningReq.sign(self.__signingPriKeyFilePath,
143                            self.__signingPriKeyPwd,
144                            self.__signingPubKeyFilePath)
145       
146            resp = self.__srvPx.warning(warningReq=warningReq())
147           
148        except Exception, e:
149            raise LogClientError("Error sending warning message: " + str(e))
150                             
151        if resp['warningResp']:
152            raise LogClientError(resp['warningResp'])
153
154                                   
155    #_________________________________________________________________________
156    def error(self, msg):
157        """Send a error message to the log"""
158
159        try:   
160            errorReq = ErrorReq(msg=msg)                     
161            errorReq.sign(self.__signingPriKeyFilePath,
162                          self.__signingPriKeyPwd,
163                          self.__signingPubKeyFilePath)
164       
165            resp = self.__srvPx.error(errorReq=errorReq())
166           
167        except Exception, e:
168            raise LogClientError("Error sending error message: " + str(e))
169                             
170        if resp['errorResp']:
171            raise LogClientError(resp['errorResp'])
172
173
174     
Note: See TracBrowser for help on using the repository browser.