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

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

Tests/SecurityClientTest?.py: renamed test methods to be prefixed with 'test' so that they are
automatically called by default when the script is called with no args.

ndgSetup.sh: cosmetic changes

dist/NDG-Security-0.65.tar.gz: new distribution.

logs/ -> log/ renamed

setup.py: for new release 0.65

NDG/X509.py: fixed bugs - refs to wrong exception class names 'X509Error' and 'AttCertError?'

NDG/SecurityClient.py: AttAuthorityClient?.reqAuthorisation ref'd 'resp' instead of 'authResp'

NDG/Logging.py: fixed comment error

NDG/Session.py: fixed ref to SessionClient? - is now called SecurityClient?.

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
16import sys
17import os
18
19from LogIO import *
20
21#_____________________________________________________________________________
22class LogClientError(Exception):
23    """Exception handling for Logging class"""
24    def __init__(self, msg):
25        self.__msg = msg
26         
27    def __str__(self):
28        return self.__msg
29
30
31#_____________________________________________________________________________
32class LogClient(object):
33   
34    #_________________________________________________________________________
35    def __init__(self, 
36                 wsdl=None,
37                 signingPubKeyFilePath=None,
38                 signingPriKeyFilePath=None,
39                 signingPriKeyPwd=None, 
40                 traceFile=None):
41        """
42        wsdl:                  WSDL URI for Logging WS.  Setting
43                               it will set the Service Proxy
44        traceFile:             set to file object such as sys.stderr to
45                               give extra WS debug information"""
46
47        self.__srvPx = None
48        self.__wsdl = None
49       
50       
51        if wsdl:
52            self.__setWSDL(wsdl)
53           
54        self.__traceFile = traceFile
55       
56        self.__signingPubKeyFilePath = signingPubKeyFilePath
57        self.__signingPriKeyFilePath = signingPriKeyFilePath
58        self.__signingPriKeyPwd = signingPriKeyPwd
59
60         
61        # Instantiate Logging WS proxy
62        if self.__wsdl:
63            self.serviceProxy()
64       
65
66    #_________________________________________________________________________
67    def __setWSDL(self, wsdl):
68       
69        if not isinstance(wsdl, basestring):
70            raise LogClientError(\
71                        "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 Exception, e:
89            raise LogClientError(\
90                    "Initialising WSDL Service Proxy: " + str(e))
91
92                                   
93    #_________________________________________________________________________
94    def debug(self, msg):
95        """Send a debug message to the log"""
96
97        try:
98            debugReq = DebugReq(msg=msg)                   
99            debugReq.sign(self.__signingPriKeyFilePath,
100                          self.__signingPriKeyPwd,
101                          self.__signingPubKeyFilePath)
102       
103            resp = self.__srvPx.debug(debugReq=debugReq())
104           
105        except Exception, e:
106            raise LogClientError("Error sending debug message: " + str(e))
107                             
108        if resp['debugResp']:
109            raise LogClientError(resp['debugResp'])
110
111                                   
112    #_________________________________________________________________________
113    def info(self, msg):
114        """Send a information message to the log"""
115
116        try:   
117            infoReq = InfoReq(msg=msg)                   
118            infoReq.sign(self.__signingPriKeyFilePath,
119                         self.__signingPriKeyPwd,
120                         self.__signingPubKeyFilePath)
121       
122            resp = self.__srvPx.info(infoReq=infoReq())
123           
124        except Exception, e:
125            raise LogClientError("Error sending info message: " + str(e))
126                             
127        if resp['infoResp']:
128            raise LogClientError(resp['infoResp'])
129
130                                   
131    #_________________________________________________________________________
132    def warning(self, msg):
133        """Send a warning message to the log"""
134
135        try:   
136            warningReq = WarningReq(msg=msg)                     
137            warningReq.sign(self.__signingPriKeyFilePath,
138                            self.__signingPriKeyPwd,
139                            self.__signingPubKeyFilePath)
140       
141            resp = self.__srvPx.warning(warningReq=warningReq())
142           
143        except Exception, e:
144            raise LogClientError("Error sending warning message: " + str(e))
145                             
146        if resp['warningResp']:
147            raise LogClientError(resp['warningResp'])
148
149                                   
150    #_________________________________________________________________________
151    def error(self, msg):
152        """Send a error message to the log"""
153
154        try:   
155            errorReq = ErrorReq(msg=msg)                     
156            errorReq.sign(self.__signingPriKeyFilePath,
157                          self.__signingPriKeyPwd,
158                          self.__signingPubKeyFilePath)
159       
160            resp = self.__srvPx.error(errorReq=errorReq())
161           
162        except Exception, e:
163            raise LogClientError("Error sending error message: " + str(e))
164                             
165        if resp['errorResp']:
166            raise LogClientError(resp['errorResp'])
167
168
169     
Note: See TracBrowser for help on using the repository browser.