Index: fedd/Makefile
===================================================================
--- fedd/Makefile	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/Makefile	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -1,5 +1,8 @@
 
-GENERATED_MODS=fedd_services.py fedd_services_types.py
-WSDL_FILES=fedd.wsdl fedd_bindings.wsdl fedd_messages.wsdl fedd_types.xsd
+GENERATED_MODS= fedd_services.py fedd_internal_services.py \
+		fedd_services_types.py
+WSDL_FILES= fedd.wsdl fedd_bindings.wsdl fedd_messages.wsdl fedd_types.xsd \
+	    fedd_internal.wsdl fedd_internal_bindings.wsdl \
+	    fedd_internal_messages.wsdl 
 
 all:	${GENERATED_MODS}
@@ -8,4 +11,6 @@
 ${GENERATED_MODS}:	${WSDL_FILES}
 	/usr/local/bin/wsdl2py --file fedd.wsdl --complexType
+	/usr/local/bin/wsdl2py --file fedd_internal.wsdl --complexType \
+		--types=fedd_services_types
 
 clean:
Index: fedd/fedd.py
===================================================================
--- fedd/fedd.py	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/fedd.py	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -55,5 +55,5 @@
 	"""Confirm that this class implements the namespace and SOAP method"""
 	root = ps.body_root
-	if root.namespaceURI != self.server.impl.soap_namespace:
+	if root.namespaceURI not in self.server.impl.soap_namespaces:
 	    self.send_fault(Fault(Fault.Client, 
 		'Unknown namespace "%s"' % root.namespaceURI))
Index: fedd/fedd_allocate_project.py
===================================================================
--- fedd/fedd_allocate_project.py	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/fedd_allocate_project.py	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -19,4 +19,5 @@
 
 from fedd_services import *
+from fedd_internal_services import *
 from fedd_util import *
 import parse_detail
@@ -195,11 +196,7 @@
 	if certs != None and isinstance(certs, type(tuple())):
 	    self.cert_file, self.trusted_certs, self.cert_pwd = certs
-	    # self.cert_file = certs[0]
-	    # self.trusted_certs = certs[1]
-	    # self.cert_pwd = certs[2]
-	else:
-	    self.cert_file = None
-	    self.trusted_certs = None
-	    self.cert_pwd = None
+	else:
+	    self.cert_file, self.trusted_certs, self.cert_pwd = \
+		    (None, None, None)
 
     def dynamic_project(self, req, fedid=None):
@@ -219,6 +216,6 @@
 		    "Server certificates misconfigured")
 
-	loc = feddServiceLocator();
-	port = loc.getfeddPortType(self.url,
+	loc = feddInternalServiceLocator();
+	port = loc.getfeddInternalPortType(self.url,
 		transport=M2Crypto.httpslib.HTTPSConnection, 
 		transdict={ 'ssl_context' : ctx })
Index: fedd/fedd_bindings.wsdl
===================================================================
--- fedd/fedd_bindings.wsdl	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/fedd_bindings.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -37,25 +37,4 @@
 	</fault>
       </operation>
-      <operation name="AllocateProject">
-	<documentation>
-	  The bindings of this operation are straightforward SOAP RPC 1.1.
-	</documentation>
-	<soap:operation soapAction="AllocateProject"/> 
-	<input>
-	  <soap:body use="encoded" parts="tns:AllocateProjectRequestBody"
-	    namespace="http://www.isi.edu/faber/fedd.wsdl"
-	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-	</input>
-	<output>
-	  <soap:body use="encoded" parts="tns:AllocateProjectResponseBody"
-	    namespace="http://www.isi.edu/faber/fedd.wsdl"
-	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-	</output>
-	<fault>
-	  <soap:fault use="encoded"  name="tns:AllocateProjectFault"
-	    namespace="http://www.isi.edu/faber/fedd.wsdl"
-	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-	</fault>
-      </operation>
     </binding>
 
Index: fedd/fedd_internal.wsdl
===================================================================
--- fedd/fedd_internal.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
+++ fedd/fedd_internal.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<definitions name="fedd_internal"
+  targetNamespace="http://www.isi.edu/faber/fedd_internal.wsdl"
+  xmlns:tns="http://www.isi.edu/faber/fedd_messages"
+  xmlns:bns="http://www.isi.edu/faber/fedd_bindings"
+  xmlns:xsd1="http://www.isi.edu/faber/fedd_types"
+  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+  xmlns="http://schemas.xmlsoap.org/wsdl/">
+  
+  <import namespace="http://www.isi.edu/faber/fedd_types" 
+    location="fedd_types.xsd"/>
+
+  <import namespace="http://www.isi.edu/faber/fedd_internal_messages" 
+    location="fedd_internal_messages.wsdl"/>
+
+  <import namespace="http://www.isi.edu/faber/fedd_internal_bindings" 
+    location="fedd_internal_bindings.wsdl"/>
+</definitions>
+
Index: fedd/fedd_internal_bindings.wsdl
===================================================================
--- fedd/fedd_internal_bindings.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
+++ fedd/fedd_internal_bindings.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<definitions name="fedd"
+  targetNamespace="http://www.isi.edu/faber/fedd_internal_bindings"
+  xmlns:tns="http://www.isi.edu/faber/fedd_internal_messages"
+  xmlns:bns="http://www.isi.edu/faber/fedd_internal_bindings"
+  xmlns:xsd1="http://www.isi.edu/faber/fedd_types"
+  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+  xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+  <binding name="feddInternalBinding" type="tns:feddInternalPortType">
+      <documentation>
+	These are really very straight ahead SOAP RPC bindings.  They're 1.1
+	SOAP and not much outside the defaults.  No interesting header packing
+	or fault configuration yet.
+      </documentation>
+    <soap:binding style="rpc" 
+      transport="http://schemas.xmlsoap.org/soap/http"/>
+      <operation name="AllocateProject">
+	<documentation>
+	  The bindings of this operation are straightforward SOAP RPC 1.1.
+	</documentation>
+	<soap:operation soapAction="AllocateProject"/> 
+	<input>
+	  <soap:body use="encoded" parts="tns:AllocateProjectRequestBody"
+	    namespace="http://www.isi.edu/faber/fedd_internal.wsdl"
+	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+	</input>
+	<output>
+	  <soap:body use="encoded" parts="tns:AllocateProjectResponseBody"
+	    namespace="http://www.isi.edu/faber/fedd_internal.wsdl"
+	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+	</output>
+	<fault>
+	  <soap:fault use="encoded"  name="tns:AllocateProjectFault"
+	    namespace="http://www.isi.edu/faber/fedd_internal.wsdl"
+	    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
+	</fault>
+      </operation>
+    </binding>
+
+    <service name="feddInternalService">
+      <documentation>
+	Fedd resource access service
+      </documentation>
+      <port name="fedd_internal_port" binding="bns:feddInternalBinding">
+	<soap:address location="http://www.isi.edu/faber/fedd_internal"/>
+      </port>
+    </service>
+</definitions>
Index: fedd/fedd_internal_messages.wsdl
===================================================================
--- fedd/fedd_internal_messages.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
+++ fedd/fedd_internal_messages.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<definitions name="fedd"
+  targetNamespace="http://www.isi.edu/faber/fedd_internal_messages"
+  xmlns:tns="http://www.isi.edu/faber/fedd_internal_messages"
+  xmlns:xsd1="http://www.isi.edu/faber/fedd_types"
+  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+  xmlns="http://schemas.xmlsoap.org/wsdl/">
+
+  <message name="FaultMessage">
+    <part name="FaultBody" type="xsd1:faultType"/>
+  </message>
+
+  <message name="AllocateProjectRequestMessage">
+    <part name="AllocateProjectRequestBody" type="xsd1:projectAllocType"/>
+  </message>
+
+  <message name="AllocateProjectResponseMessage">
+    <part name="AllocateProjectResponseBody" 
+      type="xsd1:projectAllocResponseType"/>
+  </message>
+
+  <portType name="feddInternalPortType">
+    <operation name="AllocateProject">
+      <input message="tns:AllocateProjectRequestMessage"/>
+      <output message="tns:AllocateProjectResponseMessage"/>
+      <fault name="AllocateProjectFault" 
+	message="tns:FaultMessage"/>
+    </operation>
+  </portType>
+</definitions>
Index: fedd/fedd_messages.wsdl
===================================================================
--- fedd/fedd_messages.wsdl	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/fedd_messages.wsdl	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -19,13 +19,4 @@
   </message>
 
-  <message name="AllocateProjectRequestMessage">
-    <part name="AllocateProjectRequestBody" type="xsd1:projectAllocType"/>
-  </message>
-
-  <message name="AllocateProjectResponseMessage">
-    <part name="AllocateProjectResponseBody" 
-      type="xsd1:projectAllocResponseType"/>
-  </message>
-
   <portType name="feddPortType">
     <operation name="RequestAccess">
@@ -38,11 +29,4 @@
 	message="tns:FaultMessage"/>
     </operation>
-
-    <operation name="AllocateProject">
-      <input message="tns:AllocateProjectRequestMessage"/>
-      <output message="tns:AllocateProjectResponseMessage"/>
-      <fault name="AllocateProjectFault" 
-	message="tns:FaultMessage"/>
-    </operation>
   </portType>
 </definitions>
Index: fedd/fedd_proj.py
===================================================================
--- fedd/fedd_proj.py	(revision 808889e8d7fa0dbfdb2b64e5b0ecec81df4f4c20)
+++ fedd/fedd_proj.py	(revision 7aec37d533bbc9957860365106a6334be2e2ec31)
@@ -39,5 +39,6 @@
 
     # Used by the SOAP caller
-    soap_namespace = 'http://www.isi.edu/faber/fedd.wsdl'
+    soap_namespaces = ('http://www.isi.edu/faber/fedd.wsdl',
+	    'http://www.isi.edu/faber/fedd_internal.wsdl')
     soap_methods = { 'RequestAccess': 'soap_RequestAccess' }
     xmlrpc_methods = { 'RequestAccess': 'xmlrpc_RequestAccess' }
@@ -449,5 +450,14 @@
 				
 		    ap = self.allocate_project.dynamic_project(preq)
-		else: pass    # SSH key additions
+		else:
+		    # XXX ssh key additions
+		    ap = { 'project': \
+			    { 'name' : { 'username' : found[0] },\
+			      'user' : [ {\
+				'userID': { 'username' : found[1] }, \
+				'access': [ { 'sshPubkey': s } for s in ssh]}\
+				]\
+			    }\
+		    }
 	    else:
 		raise service_error(service_error.req, 
