
As Jay already said - the code is of that high quality that we are used to get from you :). So I have no concerns about the implementation of your approach. But I have concerns in regard to the approach how this feature is added to the providers. First: its not a (let me say) common CIM way to add a property array to a class and let the client use this array as de-facto command line interface. What you want to do is giving the client a possibility to enhance the providers build in functionality - without rewriting the provider. And this functionality should be configurable by the client. The idea is valid and the implementation is straightforward. But what the client gets is a very powerful access point to - not only the resource managed by this class, but also to - all other resources on the system. So please don't blame me for bringing up security issues, but you do not have under control what kind of scripts will be put into this directory. As you officially need to point clients to this directory to make clear how to use the CheckParamaters property, its well known. But deep in my heard I trust the system admins, that they do not copy some strange scripts in there ;). So I know that this argument can be very fast invalidated. On the other hand, all scripts ... also of different authors, because you can have more than one mgmt. app on one system ... have to make sure, that they can handle input parameters, that might follow absolutely no logic. But ok, this is the responsibility of the client to harden its scripts in that way. So these issues are bound to the implementation approach and something I could live with. What does not mean, that I like this time-bomb. As I said before, the way how this feature is added to the schema is definitely not CIM conform. Its a property misused as command line interface. That's not what a property is - yet by definition of the word itself ;). But I don't only want to vote against this patch set without having a proposal. Normally you start evaluating the necessary functionality and enhance the existing model. This could mean adding methods or properties. But we can not foresee what the client wants to do by its scripts. On the other hand I can imagine that the amount of checks is limited. First by the intention of CheckParameters - which is de-facto a replacement for the methods CheckIsVSMigratable...(). And second by the hypervisor itself. So I suggest to go the CIM way for implementing this functionality. What you want is enhancing CheckIsVSMigratable...() and also the executing methods MigrateVSTo...(), because these methods have to do the check again, as between the client's CheckIsVSMigratable...() result and the MigrateVSTo...() request is enough time, that the result of the check can became invalid in the meantime. I looked a bit through the Migration Profile and found a class that I suggest to use for this functionality. That's the description of this class: "CIM_VirtualSystemMigrationSettingData defines the parameters to control a virtual system migration implementation, as managed by a CIM_VirtualSystemMigrationService. It is expected that a migration implementation will subclass this class to add implementation-specific migration options." An instance of this class is transported to all CheckIsVSMigratable...() and MigrateVSTo...() via the MigrationSettingData parameter. So we stay absolutely conform to the Migration Profile. The Xen and KVM subclasses can check properties, that are well know to cause migration problems. E.g. if the migration depends on the architecture, this class can get a property of maybe TargetArchitecture, which needs to be checked by the provider. Your approach of letting the client parameterize scripts through this class might look like this: [Description("An array containing the scripts to be executed as part of the check, if the migration is possible.")] string ScriptsToExecute[]; [Description("An array containing the parameters given as input to the scripts defined by ScriptsToExecute. Each entry in this array is related to the same array entry in ScriptToExecute. A list of parameters for one script is divided by space characters.")] string ScriptsParameterList[]; What do you - and all the others in this list interested in this feature - think about this ? Thanks ... Heidi -- Regards Heidi Eckhart Software Engineer IBM Linux Technology Center - Open Hypervisor