)]}'
{"ironic/common/utils.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"12bbf8d2c91092aacf825a9f8ee326f9ee03a31e","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    :returns: a hash object based on the given named algorithm."},{"line_number":221,"context_line":"    \"\"\""},{"line_number":222,"context_line":"    algorithms \u003d (hashlib.algorithms_guaranteed if six.PY3"},{"line_number":223,"context_line":"                  else hashlib.algorithms)"},{"line_number":224,"context_line":"    if hash_algo_name not in algorithms:"},{"line_number":225,"context_line":"        msg \u003d (_(\"Unsupported/Invalid hash name \u0027%s\u0027 provided.\")"},{"line_number":226,"context_line":"               % hash_algo_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_1932a2f4","side":"PARENT","line":223,"updated":"2019-12-20 08:48:29.000000000","message":"Oh, i left something similar in the IPA :)","commit_id":"b293eb1af0cda474a7262787efeb67d29591616b"}],"ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"12bbf8d2c91092aacf825a9f8ee326f9ee03a31e","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import configparser"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_39a0bef3","line":16,"updated":"2019-12-20 08:48:29.000000000","message":"i am not sure it\u0027s safe to drop from ansible plugin, my ubuntu bionic ships ansible 2.5.1, which uses python2.7.17","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"85597df11e6ca7217114b7c5b5c92dfe6a9a53ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import configparser"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_3c5f3ae5","line":16,"in_reply_to":"3fa7e38b_39a0bef3","updated":"2019-12-23 08:11:31.000000000","message":"I had the same concern, but Ansible works fine with Python 3 starting from version 2.5 (which is the minimum version we use in our tests), it detects the Python 3 interpreter automatically in most cases or, as I tested it, can be set using ansible_python_interpreter or directly in ansible.cfg\nConsider also that all our tests install ansible using pip (which is the recommended way anyway), and since we now set all ironic jobs with Python 3, by default pip3 is used, that setting Python 3.6 as interpreter for the system, and for ansible itself.\nI believe we should move forward with the change, but we can definitely wait to get more opinions on this.","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"f33cb1675670123266743642fe532f97d398061b","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import configparser"},{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_89bce807","line":16,"in_reply_to":"3fa7e38b_3c5f3ae5","updated":"2019-12-24 03:35:34.000000000","message":"I am not actually an user of this driver :(\nIn such case I think it\u0027s good to go, thanks for the explanation!","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"}],"ironic/drivers/modules/image_cache.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"12bbf8d2c91092aacf825a9f8ee326f9ee03a31e","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if service_utils.is_glance_image(href):"},{"line_number":95,"context_line":"            master_file_name \u003d service_utils.parse_image_id(href)"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            # NOTE(vdrok): Doing conversion of href in case it\u0027s unicode"},{"line_number":98,"context_line":"            # string, UUID cannot be generated for unicode strings on python 2."},{"line_number":99,"context_line":"            href_encoded \u003d href"},{"line_number":100,"context_line":"            master_file_name \u003d str(uuid.uuid5(uuid.NAMESPACE_URL,"},{"line_number":101,"context_line":"                                              href_encoded))"},{"line_number":102,"context_line":"        # NOTE(kaifeng) The \".converted\" suffix acts as an indicator that the"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_797f1669","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":31},"updated":"2019-12-20 08:48:29.000000000","message":"we can remove href_encoded and pass href below directly.","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"85597df11e6ca7217114b7c5b5c92dfe6a9a53ed","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        if service_utils.is_glance_image(href):"},{"line_number":95,"context_line":"            master_file_name \u003d service_utils.parse_image_id(href)"},{"line_number":96,"context_line":"        else:"},{"line_number":97,"context_line":"            # NOTE(vdrok): Doing conversion of href in case it\u0027s unicode"},{"line_number":98,"context_line":"            # string, UUID cannot be generated for unicode strings on python 2."},{"line_number":99,"context_line":"            href_encoded \u003d href"},{"line_number":100,"context_line":"            master_file_name \u003d str(uuid.uuid5(uuid.NAMESPACE_URL,"},{"line_number":101,"context_line":"                                              href_encoded))"},{"line_number":102,"context_line":"        # NOTE(kaifeng) The \".converted\" suffix acts as an indicator that the"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_fc58c2f9","line":99,"range":{"start_line":97,"start_character":0,"end_line":99,"end_character":31},"in_reply_to":"3fa7e38b_797f1669","updated":"2019-12-23 08:11:31.000000000","message":"heh yeah, will do!","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"}],"ironic/tests/unit/drivers/modules/test_image_cache.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"12bbf8d2c91092aacf825a9f8ee326f9ee03a31e","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                       autospec\u003dTrue)"},{"line_number":168,"context_line":"    def test_fetch_image_not_uuid(self, mock_download, mock_clean_up):"},{"line_number":169,"context_line":"        href \u003d u\u0027http://abc.com/ubuntu.qcow2\u0027"},{"line_number":170,"context_line":"        href_encoded \u003d href"},{"line_number":171,"context_line":"        href_converted \u003d str(uuid.uuid5(uuid.NAMESPACE_URL, href_encoded))"},{"line_number":172,"context_line":"        master_path \u003d \u0027\u0027.join([os.path.join(self.master_dir, href_converted),"},{"line_number":173,"context_line":"                               \u0027.converted\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_b9e10e2e","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":27},"updated":"2019-12-20 08:48:29.000000000","message":"nit: use href instead","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"85597df11e6ca7217114b7c5b5c92dfe6a9a53ed","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                       autospec\u003dTrue)"},{"line_number":168,"context_line":"    def test_fetch_image_not_uuid(self, mock_download, mock_clean_up):"},{"line_number":169,"context_line":"        href \u003d u\u0027http://abc.com/ubuntu.qcow2\u0027"},{"line_number":170,"context_line":"        href_encoded \u003d href"},{"line_number":171,"context_line":"        href_converted \u003d str(uuid.uuid5(uuid.NAMESPACE_URL, href_encoded))"},{"line_number":172,"context_line":"        master_path \u003d \u0027\u0027.join([os.path.join(self.master_dir, href_converted),"},{"line_number":173,"context_line":"                               \u0027.converted\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_9c6f4e92","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":27},"in_reply_to":"3fa7e38b_b9e10e2e","updated":"2019-12-23 08:11:31.000000000","message":"will do","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"12bbf8d2c91092aacf825a9f8ee326f9ee03a31e","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def test_fetch_image_not_uuid_no_force_raw(self, mock_download,"},{"line_number":184,"context_line":"                                               mock_clean_up):"},{"line_number":185,"context_line":"        href \u003d u\u0027http://abc.com/ubuntu.qcow2\u0027"},{"line_number":186,"context_line":"        href_encoded \u003d href"},{"line_number":187,"context_line":"        href_converted \u003d str(uuid.uuid5(uuid.NAMESPACE_URL, href_encoded))"},{"line_number":188,"context_line":"        master_path \u003d os.path.join(self.master_dir, href_converted)"},{"line_number":189,"context_line":"        self.cache.fetch_image(href, self.dest_path, force_raw\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_d9dc0a73","line":186,"updated":"2019-12-20 08:48:29.000000000","message":"ditto","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"85597df11e6ca7217114b7c5b5c92dfe6a9a53ed","unresolved":false,"context_lines":[{"line_number":183,"context_line":"    def test_fetch_image_not_uuid_no_force_raw(self, mock_download,"},{"line_number":184,"context_line":"                                               mock_clean_up):"},{"line_number":185,"context_line":"        href \u003d u\u0027http://abc.com/ubuntu.qcow2\u0027"},{"line_number":186,"context_line":"        href_encoded \u003d href"},{"line_number":187,"context_line":"        href_converted \u003d str(uuid.uuid5(uuid.NAMESPACE_URL, href_encoded))"},{"line_number":188,"context_line":"        master_path \u003d os.path.join(self.master_dir, href_converted)"},{"line_number":189,"context_line":"        self.cache.fetch_image(href, self.dest_path, force_raw\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_bc6a4a7f","line":186,"in_reply_to":"3fa7e38b_d9dc0a73","updated":"2019-12-23 08:11:31.000000000","message":"will do","commit_id":"d6e1d25f7df1ef3947cac943ba50acd0a28b213e"}]}
