Hi Sarah,

I have a few pennies to throw into the thought pool - see below.

Sarah Jelinek wrote:
> Hi Frank,
>
> Sorry for the delay in responding, I wanted to understand how we 
> currently serve manifests based on criteria today so I was looking 
> around in the code. My answers below...
>>
>> Sarah Jelinek wrote:
>>> Hi Sue,
>>>
>>> My comments/questions on the notes posted. I tried not to repeat the 
>>> comments already given. If I have, point me to the answers you may 
>>> have already given.
>>>
>>>
>>> Scenario 5:
>>>> How do they indicate that this service isn't global?
>>>> Global service should always have standard name. If name is passed 
>>>> as parameter
>>>> to create-service command, new service not set as global.
>>>>   
>>> Isn't the specification of the global service really about the dhcp 
>>> setup, not the service name? So, why would we enforce a naming 
>>> scheme on the global service? Maybe we have an option that indicates 
>>> 'global' so that the name isn't the indicator. We have indicated 
>>> that we will detect collisions when a user tries to setup multiple 
>>> global services by looking at the dhcp server, right? I am not sure 
>>> we need to enforce a naming convention if we can detect collisions 
>>> this way.
>>>
>>>
>>> In this specific scenario the global service is on the 'corporate' 
>>> subnet with the local dhcp server containing a global entry pointing 
>>> to the ai server on different subnet. So, this dhcp entry is the 
>>> indicator of the global service, right?
>> Correct. In a situation where a WAN-based AI server supports a 
>> network with multiple DHCP servers, there really is no global service 
>> in the AI server administrator's view, so a naming convention is 
>> inappropriate. I'm revising the user model.
>
> Ok, thanks.
>
>>>
>>> Also:
>>>
>>>> all non-global services require manifest at creation time.
>>>
>>> So, do global services require a manifest at creation time? Why 
>>> would we have different requirements for global and non-global 
>>> services with regard to manifests?
>> All services require a manifest at creation time. If the user doesn't 
>> specify a manifest, the standard manifest would be used.
>
> Ok, but as Sue pointed out we can remove the standard manifest from 
> the service later? So, that the service doesn't always return a manifest?
>
>>>
>>> A few general questions:
>>>
>>>
>>> 5. In item 5.3 in the summary, you indicate that LIFO is the 
>>> ordering. I know Dave commented on this but my comment is different. 
>>> The ordering of manifests served to the client should be based on 
>>> criteria, right? What I am saying is that manifests should be 
>>> ordered by criteria specified. The hierarchy of the manifests in a 
>>> service is dependent on the criteria. If a user tries to add a 
>>> manifest that has the same, exact criteria as another manifest that 
>>> is already stored, then they need to know we will overwrite the 
>>> existing one, or something like that.
>>>
>>> My point is that manual ordering isn't required. The criteria and 
>>> increasing specificity of the criteria settings means the client(s) 
>>> will get the most specific manifest they should get.
>> I disagree. Given two manifests, one with the criteria "disk greater 
>> than 30GB" and one with the criteria "RAM greater than 5GB", which 
>> manifest would be selected for a client that has a 40GB disk and 8 GB 
>> of RAM? Given many manifests, each with its own potentially complex 
>> set of criteria, a user would not be able to consistently predict 
>> which manifest would be selected. I believe that a simple ordering of 
>> manifests and "first match" approach is much more predictable and 
>> manageable.
>>
>
> In the example you give above, the disk size isn't criteria, it is AI 
> manifest specification for target selection. However, I can see where 
> we might get some ordering issues if multiple criteria were specified 
> that matched a client. Right now that could be a combination of memory 
> size and address range criteria(based on current implementation).
>
> It looks like, in looking at the current AI webserver code, that we 
> don't allow multiple manifests to be published that have overlapping 
> or the same criteria. Overlapping ranges for the currently supported 
> range criteria, is the current 'overlap' check we do. We also publish 
> manifests with the criteria specified and fill in NULL values for 
> those that are not specified for a particular manifest. During AI 
> processing on the client side, it asks the server for the list of 
> criteria the server is interested in from that client. The server 
> provides a list of criteria used(actually non NULL values) for that 
> service to the client. These non-NULL criteria could have been 
> published with independent AI manifests. If the client returned 
> criteria values that matched both of the published manifests, it seems 
> like we would get the 'default' manifest returned to the AI client,  
> since the manifests published were published with separate criteria. 
> That is a match on the 'AND' of the criteria requested from the server 
> would not match. (I believe this is the way the code currently works).
>
> For the legacy jumpstart code we use the rules file, and the user must 
> set the rules in an order that works for them. The first rule found 
> that matches is used for a client. So, in general, users create more 
> specific 'rules' first in the rules file, and then they get more 
> general from there. Jumpstart 'rules' are analogous to criteria in AI.
>
> What I think we need to consider with regard to order of manifests 
> returned to a client is the criteria specified. We currently limit the 
> ability of a user to specify any of the criteria fields with the same 
> values for multiple manifests we publish to a service. So, if I wanted 
> a manifest that served a mac address range and then another one to 
> serve that same mac address range and with a memory criteria 
> requirement, I cannot do that. If we allowed this 'nesting' of 
> criteria, that would help us ensure the correct ordering. The most 
> specific criteria would always be chosen.
>
> I think that enforcing a numbering system isn't the way we want to 
> look at solving the issues we currently have. The criteria is 
> intended, in my mind, to allow users to specify which manifest is 
> chosen for a specific client. Much like the legacy jumpstart rules 
> file. I should be able to as a user publish multiple manifests for a 
> service, each one with more specific criteria, which might include a 
> piece of the criteria that was used for publishing a prior manifest. 
> Essentially, there would be a hierarchy of criteria with associated 
> manifests for searching. The ordering is then set by the user based on 
> how they publish manifests and the corresponding criteria. We still 
> could have the issue of disparate criteria that the client matches on 
> and it seems to me we would use the first criteria matched in the DB, 
> which would have been the first one published. So, an ordering is 
> provided by the order of publication.
>
> Does this make sense?
That makes sense. I just spent a good 10 minutes coming up with a 
counterpoint, before I fully understood your point about the nesting. 
Explicitly setting the ordering means a user could inadvertently set the 
broad-case scenario before the narrow-case scenario. In the example 
above, if the address range criteria were explicitly set first, then the 
address range + memory criteria would never get hit.

As a secondary note, I don't think the order of publishing should have 
an effect on the order in which disparate manifests are considered. That 
type of user interface requires un-publishing and re-publishing if the 
user ever wants to change the ordering, which doesn't sound particularly 
"compelling" to me.

-Keith
>
> thanks,
> sarah
>
> _______________________________________________
> caiman-discuss mailing list
> caiman-discuss at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to