Hi Jean,

So, let's take the case of DC explicitly since you use it in the example below. It happens to be today that the targets that are created are hardcoded in the DC client, not in the user specified manifest. This doesn't really matter.. my point is that DC knows that it needs to create multiple targets to do its processing. T1, T2, T3... initial dataset for build area, pkg image dataset, and bootroot. The point is that these three values can and should be stored as individual values in the DOC, and with unique names.
I don't foresee the application having to read data after every checkpoint.

The problem is that only the application really knows what it wants to have done. Most of the checkpoint node data is known immediately. Seems like the concern is really the target because in some cases we don't know the target until the user selects it after a discovery. In the cases we know it in advance this become a non-issue. In the case where user selection occurs we're pausing anyway. After this pause for user input, we could update
the checkpoint nodes and then execute.

I get that there are times we don't have checkpoint data up front. That we require user input to provide this to us. But, the checkpoint gets registered but isn't instantiated until we are ready to execute it right? So, not having the data up front in this case, but having it stored in the DOC as a result of execution is fine. We pause anyway, waiting for user input, and the engine knows this. TI isn't executed until the appropriate data is provided.
If we hardcode the checkpoints to always grab data from a predefined place for something like target my concern is that we are making assumptions. Take DC as an example, there are 2 targets to be instantiated and transferred

Sure, there are 3 targets created by DC today. However, these are all based on the initial user input for the build dataset. DC knows this and can do the right thing. It seems to me that a TI checkpoint must be able to handle multiple types of targets, and that it instantiates the sub-class TI that knows how to say create the bootroot area.

I am a little confused about the need to store things such as DIRS to create as special in the DOC. These are simply data objects, as defined in the architecture, and must be stored in that way in the DOC. So, what DC would do is, after the initial storage of the user specified build location from Manifest Parser, it would then create the other targets, ZFS dataset, which is a child of the build area dataset, and the boot root, again a child of the parent, build, dataste, as the appropriate objects and store them in the DOC in the appropriate place(under the correct parent) in the DOC.

Target instantiation then reads the target info from the DOC, and this drives it operations. The parent/child relationship built in the DOC drives the ordering of the targets created. So, we have multiple types of targets to be instantiated, but the layout in the DOC drives that.

I don't see a need to store this type of data separately. There are certainly some things that we must store that are not defined as a target object, such as the altroot, but those are managed and are published via a keyword, which Transfer uses later, and which is stored in the DOC by TI. But in general the model is that we store the data objects based on the model defined as objects and the checkpoints read and write this data as required. As do the clients.

Am I missing something here?

sarah
****
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to