50 likes | 175 Views
Proposal to support Monoliths. Rich Aquino Macrovision June 7, 2007. Problem Statement. There are existing installations that use a single installer binary that contains selectable content, i.e., a “monolithic” artifact.
E N D
Proposal to support Monoliths Rich Aquino Macrovision June 7, 2007
Problem Statement • There are existing installations that use a single installer binary that contains selectable content, i.e., a “monolithic” artifact. • The current SDD concept of artifacts is that they are atomic and do not contain selectable content, i.e., there is support only for “atomic” artifacts. Selection is always done by selecting whole artifacts, never portions of artifacts. • These monolithic artifacts often expect input arguments that have a list of values, e.g., a list of selected features. • The current SDD definition of arguments does not support values that consist of a list of values.
Proposal Add a “shared” boolean attribute (defaults to false) to ArtifactType. • This will enable multiple Artifact elements in multiple IUs to share the same artifact file (or resourceRef), and will tell the runtime to process the artifact file only a single time no matter how many IUs share it. Enable NameAndOptionalValuePairType to specify that the value will be appended to a parameter of the same name. • New boolean attribute called append: optional, false • New string attribute called delimiter: optional
Examples • Shared • <sdd-dd:InstallArtifact type="executable" fileRef="win_bundle" shared="true"> • Append • <sdd-dd:Argument name="FEATURE_LIST" value="THIS_IU_FEATURE" append="true" delimiter=";" />
Open Questions • Can additional files differ in shared artifacts? What if both include substitution instructions? • When appending argument values, how to handle identical values? • What if artifact is shared but no other artifact with same fileRef/resourceRef exists? Error or ignore? • If a shared artifact is selected for a particular deployment but no other artifact with same file/resourceRef, error or ignore? • How to share output values?