Forum: CFEngine Help
Subject: Var in var : limitation ?
Author: loopx
Link to topic: https://cfengine.com/forum/read.php?3,26678,26678#msg-26678

Hello, 


I've got a little issue with var. First, I made this kind of var :

       vars:
                servers_management::
                        "service" string => "management";

                        "repositories_$(service)"
                                slist => {
                                        "$(path_repository_default)/cfengine3"
                                };


       # Only for DEBUG
       reports:
                subversion::
                        "Defined repositories = '$(repositories_$(service))'";


This was working fine. But, because I have 1 configuration file per application 
(cfengine, samba, subversion, ...) and not by server, I wanted to move the 
"service" var to my "global.cf" configuration file.

So, I added this in global :

                servers_management::
                        "service_detected" string => "management";


And updated the code like this :

        vars:
                servers_management::
                        "repositories_$(g.service_detected)"
                                slist => {
                                        "$(path_repository_default)/cfengine3"
                                };

        # Only for DEBUG
        reports:
                subversion::
                        "Defined repositories = 
'$(repositories_$(g.service_detected))'";
                        "Defined repositories = '$(repositories_management)'";

The first report is not working, but the second is working fine. 
The var is well filled with correct value and so, the problem is not at the var 
initialization but in var utilization ...

Why ? It seems that after the update, the evaluation of "global" var will ... 
broke something for the main var : "repositories_*". I don't understand why ... 
Is that normal ? A limitation or a bug ???

This only happen because of the moved "service" var to global ... looks strange.


Another little test, were are added old var "service" :

        vars:
                servers_management::
                        "service" string => "management";

        reports:
                subversion::
                        "Defined repositories = 
'$(repositories_$(g.service_detected))'";
                        "Defined repositories = '$(repositories_management)'";
                        "Defined repositories = '$(repositories_$(service))'";



Result :

R: Defined repositories = '$(repositories_management)'
R: Defined repositories = '/mnt/data1/subversion/cfengine3'
R: Defined repositories = '/mnt/data1/subversion/cfengine3'



Isn't strange ?

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to