embeded block

This demo shows that block func could be embeded in multiple layers

block could be embeded to be multiple layers

Please notice that the values printed out in different funcs in different layer, they will inherit and override the vars from parent block func level

Demo

source

Main task yaml file
    vars:
      a: global_aaa
      b: global_bbb
      c: global_ccc
    tasks:
    - name: task
      task:
      - func: block
        desc: show example the route goes to call goelse for the condition of not if condition
          succeeds
        vars:
          a: local_aaa
          b: local_bbb
        dvars:
        - name: da
          value: local_da
        - name: db
          value: local_db
        do:
        - func: shell
          do:
          - echo "shell step1"
          - echo "shell step2"
        - func: cmd
          vars:
            a: block_layer1_aaa
          do:
          - name: print
            cmd: |
              layer 1
              up_runtime_task_layer_number: {{.up_runtime_task_layer_number}}
              a: {{.a}}
              b: {{.b}}
              c: {{.c}}
              da: {{.da}}
              db: {{.db}}
        - func: shell
          do:
          - echo "shell step3"
          - echo "shell step4"
        - func: block
          desc: test embeded 2nd layer of block
          vars:
            a: local_block_layer2_aaa
            b: local_block_layer2_bbb
          dvars:
          - name: da
            value: local_da_layer2
          - name: db
            value: local_db_layer2
          do:
          - func: cmd
            vars:
              a: block_layer2_aaa
            do:
            - name: print
              cmd: |
                layer 2
                up_runtime_task_layer_number: {{.up_runtime_task_layer_number}}
                a: {{.a}}
                b: {{.b}}
                c: {{.c}}
                da: {{.da}}
                db: {{.db}}
        - func: shell
          do:
          - echo "shell step5"
          - echo "shell step6"
    
Main log file
    loading [Config]:  ./tests/functests/upconfig.yml
    Main config:
                 Version -> 1.0.0
                  RefDir -> ./tests/functests
                 WorkDir -> cwd
              AbsWorkDir -> /up_project/up
                TaskFile -> c0129
                 Verbose -> vvv
              ModuleName -> self
               ShellType -> /bin/sh
           MaxCallLayers -> 8
                 Timeout -> 3600000
     MaxModuelCallLayers -> 256
               EntryTask -> task
      ModRepoUsernameRef -> 
      ModRepoPasswordRef -> 
    work dir: /up_project/up
    -exec task: task
    loading [Task]:  ./tests/functests/c0129
    module: [self], instance id: [dev], exec profile: []
    profile -  envVars:
    
    (*core.Cache)({
    })
    
    Task1: [task ==> task:  ]
    -Step1: [: show example the route goes to call goelse for the condition of not if condition succeeds ]
    self: final context exec vars:
    
    (*core.Cache)({
      "da": "local_da",
      "a": "local_aaa",
      "b": "local_bbb",
      "c": "global_ccc",
      "up_runtime_task_layer_number": 0,
      "db": "local_db"
    })
    
    -Step1:
    self: final context exec vars:
    
    (*core.Cache)({
      "a": "local_aaa",
      "b": "local_bbb",
      "c": "global_ccc",
      "up_runtime_task_layer_number": 0,
      "db": "local_db",
      "da": "local_da"
    })
    
    cmd( 1):
    echo "shell step1"
    
    -
    shell step1
    
    -
     .. ok
    cmd( 2):
    echo "shell step2"
    
    -
    shell step2
    
    -
     .. ok
    . ok
    -Step2:
    self: final context exec vars:
    
    (*core.Cache)({
      "da": "local_da",
      "a": "block_layer1_aaa",
      "b": "local_bbb",
      "c": "global_ccc",
      "last_result": (*utils.ExecResult)({
        Cmd: "echo \"shell step2\"",
        Code: 0,
        Output: "shell step2",
        ErrMsg: ""
      }),
      "up_runtime_task_layer_number": 0,
      "db": "local_db"
    })
    
    ~SubStep1: [print:  ]
    layer 1
    up_runtime_task_layer_number: 0
    a: block_layer1_aaa
    b: local_bbb
    c: global_ccc
    da: local_da
    db: local_db
    
    -Step3:
    self: final context exec vars:
    
    (*core.Cache)({
      "up_runtime_task_layer_number": 0,
      "db": "local_db",
      "da": "local_da",
      "a": "local_aaa",
      "b": "local_bbb",
      "c": "global_ccc",
      "last_result": (*utils.ExecResult)({
        Cmd: "echo \"shell step2\"",
        Code: 0,
        Output: "shell step2",
        ErrMsg: ""
      })
    })
    
    cmd( 1):
    echo "shell step3"
    
    -
    shell step3
    
    -
     .. ok
    cmd( 2):
    echo "shell step4"
    
    -
    shell step4
    
    -
     .. ok
    . ok
    -Step4: [: test embeded 2nd layer of block ]
    self: final context exec vars:
    
    (*core.Cache)({
      "a": "local_block_layer2_aaa",
      "b": "local_block_layer2_bbb",
      "up_runtime_task_layer_number": 0,
      "da": "local_da_layer2",
      "db": "local_db_layer2",
      "c": "global_ccc",
      "last_result": (*utils.ExecResult)({
        Cmd: "echo \"shell step4\"",
        Code: 0,
        Output: "shell step4",
        ErrMsg: ""
      })
    })
    
    -Step1:
    self: final context exec vars:
    
    (*core.Cache)({
      "db": "local_db_layer2",
      "a": "block_layer2_aaa",
      "b": "local_block_layer2_bbb",
      "c": "global_ccc",
      "up_runtime_task_layer_number": 0,
      "da": "local_da_layer2"
    })
    
    ~SubStep1: [print:  ]
    layer 2
    up_runtime_task_layer_number: 0
    a: block_layer2_aaa
    b: local_block_layer2_bbb
    c: global_ccc
    da: local_da_layer2
    db: local_db_layer2
    
    -Step5:
    self: final context exec vars:
    
    (*core.Cache)({
      "b": "local_bbb",
      "c": "global_ccc",
      "up_runtime_task_layer_number": 0,
      "db": "local_db",
      "da": "local_da",
      "a": "local_aaa"
    })
    
    cmd( 1):
    echo "shell step5"
    
    -
    shell step5
    
    -
     .. ok
    cmd( 2):
    echo "shell step6"
    
    -
    shell step6
    
    -
     .. ok
    . ok
    
Logs with different verbose level
Raw logs with different verbose level