--- /dev/null
+#!/usr/bin/python
+#
+# Sapan Bhatia <sapanb@cs.princeton.edu>
+#
+# 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
+import pdb
+import xml.dom.minidom
+import xml.dom.ext
+import globals
+import apistub
+
+from geni.util.auth import Auth
+from geni.util.parameter import Parameter,Mixed,python_type,xmlrpc_type
+
+
+try:
+ set
+except NameError:
+ from sets import Set
+ set = Set
+
+# Class functions
+
+def param_type(param):
+
+# if isinstance(param, Mixed) and len(param):
+# subtypes = [param_type(subparam) for subparam in param]
+# return " or ".join(subtypes)
+# elif isinstance(param, (list, tuple, set)) and len(param):
+# return "array of " + " or ".join([param_type(subparam) for subparam in param])
+# else:
+# return xmlrpc_type(python_type(param))
+ return "some type - todo"
+
+
+def add_wsdl_ports_and_bindings (wsdl):
+ for method in apistub.methods:
+ # Skip system. methods
+ if "system." in method:
+ continue
+
+ function = apistub.callable(method) # Commented documentation
+ #lines = ["// " + line.strip() for line in function.__doc__.strip().split("\n")]
+ #print "\n".join(lines)
+ #print
+
+
+ in_el = wsdl.firstChild.appendChild(wsdl.createElement("wsdl:message"))
+ in_el.setAttribute("name", method + "_in")
+
+ for service_name in function.interfaces:
+ if (services.has_key(service_name)):
+ if (not method in services[service_name]):
+ services[service_name].append(method)
+ else:
+ services[service_name]=[method]
+
+ # Arguments
+
+ if (function.accepts):
+ (min_args, max_args, defaults) = function.args()
+ for (argname,argtype) in zip(max_args,function.accepts):
+ arg_part = in_el.appendChild(wsdl.createElement("wsdl:part"))
+ arg_part.setAttribute("name", argname)
+ arg_part.setAttribute("type", param_type(argtype))
+
+ # Return type
+ return_type = function.returns
+ out_el = wsdl.firstChild.appendChild(wsdl.createElement("wsdl:message"))
+ out_el.setAttribute("name", method + "_out")
+ ret_part = out_el.appendChild(wsdl.createElement("wsdl:part"))
+ ret_part.setAttribute("name", "returnvalue")
+ ret_part.setAttribute("type", param_type(return_type))
+
+ # Port connecting arguments with return type
+
+ port_el = wsdl.firstChild.appendChild(wsdl.createElement("wsdl:portType"))
+ port_el.setAttribute("name", method + "_port")
+
+ op_el = port_el.appendChild(wsdl.createElement("wsdl:operation"))
+ op_el.setAttribute("name", method)
+ op_el.appendChild(wsdl.createElement("wsdl:input")).setAttribute("message","tns:" + method + "_in")
+ op_el.appendChild(wsdl.createElement("wsdl:output")).setAttribute("message","tns:" + method + "_out")
+
+ # Bindings
+
+ bind_el = wsdl.firstChild.appendChild(wsdl.createElement("wsdl:binding"))
+ bind_el.setAttribute("name", method + "_binding")
+ bind_el.setAttribute("type", "tns:" + method + "_port")
+
+ soap_bind = bind_el.appendChild(wsdl.createElement("soap:binding"))
+ soap_bind.setAttribute("style", "rpc")
+ soap_bind.setAttribute("transport","http://schemas.xmlsoap.org/soap/http")
+
+
+ wsdl_op = bind_el.appendChild(wsdl.createElement("wsdl:operation"))
+ wsdl_op.setAttribute("name", method)
+ wsdl_op.appendChild(wsdl.createElement("soap:operation")).setAttribute("soapAction",
+ "urn:" + method)
+
+
+ wsdl_input = wsdl_op.appendChild(wsdl.createElement("wsdl:input"))
+ input_soap_body = wsdl_input.appendChild(wsdl.createElement("soap:body"))
+ input_soap_body.setAttribute("use", "encoded")
+ input_soap_body.setAttribute("namespace", "urn:" + method)
+ input_soap_body.setAttribute("encodingStyle","http://schemas.xmlsoap.org/soap/encoding/")
+
+
+ wsdl_output = wsdl_op.appendChild(wsdl.createElement("wsdl:output"))
+ output_soap_body = wsdl_output.appendChild(wsdl.createElement("soap:body"))
+ output_soap_body.setAttribute("use", "encoded")
+ output_soap_body.setAttribute("namespace", "urn:" + method)
+ output_soap_body.setAttribute("encodingStyle","http://schemas.xmlsoap.org/soap/encoding/")
+
+
+def add_wsdl_service(wsdl):
+ for service in services.keys():
+ service_el = wsdl.firstChild.appendChild(wsdl.createElement("wsdl:service"))
+ service_el.setAttribute("name", service)
+
+ for method in services[service]:
+ name=method
+ servport_el = service_el.appendChild(wsdl.createElement("wsdl:port"))
+ servport_el.setAttribute("name", name + "_port")
+ servport_el.setAttribute("binding", "tns:" + name + "_binding")
+
+ soapaddress = servport_el.appendChild(wsdl.createElement("soap:address"))
+ soapaddress.setAttribute("location", "%s/%s" % (globals.plc_ns,service))
+
+
+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
+
+
+services = {}
+
+wsdl = get_wsdl_definitions()
+add_wsdl_ports_and_bindings(wsdl)
+add_wsdl_service(wsdl)
+
+
+xml.dom.ext.PrettyPrint(wsdl)
+
--- /dev/null
+<?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>