[cddlm] API issue: file upload

Steve Loughran steve_loughran at hpl.hp.com
Fri Jan 21 06:51:28 CST 2005


As stuart points out, the requirements for the deployment API says

"Upload of the files to the remote system will be supported."

What are we going to do about this?

1. What is the status on the repository proposal that was part of the 
BizGrid work?

2. Is there anything else we should look at.

I dont want to tack on file upload into the deployment API at this 
point. Its not just because of interop issues (you need to decide which 
of the many SOAP attachment extensions to mandate), but because I am not 
sure that sending up a binary file with a deployment is always the right 
thing to do.


We could do it so that when you deploy something, you can
-send up multiple binary attachments with the create request
-give each of these a URI
-use these URIs when referring to things in the deployment descriptor.

So you could deploy (server descriptor, ((myapp.ear,"uri:isbn:0012345")) 
and include references to the EAR file in the descriptor by URI

But what if you want to deploy something big, like jboss with postgres 
SQL server? And want different platforms to install a different version 
of postgres depending on their underlying CPU/OS? You would not want to 
upload everything in every single request. Instead you'd talk to a 
repository, upload the apps, upload any datasets you wanted, then send 
different deployment descriptors referring to the various pieces by URIs 
returned by the repository. Having it on the repository lets you 
undeploy and redeploy rapidly, without having to reattach the binaries. 
Also, if delegating deployment to something else, you can either include 
existing URLs to the data (assuming the repository is jointly visible), 
or copy needed binaries to a repository closer to the system.

note that the URLs used in descriptors do not have to be http:. All they 
have to be is urls that can be processed by the local deployment 
framework. This implies http:. file: (and shared filesys, which is 
trouble in its own right), or something else. As an example of the 
something else, look at the transit project: 
http://www.dpml.net/products/transit/index.html

with transit, you publish your artifacts to a repository as 
(name,version). You construct URLs to the artifacts using a new URL 
scheme, artifact: (transit has a plugin for Java  to do this), and then 
you refer to artifacts using "artifact:name#version". So if my code 
deployed on jboss4.0.3, the URL would be artifact:jboss-core#4.0.3  It 
is up to transit to locate the artifact, download it, cache it and then 
hand it off to the repository. Caching is part of the system: this makes 
the service more resilent to transient failures of repository access 
-indeed, more resilent than shared file systems often are.

Clearly we dont want to add repositories to our charter, but we want to 
work with them. Maybe we could do this by
1. enabling binary-with-deployment operations if that is what you want
2. encouraging the use of repositories

Comments?

-steve









More information about the cddlm-wg mailing list