Ignore:
Timestamp:
Jul 16, 2008 5:59:59 PM (16 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:
dc8c3e6
Parents:
bb3769a
Message:

cross transport proxy operations work!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd_client.py

    rbb3769a r0c0b13c  
    147147        print >>out, "%s: %s" % (a['attribute'], a['value'])
    148148
     149def exit_with_fault(dict, out=sys.stderr):
     150    """ Print an error message and exit.
     151
     152    The dictionary contains the RequestAccessFaultBody elements."""
     153    codestr = ""
     154
     155    if dict.has_key('errstr'):
     156        codestr = "Error: %s" % dict['errstr']
     157
     158    if dict.has_key('code'):
     159        if len(codestr) > 0 :
     160            codestr += " (%d)" % dict['code']
     161        else:
     162            codestr = "Error Code: %d" % dict['code']
     163
     164    print>>out, codestr
     165    print>>out, "Description: %s" % dict['desc']
     166    sys.exit(dict.get('code', 20))
     167
    149168def add_ssh_key(option, opt_str, value, parser, access_keys):
    150169    try:
     
    274293if opts.debug > 1: print >>sys.stderr, msg
    275294
    276 print FaultType.typecode;
    277 
    278295if opts.transport == "soap":
    279296    loc = feddServiceLocator();
     
    299316        sys.exit("Malformed response (XMLPRC?): %s" % e)
    300317    except ZSI.FaultException, e:
    301         print dir(e.fault.detail[0])
    302         print e.fault.detail[0].RequestAccessFaultBody.get_element_code()
    303         d = unpack_soap(e.fault.detail[0].get_element_RequestAccessFaultBody())
    304         f = unpack_soap(e.fault.detail[0])
    305         print "unpack ", d
    306         print "unpack ", f
    307         sys.exit("Fault: %s %s" % (str(e.fault.code), str(e.fault.string)))
    308 
     318        resp = e.fault.detail[0]
    309319
    310320    if (resp != None):
    311         resp_body = resp.get_element_RequestAccessResponseBody()
    312         if ( resp_body != None):
    313             try:
    314                 resp_dict = unpack_soap(resp_body)
    315                 if opts.debug > 1: print >>sys.stderr, resp_dict
    316                 print_response_as_testbed(resp_dict, opts.label)
    317             except RuntimeError, e:
    318                 sys.exit("Bad response. %s" % e.messgae)
    319         else: sys.exit("No body in resonpse!?")
     321        if 'get_element_RequestAccessResponseBody' in dir(resp):
     322            resp_body = resp.get_element_RequestAccessResponseBody()
     323            if ( resp_body != None):
     324                try:
     325                    resp_dict = unpack_soap(resp_body)
     326                    if opts.debug > 1: print >>sys.stderr, resp_dict
     327                    print_response_as_testbed(resp_dict, opts.label)
     328                except RuntimeError, e:
     329                    sys.exit("Bad response. %s" % e.message)
     330        elif 'get_element_RequestAccessFaultBody' in dir(resp):
     331            resp_body = resp.get_element_RequestAccessFaultBody()
     332            if resp_body != None:
     333                exit_with_fault(unpack_soap(resp_body))
     334        else: sys.exit("No body in response!?")
    320335    else: sys.exit("No response?!?")
    321336elif opts.transport == "xmlrpc":
     
    331346        resp, method = loads(resp)
    332347    except Error, e:
    333         sys.exit("Fault: %s" % e)
     348        resp = { 'RequestAccessFaultBody': \
     349                { 'errstr' : e.faultCode, 'desc' : e.faultString } }
    334350
    335351
    336352    if (resp != None):
    337         try:
    338             print resp
    339             resp_dict = resp[0]['RequestAccessResponseBody']
    340             if opts.debug > 1: print >>sys.stderr, resp_dict
    341             print_response_as_testbed(resp_dict, opts.label)
    342         except RuntimeError, e:
    343             sys.exit("Bad response. %s" % e.messgae)
     353        if resp.has_key('RequestAccessReponseBody'):
     354            try:
     355                resp_dict = resp[0]['RequestAccessResponseBody']
     356                if opts.debug > 1: print >>sys.stderr, resp_dict
     357                print_response_as_testbed(resp_dict, opts.label)
     358            except RuntimeError, e:
     359                sys.exit("Bad response. %s" % e.messgae)
     360        elif resp.has_key('RequestAccessFaultBody'):
     361            exit_with_fault(resp['RequestAccessFaultBody'])
     362        else: sys.exit("No body in response!?")
     363
    344364    else: sys.exit("No response?!?")
Note: See TracChangeset for help on using the changeset viewer.