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


This is great Sarah! I learned a lot reading it I find the UML Sequence 
Diagrams especially helpful!

My comments below. Many of which are simply questions.

Joe

- - -



Question/Issue:
---------------

1.5. Booting of the installation environment from a network server.

What does this mean? How is it different from 1.3?

Suggestion:
-----------

Perhaps it would be valuable to list the application names with
the bulleted list on page 2->3

Question/Issue:
---------------

"An interactive installation application with a text user interface,
  targeted primarily at server systems"

I thought we wanted to use IPS for text installer because canned
bits which could be CPIOed off the media didn't address server
system user requirements.

Do we need to communicate TI will be CPIO based?


Question/Issue:
---------------

"An automated installation application that installs a system without user
  intervention using a pre-configured or computed configuration"

"A tool to generate a replication image of an installed system"

What do these referring to, VMC or R&R ?

Question:
---------

p.3

Core ENgine Classes

Do we need a IPC Core Engine Class? Or will the data store act as an
IPC? I don't currently know of a need for a CoreEngine IPC but I can
imagine it might turn out to be valuable.

Question/Issue:
---------------

2.1 Execution

Would it make sense to add "Registration / Configure to the bullet
list top of p. 4?


Question/Issue:
---------------

p.4

- Report progress to the installation application during execution
   of the installation sequence
- Manage logging of the installation sequence

Should these be under secton 2.3 instead of 2.1

Question/Issue:
---------------

p.4

- add_logger(): configures a logger to be used during execution

Should we add "change log levels"

I could see this being valuable for diaging failures.

e.g.
CheckPoint failed.

We could change log level and restart at CP 5

Question/Issue:
---------------

- add_logger(): configures a logger to be used during execution

Should this be under secton 2.3 instead of 2.1


Suggestion:
---------------

p.5

2.2 Data Collection

I found this confusing:

-  Provide stable, extensible management, storage,

I had to read that sentance a couple of times before the meaning was
clear. Maybe it's just me. ;)

I thing removing "extensible management," might make it read better.
-  Provide stable, extensible management, storage,


Question/Issue:
---------------

p.5

- Provide the ability to translate global installation data into a
   valid Automated Installer (AI) Manifest.

What does this mean? From where ? Does it mean from an already
installed system for replication?

Question/Issue:
---------------

p.5

All Common Application objects, as well as New Solaris Installer
applications will have read-write


I think it may be valuable to provide a means to limit write access...
Just thinking it could come in handy for future applications.

Question/Issue:
---------------

p. 6

- to_xml()

Through out the document XML is mentioned. Isn't that an implementation
detail that could change? Pehaps XML may be replaced by something else
in the future.

Would

- to_store() or something be more generic and valuable?

Also would a from_xml() provide pulling from xml to a variable?

Question/Issue:
---------------

p.6

2.3 Logging and Error Reporting

Should this be: "Logging, Error Reporting and Progress reporting" ?

Question/Issue:
---------------

p.6

2.3 Logging and Error Reporting

open(), log_message(), close()

I think better names might make the code more readable by indicating
these are logger APIs.

e.g.

log_open(), log_message(), log_close()

Question/Issue:
---------------

How will logging be made available to external components? For example
VMC could benefit from logging being made available from the bootable
AI running in a Virtual Box Client to VMC running on the VBox host.

Suggestion:
-----------

I think a checkpoint should implement it's own clean up. Each checkpoint
should know what and how to cleanup after itself.

I think the Execution Classes method: cleanup_checkpoints() should invoke
the checkpoints cleanup entry point.

Maybe the Execution Class could contain a register_cleanup_checkpoint()
method.

Question/Issue:
---------------

Should this be changed from:

To enable extensibility and ease of translation of data to a common
data storage format, the "data" classes defined in Section 3 must
provide the following method:

To:

To enable extensibility and ease of translation of data to a common
data storage format, the "application" classes defined in Section 3
must provide the following method:

Question/Issue:
---------------

p.7

3.1 Manifest Parser

parse()

would an import() or store() also be neede are is this functionality
part of what parse() will do? Is there any reason it might  be valuable
to make this 2 steps: validate and import?

Question/Issue:
---------------

p.7

3.1 Manifest Parser

The requirement defined for this component is:
- Must provide syntactic validation of user-provided manifests

Should the requirement also include the following?

- Storing the manifest data in storage cache utilizing the Data
Collection Class.

Question/Issue:
---------------

p.8

3.2 Target Discovery

The bullet item list contains both:

- Partitions, both FAT and GPT
- Slices

and again on p.9

- Partition
- Slice

What's the difference between a partition and a slice?

Question:
---------

p.8

- Virtual Machines hosted by a Solaris xVM Dom0

What's this?


Question/Issue:
---------------

p.9

to_xml()

Again I think to_store(), or the like, might be better than "xml"
which is an implementation that could change.

Question/Issue:
---------------

p.9

DiskClass

Chould a get_dev_path() be valuable? e.g. something would which would
return /dev/dsk/xyx be valuable?


Question/Issue:
---------------

p.11

ZpoolClass

Do we need to support more of what zpool(1m) provides?
e.g. create, iostat, remove, status

Question:
---------

p.12

LogicalVolume Class

-  set_size()

Won't we need to get logical volume info/data ?

Question/Issue:
---------------

p.13

Dataset Class

Do we need to support more of what zfs(1m) provides?

Question/Issue:
---------------

p.13

Zone Class

Do we need to support more of what zoneadm(1m) provides?

Question/Issue:
---------------

p.14

3.4 Transfer

-  SVR4 packages

Why SVR4?

Should we account for support of virtual import of VMC output?

Question:
---------

p.15

-  data archive

What's data archive for?

Question/Issue:
---------------

p.16

Shouldn't the ManifestParse have lines directly down to the components,
e.g. Transfer, TD & TI?

Or is Checkpointing going to providing the data from the manifest?


Question:
---------

p.16

What is the flow of data collection? Is it only through the
ExecutionEngine?

Comment:
--------

P.18->23

These diagrams are great! Very helpful.

+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=
+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=
Below are comments I have from an older version of the document:
+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=
+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=

3.2.5 Assumptions
-----------------

-  We will not have one monolithic library that provides a single consumer
    interface.

        - Not having one monolithic library is a good idea

           - I think we should strive to have a common API standard accross
        Caiman engine components.


- Consumers must maintain the state of their specific application data.

        - I think the consumer should maintain state but do so by using
        a common engine interface. We should supply a state holding module.

- We will utilize the existing DC finalizer engine technology as a starting
    point for the installation driver engine. It will be re-designed to
    accommodate a wider consumer audience.

        - I think leveraging the Finalizer engine is a good idea, however
        fundamental changes would be needed.
        e.g.
                - Passing run time gathered arguments to finalizer scripts
                - Being able to invoke finalizer scripts from different modules.

- Changing out the liborchestrator code completely will happen over time.

        - I think supporting a phased in approach of the replacement of the
        libraries with the new modular components may present excessive
        overhead. I think it would be benificial if the new engine framework
        were mostly in place. Then once we have the engine foundation we could
        migrate the addoptoin of the new engine. Leaving some on the old model
        as we work the migration schedule.

3.3.2 Test Environments
-----------------------

        - A well defined API to modular components will facilitate
        easier testing. I think testing of all of the different installers
        in all of the supported environments may not be as necessary if
        the supporting common modular components can be effectively
        exercised in each test environment.

4. Functional Description
-------------------------

- The description of using callbacks in section 4. Functional 
Description may not be accurate as that approach would be associated 
with a functional "C" solution. If we were to consider an OOD approach 
"callbacks" may not be correct.

- What's the "Data collection object"? Is it logging?

- I understand that the new Caiman Engine needs to provide the 
functionality of what is currently in libO however I think we should 
design what is required independent of libO and how libO is implemented 
today.

- We should design a consistent method of managing and passing consumer 
data between the engine modules. The parser/validation module describes 
some of how this will be done for user data from XML. I think we should 
consider having a user data gathering engine module that is independent 
of were the data comes from XML or GUI. Some data will also need to be 
gathered and acted on between engine modules. e.g. Target discover finds 
devices, the user selects which to install to, then target instanc. 
works on that device... A single common module should be used to manage 
gathering and passing this data. This will contribute to extensibility.

OK I see: This is the Data Collection Object

5.1 Consumers.
--------------

I see DC and perhaps R&R the same as LiveCD, TextI, AIC and VMC.

boomvang >



Reply via email to