AutoBAHN UAP interface description (AutoBAHN version 1.0.3) february 2012 AutoBAHN................................................................................................................................. 1 UAP interface description .......................................................................................................... 1 1. Introduction .................................................................................................................... 4 2. Interface specification .................................................................................................... 4 2.1. Common data types ................................................................................................ 6 2.1.1. priority ................................................................................................................ 6 2.1.2. resiliency ............................................................................................................ 6 2.1.3. state .................................................................................................................... 6 2.1.4. PathInfo .............................................................................................................. 7 2.1.5. ReservationRequest ............................................................................................ 8 2.1.6. ServiceRequest ................................................................................................... 9 2.1.7. ReservationResponse ........................................................................................ 10 2.1.8. ServiceResponse ............................................................................................... 11 2.1.9. ModifyRequest .................................................................................................. 12 2.2. Operations ............................................................................................................ 13 2.2.1. cancelService .................................................................................................... 13 2.2.1.1. Request ......................................................................................................... 13 2.2.1.2. Response....................................................................................................... 13 2.2.1.3. Example ........................................................................................................ 13 2.2.2. checkReservationPossibility ............................................................................. 14 2.2.2.1. Request ......................................................................................................... 14 2.2.2.2. Response....................................................................................................... 14 2.2.2.3. Example ........................................................................................................ 15 2.2.3. getAllDomains .................................................................................................. 16 2.2.3.1. Request ......................................................................................................... 16 2.2.3.2. Response....................................................................................................... 16 2.2.3.3. Example ........................................................................................................ 16 2.2.4. getAllLinks ........................................................................................................ 17 2.2.4.1. Request ......................................................................................................... 17 2.2.4.2. Response....................................................................................................... 17 2.2.4.3. Example ........................................................................................................ 17 2.2.5. getAllClientPorts .............................................................................................. 18 2.2.5.1. Request ......................................................................................................... 18 2.2.5.2. Response....................................................................................................... 18 2.2.5.3. Example ........................................................................................................ 18 2.2.6. getDomainClientPorts ...................................................................................... 19 2.2.6.1. Request ......................................................................................................... 19 2.2.6.2. Response....................................................................................................... 19 2.2.6.3. Example ........................................................................................................ 19 2.2.7. modifyReservation ............................................................................................ 20 2.2.7.1. Request ......................................................................................................... 20 2.2.7.2. Response....................................................................................................... 20 2.2.7.3. Example ........................................................................................................ 20 2.2.8. queryService ..................................................................................................... 21 2.2.8.1. Request ......................................................................................................... 21 2.2.8.2. Response....................................................................................................... 21 2.2.8.3. Example ........................................................................................................ 22 2.2.9. registerCallback ............................................................................................... 23 2.2.9.1. Request ......................................................................................................... 23 2.2.9.2. Response....................................................................................................... 23 2.2.9.3. Example ........................................................................................................ 24 2.2.10. submitService ................................................................................................... 24 2.2.10.1. Request ......................................................................................................... 24 2.2.10.2. Response....................................................................................................... 24 2.2.10.3. Example ........................................................................................................ 25 2.2.11. submitServiceAndRegister ................................................................................ 26 2.2.11.1. Request ......................................................................................................... 26 2.2.11.2. Response....................................................................................................... 26 2.2.11.3. Example ........................................................................................................ 27 1. Introduction This document describes the UAP interface which enables web service communication between the AutoBAHN’s InterDomain Manager (IDM) and the WebGUI or other third-party external User Interface for access to the AutoBAHN service. The WebGUI acts as a client, sending requests which the IDM must be ready to receive and process at the server side. A single WebGUI will typically be connected to all the IDMs comprising the AutoBAHN federation, so that the user can have an overview of the service. (see Figure 1 Overview of AutoBAHN high level architectureFigure 1). Web GUI AutoBAHN system Single AutoBAHN instance Lookup Service Single AutoBAHN instance Single AutoBAHN instance Inter -Domain Manager Inter -Domain Manager Inter -Domain Manager Domain Manager Domain Manager Domain Manager Technology Proxy Technology Proxy Technology Proxy Data plane NMS SDH domain GE domain Tool interface IP domain Client equipment L2 MPLS VPN GFP over SDH Native Ethernet Client equipment Figure 1 Overview of AutoBAHN high level architecture 2. Interface specification AutoBAHN system defines following SOAP interface between InterDomain Manager (IDM) and WebGUI modules. The wsdl excerpt defining the operations is listed below: <wsdl:operation name="checkReservationPossibility"> <wsdl:input name="checkReservationPossibility" message="tns:checkReservationPossibility" /> <wsdl:output name="checkReservationPossibilityResponse" message="tns:checkReservationPossibilityResponse" /> <wsdl:fault name="UserAccessPointException" message="tns:UserAccessPointException" /> </wsdl:operation> <wsdl:operation name="getDomainClientPorts"> <wsdl:input name="getDomainClientPorts" message="tns:getDomainClientPorts" /> <wsdl:output name="getDomainClientPortsResponse" message="tns:getDomainClientPortsResponse" /> </wsdl:operation> <wsdl:operation name="submitService"> <wsdl:input name="submitService" message="tns:submitService" /> <wsdl:output name="submitServiceResponse" message="tns:submitServiceResponse" /> <wsdl:fault name="UserAccessPointException" message="tns:UserAccessPointException" /> </wsdl:operation> <wsdl:operation name="modifyReservation"> <wsdl:input name="modifyReservation" message="tns:modifyReservation" /> <wsdl:output name="modifyReservationResponse" message="tns:modifyReservationResponse" /> </wsdl:operation> <wsdl:operation name="getAllDomains"> <wsdl:input name="getAllDomains" message="tns:getAllDomains" /> <wsdl:output name="getAllDomainsResponse" message="tns:getAllDomainsResponse" /> </wsdl:operation> <wsdl:operation name="getAllLinks"> <wsdl:input name="getAllLinks" message="tns:getAllLinks" /> <wsdl:output name="getAllLinksResponse" message="tns:getAllLinksResponse" /> </wsdl:operation> <wsdl:operation name="getAllClientPorts"> <wsdl:input name="getAllClientPorts" message="tns:getAllClientPorts" /> <wsdl:output name="getAllClientPortsResponse" message="tns:getAllClientPortsResponse" /> </wsdl:operation> <wsdl:operation name="cancelService"> <wsdl:input name="cancelService" message="tns:cancelService" /> <wsdl:output name="cancelServiceResponse" message="tns:cancelServiceResponse" /> <wsdl:fault name="UserAccessPointException" message="tns:UserAccessPointException" /> </wsdl:operation> <wsdl:operation name="submitServiceAndRegister"> <wsdl:input name="submitServiceAndRegister" message="tns:submitServiceAndRegister" /> <wsdl:output name="submitServiceAndRegisterResponse" message="tns:submitServiceAndRegisterResponse" /> <wsdl:fault name="UserAccessPointException" message="tns:UserAccessPointException" /> </wsdl:operation> <wsdl:operation name="registerCallback"> <wsdl:input name="registerCallback" message="tns:registerCallback" /> <wsdl:output name="registerCallbackResponse" message="tns:registerCallbackResponse" /> </wsdl:operation> <wsdl:operation name="queryService"> <wsdl:input name="queryService" message="tns:queryService" /> <wsdl:output name="queryServiceResponse" message="tns:queryServiceResponse" /> <wsdl:fault name="UserAccessPointException" message="tns:UserAccessPointException" /> </wsdl:operation> Detailed description of each operation and data types can be found in the following sections. 2.1. Common data types 2.1.1. priority Keeps the priority of the reservation and takes one of the three values: NORMAL, HIGH, HIGHEST. <xs:simpleType name="priority"> <xs:restriction base="xs:string"> <xs:enumeration value="NORMAL" /> <xs:enumeration value="HIGH" /> <xs:enumeration value="HIGHEST" /> </xs:restriction> </xs:simpleType> 2.1.2. resiliency Keeps the resiliency of the reservation and takes one of the three values: NONE, ONE_TO_ONE, ONE_PLUS_ONE. <xs:simpleType name="resiliency"> <xs:restriction base="xs:string"> <xs:enumeration value="NONE" /> <xs:enumeration value="ONE_TO_ONE" /> <xs:enumeration value="ONE_PLUS_ONE" /> </xs:restriction> </xs:simpleType> 2.1.3. mode Keeps the VLAN mode for a start or end port. It takes one of the three values: VLAN, UNTAGGED, TRANSPARENT. <xs:simpleType name="mode"> <xs:restriction base="xs:string"> <xs:enumeration value="VLAN" /> <xs:enumeration value="UNTAGGED" /> <xs:enumeration value="TRANSPARENT" /> </xs:restriction> </xs:simpleType> 2.1.4. state Keeps the state of the reservation and takes one of the values shown below. <xs:simpleType name="state"> <xs:restriction base="xs:string"> <xs:enumeration value="ACCEPTED" /> <xs:enumeration value="PATHFINDING" /> <xs:enumeration value="LOCAL_CHECK" /> <xs:enumeration value="SCHEDULING" /> <xs:enumeration value="SCHEDULED" /> <xs:enumeration value="CANCELLING" /> <xs:enumeration value="WITHDRAWING" /> <xs:enumeration value="DEFERRED_CANCEL" /> <xs:enumeration value="ACTIVATING" /> <xs:enumeration value="ACTIVE" /> <xs:enumeration value="FINISHING" /> <xs:enumeration value="FINISHED" /> <xs:enumeration value="CANCELLED" /> <xs:enumeration value="FAILED" /> </xs:restriction> </xs:simpleType> 2.1.5. PathInfo A list of domains and links. <xs:complexType name="PathInfo"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="domains" nillable="true" type="xs:string" /> <xs:element maxOccurs="unbounded" minOccurs="0" name="links" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> domains A domain id. links A link id. 2.1.6. PortType Represents a starting or ending reservation port. <xs:complexType name=" PortType"> <xs:sequence> <xs:element minOccurs="0" name="address" type="xs:string" /> <xs:element minOccurs="0" name="mode" type="ns1:mode" /> <xs:element name="vlan" type="xs:int" /> <xs:element minOccurs="0" name="description" type="xs:string" /> <xs:element name="isIdcp" type="xs:boolean " /> <xs:element name="isClient" type="xs:boolean" /> </xs:sequence> </xs:complexType> domains A domain id. links A link id. 2.1.7. UserAuthParameters Information about a user. <xs:complexType name=" PortType"> <xs:sequence> <xs:element minOccurs="0" name="identifier" type="xs:string" /> <xs:element minOccurs="0" name="organization" type="xs:string" /> <xs:element minOccurs="0" name="projectMembership" type="xs:string" /> <xs:element minOccurs="0" name="projectRole" type="xs:string" /> <xs:element minOccurs="0" name="email" type="xs:string" /> </xs:sequence> </xs:complexType> identifier A unique user identifier. organization The organization the user belongs to. projectMembership The project the user works for. projectRole The user’s role (ADMINISTRATOR, USER, etc.). email The user’s email. 2.1.8. ReservationRequest Represents a reservation request. <xs:complexType name="ReservationRequest"> <xs:sequence> <xs:element minOccurs="0" name="startPort" type="tns:PortType" /> <xs:element minOccurs="0" name="endPort" type=" tns:PortType" /> <xs:element minOccurs="0" name="startTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="endTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="priority" type="ns1:priority" /> <xs:element minOccurs="0" name="description" type="xs:string" /> <xs:element name="capacity" type="xs:long" /> <xs:element minOccurs="0" name="userInclude" type="tns:PathInfo" /> <xs:element minOccurs="0" name="userExclude" type="tns:PathInfo" /> <xs:element name="mtu" type="xs:int" /> <xs:element name="maxDelay" type="xs:int" /> <xs:element minOccurs="0" name="resiliency" type="ns1:resiliency" /> <xs:element name="bidirectional" type="xs:boolean" /> <xs:element name="processNow" type="xs:boolean" /> <xs:element minOccurs="0" name="authParameters" type="ns2:UserAuthParameters" /> </xs:sequence> </xs:complexType> startPort The starting port of the reservation. endPort The ending port of the reservation. startTime The starting time of the reservation. endTime The ending time of the reservation. priority The priority of the reservation. description Textual description of the reservation. capacity The requested capacity for the reservation (in bps). userInclude A list of domains and links that should be included in the reservation path. userExclude A list of domains and links that should be excluded from the reservation path. mtu The minimum MTU that should be available across the reservation path. maxDelay The maximum allowed delay (in ms). resiliency The type of resiliency requested by the reservation. processNow Whether to process the reservation now. If this field is set, the reservation’s start time will set to the current time. authParameters Information about the user submitting the request. 2.1.9. ServiceRequest Represents a service request, which is a collection of reservation requests. <xs:complexType name="ServiceRequest"> <xs:sequence> <xs:element minOccurs="0" name="userName" type="xs:string" /> <xs:element minOccurs="0" name="userHomeDomain" type="xs:string" /> <xs:element minOccurs="0" name="userEmail" type="xs:string" /> <xs:element minOccurs="0" name="justification" type="xs:string" /> <xs:element maxOccurs="unbounded" name="reservations" nillable="true" type="tns:ReservationRequest" /> </xs:sequence> </xs:complexType> userName The name of the user submitting the service. userHomeDomain The home domain of the user submitting the service. userEmail The email of the user submitting the service. justification Textual description of the service. reservations The reservation request(s) to be included in this service. 2.1.10. ReservationResponse Represents the information about a reservation received in a response. <xs:complexType name="ReservationResponse"> <xs:sequence> <xs:element minOccurs="0" name="bodID" type="xs:string" /> <xs:element minOccurs="0" name="state" type="ns1:state" /> <xs:element minOccurs="0" name="message" type="xs:string" /> <xs:element minOccurs="0" name="startPort" type="xs:string" /> <xs:element minOccurs="0" name="endPort" type="xs:string" /> <xs:element minOccurs="0" name="startTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="endTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="priority" type="ns1:priority" /> <xs:element minOccurs="0" name="description" type="xs:string" /> <xs:element name="capacity" type="xs:long" /> <xs:element minOccurs="0" name="userInclude" type="tns:PathInfo" /> <xs:element minOccurs="0" name="userExclude" type="tns:PathInfo" /> <xs:element name="userVlanId" type="xs:int" /> <xs:element name="mtu" type="xs:int" /> <xs:element name="maxDelay" type="xs:int" /> <xs:element minOccurs="0" name="resiliency" type="ns1:resiliency" /> <xs:element name="bidirectional" type="xs:boolean" /> </xs:sequence> </xs:complexType> bodID The ID that has been assigned to this reservation. state The current state of the reservation. message A message with optional information. startPort The starting port of the reservation. endPort The ending port of the reservation. startTime The starting time of the reservation. endTime The ending time of the reservation. priority The priority of the reservation. description Textual description of the reservation. capacity The requested capacity for the reservation (in bps). userInclude A list of domains and links that should be included in the reservation path. userExclude A list of domains and links that should be excluded from the reservation path. userVlanId A VLAN id that should be used by the reservation when traversing Ethernet domains. mtu The minimum MTU available. maxDelay The maximum allowed delay (in ms). resiliency The type of resiliency requested by the reservation. 2.1.11. ServiceResponse Represents the information about a service (a collection of reservations) received in a response. <xs:complexType name="ServiceResponse"> <xs:sequence> <xs:element minOccurs="0" name="userName" type="xs:string" /> <xs:element minOccurs="0" name="userHomeDomain" type="xs:string" /> <xs:element minOccurs="0" name="userEmail" type="xs:string" /> <xs:element maxOccurs="unbounded" name="reservations" nillable="true" type="tns:ReservationResponse" /> </xs:sequence> </xs:complexType> userName The name of the user that submitted the service. userHomeDomain The home domain of the user that submitted the service. userEmail The email of the user that submitted the service. justification Textual description of the service. reservations The reservation request(s) that are included in this service. 2.1.12. ModifyRequest Represents a request to modify an already existing reservation. The modification possibilities are to change the start and end time of the reservation. <xs:complexType name="ModifyRequest"> <xs:sequence> <xs:element minOccurs="0" name="resId" type="xs:string" /> <xs:element minOccurs="0" name="startTime" type="xs:dateTime" /> <xs:element minOccurs="0" name="endTime" type="xs:dateTime" /> </xs:sequence> </xs:complexType> resId The ID of the reservation to be modified. startTime The new starting time of the reservation. endTime The new ending time of the reservation. 2.2. Operations 2.2.1. cancelService The cancelService method is called by the UI to cancel a previously submitted service. 2.2.1.1. Request <xs:element name="cancelService" type="tns:cancelService" /> <xs:complexType name="cancelService"> <xs:sequence> <xs:element minOccurs="0" name="serviceID" type="xs:string" /> </xs:sequence> </xs:complexType> serviceID The ID of the service to be canceled. 2.2.1.2. Response <xs:element name="cancelServiceResponse" type="tns:cancelServiceResponse" /> <xs:complexType name="cancelServiceResponse"> <xs:sequence /> </xs:complexType> <xs:element name="UserAccessPointException" type="tns:UserAccessPointException" /> The following exceptions may be thrown: UserAccessPointException When the serviceID specified at the request does not exist. 2.2.1.3. Example Below is an example request for canceling service with ID 150.140.8.13:8080@1270051708928: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:cancelService xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <serviceID>150.140.8.13:8080@1270051708928</serviceID> </ns2:cancelService> </soap:Body> </soap:Envelope> And the typical response: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:cancelServiceResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> 2.2.2. checkReservationPossibility The checkReservationPossibility method is called by the UI to check whether a reservation is possible. No actual reservation takes place. 2.2.2.1. Request <xs:element name="checkReservationPossibility" type="tns:checkReservationPossibility" /> <xs:complexType name="checkReservationPossibility"> <xs:sequence> <xs:element minOccurs="0" name="request" type="ns1:ReservationRequest" /> </xs:sequence> </xs:complexType> request The reservation to be checked. 2.2.2.2. Response <xs:element name="checkReservationPossibilityResponse" type="tns:checkReservationPossibilityResponse" /> <xs:complexType name="checkReservationPossibilityResponse"> <xs:sequence> <xs:element name="Possibility" type="xs:boolean" /> </xs:sequence> </xs:complexType> <xs:element name="UserAccessPointException" type="tns:UserAccessPointException" /> Possibility Whether the reservation is possible. The following exceptions may be thrown: UserAccessPointException When the reservation contains some erroneous information (e.g. start time is after the end time). 2.2.2.3. Example Below is an example request for checking the possibility of a reservation. The request specifies the following parameters: Start port: GRNET.port.1 End port: PSNC.port.5 Start time: 01 April 2010, 04:42:21.555 (UTC time plus 3 hours) End time: 27 July 2010, 17:12:00 (UTC time plus 2 hours) Priority: Normal Textual description: res1 Capacity: 1,000,000,000 bps (1 Gbps) No domains or links to include or exclude User-specified VLAN id: 0 (indicating no user selection) Maximum allowed delay: 2 ms No resiliency Unidirectional reservation “Process now” option not selected <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:checkReservationPossibility xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <request> <startPort>GRNET.port.1</startPort> <endPort>PSNC.port.5</endPort> <startTime>2010-04-01T04:42:21.555+03:00</startTime> <endTime>2010-07-27T17:12:00+02:00</endTime> <priority>NORMAL</priority> <description>res1</description> <capacity>1000000000</capacity> <userInclude /> <userExclude /> <userVlanId>0</userVlanId> <maxDelay>2</maxDelay> <resiliency>NONE</resiliency> <bidirectional>false</bidirectional> <processNow>false</processNow> </request> </ns2:checkReservationPossibility> </soap:Body> </soap:Envelope> And an example response indicating that the above reservation is possible: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:checkReservationPossibilityResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <Possibility>true</Possibility> </ns2:checkReservationPossibilityResponse> </soap:Body> </soap:Envelope> 2.2.3. getAllDomains The getAllDomains method is called by the UI to retrieve all domains in the global topology. 2.2.3.1. Request <xs:element name="getAllDomains" type="tns:getAllDomains" /> <xs:complexType name="getAllDomains"> <xs:sequence /> </xs:complexType> 2.2.3.2. Response <xs:element name="getAllDomainsResponse" type="tns:getAllDomainsResponse" /> <xs:complexType name="getAllDomainsResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="Domains" type="xs:string" /> </xs:sequence> </xs:complexType> Domains The domain name. 2.2.3.3. Example Below is an example request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllDomains xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> And an example response for a topology that contains 4 domains (GEANT, GRNET, HEANET, PSNC): <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllDomainsResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <Domains>GEANT</Domains> <Domains>GRNET</Domains> <Domains>HEANET</Domains> <Domains>PSNC</Domains> </ns2:getAllDomainsResponse> </soap:Body> </soap:Envelope> 2.2.4. getAllLinks The getAllLinks method is called by the UI to retrieve all links in the global topology. 2.2.4.1. Request <xs:element name="getAllLinks" type="tns:getAllLinks" /> <xs:complexType name="getAllLinks"> <xs:sequence /> </xs:complexType> 2.2.4.2. Response <xs:element name="getAllLinksResponse" type="tns:getAllLinksResponse" /> <xs:complexType name="getAllLinksResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="Links" type="xs:string" /> </xs:sequence> </xs:complexType> Links The link id. 2.2.4.3. Example Below is an example request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllLinks xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> And an example response for a topology that contains 6 abstract links: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllLinksResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <Links>GRNET.Link.1</Links> <Links>GRNET.Link.3</Links> <Links>GRNET.Link.4</Links> <Links>GRNET.Link.7</Links> <Links>GEANT.Link.2</Links> <Links>GEANT.Link.3</Links> </ns2:getAllLinksResponse> </soap:Body> </soap:Envelope> 2.2.5. getAllClientPorts The getAllClientPorts method is called by the UI to retrieve all client ports in the global topology. 2.2.5.1. Request <xs:element name="getAllClientPorts" type="tns:getAllClientPorts" /> <xs:complexType name="getAllClientPorts"> <xs:sequence /> </xs:complexType> 2.2.5.2. Response <xs:element name="getAllClientPortsResponse" type="tns:getAllClientPortsResponse" /> <xs:complexType name="getAllClientPortsResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="Ports" type="xs:string" /> </xs:sequence> </xs:complexType> Ports The port ID. 2.2.5.3. Example Below is an example request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllClientPorts xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> And an example response for a topology with 2 client ports: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getAllClientPortsResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <Ports>GRNET.Port.7</Ports> <Ports>PSNC.Port.8</Ports> </ns2:getAllClientPortsResponse> </soap:Body> </soap:Envelope> 2.2.6. getDomainClientPorts The getDomainClientPorts method is called by the UI to retrieve client ports the are connected to the IDM that responds to the method. 2.2.6.1. Request <xs:element name="getDomainClientPorts" type="tns:getDomainClientPorts" /> <xs:complexType name="getDomainClientPorts"> <xs:sequence /> </xs:complexType> 2.2.6.2. Response <xs:element name="getDomainClientPortsResponse" type="tns:getDomainClientPortsResponse" /> <xs:complexType name="getDomainClientPortsResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="Ports" type="xs:string" /> </xs:sequence> </xs:complexType> Ports The port ID. 2.2.6.3. Example Below is an example request: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getDomainClientPorts xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> And an example response by an IDM that controls a domain with 1 client port: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:getDomainClientPortsResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <Ports>GRNET.Port.7</Ports> </ns2:getDomainClientPortsResponse> </soap:Body> </soap:Envelope> 2.2.7. modifyReservation The modifyReservation method is called by the UI to modify a previously submitted service. 2.2.7.1. Request <xs:element name="modifyReservation" type="tns:modifyReservation" /> <xs:complexType name="modifyReservation"> <xs:sequence> <xs:element minOccurs="0" name="request" type="ns1:ModifyRequest" /> </xs:sequence> </xs:complexType> request The modification request containing the modified reservation details. 2.2.7.2. Response <xs:element name="modifyReservationResponse" type="tns:modifyReservationResponse" /> <xs:complexType name="modifyReservationResponse"> <xs:sequence /> </xs:complexType> 2.2.7.3. Example Below is an example request for modifying the reservation with ID 150.140.8.13:8080@1270051708928. The modification request specifies the following changes: Start time: Change to 26 July 2011, 17:12:00 (UTC time plus 2 hours) End time: Change to 27 July 2011, 17:12:00 (UTC time plus 2 hours) <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:modifyReservation xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <request> <resId>150.140.8.13:8080@1270051708928</resId> <startTime>2011-07-26T17:12:00+02:00</startTime> <endTime>2011-07-27T17:12:00+02:00</endTime> </request> </ns2:modifyReservation> </soap:Body> </soap:Envelope> And the typical response: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:modifyReservationResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> 2.2.8. queryService The queryService method is called by the UI to retrieve information about a service and its reservations. 2.2.8.1. Request <xs:element name="queryService" type="tns:queryService" /> <xs:complexType name="queryService"> <xs:sequence> <xs:element minOccurs="0" name="serviceID" type="xs:string" /> </xs:sequence> </xs:complexType> serviceID The ID of the service for which information will be retrieved. 2.2.8.2. Response <xs:element name="queryServiceResponse" type="tns:queryServiceResponse" /> <xs:complexType name="queryServiceResponse"> <xs:sequence> <xs:element minOccurs="0" name="ServiceResponse" type="ns1:ServiceResponse" /> </xs:sequence> </xs:complexType> <xs:element name="UserAccessPointException" type="tns:UserAccessPointException" /> ServiceResponse The response with the information about the requested service. The following exceptions may be thrown: UserAccessPointException When the serviceID specified at the request does not exist. 2.2.8.3. Example Below is an example request for querying about the service with ID 150.140.8.13:8080@1270051708928: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:queryService xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <serviceID>150.140.8.13:8080@1270051708928</serviceID> </ns2:queryService> </soap:Body> </soap:Envelope> And below is an example response, which provides the following information about the service: User that submitted it:user1 User’s home domain: GRNET The service contains a single reservation with the following characteristics: State of the reservation: Scheduled Textual message (currently the same in all responses): message Start port: GRNET.Port.1 End port: PSNC.Port.5 Start time: 01 April 2010, 05:09:14.367 (UTC time plus 3 hours) End time: 27 July 2010, 18:12:00 (UTC time plus 3 hours) Priority: Normal Textual description: res1 Capacity: 1,000,000,000 bps (1 Gbps) No domains or links to include or exclude User-specified VLAN id: 0 (indicating no user selection) Maximum allowed delay: 2 ms No resiliency Unidirectional reservation <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:queryServiceResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <ServiceResponse> <userName>user1</userName> <userHomeDomain>GRNET</userHomeDomain> <reservations> <state>SCHEDULED</state> <message>message</message> <startPort>GRNET.Port.1</startPort> <endPort>PSNC.Port.5</endPort> <startTime>2010-04-01T05:09:14.367+03:00</startTime> <endTime>2010-07-27T18:12:00+03:00</endTime> <description>res1</description> <capacity>1000000000</capacity> <maxDelay>2</maxDelay> <bidirectional>false</bidirectional> </reservations> </ServiceResponse> </ns2:queryServiceResponse> </soap:Body> </soap:Envelope> 2.2.9. registerCallback The registerCallback method is called by the UI to be registered at the IDM for receiving callback calls related to a service. The IDM can use the list of registered callback clients in order to notify them with updates about the service status. 2.2.9.1. Request <xs:element name="registerCallback" type="tns:registerCallback" /> <xs:complexType name="registerCallback"> <xs:sequence> <xs:element minOccurs="0" name="serviceID" type="xs:string" /> <xs:element minOccurs="0" name="url" type="xs:string" /> </xs:sequence> </xs:complexType> serviceID The ID of the service for which callback calls will be made. url The location where callback calls should be made (normally the UI server that can handle the callback calls from the IDM). 2.2.9.2. Response <xs:element name="registerCallbackResponse" type="tns:registerCallbackResponse" /> <xs:complexType name="registerCallbackResponse"> <xs:sequence /> </xs:complexType> 2.2.9.3. Example Below is an example request for registering callback to the service with ID 150.140.8.13:8080@1270051708928. Callback calls will be addressed to the url http://testurl.com/uapcallback. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:registerCallback xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <serviceID>150.140.8.13:8080@1270051708928</serviceID> <url>http://testurl.com/uapcallback</url> </ns2:registerCallback> </soap:Body> </soap:Envelope> And the typical response: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:registerCallbackResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/" /> </soap:Body> </soap:Envelope> 2.2.10. submitService The submitService method is called by the UI to submit a service. 2.2.10.1. Request <xs:element name="submitService" type="tns:submitService" /> <xs:complexType name="submitService"> <xs:sequence> <xs:element minOccurs="0" name="request" type="ns1:ServiceRequest" /> </xs:sequence> </xs:complexType> request The service request containing the service details. 2.2.10.2. Response <xs:element name="submitServiceResponse" type="tns:submitServiceResponse" /> <xs:complexType name="submitServiceResponse"> <xs:sequence> <xs:element minOccurs="0" name="serviceID" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="UserAccessPointException" type="tns:UserAccessPointException" /> serviceID The ID of the submitted service, assigned by the IDM. The following exceptions may be thrown: UserAccessPointException When the reservations in the service contain some erroneous information (e.g. start time is after the end time). 2.2.10.3. Example Below is an example service submission. The service is submitted by user1 and contains a single reservation with the following characteristics: Start port: GRNET.port.1 End port: PSNC.port.5 Start time: 01 April 2010, 05:09:14.367 (UTC time plus 3 hours) End time: 27 July 2010, 17:12:00 (UTC time plus 2 hours) Priority: Normal Textual description: res1 Capacity: 1,000,000,000 bps (1 Gbps) No domains or links to include or exclude User-specified VLAN id: 0 (indicating no user selection) Maximum allowed delay: 2 ms No resiliency Unidirectional reservation “Process now” option not selected <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:submitService xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <request> <userName>user1</userName> <reservations> <startPort>GRNET.port.1</startPort> <endPort>PSNC.port.5</endPort> <startTime>2010-04-01T05:09:14.367+03:00</startTime> <endTime>2010-07-27T17:12:00+02:00</endTime> <priority>NORMAL</priority> <description>res1</description> <capacity>1000000000</capacity> <userInclude /> <userExclude /> <userVlanId>0</userVlanId> <maxDelay>2</maxDelay> <resiliency>NONE</resiliency> <bidirectional>false</bidirectional> <processNow>false</processNow> </reservations> </request> </ns2:submitService> </soap:Body> </soap:Envelope> And here is an example response to the above request, which contains the ID that has been assigned to the submitted service: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:submitServiceResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <serviceID>150.140.8.13:8080@1270051708928</serviceID> </ns2:submitServiceResponse> </soap:Body> </soap:Envelope> 2.2.11. submitServiceAndRegister The submitServiceAndRegister method is called by the UI to submit a service and simultaneously register itself at the IDM for receiving callback calls related to a service. The IDM can use the list of registered callback clients in order to notify them with updates about the service status. 2.2.11.1. Request <xs:element name="submitServiceAndRegister" type="tns:submitServiceAndRegister" /> <xs:complexType name="submitServiceAndRegister"> <xs:sequence> <xs:element minOccurs="0" name="request" type="ns1:ServiceRequest" /> <xs:element minOccurs="0" name="url" type="xs:string" /> </xs:sequence> </xs:complexType> request The service request containing the service details. url The location where callback calls should be made (normally the UI server that can handle the callback calls from the IDM). 2.2.11.2. Response <xs:element name="submitServiceAndRegisterResponse" type="tns:submitServiceAndRegisterResponse" /> <xs:complexType name="submitServiceAndRegisterResponse"> <xs:sequence> <xs:element minOccurs="0" name="serviceID" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:element name="UserAccessPointException" type="tns:UserAccessPointException" /> serviceID The ID of the submitted service, assigned by the IDM. The following exceptions may be thrown: UserAccessPointException When the reservations in the service contain some erroneous information (e.g. start time is after the end time). 2.2.11.3. Example Below is an example service submission. The service is submitted by user1 and contains a single reservation with the following characteristics: Start port: GRNET.Port.1 End port: PSNC.Port.5 Start time: 05 April 2010, 05:30:33.015 (UTC time plus 3 hours) End time: 27 July 2010, 17:12:00 (UTC time plus 2 hours) Priority: Normal Textual description: res1 Capacity: 1,000,000,000 bps (1 Gbps) No domains or links to include or exclude User-specified VLAN id: 0 (indicating no user selection) Maximum allowed delay: 2 ms No resiliency Unidirectional reservation “Process now” option not selected The request also registers a callback for the submitted service. Callback calls will be addressed to the url http://testurl.com/uapcallback. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:submitServiceAndRegister xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <request> <userName>user1</userName> <reservations> <startPort>GRNET.Port.1</startPort> <endPort>PSNC.Port.5</endPort> <startTime>2010-04-05T05:30:33.015+03:00</startTime> <endTime>2010-07-27T17:12:00+02:00</endTime> <priority>NORMAL</priority> <description>res1</description> <capacity>1000000000</capacity> <userInclude /> <userExclude /> <userVlanId>0</userVlanId> <maxDelay>2</maxDelay> <resiliency>NONE</resiliency> <bidirectional>false</bidirectional> <processNow>false</processNow> </reservations> </request> <url>http://testurl.com/uapcallback</url> </ns2:submitServiceAndRegister> </soap:Body> </soap:Envelope> And here is an example response to the above request, which contains the ID that has been assigned to the submitted service: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ns2:submitServiceAndRegisterResponse xmlns:ns2="http://useraccesspoint.autobahn.geant.net/"> <serviceID>150.140.8.13:8080@1270398598697</serviceID> </ns2:submitServiceAndRegisterResponse> </soap:Body> </soap:Envelope>