)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"- \u0027uuid\u0027 is optional and is now generated if not provided"},{"line_number":17,"context_line":"- \u0027deadline\u0027 is optional and should be a datetime"},{"line_number":18,"context_line":"- \u0027type\u0027 is a required text field"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I20f7f308cb581684880fa65ec36171b95eacca29"},{"line_number":21,"context_line":"Closes-Bug: #1533210"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1af94dfe_bf73aa14","line":19,"updated":"2016-03-16 15:11:29.000000000","message":"add also comment about WSME fix related to https://bugs.launchpad.net/wsme/+bug/1265590 (see into types.py file)","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"}],"watcher/api/controllers/v1/audit.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class AuditPostType(wtypes.Base):"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    uuid \u003d wtypes.wsattr(types.uuid, mandatory\u003dFalse)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    audit_template_uuid \u003d wtypes.wsattr(types.uuid, mandatory\u003dTrue)"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_5fb1c6e0","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":53},"updated":"2016-03-16 15:11:29.000000000","message":"There is no uuid argument in the POST request.\n\ntcpdump capture:\n \n\t0x0030:  07ba 89bf 504f 5354 202f 7631 2f61 7564  ....POST./v1/aud\n\t0x0040:  6974 7320 4854 5450 2f31 2e31 0d0a 486f  its.HTTP/1.1..Ho\n\t0x0050:  7374 3a20 3130 2e35 302e 302e 3232 333a  st:.10.50.0.223:\n\t0x0060:  3933 3232 0d0a 436f 6e74 656e 742d 4c65  9322..Content-Le\n\t0x0070:  6e67 7468 3a20 3531 0d0a 4163 6365 7074  ngth:.51..Accept\n\t0x0080:  2d45 6e63 6f64 696e 673a 2067 7a69 702c  -Encoding:.gzip,\n\t0x0090:  2064 6566 6c61 7465 0d0a 4163 6365 7074  .deflate..Accept\n\t0x00a0:  3a20 6170 706c 6963 6174 696f 6e2f 6a73  :.application/js\n\t0x00b0:  6f6e 0d0a 582d 4175 7468 2d54 6f6b 656e  on..X-Auth-Token\n\t0x00c0:  3a20 3761 3231 6336 3633 3138 3163 3432  :.7a21c663181c42\n\t0x00d0:  3130 3861 3239 3634 3135 3930 3663 3834  108a296415906c84\n\t0x00e0:  3239 0d0a 436f 6e6e 6563 7469 6f6e 3a20  29..Connection:.\n\t0x00f0:  6b65 6570 2d61 6c69 7665 0d0a 5573 6572  keep-alive..User\n\t0x0100:  2d41 6765 6e74 3a20 7079 7468 6f6e 2d77  -Agent:.python-w\n\t0x0110:  6174 6368 6572 636c 6965 6e74 0d0a 436f  atcherclient..Co\n\t0x0120:  6e74 656e 742d 5479 7065 3a20 6170 706c  ntent-Type:.appl\n\t0x0130:  6963 6174 696f 6e2f 6a73 6f6e 0d0a 0d0a  ication/json....\n\t0x0140:  7b22 7479 7065 223a 2022 4f4e 4553 484f  {\"type\":.\"ONESHO\n\t0x0150:  5422 2c20 2261 7564 6974 5f74 656d 706c  T\",.\"audit_templ\n\t0x0160:  6174 655f 7575 6964 223a 2022 6261 7369  ate_uuid\":.\"basi\n\t0x0170:  6322 7d                                  c\"}","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                                              audit_uuid)"},{"line_number":367,"context_line":"        return Audit.convert_with_links(rpc_audit)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    @wsme.validate(types.uuid, AuditPostType)"},{"line_number":370,"context_line":"    @wsme_pecan.wsexpose(Audit, body\u003dAuditPostType, status_code\u003d201)"},{"line_number":371,"context_line":"    def post(self, audit_pdata):"},{"line_number":372,"context_line":"        \"\"\"Create a new audit."}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_9ce87ce4","line":369,"range":{"start_line":369,"start_character":19,"end_line":369,"end_character":29},"updated":"2016-03-16 15:11:29.000000000","message":"Vincent, it it not a post() method arg.","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"}],"watcher/decision_engine/audit/default.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        audit \u003d audit_objects.Audit.get_by_uuid(request_context, audit_uuid)"},{"line_number":63,"context_line":"        return audit"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def update_audit_state(self, audit, state):"},{"line_number":66,"context_line":"        LOG.debug(\"Update audit state: %s\", state)"},{"line_number":67,"context_line":"        audit.state \u003d state"},{"line_number":68,"context_line":"        audit.save()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_320d1138","line":65,"range":{"start_line":65,"start_character":33,"end_line":65,"end_character":38},"updated":"2016-03-16 15:11:29.000000000","message":"why not audit is a class attribute ?","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            LOG.exception(e)"},{"line_number":79,"context_line":"            raise"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        if audit.state !\u003d audit_objects.State.PENDING:"},{"line_number":82,"context_line":"            raise exception.AuditTemplateInvalidStateTransition("},{"line_number":83,"context_line":"                audit_template\u003daudit_uuid,"},{"line_number":84,"context_line":"                old_state\u003daudit.state,"},{"line_number":85,"context_line":"                new_state\u003daudit_objects.State.ONGOING,"},{"line_number":86,"context_line":"            )"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_15055f79","line":86,"range":{"start_line":81,"start_character":0,"end_line":86,"end_character":13},"updated":"2016-03-16 15:11:29.000000000","message":"IMO, add FIXME blueprint statemachine-transition-permission to note that a smartest implementation will be done in the future.","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"}],"watcher/tests/api/v1/test_audits.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        mock_utcnow.return_value \u003d test_time"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"        audit_dict \u003d get_test_audit_pdata()"},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        response \u003d self.post_json(\u0027/audits\u0027, audit_dict)"},{"line_number":439,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":440,"context_line":"        self.assertEqual(201, response.status_int)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_e6780bf5","line":437,"updated":"2016-03-16 15:11:29.000000000","message":"missing:\n \n del audit_dict[\u0027uuid\u0027] ?","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        mock_trigger_audit.return_value \u003d mock.ANY"},{"line_number":460,"context_line":"        test_time \u003d datetime.datetime(2000, 1, 1, 0, 0)"},{"line_number":461,"context_line":"        mock_utcnow.return_value \u003d test_time"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"        audit_dict \u003d get_test_audit_pdata()"},{"line_number":464,"context_line":"        audit_dict[\u0027state\u0027] \u003d objects.audit.State.SUCCEEDED"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_465e1f77","line":462,"updated":"2016-03-16 15:11:29.000000000","message":"missing:\n \n del audit_dict[\u0027uuid\u0027] ?","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        response \u003d self.post_json(\u0027/audits\u0027, audit_dict, expect_errors\u003dTrue)"},{"line_number":467,"context_line":"        self.assertEqual(400, response.status_int)"},{"line_number":468,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":469,"context_line":"        self.assertTrue(response.json[\u0027error_message\u0027])"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":472,"context_line":"    def test_create_audit_invalid_audit_template_uuid(self, mock_utcnow):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_abd24cfe","line":469,"range":{"start_line":469,"start_character":0,"end_line":469,"end_character":55},"updated":"2016-03-16 15:11:29.000000000","message":"I will be also interested to test the message itself returned by the API. To be sure it is the correct one :)","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        # Make the audit template UUID some garbage value"},{"line_number":478,"context_line":"        audit_dict[\u0027audit_template_uuid\u0027] \u003d ("},{"line_number":479,"context_line":"            \u002701234567-8910-1112-1314-151617181920\u0027)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"        response \u003d self.post_json(\u0027/audits\u0027, audit_dict, expect_errors\u003dTrue)"},{"line_number":482,"context_line":"        self.assertEqual(400, response.status_int)"},{"line_number":483,"context_line":"        self.assertEqual(\"application/json\", response.content_type)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_06f2576f","line":480,"updated":"2016-03-16 15:11:29.000000000","message":"missing:\n \n del audit_dict[\u0027uuid\u0027] ?","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            # Check that \u0027id\u0027 is not in first arg of positional args"},{"line_number":501,"context_line":"            self.assertNotIn(\u0027id\u0027, cn_mock.call_args[0][0])"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    @mock.patch.object(deapi.DecisionEngineAPI, \u0027trigger_audit\u0027)"},{"line_number":504,"context_line":"    def test_create_audit_generate_uuid(self, mock_trigger_audit):"},{"line_number":505,"context_line":"        mock_trigger_audit.return_value \u003d mock.ANY"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        audit_dict \u003d get_test_audit_pdata()"},{"line_number":508,"context_line":"        del audit_dict[\u0027uuid\u0027]"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        response \u003d self.post_json(\u0027/audits\u0027, audit_dict)"},{"line_number":511,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":512,"context_line":"        self.assertEqual(201, response.status_int)"},{"line_number":513,"context_line":"        self.assertEqual(objects.audit.State.PENDING,"},{"line_number":514,"context_line":"                         response.json[\u0027state\u0027])"},{"line_number":515,"context_line":"        self.assertTrue(utils.is_uuid_like(response.json[\u0027uuid\u0027]))"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def test_create_audit_trigger_decision_engine(self):"},{"line_number":518,"context_line":"        with mock.patch.object(deapi.DecisionEngineAPI,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_06c097df","line":515,"range":{"start_line":503,"start_character":0,"end_line":515,"end_character":66},"updated":"2016-03-16 15:11:29.000000000","message":"do we need the test again (if uuid is not part of POST body request content ) ?","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"}],"watcher/tests/decision_engine/audit/test_default_audit_handler.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"28a3aa12b7a901dd7ec8c0a5803639d9a43546f0","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            2, messaging.status_topic_handler.publish_event.call_count)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch.object(manager.CollectorManager, \"get_cluster_model_collector\")"},{"line_number":72,"context_line":"    def test_trigger_audit_invalid_state(self, mock_collector):"},{"line_number":73,"context_line":"        self.audit.state \u003d audit_objects.State.SUCCEEDED"},{"line_number":74,"context_line":"        self.audit.save()"},{"line_number":75,"context_line":"        mock_collector.return_value \u003d faker.FakerModelCollector()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af94dfe_a1426d3c","line":72,"range":{"start_line":72,"start_character":8,"end_line":72,"end_character":40},"updated":"2016-03-16 15:11:29.000000000","message":"s/test_trigger_audit_invalid_state_transition","commit_id":"95eea94f1cffe3b11aa22ae7009a3ef15ff390cb"}]}
