Ignore:
Timestamp:
Nov 30, 2008 5:38:16 PM (15 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
Children:
05191a6
Parents:
edbc841
Message:

Two changes. Get allow_any_CA checking to work (i.e., self signed certs or
certs signed by an unknown entity) and put more of the ZSI-dependent stuff into
the hidden parts or remote_services. Now those routines will find all the
relevant classes and part names from the naming conventions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd/remote_service.py

    redbc841 rf069052  
    1111from ZSI import ParseException, FaultException, SoapWriter
    1212
    13 from service_error import *
     13from service_error import service_error
    1414from xmlrpclib import ServerProxy, dumps, loads, Fault, Error, Binary
    1515
     16import fedd_services
     17import fedd_internal_services
    1618from util import fedd_ssl_context
    1719from fedid import fedid
     
    181183    created constructors will result in None being returned.
    182184    """
    183     def __init__(self, typecode, method, constructor, body_name):
    184         self.typecode = typecode
     185    def __init__(self, service_name, method, typecode=None,
     186            constructor=None, body_name=None):
    185187        self.method = method
    186         self.constructor = constructor
    187         self.body_name = body_name
     188
     189        response_class_name = "%sResponseMessage" % service_name
     190        request_class_name = "%sRequestMessage" % service_name
     191
     192        if body_name: self.body_name = body_name
     193        else: self.body_name = "%sResponseBody" % service_name
     194
     195        if constructor: self.constructor = constructor
     196        else:
     197            self.constructor = self.get_class(response_class_name)
     198            if not self.constructor:
     199                raise service_error(service_error.internal,
     200                        "Cannot find class for %s" % response_class_name)
     201
     202        if typecode: self.typecode = typecode
     203        else:
     204            req = self.get_class(request_class_name)
     205            if req:
     206                self.typecode = req.typecode
     207            else:
     208                raise service_error(service_error.internal,
     209                        "Cannot find class for %s" % request_class_name)
     210
     211            if not self.typecode:
     212                raise service_error(service_error.internal,
     213                        "Cannot get typecode for %s" % class_name)
     214
     215    def get_class(self, class_name):
     216        return getattr(fedd_services, class_name, None) or \
     217                getattr(fedd_internal_services, class_name, None)
    188218
    189219    def __call__(self, ps, fid):
     
    197227        resp = self.constructor()
    198228        set_element = getattr(resp, "set_element_%s" % self.body_name, None)
     229        print "set_element_%s" % self.body_name
    199230        if set_element and callable(set_element):
    200231            try:
     
    220251    to fedid objects on input and encapsulated as Binaries on output.
    221252    """
    222     def __init__(self, method, body_name):
     253    def __init__(self, service_name, method):
    223254        self.method = method
    224         self.body_name = body_name
     255        self.body_name = "%sResponseBody" % service_name
    225256
    226257    def __call__(self, params, fid):
     
    239270
    240271class service_caller(remote_service_base):
    241     def __init__(self, service_name, port_name, locator, request_message,
    242             request_body_name, tracefile=None):
     272    def __init__(self, service_name, request_message=None,
     273            request_body_name=None, tracefile=None):
    243274        self.service_name = service_name
    244         self.port_name = port_name
    245         self.locator = locator
    246         self.request_message = request_message
    247         self.request_body_name = request_body_name
     275
     276        if getattr(fedd_services.feddBindingSOAP, service_name, None):
     277            self.locator = fedd_services.feddServiceLocator
     278            self.port_name = 'getfeddPortType'
     279        elif getattr(fedd_internal_services.feddInternalBindingSOAP,
     280                service_name, None):
     281            self.locator = fedd_internal_services.feddInternalServiceLocator
     282            self.port_name = 'getfeddInternalPortType'
     283
     284        if request_message: self.request_message = request_message
     285        else:
     286            request_message_name = "%sRequestMessage" % service_name
     287            self.request_message = \
     288                    getattr(fedd_services, request_message_name, None) or \
     289                    getattr(fedd_internal_services, request_message_name, None)
     290            if not self.request_message:
     291                raise service_error(service_error.internal,
     292                        "Cannot find class for %s" % request_message_name)
     293
     294        if request_body_name: self.request_body_name = request_body_name
     295        else: self.request_body_name = "%sRequestBody" % service_name
     296
    248297        self.tracefile = tracefile
    249298        self.__call__ = self.call_service
Note: See TracChangeset for help on using the changeset viewer.