)]}'
{"HACKING.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0995f03007e5fcf02a0f59000141aad9af9383a","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Nova Specific Commandments"},{"line_number":9,"context_line":"---------------------------"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- ``placement.db`` imports are not allowed in ``nova/virt/*``"},{"line_number":12,"context_line":"- [N309] no db session in public API methods (disabled)"},{"line_number":13,"context_line":"  This enforces a guideline defined in ``oslo.db.sqlalchemy.session``"},{"line_number":14,"context_line":"- [N310] timeutils.utcnow() wrapper must be used instead of direct calls to"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_0f30e89d","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":61},"updated":"2018-09-03 12:53:34.000000000","message":"this needs to be fixed in a followup","commit_id":"6e28f0bd03866ade1e83102aaf2281aa5dd44ecd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Nova Specific Commandments"},{"line_number":9,"context_line":"---------------------------"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- ``placement.db`` imports are not allowed in ``nova/virt/*``"},{"line_number":12,"context_line":"- [N309] no db session in public API methods (disabled)"},{"line_number":13,"context_line":"  This enforces a guideline defined in ``oslo.db.sqlalchemy.session``"},{"line_number":14,"context_line":"- [N310] timeutils.utcnow() wrapper must be used instead of direct calls to"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_73f9254c","line":11,"updated":"2018-09-04 23:18:16.000000000","message":"This change doesn\u0027t make sense, but I guess it\u0027ll be caught when we do the broad \u0027nova\u0027 grep.","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"doc/source/contributor/placement.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f0995f03007e5fcf02a0f59000141aad9af9383a","unresolved":false,"context_lines":[{"line_number":401,"context_line":"There are some exceptions to the self-contained rule (which are actively being"},{"line_number":402,"context_line":"addressed to prepare for the extraction):"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"* Some of the code related to a resource class cache is within the `placement.db`"},{"line_number":405,"context_line":"  package, while other parts are in ``nova/rc_fields.py``."},{"line_number":406,"context_line":"* Database models, migrations and tables are described as part of the nova api"},{"line_number":407,"context_line":"  database. An optional configuration option,"},{"line_number":408,"context_line":"  :oslo.config:option:`placement_database.connection`, can be set to use a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_6f207c4a","line":405,"range":{"start_line":404,"start_character":0,"end_line":405,"end_character":58},"updated":"2018-09-03 12:53:34.000000000","message":"this change is inconsistent as it does change the dotted module path but not the file path","commit_id":"6e28f0bd03866ade1e83102aaf2281aa5dd44ecd"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":401,"context_line":"There are some exceptions to the self-contained rule (which are actively being"},{"line_number":402,"context_line":"addressed to prepare for the extraction):"},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"* Some of the code related to a resource class cache is within the `placement.db`"},{"line_number":405,"context_line":"  package, while other parts are in ``nova/rc_fields.py``."},{"line_number":406,"context_line":"* Database models, migrations and tables are described as part of the nova api"},{"line_number":407,"context_line":"  database. An optional configuration option,"},{"line_number":408,"context_line":"  :oslo.config:option:`placement_database.connection`, can be set to use a"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f79a3b5_d1703175","line":405,"range":{"start_line":404,"start_character":0,"end_line":405,"end_character":58},"in_reply_to":"3f79a3b5_6f207c4a","updated":"2018-09-04 23:18:16.000000000","message":"I posted [1] to fix up \"everything\" in this file.\n\n[1] https://review.openstack.org/#/c/599864/","commit_id":"6e28f0bd03866ade1e83102aaf2281aa5dd44ecd"}],"placement/db/__init__.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"\"\"\"Use placement.db.api instead. In the past this file imported * from there,"},{"line_number":13,"context_line":"which led to unwanted imports.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b1f815c4","line":12,"updated":"2018-09-04 23:18:16.000000000","message":"Do we still need this (file to be nonempty)?","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8432934963b39739069d1ef4491b45e7cd8653c2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"\"\"\"Use placement.db.api instead. In the past this file imported * from there,"},{"line_number":13,"context_line":"which led to unwanted imports.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_3c0ff539","line":12,"in_reply_to":"3f79a3b5_b1f815c4","updated":"2018-09-05 09:25:04.000000000","message":"It goes away further along in the stack","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"placement/db/api.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Defines interface for DB access."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Functions in this module are imported into the placement.db namespace. Call these"},{"line_number":21,"context_line":"functions from placement.db namespace, not the placement.db.api namespace."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"All functions in this module return objects that implement a dictionary-like"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_91fb99bc","line":20,"updated":"2018-09-04 23:18:16.000000000","message":"pep fixed later\n\nbut is this still true/relevant/applicable?","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8432934963b39739069d1ef4491b45e7cd8653c2","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Defines interface for DB access."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Functions in this module are imported into the placement.db namespace. Call these"},{"line_number":21,"context_line":"functions from placement.db namespace, not the placement.db.api namespace."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"All functions in this module return objects that implement a dictionary-like"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_dcffe1ff","line":20,"in_reply_to":"3f79a3b5_91fb99bc","updated":"2018-09-05 09:25:04.000000000","message":"This entire file is removed later. placement doesn\u0027t have a specific db \"api\", just the objects talking to the db\n\nThese changes are effectively automation noise","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"placement/db/sqlalchemy/api_migrations/migrate_repo/versions/020_block_device_mappings_mediumtext.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from sqlalchemy import MetaData"},{"line_number":14,"context_line":"from sqlalchemy import Table"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from placement.db.sqlalchemy import api_models"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_9114f9ea","line":16,"updated":"2018-09-04 23:18:16.000000000","message":"This file should go away.","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"8432934963b39739069d1ef4491b45e7cd8653c2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from sqlalchemy import MetaData"},{"line_number":14,"context_line":"from sqlalchemy import Table"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from placement.db.sqlalchemy import api_models"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_376b8eb9","line":16,"in_reply_to":"3f79a3b5_9114f9ea","updated":"2018-09-05 09:25:04.000000000","message":"As matt points out in http://lists.openstack.org/pipermail/openstack-dev/2018-September/134264.html what happens with migration files depends on the how we intend to support the different strategies people have for using the db.\n\nMany of the existing migrations (and models) are not required for placement itself, but for an install that chooses to use the nova-api db for their placement db (one option for \"upgrading\") there will need to be some smarts with regards to migrations.","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"placement/db/sqlalchemy/api_migrations/migrate_repo/versions/028_build_requests_instance_mediumtext.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from sqlalchemy import MetaData"},{"line_number":14,"context_line":"from sqlalchemy import Table"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from placement.db.sqlalchemy import api_models"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_51d8a151","line":16,"updated":"2018-09-04 23:18:16.000000000","message":"ditto","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"placement/db/sqlalchemy/api_migrations/migrate_repo/versions/052_request_specs_spec_mediumtext.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":13,"context_line":"from sqlalchemy import MetaData"},{"line_number":14,"context_line":"from sqlalchemy import Table"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from placement.db.sqlalchemy import api_models"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_f1d8cd52","line":16,"updated":"2018-09-04 23:18:16.000000000","message":"ditto","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}],"placement/tests/fixtures.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"24cc7e4e26da19a63efe80b048d0ec97363a63af","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        # - mock at the object layer rather than the db layer, for example:"},{"line_number":255,"context_line":"        #       nova.objects.instance.Instance.get"},{"line_number":256,"context_line":"        #            vs."},{"line_number":257,"context_line":"        #       placement.db.instance_get"},{"line_number":258,"context_line":"        #"},{"line_number":259,"context_line":"        # - mock at the api layer rather than the object layer, for example:"},{"line_number":260,"context_line":"        #       common.get_instance"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_71ecbdf3","line":257,"range":{"start_line":257,"start_character":0,"end_line":257,"end_character":41},"updated":"2018-09-04 23:18:16.000000000","message":"This doesn\u0027t make sense\n\nbut gets whacked later.","commit_id":"3100eb64ae198cabcf417f6e6dd785926392895e"}]}
