)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"d5213f8368e0115273834e0297341e4780f0b95c","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Yang Lu \u003cyang.lu@windriver.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-07-25 13:06:23 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Report Tool: Log analyzer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the event of an issue, StarlingX supports a ‘collect’ tool that can"},{"line_number":10,"context_line":"be run to gather logs and configuration data from one or many hosts."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"d855fa9c_8e8eb2bd","line":7,"range":{"start_line":7,"start_character":17,"end_line":7,"end_character":25},"updated":"2022-07-26 16:18:01.000000000","message":"Is this an analyzer ? It does not really analyze\nI see it more as a Log Event Report tool.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yang Lu \u003cyang.lu@windriver.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-07-25 13:06:23 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Report Tool: Log analyzer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the event of an issue, StarlingX supports a ‘collect’ tool that can"},{"line_number":10,"context_line":"be run to gather logs and configuration data from one or many hosts."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"210e8af9_803833d6","line":7,"range":{"start_line":7,"start_character":17,"end_line":7,"end_character":25},"in_reply_to":"d855fa9c_8e8eb2bd","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"d5213f8368e0115273834e0297341e4780f0b95c","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Report Tool: Log analyzer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the event of an issue, StarlingX supports a ‘collect’ tool that can"},{"line_number":10,"context_line":"be run to gather logs and configuration data from one or many hosts."},{"line_number":11,"context_line":"This tool creates a ‘collect’ tarball that is copied off the system"},{"line_number":12,"context_line":"and used to debug and root cause the reported problem."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The problem is that triaging issues from a collect tarball is tedious"},{"line_number":15,"context_line":"and time consuming. The process involves manually opening log files"},{"line_number":16,"context_line":"and looking for log events that may be relevant to the event being"},{"line_number":17,"context_line":"investigated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Report Tool will assist with log analysis and generate various reports."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"034bfafa_99040c66","line":17,"range":{"start_line":9,"start_character":0,"end_line":17,"end_character":13},"updated":"2022-07-26 16:18:01.000000000","message":"The commit message should describe the features of the tool that is being reviewed rather than the reason the tool was developed.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Report Tool: Log analyzer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the event of an issue, StarlingX supports a ‘collect’ tool that can"},{"line_number":10,"context_line":"be run to gather logs and configuration data from one or many hosts."},{"line_number":11,"context_line":"This tool creates a ‘collect’ tarball that is copied off the system"},{"line_number":12,"context_line":"and used to debug and root cause the reported problem."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"The problem is that triaging issues from a collect tarball is tedious"},{"line_number":15,"context_line":"and time consuming. The process involves manually opening log files"},{"line_number":16,"context_line":"and looking for log events that may be relevant to the event being"},{"line_number":17,"context_line":"investigated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Report Tool will assist with log analysis and generate various reports."},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"850af2d3_a9c2c9a7","line":17,"range":{"start_line":9,"start_character":0,"end_line":17,"end_character":13},"in_reply_to":"034bfafa_99040c66","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":17,"context_line":"investigated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Report Tool will assist with log analysis and generate various reports."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Tests:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"PASS: Verify substring algorithm is working"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"aac19b3e_2544078d","line":20,"updated":"2022-07-28 21:30:09.000000000","message":"it would be helpful to have a doc/README file showing example usage and output","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"investigated."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Report Tool will assist with log analysis and generate various reports."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Tests:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"PASS: Verify substring algorithm is working"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"2a81bef0_36f7c5f6","line":20,"in_reply_to":"aac19b3e_2544078d","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"d5213f8368e0115273834e0297341e4780f0b95c","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Tests:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"PASS: Verify substring algorithm is working"},{"line_number":24,"context_line":"PASS: Verify alarm algorithm is working"},{"line_number":25,"context_line":"PASS: Verify the tool works on different collect bundles"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Story: 2010166"},{"line_number":28,"context_line":"Task: 45841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"6cc92ed5_07d560c3","line":25,"range":{"start_line":23,"start_character":6,"end_line":25,"end_character":56},"updated":"2022-07-26 16:18:01.000000000","message":"I would expect there to be more feature level test cases. What about\n - context sensitive help\n - design partitioning and code structure\n - a list of function unit tests I know you have executed\n \n I would expect to see a lengthy list of test cases that map back to some of the features that should be described above.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Tests:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"PASS: Verify substring algorithm is working"},{"line_number":24,"context_line":"PASS: Verify alarm algorithm is working"},{"line_number":25,"context_line":"PASS: Verify the tool works on different collect bundles"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Story: 2010166"},{"line_number":28,"context_line":"Task: 45841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"96068a30_76cb88d6","line":25,"range":{"start_line":23,"start_character":6,"end_line":25,"end_character":56},"in_reply_to":"6cc92ed5_07d560c3","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"6310450460a83dc4be5390c6fb605104dfa73ad4","unresolved":true,"context_lines":[{"line_number":33,"context_line":"PASS: Verify running algorithms in command line is working"},{"line_number":34,"context_line":"PASS: Verify plugin file verification is working"},{"line_number":35,"context_line":"PASS: Verify plugins do not take too long to run"},{"line_number":36,"context_line":"PASS: Verify report logging is working"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Story: 2010166"},{"line_number":39,"context_line":"Task: 45841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9a961ea7_b28ee209","line":36,"updated":"2022-08-10 20:50:45.000000000","message":"criteria for \u0027working\u0027 should be more specific","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d4410141b5b76d87fc4781768a53bc5f72589448","unresolved":false,"context_lines":[{"line_number":33,"context_line":"PASS: Verify running algorithms in command line is working"},{"line_number":34,"context_line":"PASS: Verify plugin file verification is working"},{"line_number":35,"context_line":"PASS: Verify plugins do not take too long to run"},{"line_number":36,"context_line":"PASS: Verify report logging is working"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Story: 2010166"},{"line_number":39,"context_line":"Task: 45841"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5277ff5b_c79a9af9","line":36,"in_reply_to":"9a961ea7_b28ee209","updated":"2022-08-15 19:28:08.000000000","message":"Done","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"d5213f8368e0115273834e0297341e4780f0b95c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"82b53d22_7792c108","updated":"2022-07-26 16:18:01.000000000","message":"Each source file needs a copywrite notice and a header that describes what it does.\nSee other source files in the git for copywrite example.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"e9d7dce80ccdfc725a80abbd005af0cff9e635e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4b6c1d3e_09d8cfc2","updated":"2022-09-01 14:40:45.000000000","message":"This update doesn\u0027t actually include the tool in the collect package for either Debian nor CentOS.\n\nI\u0027ll allow this update to merge and create a US that packages it.","commit_id":"f7f3c59410f9152fcc0a58f762ad3ad7003a9f15"}],"tools/collector/report/ExecutionEngine.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"import gzip\r"},{"line_number":2,"context_line":"import re\r"},{"line_number":3,"context_line":"import subprocess\r"},{"line_number":4,"context_line":"import os\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"dc344964_160f99f4","line":1,"updated":"2022-07-28 21:30:09.000000000","message":"nit: recommend alphabetical ordering of imports (should\u0027ve been a tox enforcement)","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import gzip\r"},{"line_number":2,"context_line":"import re\r"},{"line_number":3,"context_line":"import subprocess\r"},{"line_number":4,"context_line":"import os\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"97941bbd_af711c60","line":1,"in_reply_to":"dc344964_160f99f4","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":15,"context_line":"            database_path \u003d os.path.join(folder, \"var\", \"extra\", \"database\")\r"},{"line_number":16,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":17,"context_line":"\r"},{"line_number":18,"context_line":"            if os.path.exists(database_path) and os.listdir(database_path):\r"},{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"e0ada8fb_58600d33","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":74},"updated":"2022-07-28 21:30:09.000000000","message":"could this be replaced by os.path.isdir() ?","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"187deb9ac52fdaa05b8bf2af13b0a83a7f773681","unresolved":false,"context_lines":[{"line_number":15,"context_line":"            database_path \u003d os.path.join(folder, \"var\", \"extra\", \"database\")\r"},{"line_number":16,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":17,"context_line":"\r"},{"line_number":18,"context_line":"            if os.path.exists(database_path) and os.listdir(database_path):\r"},{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"0009b9ea_a5511cef","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":74},"in_reply_to":"71fe7955_eef593a6","updated":"2022-08-03 14:14:30.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":true,"context_lines":[{"line_number":15,"context_line":"            database_path \u003d os.path.join(folder, \"var\", \"extra\", \"database\")\r"},{"line_number":16,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":17,"context_line":"\r"},{"line_number":18,"context_line":"            if os.path.exists(database_path) and os.listdir(database_path):\r"},{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"fd1fc4d9_036b8382","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":74},"in_reply_to":"e0ada8fb_58600d33","updated":"2022-07-29 20:49:51.000000000","message":"I think os.path.isdir() returns True if the directory is empty. I want to return False if the directory exists but is empty.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"f37a9538e74b50fff14f352bf126c02b52968c2e","unresolved":true,"context_lines":[{"line_number":15,"context_line":"            database_path \u003d os.path.join(folder, \"var\", \"extra\", \"database\")\r"},{"line_number":16,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":17,"context_line":"\r"},{"line_number":18,"context_line":"            if os.path.exists(database_path) and os.listdir(database_path):\r"},{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"71fe7955_eef593a6","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":74},"in_reply_to":"fd1fc4d9_036b8382","updated":"2022-07-29 21:24:36.000000000","message":"Sorry John, I think I know what you mean now. I should actually change os.path.exists() with os.path.isdir() in case there is a file with the same name as the directory.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"},{"line_number":22,"context_line":"                hostname, subfunction \u003d self.__extract_subfunction(host_info_path)\r"},{"line_number":23,"context_line":"                if \"controller\" in subfunction:\r"},{"line_number":24,"context_line":"                    self.hosts[\"controllers\"][hostname] \u003d folder\r"},{"line_number":25,"context_line":"                elif \"worker\" in subfunction:\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"0557b0c6_a4511b60","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":47},"updated":"2022-07-28 21:30:09.000000000","message":"the convention has been a single \u0027_\u0027 for private methods","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":20,"context_line":"\r"},{"line_number":21,"context_line":"            if os.path.exists(host_info_path):\r"},{"line_number":22,"context_line":"                hostname, subfunction \u003d self.__extract_subfunction(host_info_path)\r"},{"line_number":23,"context_line":"                if \"controller\" in subfunction:\r"},{"line_number":24,"context_line":"                    self.hosts[\"controllers\"][hostname] \u003d folder\r"},{"line_number":25,"context_line":"                elif \"worker\" in subfunction:\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"8cad949d_52e60a47","line":22,"range":{"start_line":22,"start_character":45,"end_line":22,"end_character":47},"in_reply_to":"0557b0c6_a4511b60","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                            for line in events:\r"},{"line_number":86,"context_line":"                                file.write(line)\r"},{"line_number":87,"context_line":"            else:\r"},{"line_number":88,"context_line":"                if plugin.state[\"algorithm\"] \u003d\u003d \"alarm\":\r"},{"line_number":89,"context_line":"                    alarms, logs \u003d self.alarm(\r"},{"line_number":90,"context_line":"                        plugin.state[\"alarm_ids\"], plugin.state[\"entity_ids\"]\r"},{"line_number":91,"context_line":"                    )\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"6001a1ac_d1ea42b0","line":88,"range":{"start_line":88,"start_character":48,"end_line":88,"end_character":55},"updated":"2022-07-28 21:30:09.000000000","message":"recommend the known algorithm be defined as constants","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                            for line in events:\r"},{"line_number":86,"context_line":"                                file.write(line)\r"},{"line_number":87,"context_line":"            else:\r"},{"line_number":88,"context_line":"                if plugin.state[\"algorithm\"] \u003d\u003d \"alarm\":\r"},{"line_number":89,"context_line":"                    alarms, logs \u003d self.alarm(\r"},{"line_number":90,"context_line":"                        plugin.state[\"alarm_ids\"], plugin.state[\"entity_ids\"]\r"},{"line_number":91,"context_line":"                    )\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"4c75319f_7422751b","line":88,"range":{"start_line":88,"start_character":48,"end_line":88,"end_character":55},"in_reply_to":"6001a1ac_d1ea42b0","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"5c1a59c767d294c713af8d2e7cd6b85c0e55ee3a","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                elif start and line \u003d\u003d \"\\\\.\\n\":\r"},{"line_number":135,"context_line":"                    break\r"},{"line_number":136,"context_line":"                elif start:\r"},{"line_number":137,"context_line":"                    # entry indexes: 5 \u003d alarm id, 6 \u003d action (set,clear,log)\r"},{"line_number":138,"context_line":"                    # 8 \u003d entity id, 9 \u003d alarm date, 10 \u003d severity\r"},{"line_number":139,"context_line":"                    entry \u003d re.split(r\"\\t\", line)\r"},{"line_number":140,"context_line":"                    entry_date \u003d entry[9].replace(\r"},{"line_number":141,"context_line":"                        \" \", \"T\"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"a4c0e9b8_685b0241","line":138,"range":{"start_line":137,"start_character":20,"end_line":138,"end_character":66},"updated":"2022-07-26 17:47:38.000000000","message":"Suggest to create constant definitions for these and use them in the code.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                elif start and line \u003d\u003d \"\\\\.\\n\":\r"},{"line_number":135,"context_line":"                    break\r"},{"line_number":136,"context_line":"                elif start:\r"},{"line_number":137,"context_line":"                    # entry indexes: 5 \u003d alarm id, 6 \u003d action (set,clear,log)\r"},{"line_number":138,"context_line":"                    # 8 \u003d entity id, 9 \u003d alarm date, 10 \u003d severity\r"},{"line_number":139,"context_line":"                    entry \u003d re.split(r\"\\t\", line)\r"},{"line_number":140,"context_line":"                    entry_date \u003d entry[9].replace(\r"},{"line_number":141,"context_line":"                        \" \", \"T\"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"fbf3a6d6_7637c753","line":138,"range":{"start_line":137,"start_character":20,"end_line":138,"end_character":66},"in_reply_to":"a4c0e9b8_685b0241","updated":"2022-07-28 21:30:09.000000000","message":"concur... consider a dictionary mapping of the {\"index_name\": index, ...} so the code can be more clearly interpreted","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"187deb9ac52fdaa05b8bf2af13b0a83a7f773681","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                elif start and line \u003d\u003d \"\\\\.\\n\":\r"},{"line_number":135,"context_line":"                    break\r"},{"line_number":136,"context_line":"                elif start:\r"},{"line_number":137,"context_line":"                    # entry indexes: 5 \u003d alarm id, 6 \u003d action (set,clear,log)\r"},{"line_number":138,"context_line":"                    # 8 \u003d entity id, 9 \u003d alarm date, 10 \u003d severity\r"},{"line_number":139,"context_line":"                    entry \u003d re.split(r\"\\t\", line)\r"},{"line_number":140,"context_line":"                    entry_date \u003d entry[9].replace(\r"},{"line_number":141,"context_line":"                        \" \", \"T\"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"09392435_a37dbdea","line":138,"range":{"start_line":137,"start_character":20,"end_line":138,"end_character":66},"in_reply_to":"ab009b69_268470a6","updated":"2022-08-03 14:14:30.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":true,"context_lines":[{"line_number":134,"context_line":"                elif start and line \u003d\u003d \"\\\\.\\n\":\r"},{"line_number":135,"context_line":"                    break\r"},{"line_number":136,"context_line":"                elif start:\r"},{"line_number":137,"context_line":"                    # entry indexes: 5 \u003d alarm id, 6 \u003d action (set,clear,log)\r"},{"line_number":138,"context_line":"                    # 8 \u003d entity id, 9 \u003d alarm date, 10 \u003d severity\r"},{"line_number":139,"context_line":"                    entry \u003d re.split(r\"\\t\", line)\r"},{"line_number":140,"context_line":"                    entry_date \u003d entry[9].replace(\r"},{"line_number":141,"context_line":"                        \" \", \"T\"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ab009b69_268470a6","line":138,"range":{"start_line":137,"start_character":20,"end_line":138,"end_character":66},"in_reply_to":"fbf3a6d6_7637c753","updated":"2022-07-29 20:49:51.000000000","message":"Using a dictionary resulted in pretty long lines so I opted for constant variables instead.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"5c1a59c767d294c713af8d2e7cd6b85c0e55ee3a","unresolved":true,"context_lines":[{"line_number":241,"context_line":"            return 1\r"},{"line_number":242,"context_line":"\r"},{"line_number":243,"context_line":"        if first \u003c self.opts.start:\r"},{"line_number":244,"context_line":"            return (\r"},{"line_number":245,"context_line":"                0  # don\u0027t need to analyze older files, but continue with current file\r"},{"line_number":246,"context_line":"            )\r"},{"line_number":247,"context_line":"        elif first \u003c self.opts.end and first \u003e self.opts.start:\r"},{"line_number":248,"context_line":"            return 1  # need to analyze older files and continue with current file\r"},{"line_number":249,"context_line":"        elif first \u003e self.opts.end:\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9d161786_3d9a99a7","line":246,"range":{"start_line":244,"start_character":12,"end_line":246,"end_character":13},"updated":"2022-07-26 17:47:38.000000000","message":"Can you shorten the comment line so all this fits on one line like the others.\nCan drop \u0027need to\u0027 and \u0027but\u0027.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            return 1\r"},{"line_number":242,"context_line":"\r"},{"line_number":243,"context_line":"        if first \u003c self.opts.start:\r"},{"line_number":244,"context_line":"            return (\r"},{"line_number":245,"context_line":"                0  # don\u0027t need to analyze older files, but continue with current file\r"},{"line_number":246,"context_line":"            )\r"},{"line_number":247,"context_line":"        elif first \u003c self.opts.end and first \u003e self.opts.start:\r"},{"line_number":248,"context_line":"            return 1  # need to analyze older files and continue with current file\r"},{"line_number":249,"context_line":"        elif first \u003e self.opts.end:\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"3792fc7a_407419a8","line":246,"range":{"start_line":244,"start_character":12,"end_line":246,"end_character":13},"in_reply_to":"9d161786_3d9a99a7","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":28464,"name":"Eric MacDonald","display_name":"Eric","email":"eric.macdonald@windriver.com","username":"rocksolidmtce"},"change_message_id":"5c1a59c767d294c713af8d2e7cd6b85c0e55ee3a","unresolved":true,"context_lines":[{"line_number":267,"context_line":"                hostname_match \u003d re.match(\"^hostname \u003d\u003e (.+)\", line)\r"},{"line_number":268,"context_line":"                subfunction_match \u003d re.match(\"^subfunction \u003d\u003e (.+)\", line)\r"},{"line_number":269,"context_line":"                if subfunction_match:\r"},{"line_number":270,"context_line":"                    subfunction \u003d subfunction_match.group(1)\r"},{"line_number":271,"context_line":"                if hostname_match:\r"},{"line_number":272,"context_line":"                    hostname \u003d hostname_match.group(1)\r"},{"line_number":273,"context_line":"        return hostname, subfunction\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce1e02d6_decf8e56","line":270,"range":{"start_line":270,"start_character":58,"end_line":270,"end_character":59},"updated":"2022-07-26 17:47:38.000000000","message":"These hard coded numbers should be changes to constant definitions with names that reflect what they mean. PASS/FAIL/etc\n\nsee other cases of hard coding\u0027s above.","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                hostname_match \u003d re.match(\"^hostname \u003d\u003e (.+)\", line)\r"},{"line_number":268,"context_line":"                subfunction_match \u003d re.match(\"^subfunction \u003d\u003e (.+)\", line)\r"},{"line_number":269,"context_line":"                if subfunction_match:\r"},{"line_number":270,"context_line":"                    subfunction \u003d subfunction_match.group(1)\r"},{"line_number":271,"context_line":"                if hostname_match:\r"},{"line_number":272,"context_line":"                    hostname \u003d hostname_match.group(1)\r"},{"line_number":273,"context_line":"        return hostname, subfunction\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"9dd8cc9e_d567bc45","line":270,"range":{"start_line":270,"start_character":58,"end_line":270,"end_character":59},"in_reply_to":"ce1e02d6_decf8e56","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"}],"tools/collector/report/Plugin.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"import json"},{"line_number":2,"context_line":"import os"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"879a6721_76f4b56a","line":1,"updated":"2022-07-28 21:30:09.000000000","message":"usually python filenames in this repo are lowercase, i.e. consider plugin.py, execution_engine.py etc...","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import json"},{"line_number":2,"context_line":"import os"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"05ea6528_ea4695d6","line":1,"in_reply_to":"879a6721_76f4b56a","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a28ea60799b69bb78ed413f606b1589933414a9b","unresolved":true,"context_lines":[{"line_number":34,"context_line":"            self.state[k] \u003d v"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def extract(self, line):"},{"line_number":37,"context_line":"        data \u003d line.strip().split(\"\u003d\", 1)"},{"line_number":38,"context_line":"        data[0] \u003d data[0].replace(\" \", \"\")"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            if data[0] \u003d\u003d \"algorithm\":"}],"source_content_type":"text/x-python","patch_set":2,"id":"da598dd7_4aa55f94","line":37,"updated":"2022-07-28 21:30:09.000000000","message":"A comment for the intent of this method would be helpful","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"7972702eb99cfd5c338bdfa6c78f8f846eddc28e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            self.state[k] \u003d v"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def extract(self, line):"},{"line_number":37,"context_line":"        data \u003d line.strip().split(\"\u003d\", 1)"},{"line_number":38,"context_line":"        data[0] \u003d data[0].replace(\" \", \"\")"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            if data[0] \u003d\u003d \"algorithm\":"}],"source_content_type":"text/x-python","patch_set":2,"id":"32fd6ef0_0560689d","line":37,"in_reply_to":"da598dd7_4aa55f94","updated":"2022-07-29 20:49:51.000000000","message":"Done","commit_id":"62149f57a84bcefd51e7f670dad3e360fd47f4b3"}],"tools/collector/report/README":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"3f5d9c19a70d08121ae4e45186991ba037041a94","unresolved":true,"context_lines":[{"line_number":32,"context_line":"files\u003dvar/log/mtcAgent.log"},{"line_number":33,"context_line":"hosts\u003dcontrollers"},{"line_number":34,"context_line":"substring\u003doperation failed"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"\u003e report/tool/report.py --start 20220501 --end 20220530"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Running the command above will populate the report folder with output files."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"e4980108_55615e46","line":35,"updated":"2022-08-02 12:24:19.000000000","message":"It could be indicated that there are defaults provided by the tool (e.g. whether defaults when \u0027files\u0027 isnt provided), and so could point the \u0027report.py -h\u0027 will indicate the defaults.","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cba34e79bfb345ec52d377a32680f1ad211ced4a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"files\u003dvar/log/mtcAgent.log"},{"line_number":33,"context_line":"hosts\u003dcontrollers"},{"line_number":34,"context_line":"substring\u003doperation failed"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"\u003e report/tool/report.py --start 20220501 --end 20220530"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Running the command above will populate the report folder with output files."}],"source_content_type":"application/octet-stream","patch_set":4,"id":"280eeceb_46494d4a","line":35,"in_reply_to":"e4980108_55615e46","updated":"2022-08-02 15:15:24.000000000","message":"Done","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"3f5d9c19a70d08121ae4e45186991ba037041a94","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Running the command above will populate the report folder with output files."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The substring algorithm creates an output file for every host of the "},{"line_number":41,"context_line":"specified host type. The files will contain log events within the "},{"line_number":42,"context_line":"provided date range containing the substring \u0027operation failed\u0027"},{"line_number":43,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"ee5dc503_97d9fff5","line":40,"range":{"start_line":40,"start_character":68,"end_line":40,"end_character":69},"updated":"2022-08-02 12:24:19.000000000","message":"nit: extra space at end of line (2 other instances)","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cba34e79bfb345ec52d377a32680f1ad211ced4a","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Running the command above will populate the report folder with output files."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The substring algorithm creates an output file for every host of the "},{"line_number":41,"context_line":"specified host type. The files will contain log events within the "},{"line_number":42,"context_line":"provided date range containing the substring \u0027operation failed\u0027"},{"line_number":43,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"450fed08_7b5cf2ce","line":40,"range":{"start_line":40,"start_character":68,"end_line":40,"end_character":69},"in_reply_to":"ee5dc503_97d9fff5","updated":"2022-08-02 15:15:24.000000000","message":"Done","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"6310450460a83dc4be5390c6fb605104dfa73ad4","unresolved":true,"context_lines":[{"line_number":16,"context_line":"├── plugins         (where the plugin files will be placed)"},{"line_number":17,"context_line":"│   ├── alarm_plugin_example"},{"line_number":18,"context_line":"│   └── substring_plugin_example"},{"line_number":19,"context_line":"├── report          "},{"line_number":20,"context_line":"    └── tool      (where the tool will be placed)"},{"line_number":21,"context_line":"    └── output    (where the output files will be placed)"},{"line_number":22,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"3b692836_6fdf78e3","line":19,"range":{"start_line":19,"start_character":10,"end_line":19,"end_character":20},"updated":"2022-08-10 20:50:45.000000000","message":"nit: extra spaces","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d4410141b5b76d87fc4781768a53bc5f72589448","unresolved":false,"context_lines":[{"line_number":16,"context_line":"├── plugins         (where the plugin files will be placed)"},{"line_number":17,"context_line":"│   ├── alarm_plugin_example"},{"line_number":18,"context_line":"│   └── substring_plugin_example"},{"line_number":19,"context_line":"├── report          "},{"line_number":20,"context_line":"    └── tool      (where the tool will be placed)"},{"line_number":21,"context_line":"    └── output    (where the output files will be placed)"},{"line_number":22,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"0bcab49d_29129252","line":19,"range":{"start_line":19,"start_character":10,"end_line":19,"end_character":20},"in_reply_to":"3b692836_6fdf78e3","updated":"2022-08-15 19:28:08.000000000","message":"Done","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"6310450460a83dc4be5390c6fb605104dfa73ad4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6cbdf575_9d1f3f9e","line":61,"updated":"2022-08-10 20:50:45.000000000","message":"should also specify the location of the logs for this \u0027report\u0027 tool itself for the user to check progress or error if needed","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d4410141b5b76d87fc4781768a53bc5f72589448","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2c77a7f6_d68bcd5b","line":61,"in_reply_to":"6cbdf575_9d1f3f9e","updated":"2022-08-15 19:28:08.000000000","message":"Done","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"9a02691931177f6c33746dee45bad334829f9f06","unresolved":true,"context_lines":[{"line_number":16,"context_line":"├── plugins         (where the plugin files will be placed)"},{"line_number":17,"context_line":"│   ├── alarm_plugin_example"},{"line_number":18,"context_line":"│   └── substring_plugin_example"},{"line_number":19,"context_line":"├── report   "},{"line_number":20,"context_line":"    └── tool      (where the tool will be placed)"},{"line_number":21,"context_line":"    └── output    (where the output files will be placed)"},{"line_number":22,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"ea8edb03_bba0afe0","line":19,"range":{"start_line":19,"start_character":10,"end_line":19,"end_character":13},"updated":"2022-08-15 20:20:39.000000000","message":"nit: space","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d8ab003eafc2b58065d828518eaa9cb63d46dfba","unresolved":false,"context_lines":[{"line_number":16,"context_line":"├── plugins         (where the plugin files will be placed)"},{"line_number":17,"context_line":"│   ├── alarm_plugin_example"},{"line_number":18,"context_line":"│   └── substring_plugin_example"},{"line_number":19,"context_line":"├── report   "},{"line_number":20,"context_line":"    └── tool      (where the tool will be placed)"},{"line_number":21,"context_line":"    └── output    (where the output files will be placed)"},{"line_number":22,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":10,"id":"fb858034_c8793a72","line":19,"range":{"start_line":19,"start_character":10,"end_line":19,"end_character":13},"in_reply_to":"ea8edb03_bba0afe0","updated":"2022-08-18 20:07:14.000000000","message":"Done","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"}],"tools/collector/report/algorithms.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a83643781680f19b6f13785c7279a356996e6207","unresolved":true,"context_lines":[{"line_number":3,"context_line":"SUBSTRING \u003d \"substring\""},{"line_number":4,"context_line":"SYSTEM_INFO \u003d \"system_info\""},{"line_number":5,"context_line":"SWACT \u003d \"swact\""},{"line_number":6,"context_line":"PUPPET \u003d \"puppet\""},{"line_number":7,"context_line":"PROCESS_FAILURE \u003d \"process_failure\""}],"source_content_type":"text/x-python","patch_set":6,"id":"9e932e77_32d2e455","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":35},"updated":"2022-08-05 14:19:32.000000000","message":"consider ordering algorithms alphabetically","commit_id":"ca98ba0ccd4a6b659de206bd81428defb1c0afd7"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"2d40211813430b9681b34f2805404574db07bbf0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"SUBSTRING \u003d \"substring\""},{"line_number":4,"context_line":"SYSTEM_INFO \u003d \"system_info\""},{"line_number":5,"context_line":"SWACT \u003d \"swact\""},{"line_number":6,"context_line":"PUPPET \u003d \"puppet\""},{"line_number":7,"context_line":"PROCESS_FAILURE \u003d \"process_failure\""}],"source_content_type":"text/x-python","patch_set":6,"id":"96427850_9969e9f3","line":7,"range":{"start_line":6,"start_character":0,"end_line":7,"end_character":35},"in_reply_to":"9e932e77_32d2e455","updated":"2022-08-10 19:11:56.000000000","message":"Done","commit_id":"ca98ba0ccd4a6b659de206bd81428defb1c0afd7"}],"tools/collector/report/execution_engine.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"3f5d9c19a70d08121ae4e45186991ba037041a94","unresolved":true,"context_lines":[{"line_number":59,"context_line":"        Errors:\r"},{"line_number":60,"context_line":"            FileNotFoundError\r"},{"line_number":61,"context_line":"        \"\"\"\r"},{"line_number":62,"context_line":"        ALGORITHM_SUBSTRING \u003d \"substring\"\r"},{"line_number":63,"context_line":"        ALGORITHM_ALARM \u003d \"alarm\"\r"},{"line_number":64,"context_line":"\r"},{"line_number":65,"context_line":"        report_directory \u003d os.path.join(self.opts.directory, \"report\")\r"},{"line_number":66,"context_line":"        try:\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ea8e0cb_72fc447e","line":63,"range":{"start_line":62,"start_character":0,"end_line":63,"end_character":33},"updated":"2022-08-02 12:24:19.000000000","message":"could these constants be in common constants file that the plugin could also import?","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cba34e79bfb345ec52d377a32680f1ad211ced4a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        Errors:\r"},{"line_number":60,"context_line":"            FileNotFoundError\r"},{"line_number":61,"context_line":"        \"\"\"\r"},{"line_number":62,"context_line":"        ALGORITHM_SUBSTRING \u003d \"substring\"\r"},{"line_number":63,"context_line":"        ALGORITHM_ALARM \u003d \"alarm\"\r"},{"line_number":64,"context_line":"\r"},{"line_number":65,"context_line":"        report_directory \u003d os.path.join(self.opts.directory, \"report\")\r"},{"line_number":66,"context_line":"        try:\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"a749f204_8a04e98e","line":63,"range":{"start_line":62,"start_character":0,"end_line":63,"end_character":33},"in_reply_to":"9ea8e0cb_72fc447e","updated":"2022-08-02 15:15:24.000000000","message":"Done","commit_id":"e627f5e732cacf826cab2c84c560910ece795e93"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"a83643781680f19b6f13785c7279a356996e6207","unresolved":true,"context_lines":[{"line_number":62,"context_line":"\r"},{"line_number":63,"context_line":"        report_directory \u003d os.path.join(self.opts.directory, \"report\")\r"},{"line_number":64,"context_line":"        try:\r"},{"line_number":65,"context_line":"            shutil.rmtree(report_directory)\r"},{"line_number":66,"context_line":"            print(f\"Erased {report_directory}\")\r"},{"line_number":67,"context_line":"            os.makedirs(report_directory)\r"},{"line_number":68,"context_line":"        except FileNotFoundError:\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"cb126199_c045d563","line":65,"updated":"2022-08-05 14:19:32.000000000","message":"is it necessary to remove the report_directory and it\u0027s contents with each run?","commit_id":"ca98ba0ccd4a6b659de206bd81428defb1c0afd7"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"2d40211813430b9681b34f2805404574db07bbf0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"\r"},{"line_number":63,"context_line":"        report_directory \u003d os.path.join(self.opts.directory, \"report\")\r"},{"line_number":64,"context_line":"        try:\r"},{"line_number":65,"context_line":"            shutil.rmtree(report_directory)\r"},{"line_number":66,"context_line":"            print(f\"Erased {report_directory}\")\r"},{"line_number":67,"context_line":"            os.makedirs(report_directory)\r"},{"line_number":68,"context_line":"        except FileNotFoundError:\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"897e3046_3390c7bd","line":65,"in_reply_to":"cb126199_c045d563","updated":"2022-08-10 19:11:56.000000000","message":"Done","commit_id":"ca98ba0ccd4a6b659de206bd81428defb1c0afd7"},{"author":{"_account_id":15435,"name":"Al Bailey","email":"albailey1974@gmail.com","username":"albailey"},"change_message_id":"00f2b2cdb75ecdacf3d88fbbc7483c30e973b0a6","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    def __init__(self, opts):\r"},{"line_number":31,"context_line":"        \"\"\"Constructor for the ExecutionEngine class\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"        Paramters:\r"},{"line_number":34,"context_line":"            opts (dictionary): Options from command line\r"},{"line_number":35,"context_line":"        \"\"\"\r"},{"line_number":36,"context_line":"        self.opts \u003d opts\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"6402a18c_961f2728","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":17},"updated":"2022-08-16 16:24:34.000000000","message":"nit: Parameters","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d8ab003eafc2b58065d828518eaa9cb63d46dfba","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def __init__(self, opts):\r"},{"line_number":31,"context_line":"        \"\"\"Constructor for the ExecutionEngine class\r"},{"line_number":32,"context_line":"\r"},{"line_number":33,"context_line":"        Paramters:\r"},{"line_number":34,"context_line":"            opts (dictionary): Options from command line\r"},{"line_number":35,"context_line":"        \"\"\"\r"},{"line_number":36,"context_line":"        self.opts \u003d opts\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3c110a08_4067f7b2","line":33,"range":{"start_line":33,"start_character":8,"end_line":33,"end_character":17},"in_reply_to":"6402a18c_961f2728","updated":"2022-08-18 20:07:14.000000000","message":"Done","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":15435,"name":"Al Bailey","email":"albailey1974@gmail.com","username":"albailey"},"change_message_id":"00f2b2cdb75ecdacf3d88fbbc7483c30e973b0a6","unresolved":true,"context_lines":[{"line_number":41,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"            if os.path.isdir(database_path) and os.listdir(database_path):\r"},{"line_number":44,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":45,"context_line":"\r"},{"line_number":46,"context_line":"            if os.path.exists(host_info_path):\r"},{"line_number":47,"context_line":"                hostname, subfunction \u003d self._extract_subfunction(host_info_path)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"e2831d59_6de34f43","line":44,"range":{"start_line":44,"start_character":16,"end_line":44,"end_character":57},"updated":"2022-08-16 16:24:34.000000000","message":"As an FYI,  if the for loop (and the if block) dont find this database path,  then \nself.active_controller_directory  will be Unset,  and algorithms like \u0027alarm\u0027 and system_info   will encounter an undefined variable.\n\nYou might want either to initialize it to None, or raise an exception if its never assigned.","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d8ab003eafc2b58065d828518eaa9cb63d46dfba","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            host_info_path \u003d os.path.join(folder, \"var\", \"extra\", \"host.info\")\r"},{"line_number":42,"context_line":"\r"},{"line_number":43,"context_line":"            if os.path.isdir(database_path) and os.listdir(database_path):\r"},{"line_number":44,"context_line":"                self.active_controller_directory \u003d folder\r"},{"line_number":45,"context_line":"\r"},{"line_number":46,"context_line":"            if os.path.exists(host_info_path):\r"},{"line_number":47,"context_line":"                hostname, subfunction \u003d self._extract_subfunction(host_info_path)\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"6c7619c1_32959f95","line":44,"range":{"start_line":44,"start_character":16,"end_line":44,"end_character":57},"in_reply_to":"e2831d59_6de34f43","updated":"2022-08-18 20:07:14.000000000","message":"Done","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":15435,"name":"Al Bailey","email":"albailey1974@gmail.com","username":"albailey"},"change_message_id":"00f2b2cdb75ecdacf3d88fbbc7483c30e973b0a6","unresolved":true,"context_lines":[{"line_number":128,"context_line":"                    logger.info(\"output at \" + output)\r"},{"line_number":129,"context_line":"\r"},{"line_number":130,"context_line":"                elif plugin.state[\"algorithm\"] \u003d\u003d algorithms.PUPPET:\r"},{"line_number":131,"context_line":"                    events \u003d self.puppet()\r"},{"line_number":132,"context_line":"                    output \u003d os.path.join(output_directory, \"puppet_errors\")\r"},{"line_number":133,"context_line":"                    with open(output, \"w\") as file:\r"},{"line_number":134,"context_line":"                        for i in events:\r"},{"line_number":135,"context_line":"                            file.write(i + \"\\n\")\r"},{"line_number":136,"context_line":"                    logger.info(\"output at \" + output)\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"                elif plugin.state[\"algorithm\"] \u003d\u003d algorithms.PROCESS_FAILURE:\r"},{"line_number":139,"context_line":"                    events \u003d self.process_failure()\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a6948af_934f45ab","line":136,"range":{"start_line":131,"start_character":13,"end_line":136,"end_character":54},"updated":"2022-08-16 16:24:34.000000000","message":"You have a common coding pattern here.\nThis suggests that these lines could be revisited in the future as a utility method, taking in the variables as arguments","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d8ab003eafc2b58065d828518eaa9cb63d46dfba","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                    logger.info(\"output at \" + output)\r"},{"line_number":129,"context_line":"\r"},{"line_number":130,"context_line":"                elif plugin.state[\"algorithm\"] \u003d\u003d algorithms.PUPPET:\r"},{"line_number":131,"context_line":"                    events \u003d self.puppet()\r"},{"line_number":132,"context_line":"                    output \u003d os.path.join(output_directory, \"puppet_errors\")\r"},{"line_number":133,"context_line":"                    with open(output, \"w\") as file:\r"},{"line_number":134,"context_line":"                        for i in events:\r"},{"line_number":135,"context_line":"                            file.write(i + \"\\n\")\r"},{"line_number":136,"context_line":"                    logger.info(\"output at \" + output)\r"},{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"                elif plugin.state[\"algorithm\"] \u003d\u003d algorithms.PROCESS_FAILURE:\r"},{"line_number":139,"context_line":"                    events \u003d self.process_failure()\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"077ebd63_4a25bdea","line":136,"range":{"start_line":131,"start_character":13,"end_line":136,"end_character":54},"in_reply_to":"3a6948af_934f45ab","updated":"2022-08-18 20:07:14.000000000","message":"Done","commit_id":"0849414f8c6034dc023284c3c641499bdab039e6"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"de71b01836a3e6a829ac165488307b5a3517e41b","unresolved":true,"context_lines":[{"line_number":302,"context_line":"                raise FileNotFoundError(f\"File not found: {file}\")\r"},{"line_number":303,"context_line":"            cont \u003d True\r"},{"line_number":304,"context_line":"            # Searching through file\r"},{"line_number":305,"context_line":"            command \u003d f\"grep -Ea \\\"{\u0027|\u0027.join(s for s in substr)}\\\" {file}\"\r"},{"line_number":306,"context_line":"            status \u003d self._continue(file)\r"},{"line_number":307,"context_line":"\r"},{"line_number":308,"context_line":"            if (\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"7d767156_26f6822d","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":74},"updated":"2022-08-18 20:51:04.000000000","message":"Consider using triple quoted format for strings like this. Then you don\u0027t have to escape the double-quotes within the string.\n\nSame for line 318 below","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cf5978ab6c18c25dc7d026d3be7a91df190cad57","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                raise FileNotFoundError(f\"File not found: {file}\")\r"},{"line_number":303,"context_line":"            cont \u003d True\r"},{"line_number":304,"context_line":"            # Searching through file\r"},{"line_number":305,"context_line":"            command \u003d f\"grep -Ea \\\"{\u0027|\u0027.join(s for s in substr)}\\\" {file}\"\r"},{"line_number":306,"context_line":"            status \u003d self._continue(file)\r"},{"line_number":307,"context_line":"\r"},{"line_number":308,"context_line":"            if (\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"48bbd881_0cc641c0","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":74},"in_reply_to":"7d767156_26f6822d","updated":"2022-08-19 14:49:55.000000000","message":"Done","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"df0ba860b8b09429b942dc7c1a99ad2aaa14a61c","unresolved":true,"context_lines":[{"line_number":452,"context_line":"            \"Trigger load audit%\",\r"},{"line_number":453,"context_line":"            \"Triggered firmware audit%\",\r"},{"line_number":454,"context_line":"            \"Triggered kubernetes audit%\",\r"},{"line_number":455,"context_line":"            # Counts total of firmware and kubernetes audits, not divided by number of subclouds\r"},{"line_number":456,"context_line":"        ]\r"},{"line_number":457,"context_line":"        INDEX_MIDDLE_WORD \u003d 1\r"},{"line_number":458,"context_line":"        data \u003d []\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"0875a45a_c1c46976","line":455,"updated":"2022-08-18 20:37:31.000000000","message":"It may help to specify \u0027total \u0027 with the firmware and kubernetes output text for clarity.","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cf5978ab6c18c25dc7d026d3be7a91df190cad57","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            \"Trigger load audit%\",\r"},{"line_number":453,"context_line":"            \"Triggered firmware audit%\",\r"},{"line_number":454,"context_line":"            \"Triggered kubernetes audit%\",\r"},{"line_number":455,"context_line":"            # Counts total of firmware and kubernetes audits, not divided by number of subclouds\r"},{"line_number":456,"context_line":"        ]\r"},{"line_number":457,"context_line":"        INDEX_MIDDLE_WORD \u003d 1\r"},{"line_number":458,"context_line":"        data \u003d []\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"8a2ce134_b6a4a5e9","line":455,"in_reply_to":"0875a45a_c1c46976","updated":"2022-08-19 14:49:55.000000000","message":"Done","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"df0ba860b8b09429b942dc7c1a99ad2aaa14a61c","unresolved":true,"context_lines":[{"line_number":459,"context_line":"\r"},{"line_number":460,"context_line":"        def command(text):\r"},{"line_number":461,"context_line":"\r"},{"line_number":462,"context_line":"            return f\"\"\"lnav -R -n -c \";SELECT count(log_body) AS {text.split(\u0027 \u0027)[INDEX_MIDDLE_WORD]}_total \r"},{"line_number":463,"context_line":"                from openstack_log WHERE (log_time \u003e \\\\\"{start}\\\\\" AND not log_time \u003e \\\\\"{end}\\\\\") \r"},{"line_number":464,"context_line":"                AND log_body like \\\\\"{text}\\\\\"\" \"{audit_log_path}\" \"\"\"\r"},{"line_number":465,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"90956c16_fbc0f906","line":462,"range":{"start_line":462,"start_character":107,"end_line":462,"end_character":109},"updated":"2022-08-18 20:37:31.000000000","message":"nit: extra space (and below)","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cf5978ab6c18c25dc7d026d3be7a91df190cad57","unresolved":false,"context_lines":[{"line_number":459,"context_line":"\r"},{"line_number":460,"context_line":"        def command(text):\r"},{"line_number":461,"context_line":"\r"},{"line_number":462,"context_line":"            return f\"\"\"lnav -R -n -c \";SELECT count(log_body) AS {text.split(\u0027 \u0027)[INDEX_MIDDLE_WORD]}_total \r"},{"line_number":463,"context_line":"                from openstack_log WHERE (log_time \u003e \\\\\"{start}\\\\\" AND not log_time \u003e \\\\\"{end}\\\\\") \r"},{"line_number":464,"context_line":"                AND log_body like \\\\\"{text}\\\\\"\" \"{audit_log_path}\" \"\"\"\r"},{"line_number":465,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"abb5973f_d11040be","line":462,"range":{"start_line":462,"start_character":107,"end_line":462,"end_character":109},"in_reply_to":"90956c16_fbc0f906","updated":"2022-08-19 14:49:55.000000000","message":"Done","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":33549,"name":"Kyle MacLeod","email":"Kyle.MacLeod@windriver.com","username":"kmacleod"},"change_message_id":"de71b01836a3e6a829ac165488307b5a3517e41b","unresolved":true,"context_lines":[{"line_number":459,"context_line":"\r"},{"line_number":460,"context_line":"        def command(text):\r"},{"line_number":461,"context_line":"\r"},{"line_number":462,"context_line":"            return f\"\"\"lnav -R -n -c \";SELECT count(log_body) AS {text.split(\u0027 \u0027)[INDEX_MIDDLE_WORD]}_total \r"},{"line_number":463,"context_line":"                from openstack_log WHERE (log_time \u003e \\\\\"{start}\\\\\" AND not log_time \u003e \\\\\"{end}\\\\\") \r"},{"line_number":464,"context_line":"                AND log_body like \\\\\"{text}\\\\\"\" \"{audit_log_path}\" \"\"\"\r"},{"line_number":465,"context_line":"\r"},{"line_number":466,"context_line":"        for text in log_texts:\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"a5916be5_38e47fe0","line":463,"range":{"start_line":462,"start_character":12,"end_line":463,"end_character":100},"updated":"2022-08-18 20:51:04.000000000","message":"nit: trailing empty spaces here. You might want to terminate the strings on each line; they will be concatenated by the interpreter.","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cf5978ab6c18c25dc7d026d3be7a91df190cad57","unresolved":false,"context_lines":[{"line_number":459,"context_line":"\r"},{"line_number":460,"context_line":"        def command(text):\r"},{"line_number":461,"context_line":"\r"},{"line_number":462,"context_line":"            return f\"\"\"lnav -R -n -c \";SELECT count(log_body) AS {text.split(\u0027 \u0027)[INDEX_MIDDLE_WORD]}_total \r"},{"line_number":463,"context_line":"                from openstack_log WHERE (log_time \u003e \\\\\"{start}\\\\\" AND not log_time \u003e \\\\\"{end}\\\\\") \r"},{"line_number":464,"context_line":"                AND log_body like \\\\\"{text}\\\\\"\" \"{audit_log_path}\" \"\"\"\r"},{"line_number":465,"context_line":"\r"},{"line_number":466,"context_line":"        for text in log_texts:\r"}],"source_content_type":"text/x-python","patch_set":11,"id":"33b75a4e_fbb86f42","line":463,"range":{"start_line":462,"start_character":12,"end_line":463,"end_character":100},"in_reply_to":"a5916be5_38e47fe0","updated":"2022-08-19 14:49:55.000000000","message":"Done","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"}],"tools/collector/report/report.py":[{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"6310450460a83dc4be5390c6fb605104dfa73ad4","unresolved":true,"context_lines":[{"line_number":88,"context_line":"    \"substring\","},{"line_number":89,"context_line":"    formatter_class\u003dargparse.RawTextHelpFormatter,"},{"line_number":90,"context_line":"    help\u003d\"\"\"Searches through specified files for lines containing specified substring."},{"line_number":91,"context_line":"            There will be an output file for each host of the host type specified.\"\"\","},{"line_number":92,"context_line":"    epilog\u003d\"Plugin file example:\\n\""},{"line_number":93,"context_line":"    \"   algorithm\u003dsubstring\\n\""},{"line_number":94,"context_line":"    \"   files\u003dmtcAgent.log, sm.log\\n\""}],"source_content_type":"text/x-python","patch_set":8,"id":"052d01bc_1c5f252a","line":91,"updated":"2022-08-10 20:50:45.000000000","message":"help could also specify where the logs for this \u0027report\u0027 tool itself are located","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"d4410141b5b76d87fc4781768a53bc5f72589448","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    \"substring\","},{"line_number":89,"context_line":"    formatter_class\u003dargparse.RawTextHelpFormatter,"},{"line_number":90,"context_line":"    help\u003d\"\"\"Searches through specified files for lines containing specified substring."},{"line_number":91,"context_line":"            There will be an output file for each host of the host type specified.\"\"\","},{"line_number":92,"context_line":"    epilog\u003d\"Plugin file example:\\n\""},{"line_number":93,"context_line":"    \"   algorithm\u003dsubstring\\n\""},{"line_number":94,"context_line":"    \"   files\u003dmtcAgent.log, sm.log\\n\""}],"source_content_type":"text/x-python","patch_set":8,"id":"f240f641_97da6018","line":91,"in_reply_to":"052d01bc_1c5f252a","updated":"2022-08-15 19:28:08.000000000","message":"Done","commit_id":"7f9108c490ec26da67cd768702cf05227b1045ff"},{"author":{"_account_id":9926,"name":"John Kung","email":"john.kung@windriver.com","username":"jkung"},"change_message_id":"df0ba860b8b09429b942dc7c1a99ad2aaa14a61c","unresolved":true,"context_lines":[{"line_number":179,"context_line":"    \"audit\","},{"line_number":180,"context_line":"    formatter_class\u003dargparse.RawTextHelpFormatter,"},{"line_number":181,"context_line":"    help\u003d\"Presents information about audit events in dcmanager.\\n\""},{"line_number":182,"context_line":"    \"The rate for kubernetes and firmware audits does not divide by number of subclouds \","},{"line_number":183,"context_line":"    epilog\u003d\"Plugin file example:\\n\""},{"line_number":184,"context_line":"    \"   algorithm\u003daudit\\n\""},{"line_number":185,"context_line":"    \"   start\u003d2022-06-01 10:00:00\\n\""}],"source_content_type":"text/x-python","patch_set":11,"id":"deb41481_0c4548f5","line":182,"range":{"start_line":182,"start_character":9,"end_line":182,"end_character":14},"updated":"2022-08-18 20:37:31.000000000","message":"I assume the other is a rate (i.e. events/subcloud ?) whereas \u0027kubernetes and firmware audits\u0027 are the total?  (It may help to clarify the assumed units of measure).","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"},{"author":{"_account_id":34811,"name":"Yang Lu","email":"yang.lu@windriver.com","username":"ylu1"},"change_message_id":"cf5978ab6c18c25dc7d026d3be7a91df190cad57","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    \"audit\","},{"line_number":180,"context_line":"    formatter_class\u003dargparse.RawTextHelpFormatter,"},{"line_number":181,"context_line":"    help\u003d\"Presents information about audit events in dcmanager.\\n\""},{"line_number":182,"context_line":"    \"The rate for kubernetes and firmware audits does not divide by number of subclouds \","},{"line_number":183,"context_line":"    epilog\u003d\"Plugin file example:\\n\""},{"line_number":184,"context_line":"    \"   algorithm\u003daudit\\n\""},{"line_number":185,"context_line":"    \"   start\u003d2022-06-01 10:00:00\\n\""}],"source_content_type":"text/x-python","patch_set":11,"id":"d8b302b9_7da6dcf9","line":182,"range":{"start_line":182,"start_character":9,"end_line":182,"end_character":14},"in_reply_to":"deb41481_0c4548f5","updated":"2022-08-19 14:49:55.000000000","message":"Done","commit_id":"7aad181672fb679ed7be6b6d2426cf82d77dac59"}]}
