You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am modelling an OOP programming language and I want to populate a node with attributes taken from other nodes.
I have a generic node class representing a class of the language. Every class has an attribute id which is assigned only when the class instance is created. The class has also has a property parameters to state the inputs passed to the class constructor and a requirement contractId to specify the dependency between classes
The node_types is:
class:
...
requirements:
contractId: ... -> based on DependsOn relationship
attributes:
id:
type: string -> field populated after the node creation
properties:
parameters:
type: list
The ServiceTemplate looks like the following:
classA:
... # Once the node is created an id value is stored in an attribute id
classB:
...
classC:
requirements:
- contractId: classA
- contractId: classB
What I want to achieve is this translate in code:
A = contract()
B = contract()
C = contract(A.id, B.id)
The solution proposed in ServiceTemplate works fine if I have only one contractId requirement because I am able to retrieve the class id with { get_attribute: [SELF, contractId, id] } but it doesn't work with multiple requirements of the same type.
Am I missing something in the TOSCA specification/xopera implementation or this kind of operation can not be achieved? 😄
The text was updated successfully, but these errors were encountered:
Sorry again, one last thought. This could be easily solved also if a way to merge lists exists. Then the problem can be modeled with a relationship where in the pos_configure_source (once the instance is created) the id is appended to an existing list. What I see (and understand) the current behaviour is that instead of doing an append() the lists are entirely replaced by the new value, am I right?
Ok, thank you. I will look into it next time. As a temporary solution I created a list attribute which is incrementally populated by the playbook attached to the relationships. If anyone needs more information let me know and I will share the solution.
Hi @lterrac, thanks for opening this and nice that you found a temporary solution, for the future versions of opera we will also consider implementing the same behaviour as @lauwers has specified.
Hi everyone,
I am modelling an OOP programming language and I want to populate a node with attributes taken from other nodes.
I have a generic node
class
representing a class of the language. Every class has an attributeid
which is assigned only when the class instance is created. The class has also has a propertyparameters
to state the inputs passed to the class constructor and a requirementcontractId
to specify the dependency between classesThe
node_types
is:The
ServiceTemplate
looks like the following:What I want to achieve is this translate in code:
The solution proposed in
ServiceTemplate
works fine if I have only onecontractId
requirement because I am able to retrieve the class id with{ get_attribute: [SELF, contractId, id] }
but it doesn't work with multiple requirements of the same type.Am I missing something in the TOSCA specification/xopera implementation or this kind of operation can not be achieved? 😄
The text was updated successfully, but these errors were encountered: