Index: wsdl/fedd_types.xsd
===================================================================
--- wsdl/fedd_types.xsd	(revision bde2217ef96f4ecf6ef5789008dbb18a9ba991e0)
+++ wsdl/fedd_types.xsd	(revision c122b0c5a203c0f9a401dab206a08c71dce7131c)
@@ -23,4 +23,46 @@
   </xsd:complexType>
 
+  <!-- begin deprecated -->
+
+  <xsd:complexType name="projectType">
+    <xsd:annotation>
+      <xsd:documentation>
+	A description of the project used to access a testbed.  Includes
+	the testbed being accessed, the project name (often a local
+	name, scoped by the testbed), and any users who have been
+	granted access or for whom access is being requested.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="testbed" type="tns:IDType" minOccurs="0"
+	maxOccurs="1"/>
+      <xsd:element name="name" type="tns:IDType" minOccurs="0" maxOccurs="1"/>
+      <xsd:element name="user" type="tns:userType" minOccurs="0"
+	maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="emulabType">
+    <xsd:annotation>
+      <xsd:documentation>
+	A description of an Emulab sufficient for the federation system
+	to create a sub experiment on it.  Note that fedAttrs provide an
+	extension mechanism by which testbeds may communicate additional
+	information and preferences to federation systems that
+	understand it.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="project" type="tns:projectType"/>
+      <xsd:element name="domain" type="xsd:string"/>
+      <xsd:element name="boss" type="xsd:string"/>
+      <xsd:element name="ops" type="xsd:string"/>
+      <xsd:element name="fileServer" type="xsd:string"/>
+      <xsd:element name="eventServer" type="xsd:string"/>
+      <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
+	maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
   <xsd:complexType name="nodeType">
     <xsd:annotation>
@@ -43,4 +85,35 @@
   </xsd:complexType>
 
+  <xsd:complexType name="capacityType">
+    <xsd:annotation>
+      <xsd:documentation>
+	A strawman network capacity description for access negotiation.
+	This will come to include more and more interesting parameters.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="rate" type="xsd:double"/>
+      <xsd:element name="kind" type="tns:kindType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <xsd:simpleType name="userRole">
+    <xsd:annotation>
+      <xsd:documentation>
+	This defines the role the user/account is playing in the
+	federated experiment.  An account being accessed by the
+	federation system to create the experiment is in the
+	experimentCreation role and the accounts that experimenters will
+	use to access local testbed services (e.g., rebooting a local
+	node) are serviceAccess roles.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="serviceAccess"/>
+      <xsd:enumeration value="experimentCreation"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
   <xsd:simpleType name="kindType">
     <xsd:annotation>
@@ -55,4 +128,6 @@
     </xsd:restriction>
   </xsd:simpleType>
+
+  <!-- end deprecated -->
 
   <xsd:simpleType name="statusType">
@@ -71,17 +146,4 @@
   </xsd:simpleType>
 
-  <xsd:complexType name="capacityType">
-    <xsd:annotation>
-      <xsd:documentation>
-	A strawman network capacity description for access negotiation.
-	This will come to include more and more interesting parameters.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="rate" type="xsd:double"/>
-      <xsd:element name="kind" type="tns:kindType"/>
-    </xsd:sequence>
-  </xsd:complexType>
-
   <xsd:complexType name="accessType">
     <xsd:annotation>
@@ -98,24 +160,7 @@
       <xsd:element name="sshPubkey" type="xsd:base64Binary"/>
       <xsd:element name="pgpPubkey" type="xsd:base64Binary"/>
+      <xsd:element name="passwordHash" type="xsd:string"/>
     </xsd:choice>
   </xsd:complexType>
-
-  <xsd:simpleType name="userRole">
-    <xsd:annotation>
-      <xsd:documentation>
-	This defines the role the user/account is playing in the
-	federated experiment.  An account being accessed by the
-	federation system to create the experiment is in the
-	experimentCreation role and the accounts that experimenters will
-	use to access local testbed services (e.g., rebooting a local
-	node) are serviceAccess roles.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:restriction base="xsd:string">
-      <xsd:enumeration value="serviceAccess"/>
-      <xsd:enumeration value="experimentCreation"/>
-    </xsd:restriction>
-  </xsd:simpleType>
-
 
   <xsd:complexType name="userType">
@@ -136,5 +181,7 @@
       <xsd:element name="access" type="tns:accessType" minOccurs="0"
 	maxOccurs="unbounded"/>
+      <!-- begin deprecated -->
       <xsd:element name="role" type="tns:userRole" minOccurs="0" maxOccurs="1"/>
+      <!-- end deprecated -->
     </xsd:sequence>
   </xsd:complexType>
@@ -165,8 +212,10 @@
     </xsd:annotation>
     <xsd:sequence>
+      <!-- replace with topdl -->
       <xsd:element name="node" type="tns:nodeType" minOccurs="0"
 	maxOccurs="unbounded" />
       <xsd:element name="capacity" type="tns:capacityType" minOccurs="0"
 	maxOccurs="unbounded"/>
+      <!-- replace with topdl -->
     </xsd:sequence>
   </xsd:complexType>
@@ -190,64 +239,5 @@
     </xsd:sequence>
   </xsd:complexType>
-
-
-  <xsd:complexType name="projectType">
-    <xsd:annotation>
-      <xsd:documentation>
-	A description of the project used to access a testbed.  Includes
-	the testbed being accessed, the project name (often a local
-	name, scoped by the testbed), and any users who have been
-	granted access or for whom access is being requested.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="testbed" type="tns:IDType" minOccurs="0"
-	maxOccurs="1"/>
-      <xsd:element name="name" type="tns:IDType" minOccurs="0" maxOccurs="1"/>
-      <xsd:element name="user" type="tns:userType" minOccurs="0"
-	maxOccurs="unbounded"/>
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="emulabType">
-    <xsd:annotation>
-      <xsd:documentation>
-	A description of an Emulab sufficient for the federation system
-	to create a sub experiment on it.  Note that fedAttrs provide an
-	extension mechanism by which testbeds may communicate additional
-	information and preferences to federation systems that
-	understand it.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="project" type="tns:projectType"/>
-      <xsd:element name="domain" type="xsd:string"/>
-      <xsd:element name="boss" type="xsd:string"/>
-      <xsd:element name="ops" type="xsd:string"/>
-      <xsd:element name="fileServer" type="xsd:string"/>
-      <xsd:element name="eventServer" type="xsd:string"/>
-      <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
-	maxOccurs="unbounded"/>
-    </xsd:sequence>
-  </xsd:complexType>
-
-  <xsd:complexType name="federatedExperimentType">
-    <xsd:annotation>
-      <xsd:documentation>
-	Naming and Emulab instantiation information about a federant.
-	This is returned by various informational requests and as part
-	of a successful creation message.
-      </xsd:documentation>
-    </xsd:annotation>
-    <xsd:sequence>
-      <xsd:element name="name" type="tns:IDType" minOccurs="1" 
-	maxOccurs="unbounded"/>
-      <xsd:element name="emulab" type="tns:emulabType" minOccurs="0" 
-	maxOccurs="1"/>
-      <xsd:element name="master" type="xsd:boolean"/>
-    </xsd:sequence>
-  </xsd:complexType>
-
-
+  
   <xsd:complexType name="vtoponodeType">
     <xsd:annotation>
@@ -352,4 +342,55 @@
     </xsd:choice>
   </xsd:complexType>
+
+  <xsd:simpleType name="connectionType">
+    <xsd:annotation>
+      <xsd:documentation>
+	Known subexperiment interconnection mechanisms
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="ssh"/>
+      <xsd:enumeration value="transit"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:complexType name="connectionInfoType">
+    <xsd:annotation>
+      <xsd:documentation>
+	The information needed to stitch together two segments.  It is both
+	exported from the nmaster and reported by the experiment controller to
+	the access controller and by the access controller into the world.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="type" type="tns:connectionType"/>
+      <xsd:element name="peer" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+      <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
+	maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <xsd:complexType name="serviceInfoType">
+    <xsd:annotation>
+      <xsd:documentation>
+	A generic service entry, basically a name and server
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name" type="xsd:string"/>
+      <xsd:element name="server" type="xsd:string" minOccurs="0" 
+	maxOccurs="1"/>
+      <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
+	maxOccurs="unbounded"/>
+      <xsd:element name="visibility" type="xsd:string">
+	<xsd:restriction>
+	  <xsd:enumeration value="export"/>	<!-- server -->
+	  <xsd:enumeration value="import"/>	<!-- client -->
+	  <xsd:enumeration value="composition"/><!-- both -->
+	</xsd:restriction>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
 
   <xsd:complexType name="newRequestType">
@@ -408,6 +449,10 @@
       <xsd:element name="resources" type="tns:resourcesType" minOccurs="0" 
 	maxOccurs="1"/>
+      <xsd:element name="service" type="tns:serviceInfoType" minOccurs="0"
+	maxOccurs="unbounded" />
+      <!-- begin deprecated -->
       <xsd:element name="exportProject" type="tns:IDType" 
 	minOccurs="0" maxOccurs="1"/>
+      <!-- end deprecated -->
       <xsd:element name="allocID" type="tns:IDType"/>
       <xsd:element name="when" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
@@ -427,8 +472,14 @@
     <xsd:sequence>
       <xsd:element name="allocID" type="tns:IDType"/>
+      <!-- begin deprecated -->
       <xsd:element name="emulab" type="tns:emulabType" minOccurs="0" maxOccurs="1"/>
+      <!-- end deprecated -->
+      <xsd:element name="service" type="tns:serviceInfoType" minOccurs="0"
+	maxOccurs="unbounded" />
       <xsd:element name="when" type="xsd:dateTime" minOccurs="0" maxOccurs="1"/>
       <xsd:element name="until" type="xsd:dateTime" minOccurs="0" 
 	maxOccurs="1"/>
+      <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
+	maxOccurs="unbounded"/>
     </xsd:sequence>
   </xsd:complexType>
@@ -474,6 +525,8 @@
       <xsd:element name="experimentdescription" 
 	type="tns:experimentDescriptionType"/>
+      <!-- begin deprecated -->
       <xsd:element name="master" type="xsd:string"/>
       <xsd:element name='exportProject' type="tns:IDType"/>
+      <!-- end deprecated -->
       <xsd:element name="experimentID" type="tns:IDType"/>
     </xsd:sequence>
@@ -483,6 +536,5 @@
     <xsd:annotation>
       <xsd:documentation>
-	Returned to let the caller know that the request is underway and what
-	credentials will eventauly be able to be used to access them.
+	Returned to let the caller know that the request is underway.
       </xsd:documentation>
     </xsd:annotation>
@@ -560,4 +612,27 @@
     </xsd:sequence>
   </xsd:complexType>
+
+  <!-- This needs to go away as well.  It's only part of an infoResponseType,
+  which needs to be reworked overall -->
+  <xsd:complexType name="federatedExperimentType">
+    <xsd:annotation>
+      <xsd:documentation>
+	Naming and Emulab instantiation information about a federant.
+	This is returned by various informational requests and as part
+	of a successful creation message.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name" type="tns:IDType" minOccurs="1" 
+	maxOccurs="unbounded"/>
+      <!-- begin deprecated -->
+      <xsd:element name="emulab" type="tns:emulabType" minOccurs="0" 
+	maxOccurs="1"/>
+      <xsd:element name="master" type="xsd:boolean"/>
+      <!-- end deprecated -->
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <!-- end go away -->
 
   <xsd:complexType name="infoResponseType">
@@ -649,5 +724,11 @@
       <xsd:element name="segmentdescription" 
 	type="tns:experimentDescriptionType"/>
+      <!-- begin deprecated -->
       <xsd:element name="master" type="xsd:boolean"/>
+      <!-- begin deprecated -->
+      <xsd:element name="service" type="tns:serviceInfoType" minOccurs="0"
+	maxOccurs="unbounded" />
+      <xsd:element name="connectivity" type="tns:connectivityInfoType" 
+	minOccurs="0" maxOccurs="unbounded"/>
       <xsd:element name="fedAttr" type="tns:fedAttrType" minOccurs="0"
 	maxOccurs="unbounded"/>
