)]}'
{"watcher_tempest_plugin/tests/api/admin/base.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                self.assertIn(key, actual)"},{"line_number":98,"context_line":"                self.assertEqual(value, actual[key])"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @classmethod"},{"line_number":101,"context_line":"    def wait_for(cls, condition, timeout\u003d30):"},{"line_number":102,"context_line":"        start_time \u003d time.time()"},{"line_number":103,"context_line":"        while time.time() - start_time \u003c timeout:"},{"line_number":104,"context_line":"            if condition():"},{"line_number":105,"context_line":"                break"},{"line_number":106,"context_line":"            time.sleep(.5)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    # ### AUDIT TEMPLATES ### #"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_c3f3209d","line":106,"range":{"start_line":100,"start_character":0,"end_line":106,"end_character":26},"updated":"2016-01-22 06:41:49.000000000","message":"Use tempest.test.call_until_true() instead","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"}],"watcher_tempest_plugin/tests/api/admin/test_action_plan.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    def has_audit_succeeded(self, audit_uuid):"},{"line_number":29,"context_line":"        has_succeeded \u003d False"},{"line_number":30,"context_line":"        _, audit \u003d self.client.show_audit(audit_uuid)"},{"line_number":31,"context_line":"        if audit.get(\u0027state\u0027) \u003d\u003d \u0027SUCCEEDED\u0027:"},{"line_number":32,"context_line":"            has_succeeded \u003d True"},{"line_number":33,"context_line":"        return has_succeeded"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def has_action_plan_finished(self, action_plan_uuid):"},{"line_number":36,"context_line":"        has_succeeded \u003d False"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e372e448","line":33,"range":{"start_line":31,"start_character":8,"end_line":33,"end_character":28},"updated":"2016-01-22 06:41:49.000000000","message":"return audit.get(\u0027state\u0027) \u003d\u003d \u0027SUCCEEDED\u0027","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def has_action_plan_finished(self, action_plan_uuid):"},{"line_number":36,"context_line":"        has_succeeded \u003d False"},{"line_number":37,"context_line":"        _, action_plan \u003d self.client.show_action_plan(action_plan_uuid)"},{"line_number":38,"context_line":"        if action_plan.get(\u0027state\u0027) in (\u0027FAILED\u0027, \u0027SUCCEEDED\u0027, \u0027CANCELLED\u0027):"},{"line_number":39,"context_line":"            has_succeeded \u003d True"},{"line_number":40,"context_line":"        return has_succeeded"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":43,"context_line":"    def test_create_action_plan(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e3a9847c","line":40,"range":{"start_line":38,"start_character":8,"end_line":40,"end_character":28},"updated":"2016-01-22 06:41:49.000000000","message":"return action_plan.get(\u0027state\u0027) in (\u0027FAILED\u0027, \u0027SUCCEEDED\u0027, \u0027CANCELLED\u0027)","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        _, audit_template \u003d self.create_audit_template()"},{"line_number":45,"context_line":"        _, audit \u003d self.create_audit(audit_template[\u0027uuid\u0027])"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        self.wait_for("},{"line_number":48,"context_line":"            lambda uuid\u003daudit[\u0027uuid\u0027]: self.has_audit_succeeded(uuid)"},{"line_number":49,"context_line":"        )"},{"line_number":50,"context_line":"        _, action_plans \u003d self.client.list_action_plan_by_audit(audit[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_034138a9","line":47,"updated":"2016-01-22 06:41:49.000000000","message":"What if the audit never gets marked as succeeded?  The test should probably fail.","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        _, audit_template \u003d self.create_audit_template()"},{"line_number":61,"context_line":"        _, audit \u003d self.create_audit(audit_template[\u0027uuid\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        self.wait_for("},{"line_number":64,"context_line":"            lambda uuid\u003daudit[\u0027uuid\u0027]: self.has_audit_succeeded(uuid)"},{"line_number":65,"context_line":"        )"},{"line_number":66,"context_line":"        _, action_plans \u003d self.client.list_action_plan_by_audit(audit[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_c34a40c5","line":63,"updated":"2016-01-22 06:41:49.000000000","message":"Ditto","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        _, audit_template \u003d self.create_audit_template()"},{"line_number":79,"context_line":"        _, audit \u003d self.create_audit(audit_template[\u0027uuid\u0027])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.wait_for("},{"line_number":82,"context_line":"            lambda uuid\u003daudit[\u0027uuid\u0027]: self.has_audit_succeeded(uuid)"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":"        _, action_plans \u003d self.client.list_action_plan_by_audit(audit[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_430df08e","line":81,"updated":"2016-01-22 06:41:49.000000000","message":"Ditto","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            patch\u003d[{\u0027path\u0027: \u0027/state\u0027, \u0027op\u0027: \u0027replace\u0027, \u0027value\u0027: \u0027STARTING\u0027}]"},{"line_number":93,"context_line":"        )"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        def has_finished(action_plan_uuid):"},{"line_number":96,"context_line":"            return self.has_action_plan_finished(action_plan_uuid)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        self.wait_for(lambda uuid\u003daction_plan[\u0027uuid\u0027]: has_finished(uuid))"},{"line_number":99,"context_line":"        _, finished_ap \u003d self.client.show_action_plan(action_plan[\u0027uuid\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self.assertIn(updated_ap[\u0027state\u0027], (\u0027STARTING\u0027, \u0027ONGOING\u0027))"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e373c413","line":98,"range":{"start_line":95,"start_character":8,"end_line":98,"end_character":74},"updated":"2016-01-22 06:41:49.000000000","message":"What\u0027s the point of the has_finished method?  Why not just pass in self.has_action_plan_finished(uuid)?\n\nAlso, if has_action_plan_finished times out (or returns False), then we should probably go ahead and fail the test?","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        self.wait_for(lambda uuid\u003daction_plan[\u0027uuid\u0027]: has_finished(uuid))"},{"line_number":99,"context_line":"        _, finished_ap \u003d self.client.show_action_plan(action_plan[\u0027uuid\u0027])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        self.assertIn(updated_ap[\u0027state\u0027], (\u0027STARTING\u0027, \u0027ONGOING\u0027))"},{"line_number":102,"context_line":"        self.assertEqual(finished_ap[\u0027state\u0027], \u0027SUCCEEDED\u0027)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_63d594b7","line":101,"updated":"2016-01-22 06:41:49.000000000","message":"Shouldn\u0027t this be immediately after line 90?","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def has_audit_succeeded(cls, audit_uuid):"},{"line_number":110,"context_line":"        has_succeeded \u003d False"},{"line_number":111,"context_line":"        _, audit \u003d cls.client.show_audit(audit_uuid)"},{"line_number":112,"context_line":"        if audit.get(\u0027state\u0027) \u003d\u003d \u0027SUCCEEDED\u0027:"},{"line_number":113,"context_line":"            has_succeeded \u003d True"},{"line_number":114,"context_line":"        return has_succeeded"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @classmethod"},{"line_number":117,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a3670c24","line":114,"range":{"start_line":112,"start_character":8,"end_line":114,"end_character":28},"updated":"2016-01-22 06:41:49.000000000","message":"return audit.get(\u0027state\u0027) \u003d\u003d \u0027SUCCEEDED\u0027\n\nand / or combine this with the previous definition of the same method.  Since it\u0027s a class method and it\u0027s duplicated, might make sense to let it just be a util method for both classes?","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"7016182e8cc7e45c9e253e140274172304cda09d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        _, cls.audit_template \u003d cls.create_audit_template()"},{"line_number":120,"context_line":"        _, cls.audit \u003d cls.create_audit(cls.audit_template[\u0027uuid\u0027])"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        cls.wait_for("},{"line_number":123,"context_line":"            lambda uuid\u003dcls.audit[\u0027uuid\u0027]: cls.has_audit_succeeded(uuid)"},{"line_number":124,"context_line":"        )"},{"line_number":125,"context_line":"        _, action_plans \u003d cls.client.list_action_plan_by_audit("}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_436e5002","line":122,"updated":"2016-01-22 06:41:49.000000000","message":"Ditto","commit_id":"90d94016bb9fedd9a70e87651d84322f3358a81e"}]}
