Trying to get the wsdl validated...
authorSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 16 Jun 2009 20:36:01 +0000 (20:36 +0000)
committerSapan Bhatia <sapanb@cs.princeton.edu>
Tue, 16 Jun 2009 20:36:01 +0000 (20:36 +0000)
wsdl/gw2wsdl.py
wsdl/sfa.wsdl

index 0dadaf7..c6070ed 100755 (executable)
@@ -2,10 +2,10 @@
 #
 # Sapan Bhatia <sapanb@cs.princeton.edu>
 #
+# This code is under preliminary development. I am going to clean it up
+# once it is tested to work.
 # Generates a WSDL for geniwrapper
-# Current limitations:
-# - Invalid for the following reasons 
-# - The types are python types, not WSDL types
+
 
 import os, sys
 import time
@@ -63,7 +63,7 @@ def name_complex_type(arg):
     #if (complex_types.has_key(arg)):
     #    return complex_types[arg]
 
-    types_section = types.firstChild.firstChild
+    types_section = types.getElementsByTagName("wsdl:types")[0]
 
     if (isinstance(arg, Mixed)):
         inner_types = reduce(fold_complex_type, arg)
@@ -76,14 +76,14 @@ def name_complex_type(arg):
     
         num_types=num_types+1
         type_name = "Type%d"%num_types
-        complex_type = types_section.appendChild(types.createElement("wsdl:complexType"))
+        complex_type = types_section.appendChild(types.createElement("xsd:complexType"))
         complex_type.setAttribute("name", type_name)
 
         choice = complex_type.appendChild(types.createElement("xsd:choice"))
         for n,t in zip(inner_names,inner_types):
             element = choice.appendChild(types.createElement("element"))
             element.setAttribute("name", n)
-            element.setAttribute("type", "tns:%s"%t)
+            element.setAttribute("type", "%s"%t)
             element.setAttribute("minOccurs","%d"%min_args)
         return "tns:%s"%type_name
     elif (isinstance(arg, Parameter)):
@@ -230,13 +230,44 @@ def get_wsdl_definitions():
     wsdl = xml.dom.minidom.parseString(wsdl_text_header)
     
     return wsdl
+
+def get_wsdl_definitions():
+    wsdl_text_header = """
+        <wsdl:definitions
+        name="auto_generated"
+        targetNamespace="%s"
+        xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+        xmlns:tns="xmlns:%s"
+        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
+        """ % (globals.plc_ns,globals.plc_ns)
+        
+    wsdl = xml.dom.minidom.parseString(wsdl_text_header)
+    
+    return wsdl
+
+def get_wsdl_definitions_and_types():
+    wsdl_text_header = """
+    <wsdl:definitions
+        name="auto_generated"
+        targetNamespace="%s"
+        xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
+        xmlns:tns="xmlns:%s"
+        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+        <wsdl:types>
+            <xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="%s"/>
+        </wsdl:types>
+    </wsdl:definitions> """ % (globals.plc_ns,globals.plc_ns,globals.plc_ns)
+    wsdl = xml.dom.minidom.parseString(wsdl_text_header)
+    return wsdl
+
     
+types = get_wsdl_definitions_and_types()
 
-types = get_wsdl_definitions()
-types.firstChild.appendChild(types.createElement("wsdl:types"))
 wsdl = get_wsdl_definitions()
 add_wsdl_ports_and_bindings(wsdl)
-wsdl_types = wsdl.importNode(types.firstChild.firstChild, True)
+wsdl_types = wsdl.importNode(types.getElementsByTagName("wsdl:types")[0], True)
 wsdl.firstChild.appendChild(wsdl_types)
 add_wsdl_service(wsdl)
 
index 2f188f3..e69de29 100644 (file)
@@ -1,454 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<wsdl:definitions xmlns:tns='xmlns:http://www.planet-lab.org/geniwrapper.wsdl' xmlns:xsd='http://www.w3.org/2000/10/XMLSchema' xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' name='auto_generated' targetNamespace='http://www.planet-lab.org/geniwrapper.wsdl'>
-  <wsdl:message name='create_gid_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-    <wsdl:part type='some type - todo' name='uuid'/>
-    <wsdl:part type='some type - todo' name='pubkey_str'/>
-  </wsdl:message>
-  <wsdl:message name='create_gid_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='create_gid_port'>
-    <wsdl:operation name='create_gid'>
-      <wsdl:input message='tns:create_gid_in'/>
-      <wsdl:output message='tns:create_gid_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:create_gid_port' name='create_gid_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='create_gid'>
-      <soap:operation soapAction='urn:create_gid'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:create_gid' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:create_gid' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='create_slice_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-    <wsdl:part type='some type - todo' name='rspec'/>
-  </wsdl:message>
-  <wsdl:message name='create_slice_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='create_slice_port'>
-    <wsdl:operation name='create_slice'>
-      <wsdl:input message='tns:create_slice_in'/>
-      <wsdl:output message='tns:create_slice_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:create_slice_port' name='create_slice_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='create_slice'>
-      <soap:operation soapAction='urn:create_slice'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:create_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:create_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='delete_slice_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='delete_slice_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='delete_slice_port'>
-    <wsdl:operation name='delete_slice'>
-      <wsdl:input message='tns:delete_slice_in'/>
-      <wsdl:output message='tns:delete_slice_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:delete_slice_port' name='delete_slice_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='delete_slice'>
-      <soap:operation soapAction='urn:delete_slice'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:delete_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:delete_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='get_credential_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='type'/>
-  </wsdl:message>
-  <wsdl:message name='get_credential_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='get_credential_port'>
-    <wsdl:operation name='get_credential'>
-      <wsdl:input message='tns:get_credential_in'/>
-      <wsdl:output message='tns:get_credential_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:get_credential_port' name='get_credential_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='get_credential'>
-      <soap:operation soapAction='urn:get_credential'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:get_credential' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:get_credential' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='get_resources_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='get_resources_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='get_resources_port'>
-    <wsdl:operation name='get_resources'>
-      <wsdl:input message='tns:get_resources_in'/>
-      <wsdl:output message='tns:get_resources_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:get_resources_port' name='get_resources_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='get_resources'>
-      <soap:operation soapAction='urn:get_resources'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:get_resources' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:get_resources' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='get_slices_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-  </wsdl:message>
-  <wsdl:message name='get_slices_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='get_slices_port'>
-    <wsdl:operation name='get_slices'>
-      <wsdl:input message='tns:get_slices_in'/>
-      <wsdl:output message='tns:get_slices_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:get_slices_port' name='get_slices_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='get_slices'>
-      <soap:operation soapAction='urn:get_slices'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:get_slices' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:get_slices' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='get_ticket_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-    <wsdl:part type='some type - todo' name='rspec'/>
-  </wsdl:message>
-  <wsdl:message name='get_ticket_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='get_ticket_port'>
-    <wsdl:operation name='get_ticket'>
-      <wsdl:input message='tns:get_ticket_in'/>
-      <wsdl:output message='tns:get_ticket_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:get_ticket_port' name='get_ticket_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='get_ticket'>
-      <soap:operation soapAction='urn:get_ticket'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:get_ticket' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:get_ticket' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='list_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='list_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='list_port'>
-    <wsdl:operation name='list'>
-      <wsdl:input message='tns:list_in'/>
-      <wsdl:output message='tns:list_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:list_port' name='list_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='list'>
-      <soap:operation soapAction='urn:list'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:list' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:list' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='register_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='record_dict'/>
-  </wsdl:message>
-  <wsdl:message name='register_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='register_port'>
-    <wsdl:operation name='register'>
-      <wsdl:input message='tns:register_in'/>
-      <wsdl:output message='tns:register_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:register_port' name='register_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='register'>
-      <soap:operation soapAction='urn:register'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:register' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:register' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='remove_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='type'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='remove_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='remove_port'>
-    <wsdl:operation name='remove'>
-      <wsdl:input message='tns:remove_in'/>
-      <wsdl:output message='tns:remove_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:remove_port' name='remove_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='remove'>
-      <soap:operation soapAction='urn:remove'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:remove' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:remove' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='reset_slices_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='reset_slices_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='reset_slices_port'>
-    <wsdl:operation name='reset_slices'>
-      <wsdl:input message='tns:reset_slices_in'/>
-      <wsdl:output message='tns:reset_slices_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:reset_slices_port' name='reset_slices_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='reset_slices'>
-      <soap:operation soapAction='urn:reset_slices'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:reset_slices' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:reset_slices' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='resolve_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='resolve_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='resolve_port'>
-    <wsdl:operation name='resolve'>
-      <wsdl:input message='tns:resolve_in'/>
-      <wsdl:output message='tns:resolve_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:resolve_port' name='resolve_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='resolve'>
-      <soap:operation soapAction='urn:resolve'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:resolve' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:resolve' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='start_slice_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='start_slice_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='start_slice_port'>
-    <wsdl:operation name='start_slice'>
-      <wsdl:input message='tns:start_slice_in'/>
-      <wsdl:output message='tns:start_slice_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:start_slice_port' name='start_slice_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='start_slice'>
-      <soap:operation soapAction='urn:start_slice'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:start_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:start_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='stop_slice_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='hrn'/>
-  </wsdl:message>
-  <wsdl:message name='stop_slice_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='stop_slice_port'>
-    <wsdl:operation name='stop_slice'>
-      <wsdl:input message='tns:stop_slice_in'/>
-      <wsdl:output message='tns:stop_slice_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:stop_slice_port' name='stop_slice_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='stop_slice'>
-      <soap:operation soapAction='urn:stop_slice'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:stop_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:stop_slice' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:message name='update_in'>
-    <wsdl:part type='some type - todo' name='cred'/>
-    <wsdl:part type='some type - todo' name='record_dict'/>
-  </wsdl:message>
-  <wsdl:message name='update_out'>
-    <wsdl:part type='some type - todo' name='returnvalue'/>
-  </wsdl:message>
-  <wsdl:portType name='update_port'>
-    <wsdl:operation name='update'>
-      <wsdl:input message='tns:update_in'/>
-      <wsdl:output message='tns:update_out'/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding type='tns:update_port' name='update_binding'>
-    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
-    <wsdl:operation name='update'>
-      <soap:operation soapAction='urn:update'/>
-      <wsdl:input>
-        <soap:body use='encoded' namespace='urn:update' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:input>
-      <wsdl:output>
-        <soap:body use='encoded' namespace='urn:update' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
-      </wsdl:output>
-    </wsdl:operation>
-  </wsdl:binding>
-  <wsdl:service name='aggregate'>
-    <wsdl:port binding='tns:create_slice_binding' name='create_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:delete_slice_binding' name='delete_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_resources_binding' name='get_resources_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_slices_binding' name='get_slices_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:reset_slices_binding' name='reset_slices_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:start_slice_binding' name='start_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:stop_slice_binding' name='stop_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/aggregate'/>
-    </wsdl:port>
-  </wsdl:service>
-  <wsdl:service name='slicemgr'>
-    <wsdl:port binding='tns:create_slice_binding' name='create_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:delete_slice_binding' name='delete_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_resources_binding' name='get_resources_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_slices_binding' name='get_slices_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:reset_slices_binding' name='reset_slices_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:start_slice_binding' name='start_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:stop_slice_binding' name='stop_slice_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/slicemgr'/>
-    </wsdl:port>
-  </wsdl:service>
-  <wsdl:service name='registry'>
-    <wsdl:port binding='tns:create_gid_binding' name='create_gid_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_credential_binding' name='get_credential_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:get_ticket_binding' name='get_ticket_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:list_binding' name='list_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:register_binding' name='register_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:remove_binding' name='remove_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:resolve_binding' name='resolve_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-    <wsdl:port binding='tns:update_binding' name='update_port'>
-      <soap:address location='http://www.planet-lab.org/geniwrapper.wsdl/registry'/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>