Changeset c52c48d


Ignore:
Timestamp:
Sep 12, 2008 5:28:33 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:
291423b
Parents:
27b6aea
Message:

add info and work with SEER attach

Location:
fedd
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd_bindings.wsdl

    r27b6aea rc52c48d  
    101101        </fault>
    102102      </operation>
     103      <operation name="Info">
     104        <documentation>
     105          The bindings of this operation are straightforward SOAP RPC 1.1.
     106        </documentation>
     107        <soap:operation soapAction="Info"/>
     108        <input>
     109          <soap:body use="encoded" parts="tns:InfoRequestBody"
     110            namespace="http://www.isi.edu/faber/fedd.wsdl"
     111            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
     112        </input>
     113        <output>
     114          <soap:body use="encoded" parts="tns:InfoResponseBody"
     115            namespace="http://www.isi.edu/faber/fedd.wsdl"
     116            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
     117        </output>
     118        <fault>
     119          <soap:fault use="encoded"  name="tns:FeddFault"
     120            namespace="http://www.isi.edu/faber/fedd.wsdl"
     121            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
     122        </fault>
     123      </operation>
    103124    </binding>
    104125
  • fedd/fedd_client.py

    r27b6aea rc52c48d  
    346346            self.key="vis"
    347347            self.xml='vis'
     348        elif op == 'Info': pass
    348349        else:
    349350            raise TypeError("Bad op: %s" % op)
     
    415416            sys.exit("Error processing RPC: %s" % e)
    416417
    417         try:
    418             if resp_dict.has_key(self.key):
    419                 self.print_xml(resp_dict[self.key])
    420         except RuntimeError, e:
    421             sys.exit("Bad response. %s" % e.message)
     418        if getattr(self, 'key', None):
     419            try:
     420                if resp_dict.has_key(self.key):
     421                    self.print_xml(resp_dict[self.key])
     422            except RuntimeError, e:
     423                sys.exit("Bad response. %s" % e.message)
     424        else:
     425            print resp_dict
    422426
    423427class create(fedd_rpc):
     
    632636        'vtopo': exp_data('Vtopo'),\
    633637        'vis': exp_data('Vis'),\
     638        'info': exp_data('Info'),\
    634639    }
    635640
  • fedd/fedd_create_experiment.py

    r27b6aea rc52c48d  
    12781278                for tb in tbparams.keys() \
    12791279                    if tbparams[tb].has_key('federant') ],\
    1280                     'experiment': vtopo,\
     1280                    'vtopo': vtopo,\
     1281                    'vis' : vis,
     1282                    'experimentID' : [\
     1283                            { 'fedid': copy.copy(expid) }, \
     1284                            { 'localname': eid },\
     1285                        ],\
     1286                    'experimentAccess': { 'X509' : expcert },\
     1287                }
     1288       
     1289        self.state[expid] = { 'federant' : [ tbparams[tb]['federant'] \
     1290                for tb in tbparams.keys() \
     1291                    if tbparams[tb].has_key('federant') ],\
     1292                    'vtopo': vtopo,\
    12811293                    'vis' : vis,
    12821294                    'experimentID' : [\
    12831295                            { 'fedid': expid }, { 'localname': eid },\
    12841296                        ],\
    1285                     'experimentAccess': { 'X509' : expcert },\
    12861297                }
    1287        
    1288         self.state[expid] = {\
    1289                 'fedid': expid,
    1290                 'localname': eid,
    1291                 'federant': [ tbparams[tb]['federant'] \
    1292                     for tb in tbparams.keys() \
    1293                         if tbparams[tb].has_key('federant') ],\
    1294                 'vis': vis,\
    1295                 'vtopo': vtopo,\
    1296             }
    12971298        self.state[eid] = self.state[expid]
    12981299        return resp
     
    13501351            raise service_error(service_error.req, "No such experiment")
    13511352
     1353    def get_info(self, req, fid):
     1354
     1355        req = req.get('InfoRequestBody', None)
     1356        if not req:
     1357            raise service_error(service_error.req,
     1358                    "Bad request format (no VisRequestBody)")
     1359        exp = req.get('experiment', None)
     1360        if exp:
     1361            if exp.has_key('fedid'):
     1362                key = fedid(bits=exp['fedid'])
     1363                keytype = "fedid"
     1364            elif exp.has_key('localname'):
     1365                key = exp['localname']
     1366                keytype = "localname"
     1367            else:
     1368                raise service_error(service_error.req, "Unknown lookup type")
     1369        else:
     1370            raise service_error(service_error.req, "No request?")
     1371
     1372        # The state may be massaged by the service function that called
     1373        # get_info (e.g., encoded for XMLRPC transport) so send a copy of the
     1374        # state.
     1375        if self.state.has_key(key):
     1376            return copy.deepcopy(self.state[key])
     1377        else:
     1378            raise service_error(service_error.req, "No such experiment")
    13521379
    13531380if __name__ == '__main__':
  • fedd/fedd_messages.wsdl

    r27b6aea rc52c48d  
    3939  </message>
    4040
     41  <message name="InfoRequestMessage">
     42    <part name="InfoRequestBody" type="xsd1:infoRequestType"/>
     43  </message>
     44
     45  <message name="InfoResponseMessage">
     46    <part name="InfoResponseBody" type="xsd1:infoResponseType"/>
     47  </message>
     48
    4149  <message name="FaultMessage">
    4250    <part name="FaultBody" type="xsd1:faultType"/>
     
    7684      <fault name="FeddFault" message="tns:FaultMessage"/>
    7785    </operation>
     86    <operation name="Info">
     87      <documentation>
     88        Fill this in
     89      </documentation>
     90      <input message="tns:InfoRequestMessage"/>
     91      <output message="tns:InfoResponseMessage"/>
     92      <fault name="FeddFault" message="tns:FaultMessage"/>
     93    </operation>
    7894  </portType>
    7995</definitions>
  • fedd/fedd_proj.py

    r27b6aea rc52c48d  
    5050            'Vtopo' : 'soap_Vtopo',\
    5151            'Vis' : 'soap_Vis',\
     52            'Info' : 'soap_Info',\
    5253            }
    5354    xmlrpc_methods = { \
     
    5657            'Vtopo' : 'xmlrpc_Vtopo',\
    5758            'Vis' : 'xmlrpc_Vis',\
     59            'Info' : 'xmlrpc_Info',\
    5860            }
    5961
     
    600602        return resp
    601603
     604    def soap_Info(self, ps, fid):
     605        req = ps.Parse(InfoRequestMessage.typecode)
     606
     607        msg = self.create_experiment.get_info(unpack_soap(req), fedid)
     608
     609        resp = InfoResponseMessage()
     610        resp.set_element_InfoResponseBody(
     611                pack_soap(resp, "InfoResponseBody", msg))
     612
     613        return resp
     614
    602615    def xmlrpc_RequestAccess(self, params, fid):
    603616        msg = self.RequestAccess(params[0], fedid)
     
    618631        else:
    619632            raise service_error(service_error.internal,
    620                     "No response generated?!");
     633                    "No response generated?!")
    621634
    622635    def xmlrpc_Vtopo(self, params, fid):
     
    629642        else:
    630643            raise service_error(service_error.internal,
    631                     "No response generated?!");
     644                    "No response generated?!")
    632645
    633646    def xmlrpc_Vis(self, params, fid):
     
    640653        else:
    641654            raise service_error(service_error.internal,
    642                     "No response generated?!");
     655                    "No response generated?!")
     656
     657    def xmlrpc_Info(self, params, fid):
     658        p = decapsulate_binaries(params[0], ('fedid',))
     659        msg = self.create_experiment.get_info(p, fedid)
     660        if msg != None:
     661            return encapsulate_binaries({ "InfoResponseBody" : msg },
     662                    ('fedid',))
     663        else:
     664            raise service_error(service_error.internal,
     665                    "No response generated?!")
    643666
    644667    def read_trust(self, trust):
  • fedd/fedd_types.xsd

    r27b6aea rc52c48d  
    333333      <xsd:element name="federant" type="tns:federatedExperimentType"
    334334        minOccurs="1" maxOccurs="unbounded"/>
    335       <xsd:element name="experiment" type="tns:vtopoType" minOccurs="0"
     335      <xsd:element name="vtopo" type="tns:vtopoType" minOccurs="0"
    336336        maxOccurs="1"/>
    337337      <xsd:element name="vis" type="tns:visType" minOccurs="0"
     
    388388      <xsd:element name="experiment" type="tns:IDType"/>
    389389      <xsd:element name="vis" type="tns:visType"/>
     390    </xsd:sequence>
     391  </xsd:complexType>
     392
     393  <xsd:complexType name="infoRequestType">
     394    <xsd:annotation>
     395      <xsd:documentation>
     396        Request for an existing experiment's topology
     397      </xsd:documentation>
     398    </xsd:annotation>
     399    <xsd:sequence>
     400      <xsd:element name="experiment" type="tns:IDType"/>
     401    </xsd:sequence>
     402  </xsd:complexType>
     403
     404  <xsd:complexType name="infoResponseType">
     405    <xsd:annotation>
     406      <xsd:documentation>
     407        Information on an instantiated experiment.  The createResponse without
     408        the secret information
     409      </xsd:documentation>
     410    </xsd:annotation>
     411    <xsd:sequence>
     412      <xsd:element name="federant" type="tns:federatedExperimentType"
     413        minOccurs="1" maxOccurs="unbounded"/>
     414      <xsd:element name="vtopo" type="tns:vtopoType" minOccurs="0"
     415        maxOccurs="1"/>
     416      <xsd:element name="vis" type="tns:visType" minOccurs="0"
     417        maxOccurs="1"/>
     418      <xsd:element name="experimentID" type="tns:IDType" minOccurs="1"
     419        maxOccurs="unbounded"/>
    390420    </xsd:sequence>
    391421  </xsd:complexType>
Note: See TracChangeset for help on using the changeset viewer.