)]}'
{"doc/source/code-review.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5a73c9517236370764472fd2b2c63ac226f969eb","unresolved":false,"context_lines":[{"line_number":5,"context_line":"This is a very terse set of points for reviewers to consider when"},{"line_number":6,"context_line":"looking at nova code. These are things that are important for the"},{"line_number":7,"context_line":"continued smooth operation of Nova, but that tend to be carried as"},{"line_number":8,"context_line":"\"tribal knowledge\" instead of being written down. It is an attempt to"},{"line_number":9,"context_line":"boil down some of those things into nearly checklist format. Further"},{"line_number":10,"context_line":"explanation about why some of these things are important belongs"},{"line_number":11,"context_line":"elsewhere and should be linked from here."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_73f74559","line":8,"updated":"2015-10-09 01:16:54.000000000","message":"This isn\u0027t tribal knowledge, but in general we need to get better about enforcing good help text for new config options.  markus_z has a spec that goes into detail about that and suggests a kind of checklist/template for config options and w/o being able to validate that kind of thing with tooling (and would require changes to oslo.config), I think we could integrate something high-level with basic points in a code review guide for nova.","commit_id":"e6f9365534cfe4be568ba4d9a6a65298d1686757"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"16bb628760be3cfacbdf0a6272e3a1b838239121","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  another, then that must be done online. Generally, this can and"},{"line_number":69,"context_line":"  should be hidden within the object layer so that an object can load"},{"line_number":70,"context_line":"  from either the old or new location, and save to the new one."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a50d1a3_0696d73e","line":71,"updated":"2015-07-22 15:04:19.000000000","message":"You may want to add Reference section or Other or something like that and point to http://docs.openstack.org/infra/manual/developers.html#peer-review which is what\u0027s been around generically forever.","commit_id":"e6f9365534cfe4be568ba4d9a6a65298d1686757"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9ee20be7ace2c1f334660b9f31630d5f0c68ce3a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  another, then that must be done online. Generally, this can and"},{"line_number":69,"context_line":"  should be hidden within the object layer so that an object can load"},{"line_number":70,"context_line":"  from either the old or new location, and save to the new one."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_91fbe046","line":71,"in_reply_to":"3a50d1a3_0696d73e","updated":"2015-10-09 13:48:39.000000000","message":"Maybe we should remove that, put the content here (where it can grow larger) and provide a link to this?","commit_id":"e6f9365534cfe4be568ba4d9a6a65298d1686757"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2368c1a07deef468990cb378cedf244b96a7256b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"  another, then that must be done online. Generally, this can and"},{"line_number":69,"context_line":"  should be hidden within the object layer so that an object can load"},{"line_number":70,"context_line":"  from either the old or new location, and save to the new one."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a2fa921_c31c2b6c","line":71,"in_reply_to":"7a2fa921_91fbe046","updated":"2015-10-09 13:51:29.000000000","message":"It\u0027s a generic doc though in the infra manual, for all projects to use, so it\u0027d be weird to make them start pointing at nova\u0027s rules.","commit_id":"e6f9365534cfe4be568ba4d9a6a65298d1686757"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26236831f4148d2747276192c155a23f67b6c1ab","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_039a23b9","line":41,"updated":"2015-10-09 13:58:11.000000000","message":"I think the hash tests catch this now, but still good to point out.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d716883ed6198d91a885a492accbee41573101f7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_1c94c440","line":41,"range":{"start_line":41,"start_character":21,"end_line":41,"end_character":60},"updated":"2015-10-09 14:46:10.000000000","message":"well, only if the method is remotable unless I missed something :-)","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a07e8ccecaab1cc494e5415f7113b47f52543a15","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_7cca981c","line":41,"range":{"start_line":41,"start_character":21,"end_line":41,"end_character":60},"in_reply_to":"7a2fa921_1c94c440","updated":"2015-10-09 14:49:29.000000000","message":"Correct, the hash tests have done this for a long time. It\u0027s good to point out because it helps explain why just fixing the hash is not the right thing to do.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26236831f4148d2747276192c155a23f67b6c1ab","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":45,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":46,"context_line":"  the old attribute to the new one with an obj_load_attr() handler."},{"line_number":47,"context_line":"* New attributes should be removed from the primitive in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_a3d6cf4c","line":44,"updated":"2015-10-09 13:58:11.000000000","message":"We have changed attribute types in cases of changing from a free-form string to an enum field, e.g. 0312e1a1b389a801ea08d0b56357220f871ccebb - so do we make a note about that exceptional case?","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d716883ed6198d91a885a492accbee41573101f7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":45,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":46,"context_line":"  the old attribute to the new one with an obj_load_attr() handler."},{"line_number":47,"context_line":"* New attributes should be removed from the primitive in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_fc7f8812","line":44,"range":{"start_line":44,"start_character":12,"end_line":44,"end_character":17},"updated":"2015-10-09 14:46:10.000000000","message":"you should also mention attribute renaming","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d716883ed6198d91a885a492accbee41573101f7","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":45,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":46,"context_line":"  the old attribute to the new one with an obj_load_attr() handler."},{"line_number":47,"context_line":"* New attributes should be removed from the primitive in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_7cb938cb","line":44,"in_reply_to":"7a2fa921_a3d6cf4c","updated":"2015-10-09 14:46:10.000000000","message":"@Matt, well I\u0027m in favor of documenting that, and just leaving those changes very exceptional...","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a07e8ccecaab1cc494e5415f7113b47f52543a15","unresolved":false,"context_lines":[{"line_number":41,"context_line":"* If an attribute or method is added, or a method is changed, the"},{"line_number":42,"context_line":"  object version must be bumped. Changes for methods follow the same"},{"line_number":43,"context_line":"  rules as above for regular RPC methods."},{"line_number":44,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":45,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":46,"context_line":"  the old attribute to the new one with an obj_load_attr() handler."},{"line_number":47,"context_line":"* New attributes should be removed from the primitive in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_bc9270f4","line":44,"range":{"start_line":44,"start_character":12,"end_line":44,"end_character":17},"in_reply_to":"7a2fa921_fc7f8812","updated":"2015-10-09 14:49:29.000000000","message":"Well, I think we should avoid documenting every possible thing, both because it makes this confusing and harder to find the common cases, but also opens up the possibility for someone to misinterpret a rule here and do a thing without understanding what\u0027s going on. My preference would be to handle exceptional cases in review by explaining why it\u0027s okay.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26236831f4148d2747276192c155a23f67b6c1ab","unresolved":false,"context_lines":[{"line_number":57,"context_line":"* Changes to an object as described above will cause a hash to change"},{"line_number":58,"context_line":"  in TestObjectVersions. This is a reminder to the developer and the"},{"line_number":59,"context_line":"  reviewer that the version needs to be bumped. There are times where"},{"line_number":60,"context_line":"  we need to make a change to an object version without bumping a"},{"line_number":61,"context_line":"  version, but those cases are only where the hash logic detects a"},{"line_number":62,"context_line":"  change that is not actually a compatibility issue and must be"},{"line_number":63,"context_line":"  handled carefully."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_e36607ba","line":60,"updated":"2015-10-09 13:58:11.000000000","message":"This reads oddly: \"where we need to make a change to an object version without bumping a version\" did you mean just \"to an object without bumping the version\"?","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9a42e0b43c34c8ef477d072f66fc9b3bce0ba225","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  we need to make a change to an object version without bumping a"},{"line_number":61,"context_line":"  version, but those cases are only where the hash logic detects a"},{"line_number":62,"context_line":"  change that is not actually a compatibility issue and must be"},{"line_number":63,"context_line":"  handled carefully."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Database Schema"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_9c53f416","line":63,"updated":"2015-10-09 14:35:51.000000000","message":"when an object version bump, the other object refer to this one should bump version also","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fd4e46be67c7deaa1039bc1c7ffe07cb3e3fbd82","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  we need to make a change to an object version without bumping a"},{"line_number":61,"context_line":"  version, but those cases are only where the hash logic detects a"},{"line_number":62,"context_line":"  change that is not actually a compatibility issue and must be"},{"line_number":63,"context_line":"  handled carefully."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Database Schema"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_973d0d91","line":63,"in_reply_to":"7a2fa921_5cb8fc74","updated":"2015-10-09 14:55:35.000000000","message":"ah, thanks, I got it.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"d716883ed6198d91a885a492accbee41573101f7","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  we need to make a change to an object version without bumping a"},{"line_number":61,"context_line":"  version, but those cases are only where the hash logic detects a"},{"line_number":62,"context_line":"  change that is not actually a compatibility issue and must be"},{"line_number":63,"context_line":"  handled carefully."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Database Schema"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_fc4228ad","line":63,"in_reply_to":"7a2fa921_9c53f416","updated":"2015-10-09 14:46:10.000000000","message":"I feel it\u0027s no longer (or close to be) needed since the version manifests are not in ovoo...","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a07e8ccecaab1cc494e5415f7113b47f52543a15","unresolved":false,"context_lines":[{"line_number":60,"context_line":"  we need to make a change to an object version without bumping a"},{"line_number":61,"context_line":"  version, but those cases are only where the hash logic detects a"},{"line_number":62,"context_line":"  change that is not actually a compatibility issue and must be"},{"line_number":63,"context_line":"  handled carefully."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Database Schema"},{"line_number":66,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_5cb8fc74","line":63,"in_reply_to":"7a2fa921_fc4228ad","updated":"2015-10-09 14:49:29.000000000","message":"Yeah, this is not an issue anymore and I\u0027m in the process of removing that stuff, so we can leave that out here.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"26236831f4148d2747276192c155a23f67b6c1ab","unresolved":false,"context_lines":[{"line_number":66,"context_line":"---------------"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Changes to the database schema must generally be additive-only. This"},{"line_number":69,"context_line":"  means you can add columns, but you can\u0027t drop or alter a column."},{"line_number":70,"context_line":"* Dropping things from the schema is a thing we need to be extremely"},{"line_number":71,"context_line":"  careful about, making sure that the column has not been used (even"},{"line_number":72,"context_line":"  present in one of our models) for at least a release."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_c302ebb3","line":69,"updated":"2015-10-09 13:58:11.000000000","message":"We have tests for this now too right?","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a07e8ccecaab1cc494e5415f7113b47f52543a15","unresolved":false,"context_lines":[{"line_number":66,"context_line":"---------------"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Changes to the database schema must generally be additive-only. This"},{"line_number":69,"context_line":"  means you can add columns, but you can\u0027t drop or alter a column."},{"line_number":70,"context_line":"* Dropping things from the schema is a thing we need to be extremely"},{"line_number":71,"context_line":"  careful about, making sure that the column has not been used (even"},{"line_number":72,"context_line":"  present in one of our models) for at least a release."}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a2fa921_7c34d8fa","line":69,"in_reply_to":"7a2fa921_c302ebb3","updated":"2015-10-09 14:49:29.000000000","message":"We have some hacky tests to try to catch you, yeah. But I think we should keep this rule/guideline and definitely not assume that if it passes tests it\u0027s okay.","commit_id":"c20b2a8ea3eb54ea433b27dcab355361142301bd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ac7eb3d7aaa105aeebb9aa11537bbe2b2ca2ef0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"This is a very terse set of points for reviewers to consider when"},{"line_number":6,"context_line":"looking at nova code. These are things that are important for the"},{"line_number":7,"context_line":"continued smooth operation of Nova, but that tend to be carried as"},{"line_number":8,"context_line":"\"tribal knowledge\" instead of being written down. It is an attempt to"},{"line_number":9,"context_line":"boil down some of those things into nearly checklist format. Further"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_bc66e2ea","line":6,"updated":"2015-10-09 19:48:24.000000000","message":"It would have been more terse had you excluded the first sentence stating it was going to be terse.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b38b9e22c3db97164f84689197370d7d049999c6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or remotable method is added, or a method is"},{"line_number":42,"context_line":"  changed, the object version must be bumped. Changes for methods"},{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_373af9e7","line":41,"updated":"2015-10-09 15:07:35.000000000","message":"should we use \u0027field\u0027 instead of \u0027attribute\u0027, and use remotable_method instead of method. Some change like this needn\u0027t bump version https://review.openstack.org/#/c/52157/1/nova/objects/instance.py","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"32c79c9e1b233852e5719cad75220ddaae30c379","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or remotable method is added, or a method is"},{"line_number":42,"context_line":"  changed, the object version must be bumped. Changes for methods"},{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_dc563ecd","line":41,"in_reply_to":"7a2fa921_373af9e7","updated":"2015-10-09 19:38:02.000000000","message":"Well, it sounds a bit nitpicky since this documentation is for reviewers. Technically, we set an attribute called fields which is a dict of types but the resulted object is getting a collection of attributes.\nHonestly, I\u0027m not very opiniated but by thinking about that, I feel that calling this special attribute a field is okay, but a bit incorrect.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ac7eb3d7aaa105aeebb9aa11537bbe2b2ca2ef0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or remotable method is added, or a method is"},{"line_number":42,"context_line":"  changed, the object version must be bumped. Changes for methods"},{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_7ceb6adc","line":41,"in_reply_to":"7a2fa921_373af9e7","updated":"2015-10-09 19:48:24.000000000","message":"Yeah, Alex makes a good point above.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8cea3551b16b58cc9b41f965073fc71c79fccc53","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Object Versions"},{"line_number":39,"context_line":"---------------"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* If an attribute or remotable method is added, or a method is"},{"line_number":42,"context_line":"  changed, the object version must be bumped. Changes for methods"},{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_efa6da0d","line":41,"in_reply_to":"7a2fa921_7ceb6adc","updated":"2015-10-09 20:00:50.000000000","message":"So, if we need to be clear, then we have to name \"a dict item of the fields attribute from the class which turns up into an object attribute, what we call by extension a field\"","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"89f31399cb0de04a563ea1402d384324fad6c5f5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"},{"line_number":45,"context_line":"  version and then correct the version-hash in the tests."},{"line_number":46,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":47,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":48,"context_line":"  the old attribute to the new one with an obj_load_attr()"},{"line_number":49,"context_line":"  handler. There are some exceptional cases where changing the type"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_97318d5c","line":46,"range":{"start_line":46,"start_character":12,"end_line":46,"end_character":17},"updated":"2015-10-09 15:02:22.000000000","message":"Renaming an attribute should follow the same rules, but we can leave that detail for a later change.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ac7eb3d7aaa105aeebb9aa11537bbe2b2ca2ef0","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  follow the same rules as above for regular RPC methods. We have"},{"line_number":44,"context_line":"  tests to try to catch these changes, which remind you to bump the"},{"line_number":45,"context_line":"  version and then correct the version-hash in the tests."},{"line_number":46,"context_line":"* Attribute types cannot be changed. If absolutely required, create a"},{"line_number":47,"context_line":"  new attribute and deprecate the old one. Ideally, support converting"},{"line_number":48,"context_line":"  the old attribute to the new one with an obj_load_attr()"},{"line_number":49,"context_line":"  handler. There are some exceptional cases where changing the type"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_fc83fa00","line":46,"updated":"2015-10-09 19:48:24.000000000","message":"s/Attribute/Field/gi","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ac7eb3d7aaa105aeebb9aa11537bbe2b2ca2ef0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  the old attribute to the new one with an obj_load_attr()"},{"line_number":49,"context_line":"  handler. There are some exceptional cases where changing the type"},{"line_number":50,"context_line":"  can be allowed, but care must be taken to ensure it does not affect"},{"line_number":51,"context_line":"  the wireline API."},{"line_number":52,"context_line":"* New attributes should be removed from the primitive in"},{"line_number":53,"context_line":"  obj_make_compatible() if the attribute was added after the target"},{"line_number":54,"context_line":"  version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_9ccd2668","line":51,"updated":"2015-10-09 19:48:24.000000000","message":"Just remove the last sentence, IMHO. It is a contradiction to the ultimatum issued in the first sentence of the paragraph and introduces a lack of clarity.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cc9464b6cd1b082ba97f38e8a680c838c5e9eb42","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  the old attribute to the new one with an obj_load_attr()"},{"line_number":49,"context_line":"  handler. There are some exceptional cases where changing the type"},{"line_number":50,"context_line":"  can be allowed, but care must be taken to ensure it does not affect"},{"line_number":51,"context_line":"  the wireline API."},{"line_number":52,"context_line":"* New attributes should be removed from the primitive in"},{"line_number":53,"context_line":"  obj_make_compatible() if the attribute was added after the target"},{"line_number":54,"context_line":"  version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_bcd902f5","line":51,"in_reply_to":"7a2fa921_9ccd2668","updated":"2015-10-09 19:50:24.000000000","message":"It was added b/c it came up in an earlier patch set because we allow changing string field types to enums (which are also strings, just more restricted in the value).","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f1c253d94a823f3bda1ed8422560c98b4ecda5e6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  the old attribute to the new one with an obj_load_attr()"},{"line_number":49,"context_line":"  handler. There are some exceptional cases where changing the type"},{"line_number":50,"context_line":"  can be allowed, but care must be taken to ensure it does not affect"},{"line_number":51,"context_line":"  the wireline API."},{"line_number":52,"context_line":"* New attributes should be removed from the primitive in"},{"line_number":53,"context_line":"  obj_make_compatible() if the attribute was added after the target"},{"line_number":54,"context_line":"  version."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_cfe51edc","line":51,"in_reply_to":"7a2fa921_bcd902f5","updated":"2015-10-09 20:13:06.000000000","message":"Yeah.","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9ac7eb3d7aaa105aeebb9aa11537bbe2b2ca2ef0","unresolved":false,"context_lines":[{"line_number":79,"context_line":"  present in one of our models) for at least a release."},{"line_number":80,"context_line":"* Data migrations must not be present in schema migrations. If data"},{"line_number":81,"context_line":"  needs to be converted to another format, or moved from one place to"},{"line_number":82,"context_line":"  another, then that must be done online. Generally, this can and"},{"line_number":83,"context_line":"  should be hidden within the object layer so that an object can load"},{"line_number":84,"context_line":"  from either the old or new location, and save to the new one."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_bcf6e28c","line":82,"updated":"2015-10-09 19:48:24.000000000","message":"s/online/while the database server remains online/","commit_id":"bb51c435528b4708dd7ea307a4ad4cc6c8358953"}]}
