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