)]}'
{"watcher/api/controllers/v1/audit.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"9de0776738a60bcc8a00e7be1b6584a62440bc73","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    except AttributeError:"},{"line_number":115,"context_line":"                        pass"},{"line_number":116,"context_line":"        return Audit("},{"line_number":117,"context_line":"            name\u003dself.name,"},{"line_number":118,"context_line":"            audit_type\u003dself.audit_type,"},{"line_number":119,"context_line":"            parameters\u003dself.parameters,"},{"line_number":120,"context_line":"            goal_id\u003dself.goal,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_0d0a65d1","line":117,"range":{"start_line":117,"start_character":17,"end_line":117,"end_character":26},"updated":"2017-06-21 12:44:55.000000000","message":"IMHO, if name is empty, we should auto-generate one using the name of the audit template like:\n\n    name \u003d self.name\n    if not name:\n        name \u003d \"%s %s\" % (audit_template.name,\n                          datetime.datetime.utcnow().isoformat())","commit_id":"63e4a2a6e2407918b2972283a9c3dfc49a24776e"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"db2b973ae7761ba92e3a959fbb7eda2edfb94012","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    except AttributeError:"},{"line_number":115,"context_line":"                        pass"},{"line_number":116,"context_line":"        return Audit("},{"line_number":117,"context_line":"            name\u003dself.name,"},{"line_number":118,"context_line":"            audit_type\u003dself.audit_type,"},{"line_number":119,"context_line":"            parameters\u003dself.parameters,"},{"line_number":120,"context_line":"            goal_id\u003dself.goal,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_b503a142","line":117,"range":{"start_line":117,"start_character":17,"end_line":117,"end_character":26},"in_reply_to":"5f201791_0d0a65d1","updated":"2017-06-22 07:32:58.000000000","message":"yes,it is better to use strategy name, because audit template for the audit may be null.","commit_id":"63e4a2a6e2407918b2972283a9c3dfc49a24776e"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"a8bb9a3ff44eb68ae9faf37c76ddacc550af82a0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    except AttributeError:"},{"line_number":115,"context_line":"                        pass"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # If audit name was not provided, used a default name"},{"line_number":118,"context_line":"        if not self.name:"},{"line_number":119,"context_line":"            if self.strategy:"},{"line_number":120,"context_line":"                strategy \u003d objects.Strategy.get(context, self.strategy)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_91005203","line":117,"updated":"2017-07-05 10:47:44.000000000","message":"you can write it in note.\n# Note:\nalso reformat the sentence as \"If audit name is not provided use a default name\"","commit_id":"891f401d07df4425e692de9c7007612dde93b015"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ca03a5775e733af1bf2eb5cce73ef577b90961c0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"                    except AttributeError:"},{"line_number":115,"context_line":"                        pass"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # If audit name was not provided, used a default name"},{"line_number":118,"context_line":"        if not self.name:"},{"line_number":119,"context_line":"            if self.strategy:"},{"line_number":120,"context_line":"                strategy \u003d objects.Strategy.get(context, self.strategy)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_f3a08744","line":117,"in_reply_to":"3f1d235d_91005203","updated":"2017-07-06 07:32:39.000000000","message":"ok","commit_id":"891f401d07df4425e692de9c7007612dde93b015"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"a8bb9a3ff44eb68ae9faf37c76ddacc550af82a0","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # If audit name was not provided, used a default name"},{"line_number":118,"context_line":"        if not self.name:"},{"line_number":119,"context_line":"            if self.strategy:"},{"line_number":120,"context_line":"                strategy \u003d objects.Strategy.get(context, self.strategy)"},{"line_number":121,"context_line":"                self.name \u003d \"%s-%s\" % (strategy.name,"},{"line_number":122,"context_line":"                                       datetime.datetime.utcnow().isoformat())"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_11144243","line":119,"updated":"2017-07-05 10:47:44.000000000","message":"you can consider goal, to generate name as well, as specifying goal is mandatory while creating the audit","commit_id":"891f401d07df4425e692de9c7007612dde93b015"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ca03a5775e733af1bf2eb5cce73ef577b90961c0","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        # If audit name was not provided, used a default name"},{"line_number":118,"context_line":"        if not self.name:"},{"line_number":119,"context_line":"            if self.strategy:"},{"line_number":120,"context_line":"                strategy \u003d objects.Strategy.get(context, self.strategy)"},{"line_number":121,"context_line":"                self.name \u003d \"%s-%s\" % (strategy.name,"},{"line_number":122,"context_line":"                                       datetime.datetime.utcnow().isoformat())"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_534f3b92","line":119,"in_reply_to":"3f1d235d_11144243","updated":"2017-07-06 07:32:39.000000000","message":"goal is not mandatory, but an audit is created at least with one of goal, strategy, or audit_template.\nI will change this part.","commit_id":"891f401d07df4425e692de9c7007612dde93b015"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"a8bb9a3ff44eb68ae9faf37c76ddacc550af82a0","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        return Audit.convert_with_links(new_audit)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    @wsme.validate(types.uuid, [AuditPatchType])"},{"line_number":569,"context_line":"    @wsme_pecan.wsexpose(Audit, wtypes.text, body\u003d[AuditPatchType])"},{"line_number":570,"context_line":"    def patch(self, audit, patch):"},{"line_number":571,"context_line":"        \"\"\"Update an existing audit."}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_b1422eaa","line":568,"updated":"2017-07-05 10:47:44.000000000","message":"it can give validation error, if only audit name is passed.","commit_id":"891f401d07df4425e692de9c7007612dde93b015"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ca03a5775e733af1bf2eb5cce73ef577b90961c0","unresolved":false,"context_lines":[{"line_number":565,"context_line":""},{"line_number":566,"context_line":"        return Audit.convert_with_links(new_audit)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    @wsme.validate(types.uuid, [AuditPatchType])"},{"line_number":569,"context_line":"    @wsme_pecan.wsexpose(Audit, wtypes.text, body\u003d[AuditPatchType])"},{"line_number":570,"context_line":"    def patch(self, audit, patch):"},{"line_number":571,"context_line":"        \"\"\"Update an existing audit."}],"source_content_type":"text/x-python","patch_set":9,"id":"3f1d235d_f623d5a5","line":568,"in_reply_to":"3f1d235d_b1422eaa","updated":"2017-07-06 07:32:39.000000000","message":"thx. It may be  python-watcherclient problem.\nrefer to this change, then have a try.\nhttps://review.openstack.org/#/c/475324/10/watcherclient/v1/audit_shell.py L:240-242","commit_id":"891f401d07df4425e692de9c7007612dde93b015"}],"watcher/db/sqlalchemy/api.py":[{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"64440e50a0006557e4b966db5ad62d5484b43cd1","unresolved":false,"context_lines":[{"line_number":668,"context_line":"        try:"},{"line_number":669,"context_line":"            audit \u003d self._create(models.Audit, values)"},{"line_number":670,"context_line":"        except db_exc.DBDuplicateEntry:"},{"line_number":671,"context_line":"            raise exception.AuditAlreadyExists(uuid\u003dvalues[\u0027uuid\u0027])"},{"line_number":672,"context_line":"        return audit"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"    def _get_audit(self, context, fieldname, value, eager):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f4b6375_2b286484","line":671,"updated":"2017-10-20 02:12:20.000000000","message":"Modify it to raise specifically which column caused duplicate entries, name or uuid.","commit_id":"11350f36c372e255fdc88a15c70758be13bb3be2"}]}
