
Hiro Kishimoto wrote:
Hi Steve,
Your file & filesystem components are very good. They are what I am looking for.
I'd say they are a start. What is important is to have things that are generally useful yet at a high enough level to avoid a deployment descriptor evolving into a workflow script listing every single pre-and post- staging operation that takes place. The TempDir component example is a good one -it not only creates a temporary directory, it cleans it up on closedown. You could imagine an extension which added purging of files over 72 hours old to keep transient directories from overflowing on a long-running deployment. The higher level the components are, the more useful declarative deployment becomes. Otherwise you are writing shell scripts in XML, which is nearly the worst of all possible worlds. The other goal is to integrate with all the other work, not, as Dave Berry indirectly hints, try and repeat the work. I'd envisage staging components that set up paths to stuff in ACS repositories or other data sources. Its not the job of the deployment descriptor to say how that stuff gets close, only that at deployment time, the deployed program needs to know the path to where the stuff they want is. All we need is re-usable components that make use of all the file system/staging/data stuff being done to set things up right at deploy time, clean up when terminating, and to check for valid configurations and health at deploy time.
One more question I have in my mind is how to set user-id, group-id, and permissions to deployed files.
For Java implementations, you wait for Java 6 or execute chmod programs. Most irritatingly, Java operations to copy a file inherit back to the current defaults, not those of the source file. Over in Ant-land, this is a continous source of support calls, right up there with "no easy way to work with symlinks" and file case sensitivity problems in terms of where Java-on-portable-filesystem's limitations poke through. -Steve