Mon Jul 19 14:50:59 PDT 1999

# copyright 1999-2000 by hewlett-packard company
# may be distributed under the terms of the artistic license

This is the IMS::ReleaseMgr package for Perl 5

The code contained in this package is meant to provide common functionality
between the client-side and server-side components of the Release Management
System. It evolved from a simple one-file module/class that was implemented
for the sake of allowing controlled external access to release to HP servers.
From there, it was expanded to aid in the implementation of server mirroring,
and as is often the case in this field, it rapidly ballooned from there.

The files are as follows. Each also has a manual page in-lined into it as
POD directives. The manual gets installed with the modules, and is thus
available via "perldoc". The files:

    ReleaseMgr.pm
        This is the base semi-object-oriented interface to receiving a
        package via HTTP upload. This was originally designed for use
        with a simple CGI form. It now has better support for more
        generalized use, and the CGI script (upload.pl within the
        Release-Manager package) is broader in scope. It is now the basis
        for multi-host mirroring.

    ReleaseMgr/Access.pm
        This provides a set of routines to read and test against access
        control lists (ACLs). These are only used by the client-side tools.

    ReleaseMgr/FileList.pm
        A quick hack to provide a subroutine entry point for sending one or
        more files directly into the release system without going through
        CVS first. Intended for use in the coding of a command-line file
        release tool that projects could use to release cron-generated files,
        such as nightly DBMS-based indices.

    ReleaseMgr/Signature.pm
        Packages are given checksums, or signatures, when generated. These
        allow the recipient to verify that the contents of the package were
        not corrupted (either accidentally or purposefully) in transit. Two
        signature methods are provided: an MD5-based scheme and a backwards-
        compatibility algorithm for packages being sent to www.hp.com.

    ReleaseMgr/Transfer.pm
        This provides implementation of the two transport models supported
        by the tools: HTTP upload and ordinary managed FTP sessions. This
        allows the same transport code to be used between mirror hosts as is
        used to initially send the package to the external hosts in the
        first place.

    ReleaseMgr/Utils.pm
        Well, call this one "everything else". The contents here range from
        the set of routines used for DBI access to miscellaneous calls that
        don't fit anywhere else. This element is used in a few places that
        are outside the usual release manager realm. The sysmonitord app
        uses the fork_as_daemon function, and could use more than that. The
        edit_db.pl script described in more detail below also uses heavily
        from this lib.


The "misc" Directory

This directory holds a couple of files that aren't delivered as part of the
distribution package, but are there for the sake of the maintainer:

    make_tables.sql
	Creates the SQL tables from scratch. Executes a "drop table" for
	each of the two, first, so you may want to work on this one a bit
	before executing it again. It's kept around for now mainly as a
	reference to the database schema.

    edit_db.pl
	I could write a whole manual on this one (and hopefully, I'll have
	the time to do so). In short, it's a HTTP/CGI-based tool for editing
	the mirror DBMS tables without having to use SQL*Net. It really needs
	to be controlled via Basic Authentication or something, but for now
	it can be invoked as a CGI with the parameters "user=xxx"
	and "password=xxx". Assuming that it runs from my area:

	    http://www.hostname.com/cgi-bin/edit_db.pl?user=xxx&password=xxx

	in the "Location" field of your favorite browser. From there, the
	various buttons are pretty self-explanatory. Any docs I have time
	to write will be in the misc directory alongside the tool.


randyr
