)]}'
{"ironic_python_agent/inspector.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"b61c91f03495fe34f9558ab343104075518eb52b","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    with tempfile.TemporaryFile() as fp:"},{"line_number":276,"context_line":"        with tarfile.open(fileobj\u003dfp, mode\u003d\u0027w:gz\u0027) as tar:"},{"line_number":277,"context_line":"            with tempfile.NamedTemporaryFile() as jrnl_fp:"},{"line_number":278,"context_line":"                if (utils.try_execute(\"journalctl \u003e \u0027%s\u0027\" % jrnl_fp.name,"},{"line_number":279,"context_line":"                                      shell\u003dTrue) is not None):"},{"line_number":280,"context_line":"                    tar.add(jrnl_fp.name, arcname\u003d\u0027journal\u0027)"},{"line_number":281,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_8910fca9","line":278,"updated":"2015-09-28 14:49:44.000000000","message":"Why have this intermediate step of putting this in another file? Could wrap stdout in a StringIO object if it\u0027s just to get the file-like object.","commit_id":"38517fa53168bbc392001f4760cf8ffacc7a2223"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"46e2f2099caaefb278e039e70e16b73e2da14bca","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    they\u0027re pretty time-consuming."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    Puts collected data as JSON under \u0027data\u0027 key."},{"line_number":297,"context_line":"    Requires \u0027hardware\u0027 python package to be installed on the ramdisk."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    :param data: mutable data that we\u0027ll send to inspector"},{"line_number":300,"context_line":"    :param failures: AccumulatedFailures object"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_6d87b3d7","line":297,"updated":"2015-09-28 15:15:31.000000000","message":"Is this already installed? I don\u0027t see it in requirements.txt","commit_id":"38517fa53168bbc392001f4760cf8ffacc7a2223"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"bc32ca1369b2bba0e238b01665f234e908e9b3eb","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            tar.addfile(tarinfo, journal)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        fp.seek(0)"},{"line_number":289,"context_line":"        data[\u0027logs\u0027] \u003d base64.b64encode(fp.getvalue())"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def collect_extra_hardware(data, failures):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_ef155c49","line":289,"updated":"2015-10-01 16:04:52.000000000","message":"If you\u0027re running a ramdisk that\u0027s been booted for a while, this could be an exceptionally large quantity of information. Are we concerned about shipping that much stuff around?","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311c0680daa9dd844039ec9c30654fc60efbb306","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            tar.addfile(tarinfo, journal)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        fp.seek(0)"},{"line_number":289,"context_line":"        data[\u0027logs\u0027] \u003d base64.b64encode(fp.getvalue())"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"def collect_extra_hardware(data, failures):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_6a47fa4b","line":289,"in_reply_to":"9a1a9d01_ef155c49","updated":"2015-10-01 16:07:37.000000000","message":"Inspection is only running on start-up, so this amount is pretty predictable. Also this plugin is not enabled by default.","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"bc32ca1369b2bba0e238b01665f234e908e9b3eb","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    they\u0027re pretty time-consuming."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    Puts collected data as JSON under \u0027data\u0027 key."},{"line_number":300,"context_line":"    Requires \u0027hardware\u0027 python package to be installed on the ramdisk in"},{"line_number":301,"context_line":"    addition to the packages in requirements.txt."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    :param data: mutable data that we\u0027ll send to inspector"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_2a03420f","line":300,"updated":"2015-10-01 16:04:52.000000000","message":"If inspector needs this, why not add it to the Dockerfile in this change, too?","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311c0680daa9dd844039ec9c30654fc60efbb306","unresolved":false,"context_lines":[{"line_number":297,"context_line":"    they\u0027re pretty time-consuming."},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    Puts collected data as JSON under \u0027data\u0027 key."},{"line_number":300,"context_line":"    Requires \u0027hardware\u0027 python package to be installed on the ramdisk in"},{"line_number":301,"context_line":"    addition to the packages in requirements.txt."},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    :param data: mutable data that we\u0027ll send to inspector"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_0a819e4d","line":300,"in_reply_to":"9a1a9d01_2a03420f","updated":"2015-10-01 16:07:37.000000000","message":"1. I\u0027m not sure this package is packaged for Debian; 2. even so, it\u0027s optional and has a lot of dependencies. Really a lot, believe me :)","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"}],"ironic_python_agent/tests/unit/test_inspector.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"46e2f2099caaefb278e039e70e16b73e2da14bca","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        self.failures \u003d utils.AccumulatedFailures()"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"    def test_no_benchmarks(self, mock_execute):"},{"line_number":406,"context_line":"        mock_execute.return_value \u003d \"[1, 2, 3]\", \"\""},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        inspector.collect_extra_hardware(self.data, None)"},{"line_number":409,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_4db74f86","line":406,"updated":"2015-09-28 15:15:31.000000000","message":"If you push another patch set, let\u0027s wrap the right hand side in parens for my sanity :P","commit_id":"38517fa53168bbc392001f4760cf8ffacc7a2223"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"46e2f2099caaefb278e039e70e16b73e2da14bca","unresolved":false,"context_lines":[{"line_number":413,"context_line":"    @mock.patch.object(utils, \u0027get_agent_params\u0027, autospec\u003dTrue)"},{"line_number":414,"context_line":"    def test_benchmarks(self, mock_params, mock_execute):"},{"line_number":415,"context_line":"        mock_params.return_value \u003d {\u0027ipa-inspection-benchmarks\u0027: \u0027cpu,mem\u0027}"},{"line_number":416,"context_line":"        mock_execute.return_value \u003d \"[1, 2, 3]\", \"\""},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        inspector.collect_extra_hardware(self.data, None)"},{"line_number":419,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_6dba5370","line":416,"updated":"2015-09-28 15:15:31.000000000","message":"Ditto","commit_id":"38517fa53168bbc392001f4760cf8ffacc7a2223"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"46e2f2099caaefb278e039e70e16b73e2da14bca","unresolved":false,"context_lines":[{"line_number":432,"context_line":"        mock_execute.assert_called_once_with(\u0027hardware-detect\u0027)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def test_parsing_failed(self, mock_execute):"},{"line_number":435,"context_line":"        mock_execute.return_value \u003d \"foobar\", \"\""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        inspector.collect_extra_hardware(self.data, self.failures)"},{"line_number":438,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a1a9d01_ad4e2b94","line":435,"updated":"2015-09-28 15:15:31.000000000","message":"Ditto","commit_id":"38517fa53168bbc392001f4760cf8ffacc7a2223"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"54a87b27be9d9dd3241284ecb758b86496b60b37","unresolved":false,"context_lines":[{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        with tarfile.open(fileobj\u003dres) as tar:"},{"line_number":381,"context_line":"            members \u003d [(m.name, m.size) for m in tar]"},{"line_number":382,"context_line":"            self.assertEqual([(\u0027journal\u0027, 16)], members)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def test_no_journal(self, mock_execute):"},{"line_number":385,"context_line":"        mock_execute.side_effect \u003d OSError()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a1a9d01_04aeb2e5","line":382,"updated":"2015-09-30 13:28:23.000000000","message":"I wouldn\u0027t be opposed to testing the contents here...","commit_id":"675dde2688a3b1fc8169902f0c1336f60d4fc104"}],"plugin-requirements.txt":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"bc32ca1369b2bba0e238b01665f234e908e9b3eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Required for \u0027extra-hardware\u0027 inspection collector"},{"line_number":2,"context_line":"hardware\u003e\u003d0.9"}],"source_content_type":"text/plain","patch_set":3,"id":"9a1a9d01_4a1c766a","line":2,"updated":"2015-10-01 16:04:52.000000000","message":"Unless this is huge, I don\u0027t see any advantage in not just installing it.","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"311c0680daa9dd844039ec9c30654fc60efbb306","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Required for \u0027extra-hardware\u0027 inspection collector"},{"line_number":2,"context_line":"hardware\u003e\u003d0.9"}],"source_content_type":"text/plain","patch_set":3,"id":"9a1a9d01_0ae8be15","line":2,"in_reply_to":"9a1a9d01_4a1c766a","updated":"2015-10-01 16:07:37.000000000","message":"It\u0027s not huge, bit it has huge dependencies, e.g. pandas and numpy, to name a few :)","commit_id":"a795e43a7c42315a58f4cb6cf22153e2a6e74ec2"}]}
