FAQ¶
There are too many files in Murano package, why not to use a single Heat Template?
To install a simple Apache service to a new VM, Heat Template is definitely simpler. But the Apache service is useless without its applications running under it. Thus, a new Heat Template is necessary for every application that you want to run with Apache. In Murano, you can compose a result software to install it on a VM on-the-fly: it is possible to select an application that can run under Apache dynamically. Or you can set a VM where Apache is installed as a parameter. This way, the files in the application package allow to compose compound applications with multiple configuration options. For any single combination you need a separate Heat Template.
The Application section is defined in the UI form. Can I remove it?
No. TheApplication
section is a template for Murano object model which is the instruction that helps you to understand the environment structure that you deploy. While filling the forms that are auto-generated from the UI.yaml file, object model is updated with the values entered by the user. Eventually, the Murano engine receives the resulted object model (.json file) after the environment is sent to the deploy.
The Templates section is defined in the UI form. What’s the purpose?
Sometimes, the user needs to create several instances with the same configuration. A template defined by a variable in theTemplates
section is multiplied by the value of the number of instances that are set by the user. A YAQLrepeat
function is used for this operation.
Some properties have Usage, others do not. What does this affect?
Usage
indicates how a particular property is used. The default value isIn
, so sometimes it is omitted. TheOut
property indicates that it is not set from outside, but is calculated in the class methods and is available for theread
operation from other classes. If you don’t want to initialize in the class constructor, and the property has no default value, you specifyOut
in theUsage
.
Can I use multiple inheritance in my classes?
Yes. You can specify a list of parent classes instead of a single string in the regular YAML notation. The list with one element is also acceptable.
There are FullName and Name properties in the manifest file. What’s the difference between them?
Name
is displayed in the web UI catalog, andFullName
is a system name used by the engine to get the class definition and resolve the class interconnections.
How does Murano know which class is the main one?
There is nomain
class term in the MuranoPL. Everything depends on a particular object model and an instance class representing the instance. Usually, an entry-point class has exactly the same name as the package FullName, and it uses other classes.
What is the difference between $variable and $.variable in the class definitions?
By default,$
represents a current object (similar toself
in Python orthis
in C++/Java/C#), so$.variable
accesses the object field/property. In contrast,$variable
(without a dot) means a local method variable. Note that$
can change its value during execution of some YAQL functions like select, where it means a current value. A more safe form is to use a reserved variable$this
instead of$
.$this.variable
always refers to an object-level value in any context.