)]}'
{"lower-constraints.txt":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3c6abff30bda4c2bbcbb1c0bef7274743cfe9794","unresolved":false,"context_lines":[{"line_number":1,"context_line":"alembic\u003d\u003d0.8.10"},{"line_number":2,"context_line":"amqp\u003d\u003d2.1.1"},{"line_number":3,"context_line":"ansible-runner\u003d\u003d\u003d1.3.4"},{"line_number":4,"context_line":"aodhclient\u003d\u003d0.9.0"},{"line_number":5,"context_line":"appdirs\u003d\u003d1.3.0"},{"line_number":6,"context_line":"asn1crypto\u003d\u003d0.23.0"}],"source_content_type":"text/plain","patch_set":7,"id":"3fa7e38b_b9f90e4f","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":22},"updated":"2019-12-03 14:54:33.000000000","message":"let\u0027s use latest 1.4.4 that should be available in rdo repos: https://review.rdoproject.org/r/#/c/23856/","commit_id":"34dc5d19e90ce091362812512587993d2e12dcb9"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"15dd83eb1b461dcfa393d6978158af833ca9b3d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"alembic\u003d\u003d0.8.10"},{"line_number":2,"context_line":"amqp\u003d\u003d2.1.1"},{"line_number":3,"context_line":"ansible-runner\u003d\u003d\u003d1.3.4"},{"line_number":4,"context_line":"aodhclient\u003d\u003d0.9.0"},{"line_number":5,"context_line":"appdirs\u003d\u003d1.3.0"},{"line_number":6,"context_line":"asn1crypto\u003d\u003d0.23.0"}],"source_content_type":"text/plain","patch_set":7,"id":"3fa7e38b_10003066","line":3,"range":{"start_line":3,"start_character":17,"end_line":3,"end_character":22},"in_reply_to":"3fa7e38b_b9f90e4f","updated":"2019-12-03 17:19:01.000000000","message":"Done","commit_id":"34dc5d19e90ce091362812512587993d2e12dcb9"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"03762f3f4a6763602124d1d5746d0328c77f37c5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"alembic\u003d\u003d0.8.10"},{"line_number":2,"context_line":"amqp\u003d\u003d2.1.1"},{"line_number":3,"context_line":"ansible-runner\u003d\u003d\u003d1.3.4"},{"line_number":4,"context_line":"aodhclient\u003d\u003d0.9.0"},{"line_number":5,"context_line":"appdirs\u003d\u003d1.3.0"},{"line_number":6,"context_line":"asn1crypto\u003d\u003d0.23.0"}],"source_content_type":"text/plain","patch_set":10,"id":"3fa7e38b_ed59f6fc","line":3,"range":{"start_line":3,"start_character":16,"end_line":3,"end_character":22},"updated":"2019-12-04 06:56:35.000000000","message":"why did we return to 1.3.4?","commit_id":"58fce3ba3a1f487be96ad157b7c712bdf6b55372"}],"requirements.txt":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3480d1a713f2051fda8f235085f07caad2a7a7d9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"tripleo-common\u003e\u003d11.3.1 # Apache-2.0"},{"line_number":20,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":21,"context_line":"futures\u003e\u003d3.0.0;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 # BSD"},{"line_number":22,"context_line":"ansible-runner\u003e\u003d1.3.4 # Apache 2.0"}],"source_content_type":"text/plain","patch_set":9,"id":"3fa7e38b_9f40aba4","line":22,"range":{"start_line":22,"start_character":17,"end_line":22,"end_character":19},"updated":"2019-12-03 22:29:45.000000000","message":"let\u0027s use 1.4.4 too","commit_id":"213b76e709a3f050af6bfe6e93dc9a586ea00d01"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"03762f3f4a6763602124d1d5746d0328c77f37c5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"tripleo-common\u003e\u003d11.3.1 # Apache-2.0"},{"line_number":20,"context_line":"cryptography\u003e\u003d2.1 # BSD/Apache-2.0"},{"line_number":21,"context_line":"futures\u003e\u003d3.0.0;python_version\u003d\u003d\u00272.7\u0027 or python_version\u003d\u003d\u00272.6\u0027 # BSD"},{"line_number":22,"context_line":"ansible-runner\u003e\u003d1.3.4 # Apache 2.0"}],"source_content_type":"text/plain","patch_set":10,"id":"3fa7e38b_8d708275","line":22,"range":{"start_line":22,"start_character":17,"end_line":22,"end_character":19},"updated":"2019-12-04 06:56:35.000000000","message":"ditto","commit_id":"58fce3ba3a1f487be96ad157b7c712bdf6b55372"}],"tripleoclient/constants.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":102,"context_line":"CTLPLANE_GATEWAY_DEFAULT \u003d \u0027192.168.24.1\u0027"},{"line_number":103,"context_line":"CTLPLANE_DNS_NAMESERVERS_DEFAULT \u003d []"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"# Ansible parameters used for the actions being"},{"line_number":106,"context_line":"# executed during tripleo deploy/upgrade."},{"line_number":107,"context_line":"# Used as kwargs."},{"line_number":108,"context_line":"DEPLOY_ANSIBLE_ACTIONS \u003d {"},{"line_number":109,"context_line":"    \u0027deploy\u0027: {"},{"line_number":110,"context_line":"        \u0027playbook\u0027: \u0027deploy_steps_playbook.yaml\u0027"},{"line_number":111,"context_line":"    },"},{"line_number":112,"context_line":"    \u0027upgrade\u0027: {"},{"line_number":113,"context_line":"        \u0027playbook\u0027: \u0027upgrade_steps_playbook.yaml\u0027,"},{"line_number":114,"context_line":"        \u0027skip_tags\u0027: \u0027validation\u0027"},{"line_number":115,"context_line":"    },"},{"line_number":116,"context_line":"    \u0027post-upgrade\u0027: {"},{"line_number":117,"context_line":"        \u0027playbook\u0027: \u0027post_upgrade_steps_playbook.yaml\u0027,"},{"line_number":118,"context_line":"        \u0027skip_tags\u0027: \u0027validation\u0027"},{"line_number":119,"context_line":"    },"},{"line_number":120,"context_line":"    \u0027online-upgrade\u0027: {"},{"line_number":121,"context_line":"        \u0027playbook\u0027: \u0027external_upgrade_steps_playbook.yaml\u0027,"},{"line_number":122,"context_line":"        \u0027tags\u0027: \u0027online_upgrade\u0027"},{"line_number":123,"context_line":"    }"},{"line_number":124,"context_line":"}"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"# Key-value pair of deprecated service and its warning message"},{"line_number":127,"context_line":"DEPRECATED_SERVICES \u003d {\"OS::TripleO::Services::OpenDaylightApi\":"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_cbc25053","line":124,"range":{"start_line":105,"start_character":0,"end_line":124,"end_character":1},"updated":"2019-07-20 03:27:20.000000000","message":"converted to a dict which is fed into the ansible-runner, instead of using command line args.","commit_id":"8998c8049afc22060c159617c87fa2d07ba541a7"}],"tripleoclient/tests/test_utils.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":1697,"context_line":"        self.assertEqual(\u0027UTC\u0027, utils.get_local_timezone())"},{"line_number":1698,"context_line":""},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"class TestAnsibleSymlink(TestCase):"},{"line_number":1701,"context_line":"    @mock.patch(\u0027tripleoclient.utils.run_command\u0027)"},{"line_number":1702,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, side_effect\u003d[False, True])"},{"line_number":1703,"context_line":"    def test_ansible_symlink_needed(self, mock_path, mock_cmd):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_abc7d463","side":"PARENT","line":1700,"range":{"start_line":1700,"start_character":0,"end_line":1700,"end_character":35},"updated":"2019-07-20 03:27:20.000000000","message":"this test was removed, because the method is no longer needed.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"365d2fe66a5e8f35919628adc1b6f8aec403b550","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    @mock.patch(\u0027tempfile.mkstemp\u0027, return_value\u003d(\u0027foo\u0027, \u0027/tmp/fooBar.cfg\u0027))"},{"line_number":71,"context_line":"    @mock.patch(\u0027os.path.exists\u0027, return_value\u003dTrue)"},{"line_number":72,"context_line":"    @mock.patch(\u0027os.makedirs\u0027)"},{"line_number":73,"context_line":"    @mock.patch.object("},{"line_number":74,"context_line":"        Runner,"},{"line_number":75,"context_line":"        \u0027run\u0027,"},{"line_number":76,"context_line":"        return_value\u003dfakes.fake_ansible_runner_run_return(rc\u003d1)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3bdd9ddc","line":73,"updated":"2019-08-05 08:09:36.000000000","message":"Might be worth doing this patch in the setUp to avoid repetition?","commit_id":"852e45df128944fb71533abe0775888e3fba698d"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"b9db436ae9ec7914b6c4cec135308202398599ea","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from six.moves.configparser import ConfigParser"},{"line_number":44,"context_line":"from six.moves.urllib import error as url_error"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"from ansible_runner import Runner"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class TestRunAnsiblePlaybook(TestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_e2a49c09","line":46,"updated":"2019-12-04 14:25:37.000000000","message":"side note; The order of the imports in this file is super weird.","commit_id":"944bb03ecd7668bee50df8aeca36e9afe9050290"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"c3de4b2e3be8e3147a1b772b26794f8a0d298f57","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from six.moves.configparser import ConfigParser"},{"line_number":44,"context_line":"from six.moves.urllib import error as url_error"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"from ansible_runner import Runner"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class TestRunAnsiblePlaybook(TestCase):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_d1e608e8","line":46,"in_reply_to":"3fa7e38b_e2a49c09","updated":"2019-12-04 17:31:13.000000000","message":"++ the order of imports in this file are all over the place and don\u0027t seem to be following any discernible pattern. It would probably be worth our while to review https://www.python.org/dev/peps/pep-0008/#imports and apply that to most of the client library.","commit_id":"944bb03ecd7668bee50df8aeca36e9afe9050290"}],"tripleoclient/tests/v1/test_validator.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        self.cmd.take_action(parsed_args)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        plan_mock.assert_called_once_with("},{"line_number":99,"context_line":"            logger\u003dmock_log,"},{"line_number":100,"context_line":"            connection\u003d\u0027local\u0027,"},{"line_number":101,"context_line":"            inventory\u003d\u0027/usr/bin/tripleo-ansible-inventory\u0027,"},{"line_number":102,"context_line":"            workdir\u003dplaybooks_dir,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_8ba698c0","side":"PARENT","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":28},"updated":"2019-07-20 03:27:20.000000000","message":"logger was removed from method, its no longer needed.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            logger\u003dmock_log,"},{"line_number":100,"context_line":"            connection\u003d\u0027local\u0027,"},{"line_number":101,"context_line":"            inventory\u003d\u0027/usr/bin/tripleo-ansible-inventory\u0027,"},{"line_number":102,"context_line":"            workdir\u003dplaybooks_dir,"},{"line_number":103,"context_line":"            log_path_dir\u003d\u0027/home/stack\u0027,"},{"line_number":104,"context_line":"            playbook\u003d\u0027check-ftype.yaml\u0027,"},{"line_number":105,"context_line":"            retries\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_2ba9a48e","side":"PARENT","line":102,"range":{"start_line":102,"start_character":12,"end_line":102,"end_character":34},"updated":"2019-07-20 03:27:20.000000000","message":"the workdir is now defined by default. there\u0027s no need to define it here to satisfy the method.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"}],"tripleoclient/tests/v1/tripleo/test_tripleo_deploy.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":929,"context_line":"    @mock.patch(\u0027tripleoclient.utils.wait_for_stack_ready\u0027, return_value\u003dTrue)"},{"line_number":930,"context_line":"    @mock.patch(\u0027tripleoclient.v1.tripleo_deploy.Deploy.\u0027"},{"line_number":931,"context_line":"                \u0027_set_default_plan\u0027)"},{"line_number":932,"context_line":"    @mock.patch(\u0027tripleoclient.utils.ansible_symlink\u0027)"},{"line_number":933,"context_line":"    def test_take_action_standalone(self, mock_slink, mock_def_plan, mock_poll,"},{"line_number":934,"context_line":"                                    mock_environ, mock_geteuid, mock_puppet,"},{"line_number":935,"context_line":"                                    mock_killheat, mock_launchheat,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_eb962c4c","side":"PARENT","line":932,"range":{"start_line":932,"start_character":0,"end_line":932,"end_character":54},"updated":"2019-07-20 03:27:20.000000000","message":"removed because this method is gone.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"}],"tripleoclient/utils.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":1904,"context_line":"    return timezone"},{"line_number":1905,"context_line":""},{"line_number":1906,"context_line":""},{"line_number":1907,"context_line":"def ansible_symlink():"},{"line_number":1908,"context_line":"    # https://bugs.launchpad.net/tripleo/+bug/1812837"},{"line_number":1909,"context_line":"    python_version \u003d sys.version_info[0]"},{"line_number":1910,"context_line":"    ansible_playbook_cmd \u003d \"ansible-playbook-{}\".format(python_version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_6b8c7c35","side":"PARENT","line":1907,"range":{"start_line":1907,"start_character":4,"end_line":1907,"end_character":19},"updated":"2019-07-20 03:27:20.000000000","message":"this method is no longer needed because we\u0027re now using a native python library to run the ansible commands.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"},{"author":{"_account_id":15895,"name":"Adriano Petrich","email":"apetrich@redhat.com","username":"apetrich"},"change_message_id":"1c89ffa43553f3deb458bd56bf14613f7d5f8959","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    runner_config \u003d ansible_runner.runner_config.RunnerConfig(**r_opts)"},{"line_number":219,"context_line":"    runner_config.prepare()"},{"line_number":220,"context_line":"    runner \u003d ansible_runner.Runner(config\u003drunner_config)"},{"line_number":221,"context_line":"    status, rc \u003d runner.run()"},{"line_number":222,"context_line":"    if rc \u003d\u003d 0:"},{"line_number":223,"context_line":"        return rc, status"},{"line_number":224,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_29eeb021","line":221,"updated":"2019-08-05 12:35:55.000000000","message":"This is not compatible with other implementation that returns the stdout. See line 219 on the original utils\n\nreturn proc.returncode, proc.stdout.read()","commit_id":"852e45df128944fb71533abe0775888e3fba698d"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"be0f27f62c6b0e5faccc8a3fc1d0cc865e8bafb9","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    runner_config \u003d ansible_runner.runner_config.RunnerConfig(**r_opts)"},{"line_number":219,"context_line":"    runner_config.prepare()"},{"line_number":220,"context_line":"    runner \u003d ansible_runner.Runner(config\u003drunner_config)"},{"line_number":221,"context_line":"    status, rc \u003d runner.run()"},{"line_number":222,"context_line":"    if rc \u003d\u003d 0:"},{"line_number":223,"context_line":"        return rc, status"},{"line_number":224,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_79f3010a","line":221,"in_reply_to":"7faddb67_29eeb021","updated":"2019-08-06 15:37:32.000000000","message":"Done","commit_id":"852e45df128944fb71533abe0775888e3fba698d"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3480d1a713f2051fda8f235085f07caad2a7a7d9","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                ansible_config"},{"line_number":217,"context_line":"            )"},{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        if os.path.exists(user_abs_path):"},{"line_number":220,"context_line":"            env[\u0027ANSIBLE_CONFIG\u0027] \u003d user_abs_path"},{"line_number":221,"context_line":"        elif os.path.exists(workdir_abs_path):"},{"line_number":222,"context_line":"            env[\u0027ANSIBLE_CONFIG\u0027] \u003d workdir_abs_path"},{"line_number":223,"context_line":"        else:"},{"line_number":224,"context_line":"            raise RuntimeError("},{"line_number":225,"context_line":"                \u0027No such configuration file: {}\u0027.format(ansible_config)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_3f49778d","line":222,"range":{"start_line":219,"start_character":8,"end_line":222,"end_character":52},"updated":"2019-12-03 22:29:45.000000000","message":"we need an option to override the default config options, like we have this in overcloud deploy: https://github.com/openstack/python-tripleoclient/blob/master/tripleoclient/v1/overcloud_deploy.py#L871-L877\n\nBut it\u0027s better to do in followup patches.","commit_id":"213b76e709a3f050af6bfe6e93dc9a586ea00d01"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3480d1a713f2051fda8f235085f07caad2a7a7d9","unresolved":false,"context_lines":[{"line_number":233,"context_line":"    if extra_vars:"},{"line_number":234,"context_line":"        if isinstance(extra_vars, dict):"},{"line_number":235,"context_line":"            extravars.update(extra_vars)"},{"line_number":236,"context_line":"        elif os.path.exists(extra_vars) and os.path.isfile(extra_vars):"},{"line_number":237,"context_line":"            with open(extra_vars) as f:"},{"line_number":238,"context_line":"                extravars.update(yaml.safe_load(f.read()))"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_bf524767","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":71},"updated":"2019-12-03 22:29:45.000000000","message":"maybe better to have a different variable for that, like \"extra_vars_file\"","commit_id":"213b76e709a3f050af6bfe6e93dc9a586ea00d01"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"3480d1a713f2051fda8f235085f07caad2a7a7d9","unresolved":false,"context_lines":[{"line_number":235,"context_line":"            extravars.update(extra_vars)"},{"line_number":236,"context_line":"        elif os.path.exists(extra_vars) and os.path.isfile(extra_vars):"},{"line_number":237,"context_line":"            with open(extra_vars) as f:"},{"line_number":238,"context_line":"                extravars.update(yaml.safe_load(f.read()))"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    if python_interpreter is not None:"},{"line_number":241,"context_line":"        extravars[\u0027ansible_python_interpreter\u0027] \u003d python_interpreter"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_1fea7b73","line":238,"range":{"start_line":238,"start_character":49,"end_line":238,"end_character":56},"updated":"2019-12-03 22:29:45.000000000","message":"can be just \"f\"","commit_id":"213b76e709a3f050af6bfe6e93dc9a586ea00d01"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"b9db436ae9ec7914b6c4cec135308202398599ea","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         extra_vars\u003dNone,"},{"line_number":89,"context_line":"                         plan\u003d\u0027overcloud\u0027,"},{"line_number":90,"context_line":"                         gathering_policy\u003d\u0027smart\u0027,"},{"line_number":91,"context_line":"                         env\u003dos.environ.copy(),"},{"line_number":92,"context_line":"                         return_stdout\u003dFalse):"},{"line_number":93,"context_line":"    \"\"\"Simple wrapper for ansible-playbook"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_45181a1d","line":91,"updated":"2019-12-04 14:25:37.000000000","message":"This seems a bit strange to me. Why are we doing a copy here? Wouldn\u0027t it be better in the function body?","commit_id":"944bb03ecd7668bee50df8aeca36e9afe9050290"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"c3de4b2e3be8e3147a1b772b26794f8a0d298f57","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                         extra_vars\u003dNone,"},{"line_number":89,"context_line":"                         plan\u003d\u0027overcloud\u0027,"},{"line_number":90,"context_line":"                         gathering_policy\u003d\u0027smart\u0027,"},{"line_number":91,"context_line":"                         env\u003dos.environ.copy(),"},{"line_number":92,"context_line":"                         return_stdout\u003dFalse):"},{"line_number":93,"context_line":"    \"\"\"Simple wrapper for ansible-playbook"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3fa7e38b_b1fcac72","line":91,"in_reply_to":"3fa7e38b_45181a1d","updated":"2019-12-04 17:31:13.000000000","message":"I can change that.","commit_id":"944bb03ecd7668bee50df8aeca36e9afe9050290"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"73f22737e413d33333066e241c8f8b106b939813","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    :param workdir: Location of the working directory."},{"line_number":218,"context_line":"    :type workdir: String"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    :param workdir: Location of the playbook directory. (defaults to workdir)."},{"line_number":221,"context_line":"    :type workdir: String"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    :param connection: Connection type (local, smart, etc)."}],"source_content_type":"text/x-python","patch_set":37,"id":"3fa7e38b_7ea483b8","line":220,"range":{"start_line":220,"start_character":4,"end_line":220,"end_character":20},"updated":"2019-12-09 18:54:38.000000000","message":"I suppose it\u0027s playbook_dir","commit_id":"628560e441d72784031cce5fd25b82ea6e643f88"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"f24f19092875fb9f93db05b661a36380af264325","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    :param workdir: Location of the working directory."},{"line_number":218,"context_line":"    :type workdir: String"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    :param workdir: Location of the playbook directory. (defaults to workdir)."},{"line_number":221,"context_line":"    :type workdir: String"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    :param connection: Connection type (local, smart, etc)."}],"source_content_type":"text/x-python","patch_set":37,"id":"3fa7e38b_beb51bd2","line":220,"range":{"start_line":220,"start_character":4,"end_line":220,"end_character":20},"in_reply_to":"3fa7e38b_7ea483b8","updated":"2019-12-09 19:01:42.000000000","message":"Done","commit_id":"628560e441d72784031cce5fd25b82ea6e643f88"},{"author":{"_account_id":11491,"name":"Gael Chamoulaud","email":"gchamoul@redhat.com","username":"gchamoul"},"change_message_id":"95dd1298ed0d78cc42a30fea327b6ccb7df6e741","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                rc"},{"line_number":508,"context_line":"            )"},{"line_number":509,"context_line":"        )"},{"line_number":510,"context_line":"        LOG.error(err_msg)"},{"line_number":511,"context_line":"        raise RuntimeError(err_msg)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"3fa7e38b_3ca570b4","line":510,"updated":"2019-12-13 14:14:01.000000000","message":"I would really see something like that here:\n\nif not quiet:\n    LOG.error(err_msg)\n\nto avoid getting err_msg(s) when running validations through the CLI.","commit_id":"3489e0c842b54cb64f0135093b88bcbacb84160a"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"cfea1d5974b74766c2bc7e53705533fbfb3c5837","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                rc"},{"line_number":508,"context_line":"            )"},{"line_number":509,"context_line":"        )"},{"line_number":510,"context_line":"        LOG.error(err_msg)"},{"line_number":511,"context_line":"        raise RuntimeError(err_msg)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"3fa7e38b_77f43689","line":510,"in_reply_to":"3fa7e38b_3ca570b4","updated":"2019-12-17 13:33:09.000000000","message":"Done","commit_id":"3489e0c842b54cb64f0135093b88bcbacb84160a"}],"tripleoclient/v1/minion_config.py":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"8d4355928cc5f80d1527d8a832d5ec17126bce64","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        utils.set_hostname(CONF.get(\u0027minion_hostname\u0027))"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    if CONF.get(\u0027minion_enable_validations\u0027) and not no_validations:"},{"line_number":332,"context_line":"        utils.ansible_symlink()"},{"line_number":333,"context_line":"        # TODO(aschultz): write this"},{"line_number":334,"context_line":"        # minion_preflight.check(verbose_level, upgrade)"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7faddb67_8b8f7828","side":"PARENT","line":332,"range":{"start_line":332,"start_character":8,"end_line":332,"end_character":31},"updated":"2019-07-20 03:27:20.000000000","message":"This method no longer exists.","commit_id":"7022d93e81b1c573a03f53b13dfa18bf8fae37f2"}]}
