github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0033.yml (about) 1 doc_meta: | 2 folder: dvars 3 title: local scope merge 4 head: | 5 Demo dvars merge in local scope in execution time 6 7 sections: 8 - title: Merging sequence 9 content: | 10 11 The merging rule follows the same chain from top down in sequence of: 12 13 0. exec profile: env vars setup 14 1. global group vars 15 2. global group dvars 16 3. group vars 17 4. group dvars 18 5. instance vars 19 6. instance dvars 20 7. runtime global vard 21 8. runtime global dvard 22 9. func local vars 23 10. func local dvars 24 11. callee func local vars ... | module stack (1 - 12) 25 12. callee func local dvars ...| module stack (1 - 12) 26 27 - title: Demo 28 log: yes 29 30 notes: 31 goal: 32 - dvars expand in instance level 33 - dvars object can merge in leaf level 34 - dvar in dev will override same name dvar in nonprod level 35 36 expected: 37 - school object in nonprod could append new element and 38 - also override same name element 39 40 result_log: | 41 executing shell commands 42 cmd( 1): 43 echo """1.school -> {{.school}}""" 44 1.school -> address: 45 state: NSW 46 city: sydney 47 suburb: 48 name: sydney 49 postcode: 2000 50 CBD: LOCAL 51 school: Sydney Grammar 52 principal: Mr Right 53 cmd( 2): 54 echo """2.school object CBD -> {{.school_object.address.suburb.CBD}}""" 55 2.school object CBD -> LOCAL 56 cmd( 3): 57 echo """3.school object-> {{.school_object.address.school}}""" 58 3.school object-> Sydney Grammar 59 cmd( 4): 60 echo """4.school object-> {{.school_object.principal}}""" 61 4.school object-> Mr Right 62 63 scopes: 64 - 65 name: global 66 vars: 67 student: 68 name: Tom 69 gender: Male 70 address: 71 suburb: 72 name: sydney 73 postcode: 2000 74 CBD: yes 75 school: Sydney Grammar 76 77 - 78 name: nonprod 79 members: 80 - dev 81 - staging 82 vars: 83 a: non-prod-a 84 b: non-prod-b 85 c: non-prod-c 86 d: non-prod-d 87 dvars: 88 - name: school 89 value: | 90 address: 91 suburb: 92 name: {{.student.address.suburb.name}} 93 postcode: 2000 94 CBD: yes 95 school: {{.student.address.school}} 96 flags: [toObj] 97 98 - 99 name: dev 100 vars: 101 a: dev-a 102 b: dev-b 103 dvars: 104 - name: school 105 value: | 106 address: 107 suburb: 108 name: {{.student.address.suburb.name}} 109 postcode: 2000 110 CBD: no 111 school: {{.student.address.school}} 112 principal: Mr Peter 113 flags: [toObj] 114 115 116 tasks: 117 118 - 119 name: task 120 task: 121 - 122 func: shell 123 vars: 124 a: local-a 125 b: local-b 126 dvars: 127 - name: school 128 value: | 129 address: 130 state: NSW 131 city: sydney 132 suburb: 133 name: {{.student.address.suburb.name}} 134 postcode: 2000 135 CBD: LOCAL 136 school: {{.student.address.school}} 137 principal: Mr Right 138 flags: [toObj] 139 140 do: 141 - echo """1.school -> {{.school}}""" 142 - echo """2.school object CBD -> {{.school_object.address.suburb.CBD}}""" 143 - echo """3.school object-> {{.school_object.address.school}}""" 144 - echo """4.school object-> {{.school_object.principal}}"""