)]}'
{"masakarimonitors/hostmonitor/host_handler/handle_host.py":[{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"e537a1e5a32730ded6ca66499367c4b55518fd10","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        self.crm_xml_parser.set_crm_xml(crm_xml)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        # Check if pacemaker cluster have quorum."},{"line_number":329,"context_line":"        if self.cib_xml_parser.have_quorum() \u003d\u003d 0:"},{"line_number":330,"context_line":"            msg \u003d \"Pacemaker cluster doesn\u0027t have quorum.\""},{"line_number":331,"context_line":"            LOG.warning(\"%s\", msg)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_0a644821","line":329,"range":{"start_line":329,"start_character":11,"end_line":329,"end_character":44},"updated":"2017-11-15 07:45:57.000000000","message":"The output of crm_mon --as-xml has \u0027with_quorum\u0027 attribute in the current_dc tag(current_dc is in the summary tag).\nWe can know whether the cluster has a quorum from \u0027with_quorum\u0027.","commit_id":"dd03b3bbea979e932906fe648b73bb7b39fe9343"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"6863e6c1ab3ce7a1511f38311d06684f41a0a2de","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        self.crm_xml_parser.set_crm_xml(crm_xml)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"        # Check if pacemaker cluster have quorum."},{"line_number":329,"context_line":"        if self.cib_xml_parser.have_quorum() \u003d\u003d 0:"},{"line_number":330,"context_line":"            msg \u003d \"Pacemaker cluster doesn\u0027t have quorum.\""},{"line_number":331,"context_line":"            LOG.warning(\"%s\", msg)"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_d35b1df3","line":329,"range":{"start_line":329,"start_character":11,"end_line":329,"end_character":44},"in_reply_to":"1f485f77_0a644821","updated":"2017-11-29 04:25:55.000000000","message":"Done","commit_id":"dd03b3bbea979e932906fe648b73bb7b39fe9343"},{"author":{"_account_id":26026,"name":"Greg Waines","email":"greg.waines@windriver.com","username":"gwaines"},"change_message_id":"c0d57787a9062868f97529d2524aa38ba2bb7e99","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                    msg \u003d (\"crm_mon command output stderr: %s\") % err"},{"line_number":167,"context_line":"                    raise Exception(msg)"},{"line_number":168,"context_line":"            elif service \u003d\u003d \u0027cib\u0027:"},{"line_number":169,"context_line":"                # Execute crm_mon command."},{"line_number":170,"context_line":"                out, err \u003d utils.execute(\u0027cibadmin\u0027, \u0027--query\u0027,"},{"line_number":171,"context_line":"                                         run_as_root\u003dTrue)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa0c359_75689cf4","line":169,"range":{"start_line":169,"start_character":26,"end_line":169,"end_character":33},"updated":"2018-02-06 13:22:02.000000000","message":"cibadmin","commit_id":"c8f3d1bf24e2d52cad52e963620a359a3d3d56aa"}],"masakarimonitors/hostmonitor/host_handler/parse_crm_xml.py":[{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :returns: false on no-quorum, true if cluster has quorum."},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        return bool(self.crm_tag[0][3].get(\u0027with_quorum\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def set_crm_xml(self, crm_xml):"},{"line_number":39,"context_line":"        \"\"\"Set xml.etree.ElementTree.Element object."}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_0bfcac3c","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":58},"updated":"2017-12-01 05:48:17.000000000","message":"bool(\u0027false\u0027) returns True.\nSo you should change this code like bellow:\nreturn True if self.crm_tag[0][3].get(\u0027with_quorum\u0027) \u003d\u003d \u0027true\u0027 else False","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :returns: false on no-quorum, true if cluster has quorum."},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        return bool(self.crm_tag[0][3].get(\u0027with_quorum\u0027))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def set_crm_xml(self, crm_xml):"},{"line_number":39,"context_line":"        \"\"\"Set xml.etree.ElementTree.Element object."}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_6a32c7a9","line":36,"range":{"start_line":36,"start_character":15,"end_line":36,"end_character":58},"in_reply_to":"ff82abbf_0bfcac3c","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":26026,"name":"Greg Waines","email":"greg.waines@windriver.com","username":"gwaines"},"change_message_id":"c0d57787a9062868f97529d2524aa38ba2bb7e99","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        :returns: false on no-quorum, true if cluster has quorum."},{"line_number":35,"context_line":"        \"\"\""},{"line_number":36,"context_line":"        return True if self.crm_tag[0][3].get(\u0027with_quorum\u0027) \u003d\u003d \u0027true\u0027 \\"},{"line_number":37,"context_line":"            else False"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def set_crm_xml(self, crm_xml):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa0c359_551a407d","line":36,"range":{"start_line":36,"start_character":35,"end_line":36,"end_character":41},"updated":"2018-02-06 13:22:02.000000000","message":"any constants from xml.etree that can be used here ?\nor comment wrt indicies ?","commit_id":"c8f3d1bf24e2d52cad52e963620a359a3d3d56aa"}],"masakarimonitors/tests/unit/hostmonitor/host_handler/test_handle_host.py":[{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            \u0027crmadmin\u0027, \u0027-S\u0027, my_hostname, run_as_root\u003dTrue)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @mock.patch.object(utils, \u0027execute\u0027)"},{"line_number":287,"context_line":"    def test_get_cib_xml(self, mock_execute):"},{"line_number":288,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        obj \u003d handle_host.HandleHost()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_066261d9","line":287,"range":{"start_line":287,"start_character":8,"end_line":287,"end_character":24},"updated":"2017-12-01 05:48:17.000000000","message":"Please change method name as test_get_pacemaker_xml().","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            \u0027crmadmin\u0027, \u0027-S\u0027, my_hostname, run_as_root\u003dTrue)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @mock.patch.object(utils, \u0027execute\u0027)"},{"line_number":287,"context_line":"    def test_get_cib_xml(self, mock_execute):"},{"line_number":288,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        obj \u003d handle_host.HandleHost()"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_2a2cbf45","line":287,"range":{"start_line":287,"start_character":8,"end_line":287,"end_character":24},"in_reply_to":"ff82abbf_066261d9","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        obj \u003d handle_host.HandleHost()"},{"line_number":291,"context_line":"        ret \u003d obj._get_pacemaker_xml()"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.assertEqual(\u0027test_stdout\u0027, ret)"},{"line_number":294,"context_line":"        mock_execute.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_a6cff5ae","line":291,"range":{"start_line":291,"start_character":8,"end_line":291,"end_character":38},"updated":"2017-12-01 05:48:17.000000000","message":"Please add another test case which calls _get_pacemaker_xml(service\u003d\u0027crm\u0027).","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027\u0027)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        obj \u003d handle_host.HandleHost()"},{"line_number":291,"context_line":"        ret \u003d obj._get_pacemaker_xml()"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        self.assertEqual(\u0027test_stdout\u0027, ret)"},{"line_number":294,"context_line":"        mock_execute.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_0ade9b3e","line":291,"range":{"start_line":291,"start_character":8,"end_line":291,"end_character":38},"in_reply_to":"ff82abbf_a6cff5ae","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            \u0027cibadmin\u0027, \u0027--query\u0027, run_as_root\u003dTrue)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @mock.patch.object(utils, \u0027execute\u0027)"},{"line_number":298,"context_line":"    def test_get_cib_xml_output_stderr(self, mock_execute):"},{"line_number":299,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027test_stderr\u0027)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        obj \u003d handle_host.HandleHost()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_a6a855db","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":38},"updated":"2017-12-01 05:48:17.000000000","message":"Please change method name as test_get_pacemaker_xml_output_stderr().","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":295,"context_line":"            \u0027cibadmin\u0027, \u0027--query\u0027, run_as_root\u003dTrue)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    @mock.patch.object(utils, \u0027execute\u0027)"},{"line_number":298,"context_line":"    def test_get_cib_xml_output_stderr(self, mock_execute):"},{"line_number":299,"context_line":"        mock_execute.return_value \u003d (\u0027test_stdout\u0027, \u0027test_stderr\u0027)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        obj \u003d handle_host.HandleHost()"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_ca22f352","line":298,"range":{"start_line":298,"start_character":8,"end_line":298,"end_character":38},"in_reply_to":"ff82abbf_a6a855db","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":582,"context_line":"    @mock.patch.object(parse_cib_xml.ParseCibXml, \u0027set_cib_xml\u0027)"},{"line_number":583,"context_line":"    @mock.patch.object(parse_crm_xml.ParseCrmXml, \u0027set_crm_xml\u0027)"},{"line_number":584,"context_line":"    @mock.patch.object(handle_host.HandleHost, \u0027_get_pacemaker_xml\u0027)"},{"line_number":585,"context_line":"    def test_check_host_status_by_cibadmin("},{"line_number":586,"context_line":"        self, mock_get_pm_xml, mock_set_cib_xml, mock_set_crm_xml,"},{"line_number":587,"context_line":"            mock_have_quorum, mock_get_nodes_tag_list,"},{"line_number":588,"context_line":"            mock_check_if_status_changed):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_c68d592b","line":585,"range":{"start_line":585,"start_character":12,"end_line":585,"end_character":42},"updated":"2017-12-01 05:48:17.000000000","message":"Please \u0027%s/_check_host_status_by_cibadmin/_check_host_status/g\u0027 on the whole.","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":582,"context_line":"    @mock.patch.object(parse_cib_xml.ParseCibXml, \u0027set_cib_xml\u0027)"},{"line_number":583,"context_line":"    @mock.patch.object(parse_crm_xml.ParseCrmXml, \u0027set_crm_xml\u0027)"},{"line_number":584,"context_line":"    @mock.patch.object(handle_host.HandleHost, \u0027_get_pacemaker_xml\u0027)"},{"line_number":585,"context_line":"    def test_check_host_status_by_cibadmin("},{"line_number":586,"context_line":"        self, mock_get_pm_xml, mock_set_cib_xml, mock_set_crm_xml,"},{"line_number":587,"context_line":"            mock_have_quorum, mock_get_nodes_tag_list,"},{"line_number":588,"context_line":"            mock_check_if_status_changed):"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_8a1ceb12","line":585,"range":{"start_line":585,"start_character":12,"end_line":585,"end_character":42},"in_reply_to":"ff82abbf_c68d592b","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"}],"masakarimonitors/tests/unit/hostmonitor/host_handler/test_parse_crm_xml.py":[{"author":{"_account_id":23226,"name":"takahara.kengo","email":"takahara-kn@njk.co.jp","username":"takahara.kengo"},"change_message_id":"ae14a597ee5943e2a94dd2129b0bf1d44742017d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"CRM_TAG \u003d ElementTree.fromstring(CRM_XML)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"class TestParseCrmXml(testtools.TestCase):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def setUp(self):"},{"line_number":148,"context_line":"        super(TestParseCrmXml, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_e6c17de6","line":145,"range":{"start_line":145,"start_character":6,"end_line":145,"end_character":21},"updated":"2017-12-01 05:48:17.000000000","message":"Would you be able to add test cases of get_nodes_tag_list()?","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7a76a3dd67fe66782a3c2c3823db16243c447a0b","unresolved":false,"context_lines":[{"line_number":142,"context_line":"CRM_TAG \u003d ElementTree.fromstring(CRM_XML)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"class TestParseCrmXml(testtools.TestCase):"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def setUp(self):"},{"line_number":148,"context_line":"        super(TestParseCrmXml, self).setUp()"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_3e35e4f7","line":145,"range":{"start_line":145,"start_character":6,"end_line":145,"end_character":21},"in_reply_to":"ff82abbf_e6c17de6","updated":"2017-12-06 09:36:57.000000000","message":"Done","commit_id":"d345d19e32e9ee816da111af2779a4891b15a821"}]}
