)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-02 20:45:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Restricting domain_id changing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Restricts the changing of a domain_id for a project, (even with the"},{"line_number":10,"context_line":"\u0027domain_id_immutable\u0027 property set to False), allowing it only for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_b3510365","line":7,"updated":"2015-08-03 17:44:55.000000000","message":"Restrict domain_id update","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Henrique Truta \u003chenrique@lsd.ufcg.edu.br\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-02 20:45:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Restricting domain_id changing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Restricts the changing of a domain_id for a project, (even with the"},{"line_number":10,"context_line":"\u0027domain_id_immutable\u0027 property set to False), allowing it only for"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_5d55a9f7","line":7,"in_reply_to":"1a4dcd0f_b3510365","updated":"2015-08-05 17:46:21.000000000","message":"Done","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Restricting domain_id changing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Restricts the changing of a domain_id for a project, (even with the"},{"line_number":10,"context_line":"\u0027domain_id_immutable\u0027 property set to False), allowing it only for"},{"line_number":11,"context_line":"regular projects that are immediately under the root project and have"},{"line_number":12,"context_line":"no children of its own."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_734b7bb1","line":9,"updated":"2015-08-03 17:44:55.000000000","message":"the update*","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Restricting domain_id changing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Restricts the changing of a domain_id for a project, (even with the"},{"line_number":10,"context_line":"\u0027domain_id_immutable\u0027 property set to False), allowing it only for"},{"line_number":11,"context_line":"regular projects that are immediately under the root project and have"},{"line_number":12,"context_line":"no children of its own."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_7d5ae52b","line":9,"in_reply_to":"1a4dcd0f_734b7bb1","updated":"2015-08-05 17:46:21.000000000","message":"Done","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e9c22e755e04ad35f9a0ecf00ec967f8b6a941d7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either."},{"line_number":14,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":15,"context_line":"a WARN in case it is set False."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: 1479452"},{"line_number":18,"context_line":"Related-bug: 1502157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"3a29b11f_89b99b17","line":15,"updated":"2015-10-21 19:55:00.000000000","message":"the commit message should say why the change is being made. we can tell what the changes are because of the code in the review.","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4bfba81beb1e88730cb5dc5ad62680401efd5f4b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either."},{"line_number":14,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":15,"context_line":"a WARN in case it is set False."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-bug: 1479452"},{"line_number":18,"context_line":"Related-bug: 1502157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"3a29b11f_34069a86","line":15,"in_reply_to":"3a29b11f_89b99b17","updated":"2015-10-21 20:37:33.000000000","message":"Done","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3615db7e5334b3e12cc4e07d1dfc7f25ddaaa0bd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"},{"line_number":19,"context_line":"Related-bug: 1502157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"da85f559_085d8078","line":16,"updated":"2015-11-11 19:36:58.000000000","message":"this isn\u0027t how the library works. It can log or it can raise depending on the setting of a config option.","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"650db148598038c84747eed8be43b0f8bdd0639a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"},{"line_number":19,"context_line":"Related-bug: 1502157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"9a8ffd7b_6ba8ef8c","line":16,"in_reply_to":"ba8a016a_2533e8ac","updated":"2015-12-02 16:44:59.000000000","message":"Done","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"69cbc4123e9c23fde0bf7537bef2651570de2bdd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"},{"line_number":19,"context_line":"Related-bug: 1502157"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"ba8a016a_2533e8ac","line":16,"in_reply_to":"da85f559_085d8078","updated":"2015-11-18 20:41:53.000000000","message":"ok. I\u0027ll fix it if another patch is needed","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"fa69d971_7f6a731c","line":15,"range":{"start_line":15,"start_character":16,"end_line":15,"end_character":21},"updated":"2015-12-29 20:58:34.000000000","message":"(nit) change \"signs\" to \"sets\"","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a2bd490294ce4f50f19ece430ad43bc6289f6aa","unresolved":false,"context_lines":[{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"fa69d971_e7d91cf4","line":15,"range":{"start_line":15,"start_character":26,"end_line":15,"end_character":61},"updated":"2016-01-06 20:17:45.000000000","message":"++","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also signs the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Closes-bug: 1479452"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"fa69d971_bb51ae10","line":15,"range":{"start_line":15,"start_character":26,"end_line":15,"end_character":61},"in_reply_to":"fa69d971_e7d91cf4","updated":"2016-01-08 04:12:12.000000000","message":"Done","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8a3a379a96cad6f126eedfbb18c25f27327c1a8a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"root projects that have no children of its own. The update of the"},{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also sets the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"dae33548_1578dbf1","line":14,"updated":"2016-02-15 15:58:42.000000000","message":"we should probably also mention that we will be issuing depreciation warnings if the domain_id of a user or group is changed.","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8662ab7fff0f35071982f03a3f7bf7ec1d6c7204","unresolved":false,"context_lines":[{"line_number":11,"context_line":"root projects that have no children of its own. The update of the"},{"line_number":12,"context_line":"domain_id of a project that has the is_domain field set True is not"},{"line_number":13,"context_line":"allowed either. The update of this property may cause projects hierarchy"},{"line_number":14,"context_line":"inconsistency and security issues."},{"line_number":15,"context_line":"This patch also sets the \u0027domain_id_immutable\u0027 as deprecated and emits"},{"line_number":16,"context_line":"a WARN in case it is set False."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"dae33548_0eae052e","line":14,"in_reply_to":"dae33548_1578dbf1","updated":"2016-02-15 17:00:26.000000000","message":"Done","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"}],"keystone/common/config.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                        \u0027default. This global limit may be then overridden \u0027"},{"line_number":89,"context_line":"                        \u0027for a specific driver, by specifying a list_limit \u0027"},{"line_number":90,"context_line":"                        \u0027in the appropriate section (e.g. [assignment]).\u0027),"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        cfg.BoolOpt(\u0027domain_id_immutable\u0027, default\u003dTrue,"},{"line_number":93,"context_line":"                    help\u003d\u0027Set this to false if you want to enable the \u0027"},{"line_number":94,"context_line":"                         \u0027ability for user, group and project entities \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_f3d54bb9","line":91,"updated":"2015-08-03 17:44:55.000000000","message":"remove this","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":88,"context_line":"                        \u0027default. This global limit may be then overridden \u0027"},{"line_number":89,"context_line":"                        \u0027for a specific driver, by specifying a list_limit \u0027"},{"line_number":90,"context_line":"                        \u0027in the appropriate section (e.g. [assignment]).\u0027),"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        cfg.BoolOpt(\u0027domain_id_immutable\u0027, default\u003dTrue,"},{"line_number":93,"context_line":"                    help\u003d\u0027Set this to false if you want to enable the \u0027"},{"line_number":94,"context_line":"                         \u0027ability for user, group and project entities \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_1d440148","line":91,"in_reply_to":"1a4dcd0f_f3d54bb9","updated":"2015-08-05 17:46:21.000000000","message":"Done","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                         \u0027domain_id. Allowing such movement is not \u0027"},{"line_number":98,"context_line":"                         \u0027recommended if the scope of a domain admin is being \u0027"},{"line_number":99,"context_line":"                         \u0027restricted by use of an appropriate policy file \u0027"},{"line_number":100,"context_line":"                         \u0027(see policy.v3cloudsample as an example).\u0027,"},{"line_number":101,"context_line":"                    deprecated_for_removal\u003dTrue),"},{"line_number":102,"context_line":"        cfg.BoolOpt(\u0027strict_password_check\u0027, default\u003dFalse,"},{"line_number":103,"context_line":"                    help\u003d\u0027If set to true, strict password length checking is \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_dfc6ff15","line":100,"updated":"2015-12-29 20:58:34.000000000","message":"suggest add some text saying that the ability to move entities between domains will be removed in a future release.","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                         \u0027domain_id. Allowing such movement is not \u0027"},{"line_number":98,"context_line":"                         \u0027recommended if the scope of a domain admin is being \u0027"},{"line_number":99,"context_line":"                         \u0027restricted by use of an appropriate policy file \u0027"},{"line_number":100,"context_line":"                         \u0027(see policy.v3cloudsample as an example).\u0027,"},{"line_number":101,"context_line":"                    deprecated_for_removal\u003dTrue),"},{"line_number":102,"context_line":"        cfg.BoolOpt(\u0027strict_password_check\u0027, default\u003dFalse,"},{"line_number":103,"context_line":"                    help\u003d\u0027If set to true, strict password length checking is \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_3b3e1eb9","line":100,"in_reply_to":"fa69d971_dfc6ff15","updated":"2016-01-08 04:12:12.000000000","message":"Done","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"681417aa5e84b8d8e8a6ae14180220e6e941fa04","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                         \u0027restricted by use of an appropriate policy file \u0027"},{"line_number":120,"context_line":"                         \u0027(see policy.v3cloudsample as an example). This \u0027"},{"line_number":121,"context_line":"                         \u0027ability is deprecated and will be removed in a \u0027"},{"line_number":122,"context_line":"                         \u0027future release.\u0027,"},{"line_number":123,"context_line":"                    deprecated_for_removal\u003dTrue),"},{"line_number":124,"context_line":"        cfg.BoolOpt(\u0027strict_password_check\u0027, default\u003dFalse,"},{"line_number":125,"context_line":"                    help\u003d\u0027If set to true, strict password length checking is \u0027"}],"source_content_type":"text/x-python","patch_set":28,"id":"dae33548_e9b72984","line":122,"updated":"2016-02-16 15:50:02.000000000","message":"Would be handy to say what the behavior is going to be in the future.","commit_id":"27c4cbc9f7565ee978525de0053a1ae5f15de633"}],"keystone/identity/core.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":808,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":809,"context_line":"            LOG.warn(_(\u0027Update of domain_id is not recommended and will be \u0027"},{"line_number":810,"context_line":"                       \u0027deprecated in M.\u0027))"},{"line_number":811,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":812,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":813,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_0eff6e02","line":810,"updated":"2015-08-03 17:44:55.000000000","message":"This means that the deprecation will start in M or that it will be removed in M?","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":808,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":809,"context_line":"            LOG.warn(_(\u0027Update of domain_id is not recommended and will be \u0027"},{"line_number":810,"context_line":"                       \u0027deprecated in M.\u0027))"},{"line_number":811,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":812,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":813,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_dd8e9978","line":810,"in_reply_to":"1a4dcd0f_0eff6e02","updated":"2015-08-05 17:46:21.000000000","message":"I guess we should say that it IS deprecated and will be removed in M","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"6a746af5b0adeed821bac81ca25376bcad4fd018","unresolved":false,"context_lines":[{"line_number":808,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":809,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":810,"context_line":"            LOG.warn(_(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":811,"context_line":"                       \u0027removed in M.\u0027))"},{"line_number":812,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":813,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":814,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_d78f65ca","line":811,"updated":"2015-08-28 14:51:09.000000000","message":"Isn\u0027t it a strict deprecation/removal chain? Are you sure we can drop it in M?","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"68c8dceedd22910fd68106f06d39ce6522d20202","unresolved":false,"context_lines":[{"line_number":808,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":809,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":810,"context_line":"            LOG.warn(_(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":811,"context_line":"                       \u0027removed in M.\u0027))"},{"line_number":812,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":813,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":814,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_5c3e04db","line":811,"in_reply_to":"da20952f_d78f65ca","updated":"2015-08-28 23:11:30.000000000","message":"I think we can. This was suggested by Morgan in some meeting","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"32887241d9286315155a2b74adcc65da7967b54e","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            user[\u0027name\u0027] \u003d clean.user_name(user[\u0027name\u0027])"},{"line_number":808,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":809,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":812,"context_line":"                         \u0027removed in M.\u0027))"},{"line_number":813,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_c531040d","line":810,"updated":"2015-09-22 13:57:43.000000000","message":"How do you know they are trying to change the domain_id at this point?  Maybe they have just included the same domain_id that the entity is in already?","commit_id":"0f5988245a099e0a0768ea4d4e2d4fc9db0387ec"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"3897511ea021f6f8a9342492b49ee54d0af33581","unresolved":false,"context_lines":[{"line_number":807,"context_line":"            user[\u0027name\u0027] \u003d clean.user_name(user[\u0027name\u0027])"},{"line_number":808,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":809,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":812,"context_line":"                         \u0027removed in M.\u0027))"},{"line_number":813,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":15,"id":"ba15a1d1_57e8387c","line":810,"in_reply_to":"ba15a1d1_c531040d","updated":"2015-09-22 18:43:55.000000000","message":"True. I\u0027ll check on the original ref","commit_id":"0f5988245a099e0a0768ea4d4e2d4fc9db0387ec"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"4e81a5479f3cd9d5548503e1c10be1f98e8570cc","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":812,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":813,"context_line":"                             \u0027removed in M.\u0027))"},{"line_number":814,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":815,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":816,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_c6263516","line":813,"updated":"2015-09-25 02:07:34.000000000","message":"+1 David","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c81157fb9ef7e6cf083c6875f9b5e687e257e28b","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":812,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":813,"context_line":"                             \u0027removed in M.\u0027))"},{"line_number":814,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":815,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":816,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_5582cd53","line":813,"updated":"2015-09-24 23:25:02.000000000","message":"Need to update the version since this will be released in M. Deprecated for only one release? Should this use versionutils?","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"45ad05fe38ff246902893632d7828de19d527f8e","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":812,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":813,"context_line":"                             \u0027removed in M.\u0027))"},{"line_number":814,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":815,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":816,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_2385d158","line":813,"in_reply_to":"9a1a9d01_059e9a06","updated":"2015-09-30 23:03:45.000000000","message":"will merge just in M. Done","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"438165a394cfbf877229ef429c8c6ea17ea57108","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":811,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":812,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":813,"context_line":"                             \u0027removed in M.\u0027))"},{"line_number":814,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":815,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":816,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_059e9a06","line":813,"in_reply_to":"9a1a9d01_c6263516","updated":"2015-09-30 20:07:34.000000000","message":"I thought this would still land in Liberty. Isn\u0027it possible?","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c81157fb9ef7e6cf083c6875f9b5e687e257e28b","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":902,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":903,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":904,"context_line":"                         \u0027removed in M.\u0027))"},{"line_number":905,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":906,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":907,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_7587d161","line":904,"updated":"2015-09-24 23:25:02.000000000","message":"Same.","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"45ad05fe38ff246902893632d7828de19d527f8e","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":902,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":903,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":904,"context_line":"                         \u0027removed in M.\u0027))"},{"line_number":905,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":906,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":907,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_c3adf5e9","line":904,"in_reply_to":"9a1a9d01_7587d161","updated":"2015-09-30 23:03:45.000000000","message":"Done","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"14d11c23b0d7099c23caa02407e17fd850f00f84","unresolved":false,"context_lines":[{"line_number":990,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":991,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":992,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":993,"context_line":"                         \u0027removed in N.\u0027))"},{"line_number":994,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":995,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":996,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_d784c6d3","line":993,"updated":"2015-10-01 07:52:03.000000000","message":"same as above, what happens if they just haven\u0027t changed the domain_id but included it in the entity?","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"39b4a172a68856bca6527ad6bbcf8b01a079e625","unresolved":false,"context_lines":[{"line_number":990,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":991,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":992,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":993,"context_line":"                         \u0027removed in N.\u0027))"},{"line_number":994,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":995,"context_line":"        domain_id, driver, entity_id \u003d ("},{"line_number":996,"context_line":"            self._get_domain_driver_and_entity_id(group_id))"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_49648348","line":993,"in_reply_to":"9a1a9d01_d784c6d3","updated":"2015-10-01 17:28:19.000000000","message":"Done","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"1d568c4b0fef92e023b1bafb7e944eb3a45a394c","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":899,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":900,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":901,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":902,"context_line":"                             \u0027removed in N.\u0027))"},{"line_number":903,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":904,"context_line":"        if \u0027id\u0027 in user:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_0e2f4da2","line":901,"updated":"2015-10-02 12:44:44.000000000","message":"I\u0027d add when it was deprecated, something like:\n\n    \"... is deprecated as of Liberty and will be ...\"","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8e15b81816989a52099ea86e7e5fee0b502dc02a","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":899,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":900,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":901,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":902,"context_line":"                             \u0027removed in N.\u0027))"},{"line_number":903,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":904,"context_line":"        if \u0027id\u0027 in user:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_bad21733","line":901,"in_reply_to":"9a1a9d01_0e2f4da2","updated":"2015-10-02 14:05:46.000000000","message":"Done","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"1d568c4b0fef92e023b1bafb7e944eb3a45a394c","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":992,"context_line":"            old_group_ref \u003d self.get_group(group_id)"},{"line_number":993,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":994,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":995,"context_line":"                             \u0027removed in N.\u0027))"},{"line_number":996,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":997,"context_line":"        domain_id, driver, entity_id \u003d ("}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_ce171553","line":994,"updated":"2015-10-02 12:44:44.000000000","message":"Same as above, would be clearer.","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8e15b81816989a52099ea86e7e5fee0b502dc02a","unresolved":false,"context_lines":[{"line_number":991,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":992,"context_line":"            old_group_ref \u003d self.get_group(group_id)"},{"line_number":993,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":994,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will be \u0027"},{"line_number":995,"context_line":"                             \u0027removed in N.\u0027))"},{"line_number":996,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"},{"line_number":997,"context_line":"        domain_id, driver, entity_id \u003d ("}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_1a1783ee","line":994,"in_reply_to":"9a1a9d01_ce171553","updated":"2015-10-02 14:05:46.000000000","message":"Done","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1d85aef53ce41396ac3b53ca0297bcd2795d0b6","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":899,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":900,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":901,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":902,"context_line":"                             \u0027and will be removed in N.\u0027))"},{"line_number":903,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":904,"context_line":"        if \u0027id\u0027 in user:"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_b2b6bbda","line":901,"updated":"2015-10-06 16:21:07.000000000","message":"use oslo.log.versionutils.deprecated -- http://docs.openstack.org/developer/oslo.log/api/versionutils.html\n\nThe standard deprecation requirement for OpenStack is to have it deprecated for an entire release before removal, so this can\u0027t be removed until O.\n\nThis same comment applies below and throughout this review.","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6bc47e0d0e2c986eb1be83ee0e227d539bb066de","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":899,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":900,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":901,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":902,"context_line":"                             \u0027and will be removed in N.\u0027))"},{"line_number":903,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":904,"context_line":"        if \u0027id\u0027 in user:"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_f0ea840e","line":901,"in_reply_to":"7a2fa921_b2b6bbda","updated":"2015-10-08 14:55:44.000000000","message":"you mean using oslo_log.versionutils.report_deprecated_feature, right? because the one you said is a decorator, and we only want it to be called when a domain_id update happens.\n\nOk. I\u0027ll set the message to O","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"fa6badd1931dddaf35381d62d14ab51897bc4c30","unresolved":false,"context_lines":[{"line_number":898,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":899,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":900,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.deprecated("},{"line_number":903,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":904,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_6c60c9cf","line":901,"updated":"2015-10-16 15:02:02.000000000","message":"why do we do it here and not in _require_matching_domain_id? It should happen there.","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"02fb6439da530bf8f6ec4695ad0346bd876f57bd","unresolved":false,"context_lines":[{"line_number":898,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":899,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":900,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.deprecated("},{"line_number":903,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":904,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_4f537ae2","line":901,"in_reply_to":"5a2ca52d_6c60c9cf","updated":"2015-10-16 17:18:27.000000000","message":"https://github.com/openstack/keystone/blob/master/keystone/common/controller.py#L684 has a comment from henry nash suggesting that we take that check from there. It should be better to keep this logic in here","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"fa6badd1931dddaf35381d62d14ab51897bc4c30","unresolved":false,"context_lines":[{"line_number":993,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":994,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":995,"context_line":"            old_group_ref \u003d self.get_group(group_id)"},{"line_number":996,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":997,"context_line":"                versionutils.deprecated("},{"line_number":998,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":999,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_8c5d2517","line":996,"updated":"2015-10-16 15:02:02.000000000","message":"why do we do it here and not in _require_matching_domain_id? It should happen there.","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"02fb6439da530bf8f6ec4695ad0346bd876f57bd","unresolved":false,"context_lines":[{"line_number":993,"context_line":"    def update_group(self, group_id, group, initiator\u003dNone):"},{"line_number":994,"context_line":"        if \u0027domain_id\u0027 in group:"},{"line_number":995,"context_line":"            old_group_ref \u003d self.get_group(group_id)"},{"line_number":996,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":997,"context_line":"                versionutils.deprecated("},{"line_number":998,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":999,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_6f50b6d4","line":996,"in_reply_to":"5a2ca52d_8c5d2517","updated":"2015-10-16 17:18:27.000000000","message":"ditto","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e9c22e755e04ad35f9a0ecf00ec967f8b6a941d7","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                versionutils.deprecated("},{"line_number":903,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":904,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":905,"context_line":"                    remove_in\u003d+1)(lambda: None)()"},{"line_number":906,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":907,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":908,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a29b11f_a9749767","line":905,"updated":"2015-10-21 19:55:00.000000000","message":"This should be using oslo_log.versionutils.report_deprecated_feature , http://docs.openstack.org/developer/oslo.log/api/versionutils.html#module-oslo_log.versionutils . Then no lambda is needed.\n\nThis applies throughout the changes.","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4bfba81beb1e88730cb5dc5ad62680401efd5f4b","unresolved":false,"context_lines":[{"line_number":902,"context_line":"                versionutils.deprecated("},{"line_number":903,"context_line":"                    what\u003d\u0027update of domain_id\u0027,"},{"line_number":904,"context_line":"                    as_of\u003dversionutils.deprecated.MITAKA,"},{"line_number":905,"context_line":"                    remove_in\u003d+1)(lambda: None)()"},{"line_number":906,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":907,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":908,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a29b11f_741bb273","line":905,"in_reply_to":"3a29b11f_a9749767","updated":"2015-10-21 20:37:33.000000000","message":"Done","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"86404676b77e761dd1787ae05320460c72b25d33","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                        \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_480b888e","line":904,"updated":"2015-11-11 19:36:06.000000000","message":"change _LW to _. depending on a config option this can also be emitted as an exception.","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"650db148598038c84747eed8be43b0f8bdd0639a","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                        \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a8ffd7b_8b28b334","line":904,"in_reply_to":"ba8a016a_8522d450","updated":"2015-12-02 16:44:59.000000000","message":"Done","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"69cbc4123e9c23fde0bf7537bef2651570de2bdd","unresolved":false,"context_lines":[{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                        \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba8a016a_8522d450","line":904,"in_reply_to":"da85f559_480b888e","updated":"2015-11-18 20:41:53.000000000","message":"ok. I\u0027ll fix it if another patch is needed","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"86404676b77e761dd1787ae05320460c72b25d33","unresolved":false,"context_lines":[{"line_number":997,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":998,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":999,"context_line":"                    LOG,"},{"line_number":1000,"context_line":"                    _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":1001,"context_line":"                        \u0027and will be removed in O.\u0027)"},{"line_number":1002,"context_line":"                )"},{"line_number":1003,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_0801006a","line":1000,"updated":"2015-11-11 19:36:06.000000000","message":"change _LW to _. depending on a config option this can also be emitted as an exception.","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"650db148598038c84747eed8be43b0f8bdd0639a","unresolved":false,"context_lines":[{"line_number":997,"context_line":"            if group[\u0027domain_id\u0027] !\u003d old_group_ref[\u0027domain_id\u0027]:"},{"line_number":998,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":999,"context_line":"                    LOG,"},{"line_number":1000,"context_line":"                    _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":1001,"context_line":"                        \u0027and will be removed in O.\u0027)"},{"line_number":1002,"context_line":"                )"},{"line_number":1003,"context_line":"            self.resource_api.get_domain(group[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a8ffd7b_2b22e752","line":1000,"in_reply_to":"da85f559_0801006a","updated":"2015-12-02 16:44:59.000000000","message":"Done","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a2bd490294ce4f50f19ece430ad43bc6289f6aa","unresolved":false,"context_lines":[{"line_number":898,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":899,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":900,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                      \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":908,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":909,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_276f34fd","line":906,"range":{"start_line":901,"start_character":12,"end_line":906,"end_character":17},"updated":"2016-01-06 20:17:45.000000000","message":"This logic is duplicate of what is being done below. Maybe we can pull this out into a method and just have it in one place. \n\n    def _check_update_of_domain_id(self, new_domain, old_domain):\n        if new_domain !\u003d old_domain:\n            # print deprecated feature warning!","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"072a7b4b45fb1500565b8d76bfb77f3a5d8fb699","unresolved":false,"context_lines":[{"line_number":898,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":899,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":900,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                      \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":908,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":909,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_55a3b24f","line":906,"range":{"start_line":901,"start_character":12,"end_line":906,"end_character":17},"in_reply_to":"fa69d971_276f34fd","updated":"2016-01-08 00:29:15.000000000","message":"++","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":898,"context_line":"        if \u0027enabled\u0027 in user:"},{"line_number":899,"context_line":"            user[\u0027enabled\u0027] \u003d clean.user_enabled(user[\u0027enabled\u0027])"},{"line_number":900,"context_line":"        if \u0027domain_id\u0027 in user:"},{"line_number":901,"context_line":"            if user[\u0027domain_id\u0027] !\u003d old_user_ref[\u0027domain_id\u0027]:"},{"line_number":902,"context_line":"                versionutils.report_deprecated_feature("},{"line_number":903,"context_line":"                    LOG,"},{"line_number":904,"context_line":"                    _(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":905,"context_line":"                      \u0027and will be removed in O.\u0027)"},{"line_number":906,"context_line":"                )"},{"line_number":907,"context_line":"            self.resource_api.get_domain(user[\u0027domain_id\u0027])"},{"line_number":908,"context_line":"        if \u0027id\u0027 in user:"},{"line_number":909,"context_line":"            if user_id !\u003d user[\u0027id\u0027]:"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_bbba0ebf","line":906,"range":{"start_line":901,"start_character":12,"end_line":906,"end_character":17},"in_reply_to":"fa69d971_276f34fd","updated":"2016-01-08 04:12:12.000000000","message":"Done","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"}],"keystone/resource/core.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            resource_driver \u003d assignment_manager.default_resource_driver()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        super(Manager, self).__init__(resource_driver)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _get_hierarchy_depth(self, parents_list):"},{"line_number":85,"context_line":"        return len(parents_list) + 1"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_0e744e9a","line":83,"updated":"2015-08-03 17:44:55.000000000","message":"if you want to keep the logic by checking the hierarchy depth, use this method","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            resource_driver \u003d assignment_manager.default_resource_driver()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        super(Manager, self).__init__(resource_driver)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _get_hierarchy_depth(self, parents_list):"},{"line_number":85,"context_line":"        return len(parents_list) + 1"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_3dc45d8f","line":83,"in_reply_to":"1a4dcd0f_0e744e9a","updated":"2015-08-05 17:46:21.000000000","message":"used the logic you suggested","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            tenant_to_check \u003d original_tenant.copy()"},{"line_number":348,"context_line":"            if update_name:"},{"line_number":349,"context_line":"                tenant_to_check[\u0027name\u0027] \u003d tenant[\u0027name\u0027]"},{"line_number":350,"context_line":"            if update_domain:"},{"line_number":351,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":352,"context_line":"                # a project.domain_id can only be change for regular projects"},{"line_number":353,"context_line":"                # at the second level of the tree with no children, i.e."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_8e4b7e2b","line":350,"updated":"2015-08-03 17:44:55.000000000","message":"the other way to do this check (and cleaner IMHO) is like that:\n\n  subtree_list \u003d self.list_projects_in_subtree(original_tenant[\u0027id\u0027])\n  parent_ref \u003d self.get_project(original_tenant[\u0027parent_id\u0027])\n\n  if any(subtree_list) or parent_ref[\u0027parent_id\u0027]:\n    raise ...\n\nYou could also, check the parent first, since it makes fewer calls to the database","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":347,"context_line":"            tenant_to_check \u003d original_tenant.copy()"},{"line_number":348,"context_line":"            if update_name:"},{"line_number":349,"context_line":"                tenant_to_check[\u0027name\u0027] \u003d tenant[\u0027name\u0027]"},{"line_number":350,"context_line":"            if update_domain:"},{"line_number":351,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":352,"context_line":"                # a project.domain_id can only be change for regular projects"},{"line_number":353,"context_line":"                # at the second level of the tree with no children, i.e."}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_1d75e162","line":350,"in_reply_to":"1a4dcd0f_8e4b7e2b","updated":"2015-08-05 17:46:21.000000000","message":"Mostly agreed. I\u0027ll do that in separate calls to raise the proper error message","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":352,"context_line":"                # a project.domain_id can only be change for regular projects"},{"line_number":353,"context_line":"                # at the second level of the tree with no children, i.e."},{"line_number":354,"context_line":"                # is_domain\u003dFalse project on which parent_id is a root project."},{"line_number":355,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":356,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":357,"context_line":"                parents_number \u003d len(self.list_project_parents(tenant[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_6e1ab270","line":354,"updated":"2015-08-03 17:44:55.000000000","message":"can remove the last sentence","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":352,"context_line":"                # a project.domain_id can only be change for regular projects"},{"line_number":353,"context_line":"                # at the second level of the tree with no children, i.e."},{"line_number":354,"context_line":"                # is_domain\u003dFalse project on which parent_id is a root project."},{"line_number":355,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":356,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":357,"context_line":"                parents_number \u003d len(self.list_project_parents(tenant[\u0027id\u0027]))"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_3d721d7c","line":354,"in_reply_to":"1a4dcd0f_6e1ab270","updated":"2015-08-05 17:46:21.000000000","message":"Done","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"9646092724f3669034f12934a2c3f78c09ac13bb","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                # is_domain\u003dFalse project on which parent_id is a root project."},{"line_number":355,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":356,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":357,"context_line":"                parents_number \u003d len(self.list_project_parents(tenant[\u0027id\u0027]))"},{"line_number":358,"context_line":"                if original_tenant[\u0027is_domain\u0027] or parents_number !\u003d 1:"},{"line_number":359,"context_line":"                    raise exception.ValidationError("},{"line_number":360,"context_line":"                        message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_6e3152ec","line":357,"updated":"2015-08-03 17:44:55.000000000","message":"we have a method to fetch the hierarchy size, see above","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4698358884290ed750637d327e58e22637ca4166","unresolved":false,"context_lines":[{"line_number":354,"context_line":"                # is_domain\u003dFalse project on which parent_id is a root project."},{"line_number":355,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":356,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":357,"context_line":"                parents_number \u003d len(self.list_project_parents(tenant[\u0027id\u0027]))"},{"line_number":358,"context_line":"                if original_tenant[\u0027is_domain\u0027] or parents_number !\u003d 1:"},{"line_number":359,"context_line":"                    raise exception.ValidationError("},{"line_number":360,"context_line":"                        message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_9ddfb10c","line":357,"in_reply_to":"1a4dcd0f_6e3152ec","updated":"2015-08-05 17:46:21.000000000","message":"Done","commit_id":"83714044601797e0c8a1454bc3a2749450663696"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"727f643050d0b3d45b0701fb1d8d9bcca2c55ba3","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            if update_domain:"},{"line_number":366,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":367,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":368,"context_line":"                # at the second level of the tree with no children."},{"line_number":369,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":370,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":371,"context_line":"                parent_ref \u003d self.get_project(original_tenant[\u0027parent_id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_92834e04","line":368,"updated":"2015-08-28 08:59:34.000000000","message":"maybe rather than saying \"at the second level of the tree\" (since we don\u0027t know how many layers of domain there are), perhaps say \"that are immediate children of a project acting as a domain, and themselves have no children\".","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"68c8dceedd22910fd68106f06d39ce6522d20202","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            if update_domain:"},{"line_number":366,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":367,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":368,"context_line":"                # at the second level of the tree with no children."},{"line_number":369,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":370,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":371,"context_line":"                parent_ref \u003d self.get_project(original_tenant[\u0027parent_id\u0027])"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_1c0c0c40","line":368,"in_reply_to":"da20952f_92834e04","updated":"2015-08-28 23:11:30.000000000","message":"Done","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"727f643050d0b3d45b0701fb1d8d9bcca2c55ba3","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":368,"context_line":"                # at the second level of the tree with no children."},{"line_number":369,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":370,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":371,"context_line":"                parent_ref \u003d self.get_project(original_tenant[\u0027parent_id\u0027])"},{"line_number":372,"context_line":"                if original_tenant[\u0027is_domain\u0027] or parent_ref[\u0027parent_id\u0027]:"},{"line_number":373,"context_line":"                    raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_f22f2af4","line":370,"updated":"2015-08-28 08:59:34.000000000","message":"probably the more correct way of saying this is:\n\n\"Update of domain_is is deprecated and will be removed in M.\"\n\nI think you use this wording in the identity manager.","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"68c8dceedd22910fd68106f06d39ce6522d20202","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":368,"context_line":"                # at the second level of the tree with no children."},{"line_number":369,"context_line":"                LOG.warn(_(\u0027Update of domain_id is not recommended and will \u0027"},{"line_number":370,"context_line":"                           \u0027be deprecated in M.\u0027))"},{"line_number":371,"context_line":"                parent_ref \u003d self.get_project(original_tenant[\u0027parent_id\u0027])"},{"line_number":372,"context_line":"                if original_tenant[\u0027is_domain\u0027] or parent_ref[\u0027parent_id\u0027]:"},{"line_number":373,"context_line":"                    raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_bc040018","line":370,"in_reply_to":"da20952f_f22f2af4","updated":"2015-08-28 23:11:30.000000000","message":"Done","commit_id":"5cdb26001f27bde818baf8892ff138ca80ce169f"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"23f01d6ceb7182d366db7e5769ad0f1ce747e201","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            if update_name:"},{"line_number":363,"context_line":"                tenant_to_check[\u0027name\u0027] \u003d tenant[\u0027name\u0027]"},{"line_number":364,"context_line":"            if update_domain:"},{"line_number":365,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":366,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":367,"context_line":"                # that are immediate children of a project acting as a domain,"},{"line_number":368,"context_line":"                # and themselves have no children."}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_9724d2af","line":365,"updated":"2015-09-02 10:48:23.000000000","message":"the double negative is a bit hard to understand here, how about saying:\n\nEven if we are allowing domain_ids to be modified (i.e. \u0027domain_id_immutable\u0027 is set False), a project.....","commit_id":"11c0e7d771e94b2ede0fdd64842bbc27a592aa6c"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"fd33be3698d28f41cdbb6862e8a84c96cde708ad","unresolved":false,"context_lines":[{"line_number":362,"context_line":"            if update_name:"},{"line_number":363,"context_line":"                tenant_to_check[\u0027name\u0027] \u003d tenant[\u0027name\u0027]"},{"line_number":364,"context_line":"            if update_domain:"},{"line_number":365,"context_line":"                # NOTE(htruta): Even if \u0027domain_id_immutable\u0027 was set False,"},{"line_number":366,"context_line":"                # a project.domain_id can only be updated for regular projects"},{"line_number":367,"context_line":"                # that are immediate children of a project acting as a domain,"},{"line_number":368,"context_line":"                # and themselves have no children."}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_4f51ba61","line":365,"in_reply_to":"da20952f_9724d2af","updated":"2015-09-02 13:12:59.000000000","message":"Done","commit_id":"11c0e7d771e94b2ede0fdd64842bbc27a592aa6c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c81157fb9ef7e6cf083c6875f9b5e687e257e28b","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if update_domain:"},{"line_number":208,"context_line":"            tenant_to_check \u003d original_tenant.copy()"},{"line_number":209,"context_line":"            if update_domain:"},{"line_number":210,"context_line":"                # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":211,"context_line":"                # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":212,"context_line":"                # a project.domain_id can only be updated for root projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_55e96d19","line":209,"updated":"2015-09-24 23:25:02.000000000","message":"Why are we checking this twice?","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"438165a394cfbf877229ef429c8c6ea17ea57108","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        if update_domain:"},{"line_number":208,"context_line":"            tenant_to_check \u003d original_tenant.copy()"},{"line_number":209,"context_line":"            if update_domain:"},{"line_number":210,"context_line":"                # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":211,"context_line":"                # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":212,"context_line":"                # a project.domain_id can only be updated for root projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_b85f4ce4","line":209,"in_reply_to":"9a1a9d01_55e96d19","updated":"2015-09-30 20:07:34.000000000","message":"forgot to remove this from the old code. Done","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c81157fb9ef7e6cf083c6875f9b5e687e257e28b","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                # a project.domain_id can only be updated for root projects"},{"line_number":213,"context_line":"                # that have no children."},{"line_number":214,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":215,"context_line":"                             \u0027be removed in M.\u0027))"},{"line_number":216,"context_line":"                is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":217,"context_line":"                if not is_root_project:"},{"line_number":218,"context_line":"                    raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_35f879e5","line":215,"updated":"2015-09-24 23:25:02.000000000","message":"version thing again.","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"45ad05fe38ff246902893632d7828de19d527f8e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                # a project.domain_id can only be updated for root projects"},{"line_number":213,"context_line":"                # that have no children."},{"line_number":214,"context_line":"                LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":215,"context_line":"                             \u0027be removed in M.\u0027))"},{"line_number":216,"context_line":"                is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":217,"context_line":"                if not is_root_project:"},{"line_number":218,"context_line":"                    raise exception.ValidationError("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_03a76d0b","line":215,"in_reply_to":"9a1a9d01_35f879e5","updated":"2015-09-30 23:03:45.000000000","message":"Done","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c81157fb9ef7e6cf083c6875f9b5e687e257e28b","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                  \u0027domains is not allowed.\u0027))"},{"line_number":225,"context_line":"                subtree_list \u003d self.list_projects_in_subtree("},{"line_number":226,"context_line":"                    original_tenant[\u0027id\u0027])"},{"line_number":227,"context_line":"                if any(subtree_list):"},{"line_number":228,"context_line":"                    raise exception.ValidationError("},{"line_number":229,"context_line":"                        message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":230,"context_line":"                                  \u0027has children.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_f51d2110","line":227,"updated":"2015-09-24 23:25:02.000000000","message":"do you really need to iterate through the list looking for a truthy value. i know that it\u0027s not a performance thing, it just look weird. what about just checking to see if the list has a value like \u0027if subtree_list\u0027?","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"438165a394cfbf877229ef429c8c6ea17ea57108","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                  \u0027domains is not allowed.\u0027))"},{"line_number":225,"context_line":"                subtree_list \u003d self.list_projects_in_subtree("},{"line_number":226,"context_line":"                    original_tenant[\u0027id\u0027])"},{"line_number":227,"context_line":"                if any(subtree_list):"},{"line_number":228,"context_line":"                    raise exception.ValidationError("},{"line_number":229,"context_line":"                        message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":230,"context_line":"                                  \u0027has children.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a1a9d01_7883f404","line":227,"in_reply_to":"9a1a9d01_f51d2110","updated":"2015-09-30 20:07:34.000000000","message":"Ok. I\u0027ll change that","commit_id":"7f253a4dc2cf406f4f65b8b44858d3fbbedf9e80"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"14d11c23b0d7099c23caa02407e17fd850f00f84","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                raise exception.ValidationError("},{"line_number":228,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":229,"context_line":"                              \u0027has children.\u0027))"},{"line_number":230,"context_line":"            tenant_to_check[\u0027domain_id\u0027] \u003d tenant[\u0027domain_id\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":233,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_17c23ee9","line":230,"updated":"2015-10-01 07:52:03.000000000","message":"not sure what this line does?","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"39b4a172a68856bca6527ad6bbcf8b01a079e625","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                raise exception.ValidationError("},{"line_number":228,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":229,"context_line":"                              \u0027has children.\u0027))"},{"line_number":230,"context_line":"            tenant_to_check[\u0027domain_id\u0027] \u003d tenant[\u0027domain_id\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if \u0027enabled\u0027 in tenant:"},{"line_number":233,"context_line":"            tenant[\u0027enabled\u0027] \u003d clean.project_enabled(tenant[\u0027enabled\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_29c6ef16","line":230,"in_reply_to":"9a1a9d01_17c23ee9","updated":"2015-10-01 17:28:19.000000000","message":"nothing :P removed it","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"1d568c4b0fef92e023b1bafb7e944eb3a45a394c","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        if update_domain:"},{"line_number":208,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":213,"context_line":"                         \u0027be removed in N.\u0027))"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_d92fddf4","line":210,"updated":"2015-10-02 12:44:44.000000000","message":"maybe \"for non is_domain projects that have no children\"?","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8e15b81816989a52099ea86e7e5fee0b502dc02a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        if update_domain:"},{"line_number":208,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":213,"context_line":"                         \u0027be removed in N.\u0027))"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_fa616fd4","line":210,"in_reply_to":"9a1a9d01_d92fddf4","updated":"2015-10-02 14:05:46.000000000","message":"we don\u0027t have \"is_domain project\" at this point, all projects are non is_domain","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"1d568c4b0fef92e023b1bafb7e944eb3a45a394c","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":213,"context_line":"                         \u0027be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":215,"context_line":"            if not is_root_project:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_396859ba","line":212,"updated":"2015-10-02 12:44:44.000000000","message":"Same comment as for user/group. I\u0027d add when it was deprecated.","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8e15b81816989a52099ea86e7e5fee0b502dc02a","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated and will \u0027"},{"line_number":213,"context_line":"                         \u0027be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":215,"context_line":"            if not is_root_project:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_9ae15301","line":212,"in_reply_to":"9a1a9d01_396859ba","updated":"2015-10-02 14:05:46.000000000","message":"Done","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1d85aef53ce41396ac3b53ca0297bcd2795d0b6","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka and \u0027"},{"line_number":213,"context_line":"                         \u0027will be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_b260fb36","line":211,"updated":"2015-10-06 16:21:07.000000000","message":"the comment should say why -- what\u0027s the problem if you change a domain_id?","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6bc47e0d0e2c986eb1be83ee0e227d539bb066de","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":209,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":210,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka and \u0027"},{"line_number":213,"context_line":"                         \u0027will be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_d0f508ed","line":211,"in_reply_to":"7a2fa921_b260fb36","updated":"2015-10-08 14:55:44.000000000","message":"Done","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1d85aef53ce41396ac3b53ca0297bcd2795d0b6","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka and \u0027"},{"line_number":213,"context_line":"                         \u0027will be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":215,"context_line":"            if not is_root_project:"},{"line_number":216,"context_line":"                raise exception.ValidationError("},{"line_number":217,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_7244a373","line":214,"updated":"2015-10-06 16:21:07.000000000","message":"remove unnecessary ().","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6bc47e0d0e2c986eb1be83ee0e227d539bb066de","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # that have no children."},{"line_number":212,"context_line":"            LOG.warn(_LW(\u0027Update of domain_id is deprecated as of Mitaka and \u0027"},{"line_number":213,"context_line":"                         \u0027will be removed in N.\u0027))"},{"line_number":214,"context_line":"            is_root_project \u003d (original_tenant[\u0027parent_id\u0027] is None)"},{"line_number":215,"context_line":"            if not is_root_project:"},{"line_number":216,"context_line":"                raise exception.ValidationError("},{"line_number":217,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_70df5469","line":214,"in_reply_to":"7a2fa921_7244a373","updated":"2015-10-08 14:55:44.000000000","message":"Done","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1d85aef53ce41396ac3b53ca0297bcd2795d0b6","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                    message\u003d_(\u0027Update of domain_id of projects acting as \u0027"},{"line_number":222,"context_line":"                              \u0027domains is not allowed.\u0027))"},{"line_number":223,"context_line":"            subtree_list \u003d self.list_projects_in_subtree("},{"line_number":224,"context_line":"                original_tenant[\u0027id\u0027])"},{"line_number":225,"context_line":"            if subtree_list:"},{"line_number":226,"context_line":"                raise exception.ValidationError("},{"line_number":227,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_723b43ec","line":224,"updated":"2015-10-06 16:21:07.000000000","message":"you can\u0027t change the id so this could be tenant_id.","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6bc47e0d0e2c986eb1be83ee0e227d539bb066de","unresolved":false,"context_lines":[{"line_number":221,"context_line":"                    message\u003d_(\u0027Update of domain_id of projects acting as \u0027"},{"line_number":222,"context_line":"                              \u0027domains is not allowed.\u0027))"},{"line_number":223,"context_line":"            subtree_list \u003d self.list_projects_in_subtree("},{"line_number":224,"context_line":"                original_tenant[\u0027id\u0027])"},{"line_number":225,"context_line":"            if subtree_list:"},{"line_number":226,"context_line":"                raise exception.ValidationError("},{"line_number":227,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_90dc7074","line":224,"in_reply_to":"7a2fa921_723b43ec","updated":"2015-10-08 14:55:44.000000000","message":"Done","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e9c22e755e04ad35f9a0ecf00ec967f8b6a941d7","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":214,"context_line":"            # hierarchy. See bug #1502157"},{"line_number":215,"context_line":"            versionutils.deprecated("},{"line_number":216,"context_line":"                what\u003d\u0027update of domain_id\u0027,"},{"line_number":217,"context_line":"                as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a29b11f_e9236f56","line":214,"updated":"2015-10-21 19:55:00.000000000","message":"Since this isn\u0027t leaving a bug, remove the reference. The bug isn\u0027t very descriptive anyways.","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"4bfba81beb1e88730cb5dc5ad62680401efd5f4b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":214,"context_line":"            # hierarchy. See bug #1502157"},{"line_number":215,"context_line":"            versionutils.deprecated("},{"line_number":216,"context_line":"                what\u003d\u0027update of domain_id\u0027,"},{"line_number":217,"context_line":"                as_of\u003dversionutils.deprecated.MITAKA,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a29b11f_b415ca40","line":214,"in_reply_to":"3a29b11f_e9236f56","updated":"2015-10-21 20:37:33.000000000","message":"Done","commit_id":"cb985dde4f304cb93a0973ccb50c7f05dacd6be0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"86404676b77e761dd1787ae05320460c72b25d33","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            # hierarchy."},{"line_number":215,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":216,"context_line":"                LOG,"},{"line_number":217,"context_line":"                _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                    \u0027and will be removed in O.\u0027)"},{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"}],"source_content_type":"text/x-python","patch_set":24,"id":"da85f559_c8f77889","line":217,"updated":"2015-11-11 19:36:06.000000000","message":"change _LW to _. depending on a config option this can also be emitted as an exception.","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"650db148598038c84747eed8be43b0f8bdd0639a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            # hierarchy."},{"line_number":215,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":216,"context_line":"                LOG,"},{"line_number":217,"context_line":"                _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                    \u0027and will be removed in O.\u0027)"},{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a8ffd7b_ebee1fec","line":217,"in_reply_to":"da85f559_c8f77889","updated":"2015-12-02 16:44:59.000000000","message":"Done","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"e9d8a7652da6063ac3335499ffca672fe52dc29f","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                    \u0027and will be removed in O.\u0027)"},{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"},{"line_number":221,"context_line":"            if not is_root_project:"},{"line_number":222,"context_line":"                raise exception.ValidationError("},{"line_number":223,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba8a016a_05282485","line":220,"updated":"2015-11-18 20:14:01.000000000","message":"Question: For reseller, doesn\u0027t a root project points to its parent (is-domain project?) and should be allowed to do so anyway?","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"69cbc4123e9c23fde0bf7537bef2651570de2bdd","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                _LW(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                    \u0027and will be removed in O.\u0027)"},{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"},{"line_number":221,"context_line":"            if not is_root_project:"},{"line_number":222,"context_line":"                raise exception.ValidationError("},{"line_number":223,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"ba8a016a_c5b1bc02","line":220,"in_reply_to":"ba8a016a_05282485","updated":"2015-11-18 20:41:53.000000000","message":"in reseller, the root will actually be the project that acts as a domain. his first child (which is now the root) will be allowed to have the domain_id changed.","commit_id":"8b9244f60e9ef869896a4f908b1121f5a1ce0c48"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                         tenant[\u0027domain_id\u0027] !\u003d original_tenant[\u0027domain_id\u0027])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if update_domain:"},{"line_number":209,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":210,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_5148c35b","line":209,"updated":"2015-12-29 20:58:34.000000000","message":"is this code supposed to check domain_id_immutable somewhere?","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a2bd490294ce4f50f19ece430ad43bc6289f6aa","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                         tenant[\u0027domain_id\u0027] !\u003d original_tenant[\u0027domain_id\u0027])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if update_domain:"},{"line_number":209,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":210,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_a7524433","line":209,"in_reply_to":"fa69d971_5148c35b","updated":"2016-01-06 20:17:45.000000000","message":"++","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                         tenant[\u0027domain_id\u0027] !\u003d original_tenant[\u0027domain_id\u0027])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if update_domain:"},{"line_number":209,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":210,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_fb4ac6ab","line":209,"in_reply_to":"fa69d971_5148c35b","updated":"2016-01-08 04:12:12.000000000","message":"it is checked at the controller: https://github.com/openstack/keystone/blob/81cfed9d1ca4e16c5194a458bd7295f53fb88c99/keystone/common/controller.py#L706","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if update_domain:"},{"line_number":209,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":210,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_1f06d720","line":210,"range":{"start_line":210,"start_character":22,"end_line":210,"end_character":25},"updated":"2015-12-29 20:58:34.000000000","message":"(nit) remove the ,s or the (). either one is adequate.","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if update_domain:"},{"line_number":209,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":210,"context_line":"            # modified, (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":211,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_5bd0b2c9","line":210,"range":{"start_line":210,"start_character":22,"end_line":210,"end_character":25},"in_reply_to":"fa69d971_1f06d720","updated":"2016-01-08 04:12:12.000000000","message":"Done","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":214,"context_line":"            # hierarchy."},{"line_number":215,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":216,"context_line":"                LOG,"},{"line_number":217,"context_line":"                _(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                  \u0027and will be removed in O.\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_31342fdd","line":215,"updated":"2015-12-29 20:58:34.000000000","message":"suggest move after the raises since there\u0027s no need for a message if the operation isn\u0027t going to proceed.","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":213,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":214,"context_line":"            # hierarchy."},{"line_number":215,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":216,"context_line":"                LOG,"},{"line_number":217,"context_line":"                _(\u0027update of domain_id is deprecated as of Mitaka \u0027"},{"line_number":218,"context_line":"                  \u0027and will be removed in O.\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_9bedca90","line":215,"in_reply_to":"fa69d971_31342fdd","updated":"2016-01-08 04:12:12.000000000","message":"Done","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0196ec08e4b182ecfc36cb86eb437a9dcf57118e","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"},{"line_number":221,"context_line":"            if not is_root_project:"},{"line_number":222,"context_line":"                raise exception.ValidationError("},{"line_number":223,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"},{"line_number":224,"context_line":"                              \u0027root projects.\u0027))"},{"line_number":225,"context_line":"            if original_tenant[\u0027is_domain\u0027]:"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_11d56b42","line":222,"updated":"2015-12-29 20:58:34.000000000","message":"suggest have a new exception. ValidationError is supposed to be for missing attributes.","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            )"},{"line_number":220,"context_line":"            is_root_project \u003d original_tenant[\u0027parent_id\u0027] is None"},{"line_number":221,"context_line":"            if not is_root_project:"},{"line_number":222,"context_line":"                raise exception.ValidationError("},{"line_number":223,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"},{"line_number":224,"context_line":"                              \u0027root projects.\u0027))"},{"line_number":225,"context_line":"            if original_tenant[\u0027is_domain\u0027]:"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_de3330f5","line":222,"in_reply_to":"fa69d971_11d56b42","updated":"2016-01-08 04:12:12.000000000","message":"that was the best one I found. The other candidate would be Forbidden. Isn\u0027t ValidationError better?","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8a3a379a96cad6f126eedfbb18c25f27327c1a8a","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                         project[\u0027domain_id\u0027] !\u003d original_project[\u0027domain_id\u0027])"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        if update_domain:"},{"line_number":314,"context_line":"            is_root_project \u003d original_project[\u0027parent_id\u0027] is None"},{"line_number":315,"context_line":"            if not is_root_project:"},{"line_number":316,"context_line":"                raise exception.ValidationError("},{"line_number":317,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"dae33548_b0c77d44","line":314,"range":{"start_line":314,"start_character":12,"end_line":314,"end_character":67},"updated":"2016-02-15 15:58:42.000000000","message":"So if we implement projects as a domain, this check will no longer work (since a regular top level project will have a parent, the project acting as a domain). Just something we need to be aware of.","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8662ab7fff0f35071982f03a3f7bf7ec1d6c7204","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                         project[\u0027domain_id\u0027] !\u003d original_project[\u0027domain_id\u0027])"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        if update_domain:"},{"line_number":314,"context_line":"            is_root_project \u003d original_project[\u0027parent_id\u0027] is None"},{"line_number":315,"context_line":"            if not is_root_project:"},{"line_number":316,"context_line":"                raise exception.ValidationError("},{"line_number":317,"context_line":"                    message\u003d_(\u0027Update of domain_id is only allowed for \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"dae33548_0e6ba51f","line":314,"range":{"start_line":314,"start_character":12,"end_line":314,"end_character":67},"in_reply_to":"dae33548_b0c77d44","updated":"2016-02-15 17:00:26.000000000","message":"Done","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8a3a379a96cad6f126eedfbb18c25f27327c1a8a","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                raise exception.ValidationError("},{"line_number":326,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":327,"context_line":"                              \u0027has children.\u0027))"},{"line_number":328,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":329,"context_line":"            # modified (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":330,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":331,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":332,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":333,"context_line":"            # hierarchy."},{"line_number":334,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":335,"context_line":"                LOG,"},{"line_number":336,"context_line":"                _(\u0027update of domain_id is deprecated as of Mitaka \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"dae33548_d58953cc","line":333,"range":{"start_line":328,"start_character":0,"end_line":333,"end_character":24},"updated":"2016-02-15 15:58:42.000000000","message":"I would think this should be at the start of this block","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8662ab7fff0f35071982f03a3f7bf7ec1d6c7204","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                raise exception.ValidationError("},{"line_number":326,"context_line":"                    message\u003d_(\u0027Cannot update domain_id of a project that \u0027"},{"line_number":327,"context_line":"                              \u0027has children.\u0027))"},{"line_number":328,"context_line":"            # NOTE(htruta): Even if we are allowing domain_ids to be"},{"line_number":329,"context_line":"            # modified (i.e. \u0027domain_id_immutable\u0027 is set False),"},{"line_number":330,"context_line":"            # a project.domain_id can only be updated for root projects"},{"line_number":331,"context_line":"            # that have no children. The update of domain_id of a project in"},{"line_number":332,"context_line":"            # the middle of the hierarchy creates an inconsistent project"},{"line_number":333,"context_line":"            # hierarchy."},{"line_number":334,"context_line":"            versionutils.report_deprecated_feature("},{"line_number":335,"context_line":"                LOG,"},{"line_number":336,"context_line":"                _(\u0027update of domain_id is deprecated as of Mitaka \u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"dae33548_ee5ac182","line":333,"range":{"start_line":328,"start_character":0,"end_line":333,"end_character":24},"in_reply_to":"dae33548_d58953cc","updated":"2016-02-15 17:00:26.000000000","message":"Done","commit_id":"d4d09616930331b79696ab3d51e0b2b444046110"}],"keystone/tests/unit/test_backend.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"14d11c23b0d7099c23caa02407e17fd850f00f84","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                   \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":826,"context_line":"                   \u0027domain_id\u0027: domain1[\u0027id\u0027]}"},{"line_number":827,"context_line":"        self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":828,"context_line":"        project[\u0027domain_id\u0027] \u003d domain2[\u0027id\u0027]"},{"line_number":829,"context_line":"        self.resource_api.update_project(project[\u0027id\u0027], project)"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"    def test_move_project_between_domains_with_clashing_names_fails(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_372e62a5","line":828,"updated":"2015-10-01 07:52:03.000000000","message":"To make sure your change hasn\u0027t broken anything, I\u0027d suggest you improve this test to actually check that the project has moved to the new domain.","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"39b4a172a68856bca6527ad6bbcf8b01a079e625","unresolved":false,"context_lines":[{"line_number":825,"context_line":"                   \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":826,"context_line":"                   \u0027domain_id\u0027: domain1[\u0027id\u0027]}"},{"line_number":827,"context_line":"        self.resource_api.create_project(project[\u0027id\u0027], project)"},{"line_number":828,"context_line":"        project[\u0027domain_id\u0027] \u003d domain2[\u0027id\u0027]"},{"line_number":829,"context_line":"        self.resource_api.update_project(project[\u0027id\u0027], project)"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"    def test_move_project_between_domains_with_clashing_names_fails(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a1a9d01_e9e6b7af","line":828,"in_reply_to":"9a1a9d01_372e62a5","updated":"2015-10-01 17:28:19.000000000","message":"ok. I\u0027ll do that in another patchset","commit_id":"949bcaee2a5e02bc92c2598b380be2e13c2e7eb8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"1d568c4b0fef92e023b1bafb7e944eb3a45a394c","unresolved":false,"context_lines":[{"line_number":897,"context_line":"                         \u0027parent_id\u0027: project[\u0027id\u0027],"},{"line_number":898,"context_line":"                         \u0027domain_id\u0027: domain1[\u0027id\u0027]}"},{"line_number":899,"context_line":"        self.resource_api.create_project(child_project[\u0027id\u0027], child_project)"},{"line_number":900,"context_line":"        child_project_2 \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":901,"context_line":"                           \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":902,"context_line":"                           \u0027parent_id\u0027: child_project[\u0027id\u0027],"},{"line_number":903,"context_line":"                           \u0027domain_id\u0027: domain1[\u0027id\u0027]}"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_3954d952","line":900,"updated":"2015-10-02 12:44:44.000000000","message":"We don\u0027t need child_project_2, we could have done the test with child_project.","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8e15b81816989a52099ea86e7e5fee0b502dc02a","unresolved":false,"context_lines":[{"line_number":897,"context_line":"                         \u0027parent_id\u0027: project[\u0027id\u0027],"},{"line_number":898,"context_line":"                         \u0027domain_id\u0027: domain1[\u0027id\u0027]}"},{"line_number":899,"context_line":"        self.resource_api.create_project(child_project[\u0027id\u0027], child_project)"},{"line_number":900,"context_line":"        child_project_2 \u003d {\u0027id\u0027: uuid.uuid4().hex,"},{"line_number":901,"context_line":"                           \u0027name\u0027: uuid.uuid4().hex,"},{"line_number":902,"context_line":"                           \u0027parent_id\u0027: child_project[\u0027id\u0027],"},{"line_number":903,"context_line":"                           \u0027domain_id\u0027: domain1[\u0027id\u0027]}"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a1a9d01_fa6baf83","line":900,"in_reply_to":"9a1a9d01_3954d952","updated":"2015-10-02 14:05:46.000000000","message":"true. I\u0027ll remove it","commit_id":"c1f0bcc5314865c5fc3f447b31dbcf54d11d50e3"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a1d85aef53ce41396ac3b53ca0297bcd2795d0b6","unresolved":false,"context_lines":[{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":862,"context_line":"    def test_move_project_with_children_between_domains_fails(self):"},{"line_number":863,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":864,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":865,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":866,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_2542633f","line":863,"updated":"2015-10-06 16:21:07.000000000","message":"use unit.new_domain_ref here and unit.new_project_ref throughout these tests.","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"6bc47e0d0e2c986eb1be83ee0e227d539bb066de","unresolved":false,"context_lines":[{"line_number":860,"context_line":""},{"line_number":861,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":862,"context_line":"    def test_move_project_with_children_between_domains_fails(self):"},{"line_number":863,"context_line":"        domain1 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":864,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":865,"context_line":"        domain2 \u003d {\u0027id\u0027: uuid.uuid4().hex, \u0027name\u0027: uuid.uuid4().hex}"},{"line_number":866,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a2fa921_b0c72c97","line":863,"in_reply_to":"7a2fa921_2542633f","updated":"2015-10-08 14:55:44.000000000","message":"Done","commit_id":"43178c3e104247f26f55ca7872ed554f4f2a4fe3"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"1e5f8be7807f129b042466db9174beabe31600ac","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    def test_update_domain_id_project_is_domain_fails(self):"},{"line_number":901,"context_line":"        domain1 \u003d unit.new_domain_ref()"},{"line_number":902,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":903,"context_line":"        domain2 \u003d unit.new_domain_ref()"},{"line_number":904,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"},{"line_number":905,"context_line":"        project \u003d unit.new_project_ref(is_domain\u003dTrue,"},{"line_number":906,"context_line":"                                       domain_id\u003ddomain1[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_51c32aed","line":903,"updated":"2015-10-16 14:55:54.000000000","message":"is the second domain necessary? I think we can simplify the test by creating a domain-project without domain_id and try assigning it to a domain.","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"02fb6439da530bf8f6ec4695ad0346bd876f57bd","unresolved":false,"context_lines":[{"line_number":900,"context_line":"    def test_update_domain_id_project_is_domain_fails(self):"},{"line_number":901,"context_line":"        domain1 \u003d unit.new_domain_ref()"},{"line_number":902,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":903,"context_line":"        domain2 \u003d unit.new_domain_ref()"},{"line_number":904,"context_line":"        self.resource_api.create_domain(domain2[\u0027id\u0027], domain2)"},{"line_number":905,"context_line":"        project \u003d unit.new_project_ref(is_domain\u003dTrue,"},{"line_number":906,"context_line":"                                       domain_id\u003ddomain1[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a2ca52d_3467774e","line":903,"in_reply_to":"5a2ca52d_51c32aed","updated":"2015-10-16 17:18:27.000000000","message":"actually, we need to pass a domain in here. The domain is set if not provided only in controller. But I\u0027ll create just one extra domain","commit_id":"5a727973043a914c9c73ec2fbb23582dc84d9671"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cc0f8bb47ad9fe61b1ee6498b77439bc759741a4","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":910,"context_line":"                          self.resource_api.update_project,"},{"line_number":911,"context_line":"                          project[\u0027id\u0027],"},{"line_number":912,"context_line":"                          project)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_rename_duplicate_project_name_fails(self):"},{"line_number":915,"context_line":"        tenant1 \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"1a26ad4f_3d1298b5","line":912,"updated":"2015-10-28 02:43:29.000000000","message":"There should also be tests for updating user and group.","commit_id":"25a6557919658ef814b89e91b992212756da7330"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"b54f4837e6073b8ff235e2eea536a76726130095","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        self.assertRaises(exception.ValidationError,"},{"line_number":910,"context_line":"                          self.resource_api.update_project,"},{"line_number":911,"context_line":"                          project[\u0027id\u0027],"},{"line_number":912,"context_line":"                          project)"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":"    def test_rename_duplicate_project_name_fails(self):"},{"line_number":915,"context_line":"        tenant1 \u003d {\u0027id\u0027: \u0027fake1\u0027, \u0027name\u0027: \u0027fake1\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_704a70ae","line":912,"in_reply_to":"1a26ad4f_3d1298b5","updated":"2015-11-04 16:44:43.000000000","message":"actually, there shoud not, because we are not changing the behaviour of the user and groups update, just emiting a warning. I\u0027ll try to do a test showing that the warning is shown","commit_id":"25a6557919658ef814b89e91b992212756da7330"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a2bd490294ce4f50f19ece430ad43bc6289f6aa","unresolved":false,"context_lines":[{"line_number":887,"context_line":"                          project)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":890,"context_line":"    def test_move_project_not_root_between_domains_fails(self):"},{"line_number":891,"context_line":"        domain1 \u003d unit.new_domain_ref()"},{"line_number":892,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":893,"context_line":"        domain2 \u003d unit.new_domain_ref()"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_926180d5","line":890,"range":{"start_line":890,"start_character":26,"end_line":890,"end_character":34},"updated":"2016-01-06 20:17:45.000000000","message":"suggest removing this piece and then adding a new test named: \n\n    def test_move_root_project_between_domains_succeeds(self):","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"},{"author":{"_account_id":10046,"name":"Henrique Truta","email":"henrique@lsd.ufcg.edu.br","username":"henriquetruta"},"change_message_id":"8742a58979ae0289ff1ba48c427313c073095b15","unresolved":false,"context_lines":[{"line_number":887,"context_line":"                          project)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    @unit.skip_if_no_multiple_domains_support"},{"line_number":890,"context_line":"    def test_move_project_not_root_between_domains_fails(self):"},{"line_number":891,"context_line":"        domain1 \u003d unit.new_domain_ref()"},{"line_number":892,"context_line":"        self.resource_api.create_domain(domain1[\u0027id\u0027], domain1)"},{"line_number":893,"context_line":"        domain2 \u003d unit.new_domain_ref()"}],"source_content_type":"text/x-python","patch_set":25,"id":"fa69d971_febab409","line":890,"range":{"start_line":890,"start_character":26,"end_line":890,"end_character":34},"in_reply_to":"fa69d971_926180d5","updated":"2016-01-08 04:12:12.000000000","message":"I added the other test. However, I prefer to keep the \"not_root\" piece to make it more specific, differing, for example from the one above.","commit_id":"7fc1525ae378dca4f78eeae242820796f6634c92"}]}
