Hi everyone.
Here is a recap of the problem statements for XML parser rework, as
discussed last week at our meeting and with some follow-on email today:
1) AI's multiple parsers present unneeded complexity and
unmaintainability. (Note: at the meeting we settled on "Determine
parser requirements" but I have since realized that this was not a
problem statement.)
- Things to consider for a single parser:
- functionality for data retrieval and search, schema compatibility,
how supported / maintainable is the parser
- The right parser will fall out as the other problems are solved.
2) Current AI manifests are not easy to use.
- Fragmented, could be better organized
- We decided that changing from XML is out of scope and off the table.
3) AI manifests need to be forward and backward compatible between builds.
- Manifests of different versions than the automated installer must
work whenever possible.
- A given version of the automated installer must be able to
recognize a manifest with which it is not compatible and gracefully fail.
4) Semantic validation is needed for AI.
- Lack of it means failures further down the installation process
instead of up front, or misconfiguration.
5) AI manifests have validation holes.
- Example: criteria schema doesn't bind a min/max pair of ipv4 address
patterns to an ipv4 address criterion.
Moving on to design:
1) On "Current AI manifests are not easy to use:"
I propose the following to start the discussion. For simplicity, a
single manifest containing criteria, ai_manifest content and sc_manifest
content can be used. All content would be represented in a single xml
format. This allows for less fragmentation and more straightforward
organization when possible. It also can prevent major changes which
could occur if a datum was switched between one format to another.
The AI can process the material however it sees fit. This can include
creating XML files of other types based on some of the materials if it
needs to interface with other tools. This approach allows for changes
in what is done with the data, without having to change the schema. For
example, if a DTD is created now with some of the data, and then later
some new mechanism replaces what uses the DTD, the DTD info can be
switched out for the new format without the user ever having to know
about it. This helps future compatibility.
There are benefits of having separate files which would be missed if
only a single file was allowed. Having separate AI manifest and SC
manifest can allow for the same basic install to be done, but have
different user and other configuration information on each system. I
propose that the fields in the manifest can have a pointer to another
file which has the information that field would contain. A second file
can have several fields defined, each pointed to by their respective
fields in the first manifest. For example, the first manifest of two
different kinds of systems may have a username, username password and
root password fields set to point to the second manifest, where they
would be defined. Each kind of system would be installed based on
their manifest, but would have the same user information as they both
point to the same second manifest. The complication of a second
manifest would be used only when needed, allowing for more complex
setups, but not robbing the simple setup of a simpler manifest file
configuration.
This may have implications on testing, as there would be a larger matrix.
Thanks,
Jack