github.com/upcmd/up@v0.8.1-0.20230108151705-ad8b797bf04f/tests/functests/c0008.yml (about) 1 doc_meta: | 2 folder: scope 3 title: vars intro 4 head: | 5 Scope is concept of named context encapsulation. For example, for a software development, you will probably have development env, namely dev; system test env, namely st; staging env etc, all group to a non-prod group. Then prod env and disaster recovery env, grouped into prod group 6 7 Also you could have a global defined scope for common vars for all groups to inherit their vars to be the default from if not defined in that scope 8 9 So put it in simple example, if you have nonprod and prod group defined, then your runtime instance id (eg dev) belonging to a nonprod id will automatically inherit all vars definition from top to down, from vars defintion in global group, to nonprod group, then dev, then global runtime, during func execution runtime, they will merge with the local vars 10 11 sections: 12 - title: How to run 13 content: | 14 run shell command: up ngo task -d ./tests/functests -t c0008.yml -i dev -v vvv --configdir=./tests/functests 15 16 - title: Instance id 17 content: | 18 An execution of UP cli cmd can take an instance id for execution, in this demo, it is dev as example, if you do not use any instance id, by default, your execution will inherit from global group, then global runtime, then local vars 19 20 - title: Demo 21 log: yes 22 23 - title: Demo result 24 content: | 25 This demo will have an expected result of 26 ``` 27 overall final exec vars: 28 29 (*core.Cache)({ 30 "a": "dev-a", 31 "b": "non-prod-b", 32 "c": "dev-c", 33 "d": "global-d" 34 }) 35 ``` 36 37 notes: 38 goal: 39 - to test out vars in scope 40 - vars should be merged in its own scope 41 - scope 1/2/3/4 are only for solution references in spike 42 - plain string value for this case 43 44 scopes4: 45 - 46 name: global 47 vars: 48 a: global-a 49 b: global-b 50 c: global-c 51 d: global-d 52 53 - 54 name: nonprod 55 vars: 56 a: non-prod-a 57 b: non-prod-b 58 c: non-prod-c 59 60 - 61 name: prod 62 vars: 63 a: prod-group-a 64 c: prod-group-c 65 66 - 67 name: staging 68 group: nonprod 69 vars: 70 a: staging-a 71 b: staging-b 72 73 - name: dev 74 group: nonprod 75 vars: 76 a: dev-a 77 c: dev-c 78 79 - name: prod 80 group: prod 81 vars: 82 a: prod-a 83 c: prod-c 84 85 scope3: 86 - 87 name: global 88 vars: 89 a: global-a 90 b: global-b 91 c: global-c 92 d: global-d 93 - 94 name: nonprod 95 members: 96 - dev 97 - st 98 - staging 99 vars: 100 a: non-prod-a 101 b: non-prod-b 102 c: non-prod-c 103 104 - 105 name: prod 106 members: [dr,prod] 107 vars: 108 a: prod-a 109 c: prod-c 110 111 - 112 name: staging 113 vars: 114 a: staging-a 115 b: staging-b 116 117 - name: dev 118 vars: 119 a: dev-a 120 c: dev-c 121 122 scope2: 123 vars: 124 a: global-a 125 b: global-b 126 c: global-c 127 d: global-d 128 nonprod: 129 members: 130 - dev 131 - st 132 - staging 133 vars: 134 a: non-prod-a 135 b: non-prod-b 136 c: non-prod-c 137 prod: 138 members: [dr,prod] 139 vars: 140 a: prod-a 141 c: prod-c 142 each: 143 staging: 144 vars: 145 a: staging-a 146 b: staging-b 147 dev: 148 vars: 149 a: dev-a 150 c: dev-c 151 152 scope1: 153 vars: 154 a: global-a 155 b: global-b 156 c: global-c 157 d: global-d 158 nonprod: 159 members: 160 - dev 161 - st 162 - staging 163 vars: 164 a: non-prod-a 165 b: non-prod-b 166 c: non-prod-c 167 prod: 168 members: [dr,prod] 169 vars: 170 a: prod-a 171 c: prod-c 172 each: 173 staging: 174 vars: 175 a: staging-a 176 b: staging-b 177 dev: 178 vars: 179 a: dev-a 180 c: dev-c 181 182 scopes: 183 - 184 name: global 185 vars: 186 a: global-a 187 b: global-b 188 c: global-c 189 d: global-d 190 - 191 name: prod 192 members: [dr,prod] 193 vars: 194 a: prod-a 195 c: prod-c 196 197 - 198 name: nonprod 199 members: 200 - dev 201 - st 202 - staging 203 vars: 204 a: non-prod-a 205 b: non-prod-b 206 c: non-prod-c 207 208 - 209 name: staging 210 vars: 211 a: staging-a 212 b: staging-b 213 214 - name: dev 215 vars: 216 a: dev-a 217 c: dev-c 218 219 tasks: 220 221 - 222 name: task 223 task: 224 - 225 func: shell 226 do: 227 - echo "test out the var scopes only" 228