Hi Sarah.
Here are my comments on the "New Solaris Install Architecture
Specification". Seems like you aptly summarized the impossible here,
with a good balance of one-size-fits-all generality to suit the engine
combined with enough details to describe it.
General: Driver Update is not mentioned anywhere, but it is ancillary to
getting the system to an installable state. Does it need to be?
Section 1:
second to last bullet: "bootable media formats" instead of "media formats"?
second to last PP: semicolon after "installing a set of packages"
second to last PP: 1st sentence was confusing: Could the first type of
components be described as "... a set of application components that are
used to implement higher-level functionality..."? (I assume that
installing a set of packages is an example here because this
functionality is layered on top of the pkg(5) command itself.)
Section 2:
I would restructure the first PP since "various components provided by
this project" leaves a hole which is filled in later, which made it
confusing to me. I would say something like "The core engine classes
provide functionality needed by an application's specific components
(provided by various subprojects) as well as the common application
classes. Not sure how to integrate the installation flow concept into
this if you want to keep it though.
I've noted next to the three bullets:
- first bullet is "pieces of an installation"
- second bullet is "communication between the pieces"
- third bullet is "external communication from pieces to the outside"
Including this may be useful, to help simplify what is being explained.
Section 2.2:
second bullet: sounds too specific to AI. Leave AI out of it, and just
say "manifest".
retrieve_data(): This methods provides -> This method provides
Below last clump of three bullets: This method -> These methods
Section 2.3:
Anal nit: just above the bullets: A Logger -> A Logger object
Section 3:
Second PP: Why limit yourself: second sentence: "AI and DC currently
utilize XML manifests."
Third PP: clarify what a target is: "Target Discovery provides the
initial system discovery of disks and partitions available as potential
installation targets."
Fourth PP: I don't think common application class needs to be
capitalized anywhere. If you decided to capitalize anyhow, "class" is
inconsistently capitalized.
Section 3.2:
First PP: I would delete the word "logical", as it hasn't been defined
yet. (It is defined in the next PP.)
Second PP: Add "boot environment" to the list of logical objects listed
in the first sentence.
Last PP before 3.2.1: First sentence seems to detailed to me. I think
you are saying that the objects need to be initialized to represent a
certain type of target. This is done with a seed value which is a
DeviceTarget or a LogicalTarget specification.
The last sentence is "See section 3.2" but we're already in section 3.2.
Section 3.2.1:
Second sentence:
"These targets are represented by two class types: those..."
Section 3.2.1.1:
General:
Do we want to assume people know the connection between disks,
partitions and slices?
Disk class: It is unclear what set/get_assoc_parts() and
set/get_assoc_slices() do. Other functions are clearer only because of
my background. Others may not know about them either. Probably a good
idea to have a quick description of what all methods do (though not
necessarily an individual description for each one).
OK... now I see it. May be less confusing to drop the "assoc" and just
call set/get_parts() and set/get_slices().
What is the difference between get_assoc_parts() and get_part_map()?
set_assoc_parts() and set_part_map()?
set_part_map() and create_part_map()?
Slice class:
Does get/set_assoc_part() make more sense than get/set_assoc_parts()?
3.2.1.2:
The listed logical device base classes are out of order from the rest of
the document, and Dataset class is missing.
Zpool
LogicalVolume
BootEnv
Filesystem
Dataset
VMEnv
Zone
LogicalTarget interface methods:
get_assoc_container() PP: last sentence: "This method allows us..."
Zpool class:
PP below set_props: It says "Thus one method to manage these is
sufficient." Yet, there are two methods listed :)
Dataset class:
First PP:
First sentence: get rid of the "s" in datasets.
Third sentence: "interfaces" -> "methods" to be consistent.
VMEnv class:
The content of this PP seems tilted toward xVM. What about Virtual Box?
LDoms?
The VMEnv class has no methods. Is the point of the VMEnv class to
"mark" an environment as a virtual machine environment? Is it an
interface spec which can be combined with other interface specs in this
section (e.g. LogicalVolume that defines a lofi-mounted file enveloping
the VM environment)?
If VMEnv can be combined with other interfaces, it seems unique in this
respect. Other interfaces, even logical ones, define "physical"
attributes (e.g. snapshots of boot environments and zfs datasets).
VMEnv would rely on the "physical" attributes of what it is combined
with to define its location characteristics, and VMEnv would serve only
to mark an environment as a Virtual Machine.
If this is the case, you may want to call this out in the document. If
not, please clarify in the document how it is used.
4.1:
This is a public document, and the link to securewiki is a sun-private link.
4.2.1:
Drawing 4.2:
The sequence diagram appears to have several mismatched or unmatched
parentheses after method names. Some methods have [], some have (],
some have only (.
I don't understand the store_data() arrow going from Target
Instantiation (TI) to Data Collection coming before the
get_data_collection() arrow going from TI to the Execution Engine?
Ditto for Transfer, Instance Configurator. (Looks like Target Discovery
got it right, though.)
Looks like Instance Configurator block got pasted twice.
4.2.2:
Drawing 4.3:
The "P" of "public" is missing or partly missing in many places.
All methods have no closing ).
I'm a newbie at UML. That said, I interpret the rightmost :disk,
:partition and :slice columns to be loop parameters (i.e. :disk means
"loop for each disk found"). If this is incorrect, please let me know
and disregard the following:
I think that when you look at the columns, the partition loop envelopes
the slice loop. (That is, the right most :partition column represents
the looping through all partitions, and following that column down, we
enter the slice loop for that partition.) This seems correct to me.
But the box enveloping the slice loop is outside the box enveloping the
partition loop. Shouldn't the slice loop box be inside the partition
loop box, much like the partition loop box is inside the disk loop box?
4.2.3:
Drawing 4.4:
Is the reason why there is no instantiate() under the :disk loop because
the disk is a physical medium? To me, instantiate() creates an object
representation of something (e.g. an object representing a disk), as
opposed to the thing itself (e.g. the disk). If this is the correct
interpretation, there is a missing instantiate() in the :disk loop.
5.1:
Item 4: It may be that this level of detail is needed, but to say
"reverse any media-specific customizations" sounds very specific (e.g.
undoing what slim-utils does to set up "jack"). Would it be better to
say "customize the installation to the application's requirements"?
Drawing 5.1: I think the XML Manifest shown in the picture represents a
saved file. If this is the case, remove "DOM". DOM pertains to the
representation of the data in memory, not in a file.
5.2:
Nit: extra space between "via" and "a" in first sentence.
Item 1: First sentence: "...Manifest Retrieval, Manifest Parsing and
Target Discovery." (Target Discovery needs to be added.)
Second sentence: Do you mean the manifest name is fetched from a service
property, and the service having that property is specified in the grub
boot properties? If yes, can that be made more clear?
Drawing 5.2: Same comment about "DOM" as for drawing 5.1
5.3:
Item 1: May wish to clarify that the "target" being instantiated here
refers to where the image will be built.
Drawing 5.3: Target discovery not needed in the diagram.
5.4:
Seems target discovery is needed to find where to plop down the boot
image. It is missing from the text. (It is in drawing 5.4 though.)
Thanks,
Jack
On 12/01/09 14:18, Sarah Jelinek wrote:
> Hi Caimaniacs,
>
> I know you have been waiting for this bestseller to hit the shelves! :-).
>
> The Caiman team has been working on an updated architecture and we
> have the architecture document ready for review. The
> opensolaris-caiman project architecture page is located here(formerly
> known as Caiman Unified Design):
>
> http://hub.opensolaris.org/bin/view/Project+caiman/CUD
>
> The Caiman architecture document open for review is located here:
>
> http://hub.opensolaris.org/bin/download/Project+caiman/CUD/caimanarchitecture.pdf
>
>
>
> Please send comments/questions to caiman-discuss by 12/18/09. If you
> need more time please let us know, with the holidays coming up we may
> have to extend the review period.
>
> Thank you for your time.
>
> Regards,
> sarah
> _______________________________________________
> caiman-discuss mailing list
> caiman-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss