OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

tosca message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [tosca] Proposal for requirement "occurrences"


Thanks Calin, that's quite clear.

I just want to clarify what I mean by "runtime: true".

It's true that requirements are functionally fulfilled and relationships are created at "deployment time". I did not intend to dispute that. But they should be able to be fully and determenistically validated at "design time" merely by providing inputs. The goal is to give the deployment a validated, known, well-designed graph. That's the core conceit of declarative approaches to orchestration.

I offered "runtime: true" as a compromise to satisfy Chris. Chris would like to allow some requirements to be fulfillable only at "deployment time", meaning that during "design time" (Day 0) you will not -- and cannot -- see a full graph. At design time you will see an edge going out but no vertex. So the only way to validate designs that use such a feature is to actually deploy them in a real environment (I call it the "runtime environment" as opposed to the "design environment"; that's the source of my "runtime" keyword). I don't like this feature at all, but OK, he insists it is important.

I'm also happy to find another name for it, but I don't think it should be "scope". The issue is not the source of the node representations. The issue is that there is no target node template for the requirement in the design. And there never will be. Even if the requirement is fulfilled, that fulfillment is not shown or named in the design. The node representation graph might be complete, but the TOSCA design graph is not. It's a node without a node template. Unfortunately, Chris is right in calling this feature "dangling". I don't like the word, but it does describe what is happening.

Some other potential names for this keyword:
On Fri, Feb 4, 2022 at 8:46 AM Calin Curescu <calin.curescu@ericsson.com> wrote:

Hi,

Â

We spent a large portion of last year to clarify TOSCA fundamental concepts, such as profile, template, and representation graph.

  • The representation graph keeps the model and the state of the service on which any actions (incl. LCM) are performed.
    • It is formed from nodes (vertices) and relationships (edges).
  • The templates + inputs are just used to create and initialize the representation graph.
  • Requirements and capabilities are used to direct how the relationships in the representation graph are formed.
    • This always happens at deployment time (after all nodes in the representation graph have been created, they will be connected)
  • A target node could be identified (among all the nodes in the representation graph of this service or other services)
    • by the symbolic name specified in the template
      • in this case the target node will be constrained and thus planned at template design time
      • can be chosen only from the template nodes (of which we know the symbolic names)
    • by referring to a certain capability type, Âa certain node type, or by matching a certain node filter
      • in this case the target node will only be known at deployment time
      • this is a very important âlate bindingâ use-case where the model adapts to the template inputs and the environment
      • can be chosen from both the nodes created from this template (local scope) or nodes created by other templates (external scope)
        • this scope is not clearly specified in TOSCA yet, although a global scope was always expected as advertised by the TOSCA compositionality features

Â

So, for me there is no such thing as a âdangling requirementâ, I think of it Âas a âworking termâ used in our discussions to represent sometimes:

  • requirements that are not specifying a fixed, âsymbolic nameâ target
  • requirements that cannot be satisfied by âlocalâ nodes

Â

I also donât think there is a âdesign-timeâ or ârun-timeâ requirement, all of the relationships are established at deployment time.

Â

Different use-cases might need that requirements are satisfied:

  • locally (in the same template)
    • for relationships that must be internal to the service
      • for local completeness
    • note that this does not mean that a node-filter may not be used
  • externally (outside of the template)
    • for relationships that must be external to the service
      • for service compositionality
      • for service de/composition via substitution
  • either local or external, just that they are satisfied

Â

I also donât think there is such thing as a âbrokenâ representation graph. It is either connected or not connected to nodes of other services, and both are relevant as shown above.

Â

I donât think we can replace requirements with node_filters by using the âselectâ mechanism:

  • will not work if I want to use node_filters for requirements on âlocalâ nodes
  • will not work if I want the target to be a capability type and not a node type
  • will not work in substitutions

Â

BR/C



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]