)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"f1041bd5e12b1778372d044e6eefbe6c3677dcae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1ac06dbe_8aad349d","line":14,"updated":"2016-08-23 21:47:27.000000000","message":"Partially-Implements: blueprint adopt-oslo-versioned-objects-for-db","commit_id":"542776e527310c64beff75b9b7f5e44bc575656b"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"48498af6b6f2e1e6a1633e8b5b7b1b2279266b6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Objects: Add README for neutron/objects directory tree"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"As we have started oslo.versionedobjects implementation (OVO)."},{"line_number":10,"context_line":"There are lots of Objects that need implementation. This README"},{"line_number":11,"context_line":"in the root dir will give some guidance to keep the tree organized."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9253a243f37e4695290162bee7a41149c5f665fa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a95cdbc_837ab975","line":10,"range":{"start_line":9,"start_character":61,"end_line":10,"end_character":9},"updated":"2016-10-06 23:04:41.000000000","message":"Another little nit here: , there are","commit_id":"b48fe5f3db441ff836a473ae894e08b3cc9c038e"}],"neutron/objects/README.rst":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"c015ec14442787f61ad42cc19e16fbe2e9cc6261","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The directory should follow the"},{"line_number":11,"context_line":"guidlines below"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Structure"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9ad45d7e_b7c77444","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":9},"updated":"2016-08-08 20:14:29.000000000","message":"guidelines","commit_id":"b634428b28d4c4f124e039206051d148363f28e5"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"dea2e638acd56e49aa741ec2e6b666ce45e0d383","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The directory should follow the"},{"line_number":11,"context_line":"guidelines below"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Structure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_7eeba313","line":11,"updated":"2016-08-10 15:57:36.000000000","message":"missing dot.","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ba32b9233af828f35821448b814db5809a809ee5","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The directory should follow the"},{"line_number":11,"context_line":"guidelines below"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Structure"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_5ee4dfdf","line":11,"in_reply_to":"9ad45d7e_7eeba313","updated":"2016-08-10 16:02:42.000000000","message":"Done","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"dea2e638acd56e49aa741ec2e6b666ce45e0d383","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_1eed47ef","line":26,"updated":"2016-08-10 15:57:36.000000000","message":"I am actually not sure whether we really need to keep extensions in a separate file from core resource. Why would we? It\u0027s not like the core resource won\u0027t have those fields in some cases, they will always be present.","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ba32b9233af828f35821448b814db5809a809ee5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_5e197fd6","line":26,"in_reply_to":"9ad45d7e_1eed47ef","updated":"2016-08-10 16:02:42.000000000","message":"So there already exists a objects/extensions directory. We could ideally use that. \n\nextensions should be kept separate in line with neutron/neutron/extensions: https://github.com/openstack/neutron/tree/master/neutron/extensions\n\nCorrect if wrong thinking.","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"9ef9ff2733b5e5fe3953741e80807476746ceae8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_3fca526f","line":26,"in_reply_to":"9ad45d7e_5e197fd6","updated":"2016-08-12 12:19:41.000000000","message":"I think that since objects are not \u0027pluggable\u0027 so to speak, it\u0027s better to keep all objects arranged by core resources. meaning, all subobjects of a subnet belong to subnet.py, same for network.py etc. If we need to have common code, like in case of neutron/objects/extensions/port_security.py, that could go into neutron/objects/_port_security.py to indicate its specific limited role.","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"a7b64cd777770f9b5cbdb08089c5a922fdbe3f2d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The Neutron objects tree should have the following structure::"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    objects/"},{"line_number":20,"context_line":"    |---__init__.py"},{"line_number":21,"context_line":"    |---base.py"},{"line_number":22,"context_line":"    |---\u003cany common/base classes\u003e"},{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"},{"line_number":30,"context_line":"    |---subnets/"},{"line_number":31,"context_line":"        |---__init__.py"},{"line_number":32,"context_line":"        |---subnet.py"},{"line_number":33,"context_line":"        |---extensions/"},{"line_number":34,"context_line":"            |---__init__.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_1d049fbe","line":34,"range":{"start_line":19,"start_character":3,"end_line":34,"end_character":27},"updated":"2016-08-08 20:56:51.000000000","message":"I don\u0027t think this guideline is being followed currently, if you look at tree now, subnet is directly under objects/ \n\nhttps://github.com/openstack/neutron/blob/master/neutron/objects/subnet.py","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ba32b9233af828f35821448b814db5809a809ee5","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The Neutron objects tree should have the following structure::"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    objects/"},{"line_number":20,"context_line":"    |---__init__.py"},{"line_number":21,"context_line":"    |---base.py"},{"line_number":22,"context_line":"    |---\u003cany common/base classes\u003e"},{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"},{"line_number":30,"context_line":"    |---subnets/"},{"line_number":31,"context_line":"        |---__init__.py"},{"line_number":32,"context_line":"        |---subnet.py"},{"line_number":33,"context_line":"        |---extensions/"},{"line_number":34,"context_line":"            |---__init__.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_be0a3b77","line":34,"range":{"start_line":19,"start_character":3,"end_line":34,"end_character":27},"in_reply_to":"9ad45d7e_1d049fbe","updated":"2016-08-10 16:02:42.000000000","message":"Done","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"dea2e638acd56e49aa741ec2e6b666ce45e0d383","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The Neutron objects tree should have the following structure::"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    objects/"},{"line_number":20,"context_line":"    |---__init__.py"},{"line_number":21,"context_line":"    |---base.py"},{"line_number":22,"context_line":"    |---\u003cany common/base classes\u003e"},{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"},{"line_number":30,"context_line":"    |---subnets/"},{"line_number":31,"context_line":"        |---__init__.py"},{"line_number":32,"context_line":"        |---subnet.py"},{"line_number":33,"context_line":"        |---extensions/"},{"line_number":34,"context_line":"            |---__init__.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_5e3e9f8c","line":34,"range":{"start_line":19,"start_character":3,"end_line":34,"end_character":27},"in_reply_to":"9ad45d7e_1d049fbe","updated":"2016-08-10 15:57:36.000000000","message":"Yes, we will need to reshuffle things, and do it very tactically.","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"ba32b9233af828f35821448b814db5809a809ee5","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The Neutron objects tree should have the following structure::"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    objects/"},{"line_number":20,"context_line":"    |---__init__.py"},{"line_number":21,"context_line":"    |---base.py"},{"line_number":22,"context_line":"    |---\u003cany common/base classes\u003e"},{"line_number":23,"context_line":"    |---networks/ \u003c--- For Example"},{"line_number":24,"context_line":"        |---__init__.py"},{"line_number":25,"context_line":"        |---network.py \u003c--- Core Subnet Object Implementation"},{"line_number":26,"context_line":"        |---extensions/ \u003c--- Any extensions to Network object"},{"line_number":27,"context_line":"            |---__init__.py"},{"line_number":28,"context_line":"            |---mtu.py"},{"line_number":29,"context_line":"            |---port_security.py"},{"line_number":30,"context_line":"    |---subnets/"},{"line_number":31,"context_line":"        |---__init__.py"},{"line_number":32,"context_line":"        |---subnet.py"},{"line_number":33,"context_line":"        |---extensions/"},{"line_number":34,"context_line":"            |---__init__.py"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ad45d7e_9e0f7787","line":34,"range":{"start_line":19,"start_character":3,"end_line":34,"end_character":27},"in_reply_to":"9ad45d7e_5e3e9f8c","updated":"2016-08-10 16:02:42.000000000","message":"Done","commit_id":"59b0228848555e5adad01196a6bfed989cea8894"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9cd4fde8978903ddcdac5c57123ef82eaaafe3e2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The directory should follow the"},{"line_number":11,"context_line":"guidelines below."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_ca24d6c6","line":10,"range":{"start_line":10,"start_character":31,"end_line":10,"end_character":40},"updated":"2016-10-06 21:58:39.000000000","message":"The files and directories located inside of this directory","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"67497e546222517d5b24b90448937a188f2bf304","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The Neutron objects tree should have the following structure:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin models should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_4a8fe629","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":16},"updated":"2016-10-06 21:46:17.000000000","message":"objects?","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"8840053cb1cf3a0834353b7d07951354af80a82b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The Neutron objects tree should have the following structure:"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin models should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_6a0ae27a","line":20,"range":{"start_line":20,"start_character":9,"end_line":20,"end_character":16},"in_reply_to":"1a95cdbc_4a8fe629","updated":"2016-10-06 21:51:56.000000000","message":"Done","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"9cd4fde8978903ddcdac5c57123ef82eaaafe3e2","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin models should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_cd6790e7","line":21,"range":{"start_line":21,"start_character":65,"end_line":21,"end_character":70},"updated":"2016-10-06 21:58:39.000000000","message":"This results in renaming the current merged files.","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"725fa0de0275fda9a60a5bab3d3ffe4d3e84567b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin models should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_6d567ccf","line":21,"range":{"start_line":21,"start_character":65,"end_line":21,"end_character":70},"in_reply_to":"1a95cdbc_cd6790e7","updated":"2016-10-06 22:00:48.000000000","message":"I guess the irony is that ports it the only one that isn\u0027t singular (trunk.py, subnet.py, network.py). How should we handle it?","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"83388a403883611867286b4c35e366bfcd81c18c","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin models should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a95cdbc_8d12e807","line":21,"range":{"start_line":21,"start_character":65,"end_line":21,"end_character":70},"in_reply_to":"1a95cdbc_cd6790e7","updated":"2016-10-06 22:01:37.000000000","message":"Well, we can at least apply the rule for new modules, and consider cleanup for existing violations later.","commit_id":"6075b300bd548fa7cb477245a5d2272f62cd5322"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"ead673d0ac009f18ed991db3e56896f4e4340ad9","unresolved":false,"context_lines":[{"line_number":6,"context_line":"Directory"},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The files and directories located inside"},{"line_number":11,"context_line":"of this directory should follow the guidelines below."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a95cdbc_289b8273","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":57},"updated":"2016-10-06 22:33:48.000000000","message":"modules, which have neutron objects definitions","commit_id":"b48fe5f3db441ff836a473ae894e08b3cc9c038e"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"48498af6b6f2e1e6a1633e8b5b7b1b2279266b6b","unresolved":false,"context_lines":[{"line_number":6,"context_line":"Directory"},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This directory is designed to contain all Neutron Objects"},{"line_number":10,"context_line":"shipped with core Neutron. The files and directories located inside"},{"line_number":11,"context_line":"of this directory should follow the guidelines below."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a95cdbc_83f1d903","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":57},"in_reply_to":"1a95cdbc_289b8273","updated":"2016-10-06 23:04:41.000000000","message":"To avoid repeating Neutron twice in the same segment, how about: modules which have objects definitions...","commit_id":"b48fe5f3db441ff836a473ae894e08b3cc9c038e"},{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"ead673d0ac009f18ed991db3e56896f4e4340ad9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin objects should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (port.py, not ports.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a95cdbc_4891ae46","line":21,"range":{"start_line":21,"start_character":51,"end_line":21,"end_character":74},"updated":"2016-10-06 22:33:48.000000000","message":"wrong example this not absolutely true check \nhttps://github.com/openstack/neutron/blob/master/neutron/objects/ports.py","commit_id":"b48fe5f3db441ff836a473ae894e08b3cc9c038e"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"7b1c3742c0aac4326eb1a23f91fa9e1b3bb995df","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* The expected directory structure is flat, except for the ML2 plugins. All ML2"},{"line_number":20,"context_line":"  plugin objects should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation)."},{"line_number":21,"context_line":"* Module names should use singular forms for nouns (network.py, not networks.py)."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_a602846d","line":21,"updated":"2016-10-13 03:57:28.000000000","message":"can you list the current violations, like ports.py, to make the intention clear?\n\nhow about qos?  is it expected to be flattened?","commit_id":"1762dc701b8e8c54d4a9189b1211515643d9f844"}]}
