)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "a5bd16593a80e272883ed98c45d923a8db345aa8",
      "tree": "c76ae4c12786b7b4b45067c915737e20bb71f488",
      "parents": [
        "940453e873f0e1a070cb9da0743e7f1d642cf44a"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu May 31 20:57:19 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu May 31 21:34:13 2018 +0300"
      },
      "message": "Add waiting for the correct build_id in the JenkinClient:run_build()\n\nIf the job is queued while waiting for the free executors, then\nthe method was getting the wrong build_id belonging to the\nprevious job, for instance it will return build_id\u003d28 in this example:\n\n  №2​9 (pending—Build #28 is already in progress (ETA:17 min))\n  №2​8 [In progress]  May 31, 2018 6:07 PM\n\n* Add \u0027timeout\u0027 parameter (default 600sec) in run_build()\n  to wait until the queued build is started\n* Add pooling the queue until the build is started, get the\n  build number assigned to build in queue object\n* Add \u0027verbose\u0027 parameter (default False) to show the reason\n  from Jenkins why the build is not started yet, for example:\n\n    pending the job \u0027deploy_openstack\u0027 : Build #22 is already in progress (ETA:1 min 48 sec)\n    pending the job \u0027deploy_openstack\u0027 : Build #22 is already in progress (ETA:1 min 18 sec)\n    pending the job \u0027deploy_openstack\u0027 : Build #22 is already in progress (ETA:48 sec)\n\n* Rename the parameter \u0027print_job_output\u0027 to \u0027verbose\u0027\n  in the method wait_end_of_build() to have the common parameter\n  naming.\n\nChange-Id: Id49b5b45a8127e769b89860b19424081f37f6f38\n"
    },
    {
      "commit": "6111511ab86962c8524c3fd7807b492e31c52a19",
      "tree": "c3e10c9244df7c9c491fcfefc47fb7edc1cb376b",
      "parents": [
        "8b26b6519dd96aa40dbbad7d3483e2dcd8981ab2"
      ],
      "author": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu May 31 06:48:43 2018 +0300"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu May 31 06:57:29 2018 +0300"
      },
      "message": "Add possibility to follow a Jenkins job output during building\n\n* New parameter for JenkinsClient:wait_end_of_build()\n  \u0027print_job_output\u0027: bool\n\nIf \u0027print_job_output\u0027 is True, wait_end_of_build() prints\nthe job output to stdout \u0027as is\u0027, with all html and color tags.\n\n- add the method get_progressive_build_output() to jenkins manager.\n  It is pulling the ./logText/progressiveHtml and gets the\n  text chunks from \u0027start\u0027 to the current latest position of the\n  job console output.\n\nChange-Id: I25112c4c46715aa1837714740c7ee6b327704d4a\n"
    },
    {
      "commit": "b610afd6e3bd7c332c25abca7a0a504bdea58f23",
      "tree": "10a33350bed36f0b573c86e5727e302554c2bff0",
      "parents": [
        "d444b6db04ac04ef01f0440b8602470bf6b6bcd7"
      ],
      "author": {
        "name": "Dmitry Tyzhnenko",
        "email": "t.dmitry@gmail.com",
        "time": "Mon Feb 19 15:43:45 2018 +0200"
      },
      "committer": {
        "name": "Dennis Dmitriev",
        "email": "ddmitriev@mirantis.com",
        "time": "Thu May 17 16:05:40 2018 +0300"
      },
      "message": "Update offline deployment test\n\nChange-Id: I3c935be8ad6f038ce6c25221de6d09e93619c94d\n"
    },
    {
      "commit": "5a5d8da146025c618c21a90b97133f24cc374662",
      "tree": "eeffecd3ff58d0451d45f34eb71a791cf4769024",
      "parents": [
        "839d2ce7cc3602d3bb1c1bdd10e39f9aa49141b9"
      ],
      "author": {
        "name": "Dmitry Tyzhnenko",
        "email": "t.dmitry@gmail.com",
        "time": "Thu Dec 14 14:14:42 2017 +0200"
      },
      "committer": {
        "name": "Dmitry Tyzhnenko",
        "email": "t.dmitry@gmail.com",
        "time": "Fri Feb 09 15:00:12 2018 +0200"
      },
      "message": "Template and deploy test for day01 deployment\n\nAdd physical-mcp-ocata-offline-ovs template\nAdd day01 offline test\n\nChange-Id: I61211150575a84d8f3e44be2ef9c64855e5f2db3\n"
    }
  ]
}
