[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: InstantiationLevel discussion paper
Hi Arturo, Thanks for putting this together. We’ll use it as the basis for further discussion.
Comments in-line: From: Arturo Martin De Nicolas [mailto:arturo.martin-de-nicolas@ericsson.com]
Hello all, As already discussed, there is no clear equivalent to the NFV instantiation level in the TOSCA Simple Profile in YAML (i.e. a property that indicates how many instances of each node template should be instantiated
at deployment of the service template). I think this is a candidate feature for 1.3. Yes, there is currently no language support for allowing the same node template to be instantiated multiple times. Your proposal circumvents this by making it the responsibility of the “create” operation to create
multiple instances (based on the instantiation level data structure). While this will work, it means that the orchestrator (and any ongoing operational management systems) has no knowledge of the individual instances.
I fully support your suggestion that we should address this in Version 1.3. You have previously proposed to support the ‘occurrences’ keyname in node templates. This is likely the correct starting point, but
we need to think through the implications on the rest of the topology template. Specifically:
·
If node template A supports multiple occurrences, and node template B supports multiple occurrences, and we have a relationship between A and B, what is the desired cardinality of the relationship between
A and B? Full mesh from all instances of A to all instances of B? Single relationship between one instance of A and one instance of B? What if A and B don’t have the same number of occurrences? We need to document the various use cases and then decide which
grammar is required to create those use cases.
·
If node template A supports multiple occurrences, and some of A’s properties are initialized using get_input statements, how do we specify that a list of values must be provided for each named input?
How do we specify which value in that list goes to which instance of A?
·
If node template A supports multiple occurrences, and node template B uses a { get_property, [A, <property_of_A> ] }, then which specific instance of A will be used in the corresponding property value
of B?
·
If node template A supports multiple occurrences, and node template A is “realized” through substitution mapping, do we need any extensions to the substitution _mapping grammar to accommodate this? I’m sure there are other potential issues, but we can start with these. I have uploaded a discussion paper related to this issue. The intention of the paper is not to propose a solution for 1.3, but something that ETSI NFV could use in the meantime, using the mechanisms available in
YAML 1.1 or 1.2. One of the concerns you point out is that, independent of multiple occurrences, the get_property syntax can get cumbersome when complex data types are used. I’m not sure that this is necessarily a problem, but
I agree that we need to do a better job of clarifying what the appropriate syntax is for various scenarios that involve list, map, or complex data. Specifically:
·
For properties of type list, how do we specify the index of a specific entry in the list?
·
For properties of type map, how do we specify the entry that corresponds to a specific key value
·
For multiple instances of a requirement, how do we specify the index of a specific requirement instance in the list
·
It is currently not possible to use get_property to retrieve property values of relationships As the instantiationLevel is a complex type and there is a need to pass information from one node template to another, the grammar becomes unclear. I am looking for advice if this may be a base for a solution. The mechanism for passing information from one node template to another is through the ‘substitution_mapping’ grammar. I agree, that this grammar can get confusing, since in the v1.2 spec we’re overloading this
grammar for two completely different purposes:
1.
Mapping: specify how properties, attributes, capabilities, requirements, and interfaces from one node template are mapped to corresponding entities in a substituting
service template.
2.
Matching: when the orchestrator finds multiple service templates that can be used to substitute a node template, how does the orchestrator select the best match? The examples in Chapter 14 do not properly highlight these two purposes. I strongly believe we need to more clearly separate them. In my opinion, substitution mapping grammar should be used exclusively to specify
the intended mappings. Different grammar should then be used to drive matching. Since we use node filters in other parts of the spec for similar purposes, I suggest we investigate the use of node filters to guide matching decisions when multiple possible substituting
template are found. Claude and Matt, is it possible to add this discussion to the agenda for tomorrow’s meeting? TOSCA_InstantiationLevel_Discussion.docx Best regards, Arturo Chris |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]