)]}'
{"paunch/builder/compose1.py":[{"author":{"_account_id":23618,"name":"Christophe Fontaine","email":"cfontain@redhat.com","username":"christophefontaine"},"change_message_id":"04ee44888040b9f10db32321ab53f40339c72e9c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for extra_host in cconfig.get(\u0027extra_hosts\u0027, []):"},{"line_number":87,"context_line":"            if extra_host:"},{"line_number":88,"context_line":"                cmd.append(\u0027--add-host\u003d%s\u0027 % extra_host)"},{"line_number":89,"context_line":"        if \u0027cpuset_cpus\u0027 in cconfig:"},{"line_number":90,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % cconfig[\u0027cpuset_cpus\u0027])"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % common.get_cpus_allowed_list())"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_f77eac69","line":89,"updated":"2019-09-11 08:52:30.000000000","message":"For nova_libvirt container, we will need to be able to run the process on all CPUs so the child QEMU process can be pinned on the appropriate CPUs, this will be useful !","commit_id":"a735258af41f9aebd591ed98a3929b8f0ea649d0"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"680af6f3ed55f37e4bd2be35f784f45c181a2289","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for extra_host in cconfig.get(\u0027extra_hosts\u0027, []):"},{"line_number":87,"context_line":"            if extra_host:"},{"line_number":88,"context_line":"                cmd.append(\u0027--add-host\u003d%s\u0027 % extra_host)"},{"line_number":89,"context_line":"        if \u0027cpuset_cpus\u0027 in cconfig:"},{"line_number":90,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % cconfig[\u0027cpuset_cpus\u0027])"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % common.get_cpus_allowed_list())"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_a456b35b","line":89,"in_reply_to":"5faad753_578ea02e","updated":"2019-09-11 16:59:59.000000000","message":"will do","commit_id":"a735258af41f9aebd591ed98a3929b8f0ea649d0"},{"author":{"_account_id":23618,"name":"Christophe Fontaine","email":"cfontain@redhat.com","username":"christophefontaine"},"change_message_id":"67095a0eb6bb81fc6d896b81e08567f1691fcce2","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        for extra_host in cconfig.get(\u0027extra_hosts\u0027, []):"},{"line_number":87,"context_line":"            if extra_host:"},{"line_number":88,"context_line":"                cmd.append(\u0027--add-host\u003d%s\u0027 % extra_host)"},{"line_number":89,"context_line":"        if \u0027cpuset_cpus\u0027 in cconfig:"},{"line_number":90,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % cconfig[\u0027cpuset_cpus\u0027])"},{"line_number":91,"context_line":"        else:"},{"line_number":92,"context_line":"            cmd.append(\u0027--cpuset-cpus\u003d%s\u0027 % common.get_cpus_allowed_list())"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_578ea02e","line":89,"in_reply_to":"5faad753_f77eac69","updated":"2019-09-11 08:58:43.000000000","message":"a special value \"all\" would even be great so paunch computes the list:\n\"0-\" + str(psutil.cpu_count()-1)","commit_id":"a735258af41f9aebd591ed98a3929b8f0ea649d0"}],"paunch/tests/test_builder_podman.py":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"d676ba55278e7f6cd91a4a4ce060aa8e621e922d","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestPodmanBuilder(base.TestBaseBuilder):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @mock.patch(\"psutil.Process.cpu_affinity\")"},{"line_number":24,"context_line":"    def test_cont_run_args(self, mock_cpu):"},{"line_number":25,"context_line":"        mock_cpu.return_value \u003d [0, 1, 2, 3]"},{"line_number":26,"context_line":"        config \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_ca12f158","line":23,"updated":"2019-09-10 18:13:20.000000000","message":"protip: @mock.patch(\"psutil.Process.cpu_affinity\", return_value\u003d[0, 1, 2, 3])","commit_id":"e98306aa452aae2f9ce7f403297f29272c9bfc53"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"01634a39d47447e72570302cad557ffce7db4986","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class TestPodmanBuilder(base.TestBaseBuilder):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @mock.patch(\"psutil.Process.cpu_affinity\")"},{"line_number":24,"context_line":"    def test_cont_run_args(self, mock_cpu):"},{"line_number":25,"context_line":"        mock_cpu.return_value \u003d [0, 1, 2, 3]"},{"line_number":26,"context_line":"        config \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_8a1b9919","line":23,"in_reply_to":"5faad753_ca12f158","updated":"2019-09-10 18:33:06.000000000","message":"Done","commit_id":"e98306aa452aae2f9ce7f403297f29272c9bfc53"}],"paunch/tests/test_utils_common.py":[{"author":{"_account_id":23618,"name":"Christophe Fontaine","email":"cfontain@redhat.com","username":"christophefontaine"},"change_message_id":"42a9ec22e4f8c34421f133914874c7230605a0d7","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    @mock.patch(\"psutil.Process.cpu_affinity\", return_value\u003d[0, 1, 2, 3])"},{"line_number":25,"context_line":"    def test_get_cpus_allowed_list(self, mock_cpu):"},{"line_number":26,"context_line":"        expected_list \u003d \u00270-3\u0027"},{"line_number":27,"context_line":"        actual_list \u003d common.get_cpus_allowed_list()"},{"line_number":28,"context_line":"        self.assertEqual(actual_list, expected_list)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch(\"psutil.cpu_count\", return_value\u003d4)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5faad753_df6dba04","line":27,"updated":"2019-09-11 17:10:56.000000000","message":"common.get_cpus_allowed_list() will return \u00270,1,2,3\u0027","commit_id":"7342a2f9ca1fb11bfd2d1ef908dd9c696bbc16ae"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"40fba31e240d41661fd1027f2289c5e0a1cd6a5f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    @mock.patch(\"psutil.Process.cpu_affinity\", return_value\u003d[0, 1, 2, 3])"},{"line_number":25,"context_line":"    def test_get_cpus_allowed_list(self, mock_cpu):"},{"line_number":26,"context_line":"        expected_list \u003d \u00270-3\u0027"},{"line_number":27,"context_line":"        actual_list \u003d common.get_cpus_allowed_list()"},{"line_number":28,"context_line":"        self.assertEqual(actual_list, expected_list)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @mock.patch(\"psutil.cpu_count\", return_value\u003d4)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5faad753_1f8ef12d","line":27,"in_reply_to":"5faad753_df6dba04","updated":"2019-09-11 17:30:38.000000000","message":"Done","commit_id":"7342a2f9ca1fb11bfd2d1ef908dd9c696bbc16ae"}],"paunch/utils/common.py":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"8cd9fad375de2c87038c7002a6a1efd5a2131565","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d psutil.Process().cpu_affinity()"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_2a25c5ab","line":76,"updated":"2019-09-10 18:15:26.000000000","message":"I don\u0027t think this is right either, because what if it\u0027s [0, 1, 7, 8]","commit_id":"e98306aa452aae2f9ce7f403297f29272c9bfc53"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"1cd3d48d47e55f714556d837ffd80ee1a7d747eb","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d psutil.Process().cpu_affinity()"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5faad753_6a63bdb2","line":76,"in_reply_to":"5faad753_2a25c5ab","updated":"2019-09-10 18:29:05.000000000","message":"https://www.rosettacode.org/wiki/Range_extraction#Python","commit_id":"e98306aa452aae2f9ce7f403297f29272c9bfc53"},{"author":{"_account_id":23618,"name":"Christophe Fontaine","email":"cfontain@redhat.com","username":"christophefontaine"},"change_message_id":"04ee44888040b9f10db32321ab53f40339c72e9c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d psutil.Process().cpu_affinity()"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_d4728ee3","line":76,"updated":"2019-09-11 08:52:30.000000000","message":"cpu_affinity can be a list of independent CPUS \"0,12\" as well as a range of cpus, or a combination of both, such as \"0-3,12-15\"\n\nYet, for a range, psutil.Process().cpu_affinity() returns a complete list of allowed cpus:\nFor instance:\n\n# taskset -c 0-3,12-15 python\n\u003e\u003e\u003e import psutil\n\u003e\u003e\u003e psutil.Process().cpu_affinity()\n[0, 1, 2, 3, 12, 13, 14, 15]\n\nSo, we can return the cpu_affinity \"as-is\", after a string transformation\ncpu_affinity \u003d \u0027,\u0027.join([str(c) for c in psutil.Process().cpu_affinity()])\nwhich will return \u00270,1,2,3,12,13,14,15\u0027","commit_id":"a735258af41f9aebd591ed98a3929b8f0ea649d0"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"680af6f3ed55f37e4bd2be35f784f45c181a2289","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d psutil.Process().cpu_affinity()"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"}],"source_content_type":"text/x-python","patch_set":3,"id":"5faad753_7fa84676","line":76,"in_reply_to":"5faad753_d4728ee3","updated":"2019-09-11 16:59:59.000000000","message":"Done","commit_id":"a735258af41f9aebd591ed98a3929b8f0ea649d0"},{"author":{"_account_id":23618,"name":"Christophe Fontaine","email":"cfontain@redhat.com","username":"christophefontaine"},"change_message_id":"42a9ec22e4f8c34421f133914874c7230605a0d7","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d \u0027,\u0027.join([str(c) for c in psutil.Process().cpu_affinity()])"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def get_all_cpus(**args):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5faad753_ffed168b","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":61},"updated":"2019-09-11 17:10:56.000000000","message":"shouldn\u0027t we return \u0027cpu_affinity\u0027 directly ?","commit_id":"7342a2f9ca1fb11bfd2d1ef908dd9c696bbc16ae"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"40fba31e240d41661fd1027f2289c5e0a1cd6a5f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    :return: Value for Cpus_allowed, e.g. \u00270-3\u0027"},{"line_number":74,"context_line":"    \"\"\""},{"line_number":75,"context_line":"    cpu_affinity \u003d \u0027,\u0027.join([str(c) for c in psutil.Process().cpu_affinity()])"},{"line_number":76,"context_line":"    return str(cpu_affinity[0]) + \u0027-\u0027 + str(cpu_affinity[-1])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"def get_all_cpus(**args):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5faad753_bfab1d87","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":61},"in_reply_to":"5faad753_ffed168b","updated":"2019-09-11 17:30:38.000000000","message":"yes, I missed that","commit_id":"7342a2f9ca1fb11bfd2d1ef908dd9c696bbc16ae"}]}
