)]}'
{"neutron/services/logapi/common/constants.py":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"2a09198b27e3f1c6c808e2ba0a9125b6e96a314a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# supported logging types"},{"line_number":23,"context_line":"SECURITY_GROUP \u003d \u0027security_group\u0027"},{"line_number":24,"context_line":"SNAT \u003d \u0027snat\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# target resource types"},{"line_number":27,"context_line":"PORT \u003d \u0027port\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_19cf6b54","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":13},"updated":"2018-10-16 05:23:55.000000000","message":"this could be candidate for neutron-lib, since this is used in networking-ovn and ovsdbapp, may be leaving a note and doing a parallel patch in neutron-lib ?","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# supported logging types"},{"line_number":23,"context_line":"SECURITY_GROUP \u003d \u0027security_group\u0027"},{"line_number":24,"context_line":"SNAT \u003d \u0027snat\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# target resource types"},{"line_number":27,"context_line":"PORT \u003d \u0027port\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_9ffcbb71","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":13},"in_reply_to":"3f79a3b5_19cf6b54","updated":"2018-10-16 07:43:35.000000000","message":"+1","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"a4e3098690920af88afea19af3957b253ef1b468","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# supported logging types"},{"line_number":23,"context_line":"SECURITY_GROUP \u003d \u0027security_group\u0027"},{"line_number":24,"context_line":"SNAT \u003d \u0027snat\u0027"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# target resource types"},{"line_number":27,"context_line":"PORT \u003d \u0027port\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_1753af6d","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":13},"in_reply_to":"3f79a3b5_19cf6b54","updated":"2018-10-16 10:06:45.000000000","message":"Done","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"}],"neutron/services/logapi/common/exceptions.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"56cd101f481ff34fa0fb94fc720884feac7ed628","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027could not be found.\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.Invalid):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_45c70d9a","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":33},"updated":"2018-09-24 01:44:37.000000000","message":"This exception wasn\u0027t used at all.  Is it really necessary?","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"4ea2f61bf84902884b26e4506c2bc9360b38e612","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027could not be found.\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.Invalid):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_f3484363","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":33},"in_reply_to":"3f79a3b5_45c70d9a","updated":"2018-09-25 10:27:54.000000000","message":"@longkb: we should specify router_port id as resource_id, shouldn\u0027t we?","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"56cd101f481ff34fa0fb94fc720884feac7ed628","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.Invalid):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_25d53148","line":63,"range":{"start_line":63,"start_character":50,"end_line":63,"end_character":66},"updated":"2018-09-24 01:44:37.000000000","message":"%(resource_type)s","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"56cd101f481ff34fa0fb94fc720884feac7ed628","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"},{"line_number":67,"context_line":"    message \u003d _(\u0027SNAT is not enabled for router %(resource_id)s\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e5de5969","line":66,"range":{"start_line":66,"start_character":6,"end_line":66,"end_character":26},"updated":"2018-09-24 01:44:37.000000000","message":"How about \u0027RouterSnatDisabled\u0027 ?","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a048bcb8b231528495f29ab64756fca664934308","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_96ada1e8","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":33},"updated":"2018-10-15 06:08:43.000000000","message":"specify","commit_id":"a005849e435fadf52b986f234d450b69dab55b5a"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"6eebe624528e2b8e133908c2ec852725222baf1f","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specifies resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_d6df9935","line":63,"range":{"start_line":63,"start_character":24,"end_line":63,"end_character":33},"in_reply_to":"3f79a3b5_96ada1e8","updated":"2018-10-15 06:19:37.000000000","message":"Done","commit_id":"a005849e435fadf52b986f234d450b69dab55b5a"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"},{"line_number":67,"context_line":"    message \u003d _(\u0027SNAT is not enabled for router %(resource_id)s\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_3ff7a78e","line":67,"range":{"start_line":67,"start_character":62,"end_line":67,"end_character":63},"updated":"2018-10-16 07:43:35.000000000","message":"nit: missing period.","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"a4e3098690920af88afea19af3957b253ef1b468","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"},{"line_number":67,"context_line":"    message \u003d _(\u0027SNAT is not enabled for router %(resource_id)s\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b762fb3b","line":67,"range":{"start_line":67,"start_character":62,"end_line":67,"end_character":63},"in_reply_to":"3f79a3b5_3ff7a78e","updated":"2018-10-16 10:06:45.000000000","message":"Done","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"},{"line_number":71,"context_line":"    message \u003d _(\u0027%(resource_type)s disables specific %(events)s events\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_5ff2a39c","line":71,"range":{"start_line":71,"start_character":70,"end_line":71,"end_character":71},"updated":"2018-10-16 07:43:35.000000000","message":"ditto","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"a4e3098690920af88afea19af3957b253ef1b468","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"},{"line_number":71,"context_line":"    message \u003d _(\u0027%(resource_type)s disables specific %(events)s events\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_5755a750","line":71,"range":{"start_line":71,"start_character":70,"end_line":71,"end_character":71},"in_reply_to":"3f79a3b5_5ff2a39c","updated":"2018-10-16 10:06:45.000000000","message":"Done","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"dfcf1d157d55a3b07e53a4a0cb4a654ed834b450","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specify resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_09d5c846","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":47},"updated":"2018-10-16 20:18:31.000000000","message":"\"resource_id should be specified for %(resource_type)s.\"","commit_id":"b590c126e2360f95cb934c103f8ccb434586c851"},{"author":{"_account_id":28174,"name":"Kim Bao Long","email":"longkb@vn.fujitsu.com","username":"longkb.fvl"},"change_message_id":"681aaa01d1742bcba1702910f3500c781564f569","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specify resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_380b28d4","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":47},"in_reply_to":"3f79a3b5_09d5c846","updated":"2018-10-17 01:18:47.000000000","message":"IMO, this message should align with neutron client side [1]:\n\"--resource should be specified for %(resource_type)s logging.\"\n\n[1] https://github.com/openstack/python-neutronclient/blob/master/neutronclient/osc/v2/logging/network_log.py#L137","commit_id":"b590c126e2360f95cb934c103f8ccb434586c851"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"0ff8b7baf659fc70395efcc72bd7de1f7355e0f2","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specify resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_0ea4e6b6","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":47},"in_reply_to":"3f79a3b5_380b28d4","updated":"2018-10-17 03:21:10.000000000","message":"Done","commit_id":"b590c126e2360f95cb934c103f8ccb434586c851"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"edcadc52fcecd9f3b36e9048bf51bc99dbc21ac6","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027Should specify resource_id for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class RouterNotEnabledSnat(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_73b8e1c5","line":63,"range":{"start_line":63,"start_character":17,"end_line":63,"end_character":47},"in_reply_to":"3f79a3b5_380b28d4","updated":"2018-10-22 02:49:58.000000000","message":"I agree with Manjeet.  It\u0027s aligned with your message, right?  Moreover,  the following message is much more closer.\n\n  \"resource_id\" should be specified for %(resource_type)s logging.","commit_id":"b590c126e2360f95cb934c103f8ccb434586c851"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"511bd285fad526ccb3561ab43cf7bb57c381afd4","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027could not be found.\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027resource_id should be specified for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_435870f8","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":33},"updated":"2018-10-17 09:29:54.000000000","message":"Maybe better would be something like \"ResourceIdNotSpecified\" ?","commit_id":"5bbfe943a01956096f310f09a19a41746a81c4bd"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"82f96bab7abdc7808f2cd2a4b2e8e6f0816f3ed8","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027could not be found.\u0027)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"class ResourceIdShouldBeSpecified(n_exc.InvalidInput):"},{"line_number":63,"context_line":"    message \u003d _(\u0027resource_id should be specified for %(resource_type)s.\u0027)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_0e35bf43","line":62,"range":{"start_line":62,"start_character":6,"end_line":62,"end_character":33},"in_reply_to":"3f79a3b5_435870f8","updated":"2018-10-17 10:32:24.000000000","message":"Done","commit_id":"5bbfe943a01956096f310f09a19a41746a81c4bd"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"511bd285fad526ccb3561ab43cf7bb57c381afd4","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"},{"line_number":71,"context_line":"    message \u003d _(\u0027%(resource_type)s disables specific %(events)s events.\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class RouterGatewayNotSet(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_430dd0e5","line":71,"updated":"2018-10-17 09:29:54.000000000","message":"This sounds for me more like \"information\" rather than \"exception\". Maybe something like \"EventDisabled\" and message like \"event %(event)s disabled for resource %(resource_typs)s\" ?","commit_id":"5bbfe943a01956096f310f09a19a41746a81c4bd"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"82f96bab7abdc7808f2cd2a4b2e8e6f0816f3ed8","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class DisableEvents(n_exc.NeutronException):"},{"line_number":71,"context_line":"    message \u003d _(\u0027%(resource_type)s disables specific %(events)s events.\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class RouterGatewayNotSet(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_6e0d5391","line":71,"in_reply_to":"3f79a3b5_430dd0e5","updated":"2018-10-17 10:32:24.000000000","message":"Done. Thanks for your great suggestion.","commit_id":"5bbfe943a01956096f310f09a19a41746a81c4bd"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a1a3256657cfa04eea780dac35173ca8faecbe03","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class EventsDisabled(n_exc.InvalidInput):"},{"line_number":71,"context_line":"    message \u003d _(\u0027List of event %(events)s was disabled for %(resource_type)s.\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class RouterGatewayNotSet(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_ed2958f1","line":71,"range":{"start_line":71,"start_character":24,"end_line":71,"end_character":30},"updated":"2018-10-17 23:41:48.000000000","message":"events","commit_id":"af35c66471296365f09b051bfcf56b5075420e5e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a1a3256657cfa04eea780dac35173ca8faecbe03","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class EventsDisabled(n_exc.InvalidInput):"},{"line_number":71,"context_line":"    message \u003d _(\u0027List of event %(events)s was disabled for %(resource_type)s.\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class RouterGatewayNotSet(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_8d2ea4f7","line":71,"range":{"start_line":71,"start_character":42,"end_line":71,"end_character":45},"updated":"2018-10-17 23:41:48.000000000","message":"were, since its multiple events","commit_id":"af35c66471296365f09b051bfcf56b5075420e5e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"b1449d5cd86dd35bde25c6190cde46a7d993f33b","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class EventsDisabled(n_exc.InvalidInput):"},{"line_number":71,"context_line":"    message \u003d _(\u0027List of event %(events)s was disabled for %(resource_type)s.\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class RouterGatewayNotSet(n_exc.NeutronException):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_cd0d7c93","line":71,"range":{"start_line":71,"start_character":42,"end_line":71,"end_character":45},"in_reply_to":"3f79a3b5_8d2ea4f7","updated":"2018-10-17 23:42:52.000000000","message":"\"List of events %(events)s were .......\"","commit_id":"af35c66471296365f09b051bfcf56b5075420e5e"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3ffafce1b57d1c3d6fcbe87f9186f909f8d48e35","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class EventsDisabled(n_exc.InvalidInput):"},{"line_number":71,"context_line":"    message \u003d _(\u0027List of events %(events)s were disabled for\u0027"},{"line_number":72,"context_line":"                \u0027%(resource_type)s.\u0027)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_4956fc60","line":71,"range":{"start_line":71,"start_character":43,"end_line":71,"end_character":47},"updated":"2018-10-22 10:11:02.000000000","message":"I\u0027m not native speaker but IMHO it should be \"was\" instead of \"were\".","commit_id":"50c75e9e51a053c89a585c55a586ed3d931d82f1"}],"neutron/services/logapi/common/sg_validate.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    In addition, if log_data specify both resource_id and target_id. A"},{"line_number":67,"context_line":"    InvalidResourceConstraint will be raised if there is no constraint between"},{"line_number":68,"context_line":"    resource_id and target_id."},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    resource_id \u003d log_data.get(\u0027resource_id\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_1fe8aba4","line":68,"updated":"2018-10-16 07:43:35.000000000","message":"Unrelated change?","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"a4e3098690920af88afea19af3957b253ef1b468","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    In addition, if log_data specify both resource_id and target_id. A"},{"line_number":67,"context_line":"    InvalidResourceConstraint will be raised if there is no constraint between"},{"line_number":68,"context_line":"    resource_id and target_id."},{"line_number":69,"context_line":"    \"\"\""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    resource_id \u003d log_data.get(\u0027resource_id\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f7439395","line":68,"in_reply_to":"3f79a3b5_1fe8aba4","updated":"2018-10-16 10:06:45.000000000","message":"Done","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"}],"neutron/services/logapi/common/snat_validate.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"56cd101f481ff34fa0fb94fc720884feac7ed628","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":46,"context_line":"    router_obj \u003d _get_router(context, router_id)"},{"line_number":47,"context_line":"    # Check whether SNAT is enabled in the given router or not"},{"line_number":48,"context_line":"    if not router_obj.enable_snat:"},{"line_number":49,"context_line":"        raise log_exc.RouterNotEnabledSnat(resource_id\u003drouter_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_05c11582","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":33},"updated":"2018-09-24 01:44:37.000000000","message":"In case of following cases, does \u0027enable_snat\u0027 still exist?\n\n1. DVR\n2. L3-HA\n3. DVR + L3-HA","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"608b2ba315e33da230ea6a3b41edca030cb8f888","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":46,"context_line":"    router_obj \u003d _get_router(context, router_id)"},{"line_number":47,"context_line":"    # Check whether SNAT is enabled in the given router or not"},{"line_number":48,"context_line":"    if not router_obj.enable_snat:"},{"line_number":49,"context_line":"        raise log_exc.RouterNotEnabledSnat(resource_id\u003drouter_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_5315773c","line":48,"range":{"start_line":48,"start_character":22,"end_line":48,"end_character":33},"in_reply_to":"3f79a3b5_05c11582","updated":"2018-09-25 10:25:39.000000000","message":"From my understanding, this attribute still exist as https://github.com/openstack/neutron/blob/master/neutron/objects/router.py#L205.","commit_id":"14b2cfcfc7a56a006f069a94443babe74ac3b132"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"a048bcb8b231528495f29ab64756fca664934308","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    belong to any Router object. This method will also raise a"},{"line_number":43,"context_line":"    RouterNotEnabledSnat exception in the case of a indicated router does not"},{"line_number":44,"context_line":"    enable SNAT feature."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_b6da1d76","line":45,"updated":"2018-10-15 06:08:43.000000000","message":"redundant empty line","commit_id":"a005849e435fadf52b986f234d450b69dab55b5a"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"6eebe624528e2b8e133908c2ec852725222baf1f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    belong to any Router object. This method will also raise a"},{"line_number":43,"context_line":"    RouterNotEnabledSnat exception in the case of a indicated router does not"},{"line_number":44,"context_line":"    enable SNAT feature."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_b6e45d0f","line":45,"in_reply_to":"3f79a3b5_b6da1d76","updated":"2018-10-15 06:19:37.000000000","message":"Done","commit_id":"a005849e435fadf52b986f234d450b69dab55b5a"},{"author":{"_account_id":28174,"name":"Kim Bao Long","email":"longkb@vn.fujitsu.com","username":"longkb.fvl"},"change_message_id":"39a21e7c762bc5cfc1c8c930198952f67678485d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"},{"line_number":49,"context_line":"    if not router_id:"},{"line_number":50,"context_line":"        raise log_exc.ResourceIdShouldBeSpecified(resource_type\u003dlog_const.SNAT)"},{"line_number":51,"context_line":"    if event in DISABLE_EVENTS:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_56f14969","line":48,"updated":"2018-10-15 06:47:11.000000000","message":"Thanks for your update.\nHow about \u0027target_id\u0027 argument? \nIf \u0027target_id\u0027 is specified as router port (internal or gateway), I think the validator should check whether a given port is belong to a given router or not?","commit_id":"084cc0bbd2e5856bdbaebccd3a2ab272a670af03"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"21aa8cac884779d58340ea2833e34c43c1822987","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"},{"line_number":49,"context_line":"    if not router_id:"},{"line_number":50,"context_line":"        raise log_exc.ResourceIdShouldBeSpecified(resource_type\u003dlog_const.SNAT)"},{"line_number":51,"context_line":"    if event in DISABLE_EVENTS:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_96fcc10d","line":48,"in_reply_to":"3f79a3b5_56f14969","updated":"2018-10-15 06:56:49.000000000","message":"From my opinion, SNAT logging API should ignore this attribute if it is specified. So we don\u0027t need to check this.","commit_id":"084cc0bbd2e5856bdbaebccd3a2ab272a670af03"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"2a09198b27e3f1c6c808e2ba0a9125b6e96a314a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    enable SNAT feature."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"},{"line_number":49,"context_line":"    if not router_id:"},{"line_number":50,"context_line":"        raise log_exc.ResourceIdShouldBeSpecified(resource_type\u003dlog_const.SNAT)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b91197b1","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":43},"updated":"2018-10-16 05:23:55.000000000","message":"this is reliant on assumption that every resource_id in log_data is a router_id ?","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    enable SNAT feature."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"},{"line_number":49,"context_line":"    if not router_id:"},{"line_number":50,"context_line":"        raise log_exc.ResourceIdShouldBeSpecified(resource_type\u003dlog_const.SNAT)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_df1473a1","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":43},"in_reply_to":"3f79a3b5_b91197b1","updated":"2018-10-16 07:43:35.000000000","message":"Yes.  This logic is called after checking \u0027resource_type\u003dsnat\u0027.  However, for more readability, I think it\u0027s OK to keep \u0027resource_id\u0027 instead of \u0027router_id\u0027.  Because, finally we can try to get router_obj at line #54.","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"a4e3098690920af88afea19af3957b253ef1b468","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    enable SNAT feature."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    \"\"\""},{"line_number":47,"context_line":"    router_id \u003d log_data.get(\u0027resource_id\u0027)"},{"line_number":48,"context_line":"    event \u003d log_data.get(\u0027event\u0027)"},{"line_number":49,"context_line":"    if not router_id:"},{"line_number":50,"context_line":"        raise log_exc.ResourceIdShouldBeSpecified(resource_type\u003dlog_const.SNAT)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_57ca8718","line":47,"range":{"start_line":47,"start_character":16,"end_line":47,"end_character":43},"in_reply_to":"3f79a3b5_df1473a1","updated":"2018-10-16 10:06:45.000000000","message":"Done","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"}],"neutron/tests/unit/services/logapi/common/test_snat_validate.py":[{"author":{"_account_id":13702,"name":"yushiro","username":"yushiro","inactive":true},"change_message_id":"b186d70e27635b3ddad9547d236c10bb1b3d27b2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                    log_data_2)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_validate_request_with_snat_disable(self):"},{"line_number":92,"context_line":"        log_data \u003d {\u0027resource_type\u0027: \u0027snat\u0027,"},{"line_number":93,"context_line":"                    \u0027resource_id\u0027: \u0027fake_router_id\u0027}"},{"line_number":94,"context_line":"        f_router \u003d mock.Mock()"},{"line_number":95,"context_line":"        f_router.enable_snat \u003d False"},{"line_number":96,"context_line":"        with mock.patch.object(directory, \u0027get_plugin\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_bf76570b","line":93,"range":{"start_line":92,"start_character":1,"end_line":93,"end_character":52},"updated":"2018-10-16 07:43:35.000000000","message":"How about moving in setUp() ?","commit_id":"2d7a5b09ed4ae944295a7852d8a96a2d040bfeb4"}]}
