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] [OASIS Issue Tracker] (TOSCA-253) capability instead of property in Compute


Hi Chris, sorry for the long mail.
My concern is to assign the correct meaning to a ruleset.
In my understanding the capability is an important piece of semantic it represent "something" that the node is able to do much like " the output of a node" when you see the node as a black box from the outside.
So when there is a node that has a requirement you can look to the list of nodes available and find one that suit you.
That is all that the "word" capability suggests to the mind of the reader "If you have a capability, it means you have the power to do something".
How a node is done within the black box is described by the property that should be interpreted as " quality or trait belonging and especially peculiar to an individual or thing" so "how this node is done?"
It is obvious that being done in a specific way make you capable to satisfy some requirement.
The relation is in any case clear: before you have a quality than you express the cabability to satisfy something it cannot be the other way round.
Said that on the boring semantic topic since we are defining rules these should be "in synch" with the common interpretation of semantic.
 
On the things you pointed out:
1) capabilities (at least in the XML syntax) have a complex structure where you can express a set of constraints etc. the only thing that concern me is to what avails all this grammar is created?
The question that I pose is "where and who is going to read the capabilities?".
In my interpretation not the orchestrator (at least not in a simple impementation of it) since there are the relations between the nodes that the orchestrator put faith into and I, as an orchestrator, will not recheck what the template and relations tell me: I give for granted that if you linked two nodes together you have verified the capability's requirement match.
In  more complex orchestrator where I go beyond the single TOSCA file, but maybe I'm managing a set of TOSCA files and I want to place together different services or switch something on the fly or dynamically adjust some components since I need to scale stuff, I need to look at capability and requirements to know that node A required something and that was provided by node B that asserted to have the needed capability since it HAD some properties, now I scaled the node so I changed the attributes and/or properties this could mean that the provided capability could not match the requirement ... but are we sure that this is not just an overkill?
The TOSCA file is done by someone that SHOULD have written it to be "good to do the job", so if I stated that, in that topology, the node B can scale, all its configurations should be good for node A.
It seems a bit an overkill in modeling thinking that we want to model that has the "AI" to adjust requirements based on change in capabilities.
This especially when the example we have just install "apache" + "wordpress" without remembering that apache does not come with PHP and we are missing the PHP module.
So there is an over-complication in some aspects and an over-semplification on others.
 
2)

I have to read the YAML better BUT I really hope that the target of a relationship IS the node and not the capability; relationship is between nodes the fact that you CAN establish the relationship is that node A capability FIT the node B requirement.

The graph is done with nodes and relationships that represents nodes and edges of the graph.

I see now looking at the examples that the document of the YAML states some thing in the writing but than express something else in the examples:

"The relationship templates listed as part of the relationship_templates block can be mapped to the list of RelationshipTemplate definitions provided as part of TopologyTemplate of a ServiceTemplate as described by the TOSCA v1.0 specification" (lines 1427) of the YAML doc BUT the relationship in example ad lines 2299 and following is completely far from the relationship original definition there is no source and target of the relation and the relation in the node is expressed in the requirement.

Again I see that the YAML standard is simplifying the model by overloading in a section that should just describe a requirement also the "edge" of the relation.

So the orchestrator has to read all the nodes and ... than it should read the edges and than find the root node and starting traversing the graph now instead it reads the nodes and than inside the requirement it find the pointer to the sibling so needs to build the edges from the nodes traversing them in a no specificed order.

Also in the requirement it finds a "NAME OF A SPECIFIC NODE" not a description of a generic node so now go figure the generic .... you also get a relation_type but there are data spread in lots of places something is in the relationship_template.

(sorry I know I can sound pissed of but I have really difficulty in understanding it ... as far as I can tell you the YAML document is much more complicated to understand than the XML ... the notation is easier to read but the grammar is counterintuitive, simplifying the model took its toll somewhere)

 

3)

By god sake no!!! ... please ... :D

the question is are we going to represent a graph or not? The orchestrator needs it (at least I cannot figure out a different way at the moment but I'm open to explanations).

Obvioulsy you can have nested graph ... but I was understanding we were going for a simple profile.

 

4)

Obvioulsy yes.

Nodes are part of the service cannot be managed independently (that is why we have relations, or should have them) and that is why in the XML standard "plans" were in the service_template node at the same level of the topology template.

In the topology_template you describe the expected configuration in the "plan" you describe how to execute it.  In this I'm asking why the YAML went on a very different path from the XML specification there should be surely a proper answer for a so big change in the standard.

 

I also really could need the rationales behind some changes in the semantic of the XML ... not that I'm an XML fan, but that is for the world the published standard and some changes could require a better explanation.

 

On a thing I will not agree on a rule set is not possible to consider a semantinc structure much like another is like to say that the "rook" is much like the "bishop" since they can move lots of places on the board. If in the game you define different pieces there has to be a reason and is not correct to overload with different meaning "just because is easier".

 

I believe that TOSCA standard aims to describe a VERY complex thing ... how to deploy applications in the cloud describing all the needed stuff that could be "a lot": in my "simple" example I have lots of nodes and properties because, as we all know, enterprise applications need more that the things we can map on examples (for brevity); with TOSCA we do not want to install the example at line 160 of the YAML document since is not useful and failry incomplete.

In that example we are hiding a lot into scripts; lot of things that could be other nodes in the TOSCA file.

For this reason we need a VERY strict rule set where each section has a proper meaning.

 

My opinion is that capability and property are distinct sections, but I understand that this is not the actual vision of the TC and changing this could be a problem so my advice is remove the property as it could be the lesser harm.

 

Luca

 

 >  _________________________________________________________________________

 >  

 >  

Il 27 giugno 2015 alle 4.51 Chris Lauwers <lauwers@ubicity.com> ha scritto:

 >  

 >  

Hi Luca,
 
When I first started working with Tosca, I had exactly the same question you posed: how do we decide when to model something as a property of a node and when to model something as a capability of a node? It seemed there weren't any clear guidelines for distinguishing between the to. Based on that, it seemed logical to propose eliminating one or the other.
 
After working with Tosca more, I'm developing a slightly different perspective. Rather than debating how capabilities are different from properties, I think it might be more useful to think about capabilities as more similar to node templates instead. As Derek pointed out, you can use capabilities to model "re-usable semantics" very much the way node templates do. Unlike node templates, however, capabilities don't stand alone; instead, they are used to model "sub-components" of other node templates. As a result, they also don't have an independent lifecycle but their lifecycle is managed instead as part of the "containing" node template's lifecycle.
 
So, rather than debating whether to eliminate properties in favor of capabilities, I would rather see a discussion about better alignment of capabilities and node templates:
 
  • would it make sense to allow "capabilities" to have "requirements", the same way node templates do?
  • Should the target of a relationship be a node rather than a capability?
  • Should we allow node templates to contain other node templates (similar to the way node templates current contain capabilities)?
  • Should we support node templates whose lifecycle is not managed independently but rather as part of a "containing" entity?
 
I believe this would make for a more productive discussion than debating whether to harmonize capabilities and properties.
 
Chris
 
 
 
 
-----Original Message-----

 >   From: tosca@lists.oasis-open.org [mailto:tosca@lists.oasis-open.org] On Behalf Of OASIS Issues Tracker

 >   Sent: Thursday, June 25, 2015 10:58 AM

 >   To: tosca@lists.oasis-open.org

 >   Subject: [tosca] [OASIS Issue Tracker] (TOSCA-253) capability instead of property in Compute

 
 
 
Luca Gioppo commented on TOSCA-253:
-----------------------------------
 
I think that defining a standard means defining strict rules for placing data so that all implementors can understand without any doubts what has to be written where.
This is what enable interoperability.
If we define two places that can be used intechangebly we are not writing a proper rule.
The fact that a capability is resusable semantics is not helping the overall semantic of the standard.
We could have reusable properties and that could be even more useful.
I understand that it has been used this way for long so changing could be a problem but a clarification on the "meaning" of all the section is required since at the moment they are not so clear and hte definition written in the document is not totally in line with the examples.
Maybe it could be easier to get rid of the property section that at the moment is redundant.
The sure thing is that as implementor I need to know what each section is for and when I need to set "how many CPU my Compute node have to have" where do I HAVE to write it? it cannot be something left on the decision of the implementor or some description files will not run on different orchestrator implementation.
In my case (for example) I interpret from the standard that to set the number of CPU I have to look at the property section and respect that writing and in installation phase I totally ignore the capability since for the sake of installation I do not care to check if requirement from node A towards node B is respected because either I have a beginning process that check the validity of the servicefile and pinpoint inconsistency or I'm sure that all the info are correct and requirement vs capabilities are respected so all I need is in the property section.
Conceptually at installation time capability is useless could be used just as a runtime exposure of value for run time relationship validation (does that node fit my requirements ... and again I would point the capability to attributes in that case).
 
Than there coudl be a lasting misinterpretation of the specification but this means that we can change the specification to get rid of properties since they are redundant and say that capability inherit all the burden, that is perfectly fine with me, but a change in the doc is needed (let alone the synch with the XML)
 
> capability instead of property in Compute
> -----------------------------------------
>
>                 Key: TOSCA-253
>                 URL: https://issues.oasis-open.org/browse/TOSCA-253
>             Project: OASIS Topology and Orchestration Specification for Cloud Applications (TOSCA) TC
>          Issue Type: Bug
>          Components: Profile-YAML
>    Affects Versions: CSD03
>            Reporter: Luca Gioppo
>            Priority: Critical
>              Labels: misinterpretation
>
> In example H.1.2.4, but in general in all the specification the
> Compute node has not properties and the properties inside the
> Capability definition are used, but this does not respect the
> spcification where the "expected state is written in the property
> section" the Capability just state that that node offer the capability
> of being a host and having a OS but should not used in place of
> "state" declaration
 
 
 
--
This message was sent by Atlassian JIRA
(v6.2.2#6258)
 
---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that generates this mail.  Follow this link to all your TCs in OASIS at:
 
 

 >   



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