)]}'
{
  "log": [
    {
      "commit": "3b3bab111767db363446b0f7c26fe114c16dc043",
      "tree": "025ddbbd1790326e6efa7e03b66137b04e875253",
      "parents": [
        "a133b8e334023aa1ccb80e4ce0cc02419011f15e"
      ],
      "author": {
        "name": "Oleksii Butenko",
        "email": "obutenko@mirantis.com",
        "time": "Thu May 23 17:30:15 2019 +0300"
      },
      "committer": {
        "name": "obutenko",
        "email": "obutenko@mirantis.com",
        "time": "Thu May 23 23:44:35 2019 +0300"
      },
      "message": "Fix getting params\n\nFix gettting params for cicd deploy\n\nClose-bug: PROD-30306\n\nChange-Id: I9bc51281d2fbf5be29bb437f5fac79252e565de0\n"
    },
    {
      "commit": "4174e1e40ad39571a47611029c7578a408f48637",
      "tree": "165653ee17638426158270e27023be1253648987",
      "parents": [
        "4015adc19790ee156e5067e642398f41237e9060"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Apr 12 13:50:16 2019 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Apr 17 13:20:31 2019 +0000"
      },
      "message": "Add get_param_heat_template.py\n\nget_param_heat_template.py is used to extract a default parameter\nfrom a heat template .hot or heat template environment file .env\n\nRelated-task: #PROD-27687\nChange-Id: I2c0f649e26e60e086df99d3086894685a9d79424\n"
    },
    {
      "commit": "ad5f858517349746dce0673454535f41b69d0167",
      "tree": "62caeb80533084f921c49c7949f6ad572a2924e4",
      "parents": [
        "91bb7c969a8280695725c2d73f6fa89c63be9110"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Apr 12 13:15:08 2019 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Apr 17 13:19:52 2019 +0000"
      },
      "message": "Replace env_* scripts with static scripts\n\nGenerate env_* files with static variables, instead of\nexecuting the scripts every time when they are sourced.\n\nAccessing salt may be not suitable in some cases, so let\u0027s\njust generate the necessary env_* files with.\n\nDepending on the model, some files may not be created:\n\n- utils/env_salt - always created for cfg01 node\n- utils/env_jenkins_day01 - always created for cfg01 node\n- utils/env_jenkins_cicd - created only if the pillar\n      jenkins:client:master exists for cid01 node\n- utils/env_k8s - created only if the pillars\n      haproxy:proxy:listen:k8s_secure:binds and\n      kubernetes:master:admin exist.\n\n* Also, skip time sync on cfg01 node because of race conditions\n  with MaaS self-monitoring services in rack controller and\n  region controller.\n\nRelated-task: #PROD-27687\nChange-Id: Id37eb475e718ad337e21247769126b7d983b3489\n"
    },
    {
      "commit": "552454c0336a2fbf70d16906bfad8a026f63d27e",
      "tree": "214447b569d32d0ffc86e53e66bf28d4d5c21158",
      "parents": [
        "18319fa1b2605104a5bb03db9a6c7e707cca613f"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu Mar 21 23:15:51 2019 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Mar 27 12:13:13 2019 +0000"
      },
      "message": "Rename settings_oslo parameter MANAGER to ENV_MANAGER\n\nENV_MANAGER variable will be used to activate one of\nthe environment managers:\nENV_MANAGER\u003ddevops - create, power on/off VM and BM nodes,\n                     snapshots for libvirt VMs\nENV_MANAGER\u003dheat   - create OpenStack heat stack\nENV_MANAGER\u003dempty  - only for SSH to an existing environment\n\nChange-Id: I90a59107a7fd350ecfeb821734c2dac4e351d468\n"
    },
    {
      "commit": "f5f2e607a821e2cb9e687eef95b80fa7458d8f0c",
      "tree": "056e30edb71c8745079f2e8162ceffa238183c86",
      "parents": [
        "12cd380c145788ff8e82f6da6fcd527d6c16aeef"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Nov 03 15:36:19 2017 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Wed Mar 27 14:10:37 2019 +0200"
      },
      "message": "Initial change to support heat-based environments\n\nMoved the patch from the mcp/mcp-qa repo, ref #1170 to\nnot lose it after cleaning up.\n\n1.Added envmanager_heat.py to create environment in OpenStack\n  and use the created heat stack as the metadata source.\n  Current conventions for heat stack metadata:\n  - OS::Nova::Server must use \u0027metadata\u0027 property to specify list\n    of the node roles, example:\n\n    cfg01_node:\n      type: OS::Nova::Server\n      ...\n      properties:\n        ...\n        metadata:\n          roles:\n          - salt_master\n\n  - OS::Neutron::Subnet must use \u0027tags\u0027 property to specify the\n    address pool name (L3 network roles), example:\n\n    control_subnet:\n      type: OS::Neutron::Subnet\n      properties:\n        ...\n        tags:\n        - private_pool01\n2. Change underlay.yaml to use the user data file \u0027as is\u0027, without\n   indents and jinja blocks. This will allow to use the same\n   user data file for fuel-devops envs and heat stack envs.\n\n3. Add an example microcloud-8116.env file with some defaults.\n   For other stacks, another .env files can be created, with different\n   access keys, networks, images, ...\n\nRelated-Bug: PROD-27687\n\nChange-Id: Iaa9e97447bd1b41e5930a1ffbb7312945ba139f4\n"
    },
    {
      "commit": "ae6c72cf931ab0fc02c205aa0230041edc9508c3",
      "tree": "e88acf42c66a57e7dafcae1f6f4a3ca85b041a6e",
      "parents": [
        "78c65578f5894caa9b6b9195c916405699acd24c"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Feb 15 07:24:48 2019 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Mon Feb 18 16:06:49 2019 +0000"
      },
      "message": "Add retries to get_param.py\n\n- use a \u003cpepper\u003e option \"--fail-if-incomplete\" to\n  catch failed minions\n- retry 3 times the request if it is failed\n\nRelated-Bug: #PROD-26665\nChange-Id: Ib57d442cc0dc1fb127805ec2e0a05eee43ed6b54\n"
    },
    {
      "commit": "8565c344371592779073078fd984aba0c0f4ebcb",
      "tree": "e86d018b966d34b638f41444c41bf8dad6aecc69",
      "parents": [
        "80ce0200638f7bac338b8128c2ba2117e5650fcb"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Feb 11 23:45:03 2019 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Tue Feb 12 00:14:19 2019 +0200"
      },
      "message": "Add reporting of [CVP Sanity] results\n\n- add a new method get_artifact() to JenkinsClient\n- add a CLI tool get_jenkins_job_artifact.py , example usage:\n\n    export ENV_NAME\u003dcookied-cicd-queens-dvr-sl\n    . tcp_tests/utils/env_salt\n    . tcp_tests/utils/env_jenkins_cicd\n    tcp_tests/utils/get_jenkins_job_artifact.py \\\n        --job-name cvp-sanity \\\n        --build-number lastBuild \\\n        --artifact-path validation_artifacts/cvp-sanity_report.xml \\\n        --destination-name ./cvp-sanity_report.xml\n\n- add the XML report downloader to the test \"test_run_cvp_func_sanity\"\n- add new report type \"CVP Sanity\" to the testrail reporter\n  swarm-testrail-report.groovy\n\nCloses-Bug: #PROD-25356\nChange-Id: Ic34d76c62c7f70ada5b941e3ffc5b22e1be769d0\n"
    },
    {
      "commit": "2a4987321b36d9b3d9da7deb29dba9ac7396fc6d",
      "tree": "0cf99c433e0b8b04c7cbeb8cadb0d84df778434f",
      "parents": [
        "eda2bffab1d676d74257b4e09771aa2b2b2ad951"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Dec 21 18:30:23 2018 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Thu Jan 10 12:51:39 2019 +0000"
      },
      "message": "Add tests to run cvp-func and cvp-sanity jobs\n\nNew pytest marks:\n- run_cvp_func_smoke\n- run_cvp_func_sanity\n\nNew SaltManager method:\n- get_single_pillar() , to get a single value from\n  a single minion\n\nMinor changes to get_jenkins_job_stages.py and\nrun_jenkins_job.py, to call them with required\nparameters.\n\nCloses-Bug: PROD-21659\nChange-Id: Ie8beec0297f1c2625440f01d781c17779977b818\n"
    },
    {
      "commit": "2686a1edfb275e16bab56d22cee80f121d942766",
      "tree": "4a73da2822f1b69b6ae29f96e4c08924dcba46ed",
      "parents": [
        "0cad12cceb06419f6b91422195550969f44980e1"
      ],
      "author": {
        "name": "Tatyanka Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Wed Dec 26 13:36:45 2018 +0000"
      },
      "committer": {
        "name": "Tatyanka Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Wed Dec 26 13:36:45 2018 +0000"
      },
      "message": "Revert \"Add tests to run cvp-func and cvp-sanity jobs\"\n\nThis reverts commit 0cad12cceb06419f6b91422195550969f44980e1.\n\nChange-Id: I7b87d7d92be49c8fcb0194e073ad9507a5b50507\n"
    },
    {
      "commit": "0cad12cceb06419f6b91422195550969f44980e1",
      "tree": "a6daaf2f158c65cbcd27297cf1a7d42d7a28fdbc",
      "parents": [
        "958ad99c05bea73750dffe77096b639fefc80760"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Dec 21 18:30:23 2018 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Dec 24 01:36:43 2018 +0200"
      },
      "message": "Add tests to run cvp-func and cvp-sanity jobs\n\nNew pytest marks:\n- run_cvp_func_smoke\n- run_cvp_func_sanity\n\nNew SaltManager method:\n- get_single_pillar() , to get a single value from\n  a single minion\n\nMinor changes to get_jenkins_job_stages.py and\nrun_jenkins_job.py, to call them with required\nparameters.\n\nChange-Id: Ia2dd039cc1a04ac6fb4cb2020f09df473f9c5104\nCloses-Bug: PROD-21659\n"
    },
    {
      "commit": "bbdc3dba60b6dbe7dbcaa405104835a98918e929",
      "tree": "d528a82e018d5ed03d6f8c82225e317261fab0a6",
      "parents": [
        "db185dbef5eba2d9a94e88c457d7e1580f0ccce4"
      ],
      "author": {
        "name": "Tatyana Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Thu Dec 06 09:27:26 2018 +0200"
      },
      "committer": {
        "name": "Tatyana Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Thu Dec 06 09:27:26 2018 +0200"
      },
      "message": "Set more explicted target for env_jenkins_cid\n\nCurrently jenkins from confog node matched to pillars\nI@docker:client:stack:jenkins\nthat lead to failed step get_params as more then 1 tminion returns\nSo add cid for target\n\nChange-Id: If78697ca7aecb5c5ab4ffff145dd027e302cec33\n"
    },
    {
      "commit": "efe5c0b18d8a352e498a1ff0c9bd8494d13aaf04",
      "tree": "f592233274548d5547acb8d47d74753981d45d40",
      "parents": [
        "f28ed708bc5a453694c8fc62ab6829bf6688a673"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Wed Oct 24 20:35:26 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Thu Oct 25 15:41:53 2018 +0000"
      },
      "message": "Add tool get_logs.py to download node logs\n\nChange-Id: I834b699ed8968d70b20bf343e4f46df465fc4f5e\n"
    },
    {
      "commit": "13e804b50a4da7ad971ec42b99b57d0921e570f3",
      "tree": "24309bc2e00f1e31cd60c75bd9e706fe919594bf",
      "parents": [
        "236db655b37d4fab2f3f01d0e2d5d3ab1810daeb"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Tue Oct 09 19:25:14 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Oct 10 13:29:01 2018 +0000"
      },
      "message": "Fix timeout processing in CICD jobs\n\n- default timeout increased from 1800 to 2400 sec because \u0027core\u0027\n  component deployment takes more than 30 min now\n- print the timeout message in run_jenkins_job.py to stdout along\n  with stderr\n- do not fail get_jenkins_job_stages.py if info[\u0027result\u0027] contains\n  \u0027None\u0027 in cases when the job is failed by timeout. Wait for few\n  seconds, then report the workflow stages \u0027as is\u0027:\n    Create infrastructure: SUCCESS\n    Install core infrastructure: SUCCESS\n    Install infra: IN_PROGRESS\n\nChange-Id: I2ca592a8f5069bb38ec7659f15eb72e4bfba1722\nCloses-Bug:#PROD-23815\n"
    },
    {
      "commit": "445b4326dc9b3c0af46a1b37989e0e734d87a983",
      "tree": "630106d93977cfa8c92973b0b25647cb89ae08b0",
      "parents": [
        "9cc41be4f056f8599554666cddc5c20a6b70f386"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Oct 08 14:32:07 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Oct 08 16:45:56 2018 +0300"
      },
      "message": "Store kubernetes server version after conformance tests\n\nTo use with xunit_reporter\n\nLog output example:\n\n  -- Kubernetes server version is stored to ./env_k8s_version:\n  export KUBE_SERVER_VERSION\u003d1.10\n  export KUBE_SERVER_GIT_VERSION\u003dv1.10.4-4+971831eb5eb3db\n\nUsage example:\n\n  . ./env_k8s_version\n  report ... --testrail-suite \"[MCP][k8s]Hyperkube ${KUBE_SERVER_VERSION}.x\"\n\nChange-Id: Ia27b9e16142d5bb30f5dee5030095c2eb4e8e08c\n"
    },
    {
      "commit": "eb50ce1855b1f59e98f6cc336412194b549bff22",
      "tree": "746a243c647b982a61c88045930549726f39f7a4",
      "parents": [
        "d30bf85aeba5e79f50b2d6d8dd08e8ce5bdebac9"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu Sep 27 13:34:32 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Sep 28 19:58:54 2018 +0300"
      },
      "message": "Improve cicd test runner and reported\n\n- run pytest code without capturing stderr, to get solid output\n  in the Jenkins log\n- do not print the error message if something failed,\n  it is already shown in the exception message\n- add re-tries while getting the job results. Jenkins may return\n  \u0027None\u0027 for the job workflow right after the job is finished.\n- add getting k8s version to utils/env_k8s\n- add reporting k8s_conformance suite to TestRail\n- increase number of cmp nodes to 4 on k8s cicd envs\n- increase memory on k8s cmp nodes from 2Gb to 4Gb\n- increase memory on k8s ctl nodes from 2Gb to 8Gb\n- enable verbose in k8s_conformance tests\n\nChange-Id: I672279007fe4d7e3d684f0e49d1bcb7ff42a430f\n"
    },
    {
      "commit": "6d52a45a5b11e015d7beac3ee97f2e1bc486e17e",
      "tree": "b92391e11c8ab197a23ab204ab7beb0243b0aee9",
      "parents": [
        "70cefed6f2de0d31eaeadff55713bec5e3d763d8"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Sep 26 11:06:32 2018 +0000"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "dis.xcom@gmail.com",
        "time": "Wed Sep 26 11:06:32 2018 +0000"
      },
      "message": "Revert \"Fix runtestmanager for CICD deployments\"\n\nThis reverts commit 70cefed6f2de0d31eaeadff55713bec5e3d763d8.\n\nChange-Id: Ie9087cda7102b2bfd4d0e1b5d4dacc66cc4648be\n"
    },
    {
      "commit": "70cefed6f2de0d31eaeadff55713bec5e3d763d8",
      "tree": "e69e17927dfb2a682a14eba657d44e8c54474a37",
      "parents": [
        "410656d5995a2d443bbcb5ca7299535b858eb3bd"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Sep 17 15:41:35 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Tue Sep 25 15:04:09 2018 +0300"
      },
      "message": "Fix runtestmanager for CICD deployments\n\nIn CICD deployments, there are no workarounds that install\ndocker.io before using \u0027runtest\u0027 formula.\nAdd preparation of necessary packages to runtestmanager.\n\n- Refactor RuntestManager to use salt CLI instead of salt API\n  because salt API dones\u0027t allow to catch errors from modules\n- Add preparations for docker packages, Neutron private and\n  public networks based on underlay.yaml address pools, etc.\n\nChange-Id: Iaff8046b9cde6185cd6718a5c2064998ea7dc507\n"
    },
    {
      "commit": "27a9679628355f0ce871731a8e45c65ba6ead6bd",
      "tree": "0f8d3e847768dcdbe238aa9c06d57577422de2bc",
      "parents": [
        "7467c4c61094b48e0bbdc57db395282ae885b72e"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Jul 30 07:52:03 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Mon Jul 30 20:31:44 2018 +0300"
      },
      "message": "Grab failure details from pipeline jobs\n\n- if a job fails, try to get the stages from the job\n- if there are stages, get from non-SUCCESS stages all the\n  workflow \u0027nodes\u0027 (the commands performed in the stage, like\n  \u0027running shell script\u0027 or \u0027echo\u0027), and get the log from the\n  failed node only.\n- if there are no stages found (assuming that this is\n  a pipeline job), get the complete job console output\n\nWhen a pipeline job failed, the parent job is failed throwing\nthe exception contaied the found details.\n\nChange-Id: Ie5c2171e5373345b1951de55ba604b5d484340d3\n"
    },
    {
      "commit": "06fac239ee6dfc58ac7433d8818aa39572337806",
      "tree": "c80c2a1439d394d7b275433f758af443d57e7b3f",
      "parents": [
        "a97f6616ebadb95748f3450353da78d5e2b8b56a"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu Jul 19 13:20:53 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu Jul 19 15:25:16 2018 +0300"
      },
      "message": "Reduce libvirt node names lenght for cookiecutter-context-k8s-sl\n\nDon\u0027t add domain name to the libvirt node names, to fit into\npath lenght for the qemu monitor socket (108 chars including zero)\n\nChange-Id: I13ab5f7398debbb5984c3eb8f42df28049a60944\n"
    },
    {
      "commit": "3ec2e53d4b55ecf267671dcd0ac1745c5f69aaf8",
      "tree": "73797b09f3ee58a7711ed6ebb250d50642ce391c",
      "parents": [
        "a397f2649cbda6f976583ec6b145035a848c6243"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Jun 08 04:33:34 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Fri Jun 08 20:58:08 2018 +0300"
      },
      "message": "Add tools to run jenkins jobs and remote commands\n\n- ./tcp_tests/utils/create_devops_env.py\n  Creates a fuel-devops enviromnet with VMs in disabled\n  state, to generate networks and addresses for inventory.\n  Required parameters:\n    export ENV_NAME\u003dtest\n    export LAB_CONFIG_NAME\u003d\u003ctemplate directory with underlay.yml\u003e\n    export MANAGER\u003ddevops\n  Other parameters may be required for the underlay.yml\n\n  CLI example:\n    export PYTHONPATH\u003d$(pwd)\n    python ./tcp_tests/utils/create_devops_env.py\n\n- ./tcp_tests/utils/run_jenkins_job.py\n  Run a jenkins job with parameters, wait for completion,\n  print the console output to stdout while waiting.\n  Required parameters:\n    export JENKINS_URL\u003dhttp://host:port/\n    export JENKINS_USER\u003dadmin\n    export JENKINS_PASS\u003dadmin\n  CLI example:\n\n    JOB_PARAMETERS\u003d\"{\n      \\\"SALT_MASTER_URL\\\": \\\"${SALTAPI_URL}\\\",\n      \\\"STACK_INSTALL\\\": \\\"core,cicd\\\"\n    }\"\n    JOB_PREFIX\u003d\"[ {job_name} #{build_number}:cicd {time} ] \"\n\n    python ./tcp_tests/utils/run_jenkins_job.py \\\n        --verbose \\\n        --job-name\u003ddeploy_openstack \\\n        --job-parameters\u003d\"$JOB_PARAMETERS\" \\\n        --job-output-prefix\u003d\"$JOB_PREFIX\"\n\n- ./tcp_tests/utils/get_param.py\n  Get a single parameter from the salt pillar.\n  Useful to get addresses and other scalar values.\n  Required parameters are the same as for \u0027pepper\u0027 CLI:\n    export SALTAPI_URL\u003dhttp://${SALT_MASTER_IP}:6969/\n    export SALTAPI_USER\u003d\u0027salt\u0027\n    export SALTAPI_PASS\u003d\u0027icecream12345!\u0027\n    export SALTAPI_EAUTH\u003d\u0027pam\u0027\n  CLI example:\n  export JENKINS_HOST\u003d$(./tcp_tests/utils/get_param.py \\\n    -C \u0027I@docker:client:stack:jenkins\u0027 \\\n    pillar.get jenkins:client:master:host)\n\n- ./tcp_tests/utils/run_template_commands.py\n  Run remote commands from the ./tcp_tests/templates/\n  No environment varialbes are required, but may be\n  useful to provide the INI config from some completed\n  deployment.\n  CLI example:\n\n    export TESTS_CONFIGS\u003d$(pwd)/test_salt_deployed.ini\n    ./tcp_tests/utils/run_template_commands.py \\\n        ./tcp_tests/templates/\u003clab_name\u003e/common_services.yaml\n\n- some env files for sourcing to get access to different APIs.\n  This will simplify using the scripts above.\n\n    . ./tcp_tests/utils/env_salt          # salt-api access\n    . ./tcp_tests/utils/env_jenkins_day01 # jenkins on salt-master\n    . ./tcp_tests/utils/env_jenkins_cicd  # jenkins on cicd\n    . ./tcp_tests/utils/env_k8s           # k8s api access\n\n- fixed UnderlayManager.sudo_check_call() to remove\n  deprecation warning.\n\nImprovements to JenkisClient:\n- Add JenkinsWrapper class to workaround the bug\n  https://bugs.launchpad.net/python-jenkins/+bug/1775047\n  which is happened to CICD Jenkins behind the haproxy\n- improved waiting for start of the job in run_build()\n- new argument \u0027interval\u0027 in wait_end_of_build(), to set\n  the polling interval while waiting the job\n- new argument \u0027job_output_prefix\u0027 in wait_end_of_build(),\n  which allows to set the prefix to each line of the console\n  output of the job; with some pre-defined template keys.\n- improved printing the job output in case of non-unicode characters\n\nChange-Id: Ie7d1324d8247e55ba9c0f0492ca39fc176ff4935\n"
    }
  ]
}
